Pular para o conteúdo
0%

O que é o Solana Program Library?

Sidharth Kumthekar headshot

Escrito por Sidharth Kumthekar

Publicado em 26 de janeiro de 20238 min de leitura

Solana é uma blockchain programável de alta velocidade que permite aos desenvolvedores criar e implantar aplicações descentralizadas. Solana mantém uma biblioteca de documentação dedicada conhecida como Solana Program Library – uma coleção de programas (ou seja, smart contracts) pré-compilados, implantados e otimizados para uso na blockchain Solana.

Neste artigo, vamos explorar o mundo da Solana e entender como você pode desenvolver rapidamente com a Solana Program Library. Seja você novo em Solana ou um desenvolvedor experiente, você pode criar e implantar facilmente seus próprios tokens personalizados ou uma exchange descentralizada com SPL.

O que são programas na Solana?

Programas na Solana são código executável armazenado em um espaço de armazenamento chamado account, que pode ser executado via transação, de forma semelhante aos smart contracts na Ethereum ou em qualquer outra blockchain programável. No entanto, diferente da Ethereum, onde o programa e o estado são armazenados juntos no smart contract, a Solana adotou uma abordagem de modelo de programa stateless, na qual dados e programas são armazenados em accounts.

O que são accounts na Solana?

De acordo com a documentação da Solana, "Uma account é um registro no ledger da Solana que armazena dados ou é um programa executável."

Pense na Solana como um banco de dados em que as accounts são linhas, as chaves públicas funcionam como IDs, e o valor é a informação armazenada na account. Essa informação pode estar na forma de programas (ou seja, smart contracts) ou de dados/estado do programa.

As accounts podem ser identificadas por uma chave pública única (256 bytes), que normalmente se parece com algo assim: "DM6n1qcUCLzJ1RaAuA4gUbBZ9sfHP6KvEwX8oExQqPhk".

A Solana tem uma separação lógica entre o código e seus dados, o que faz com que existam dois tipos de accounts — executáveis e não executáveis.

1. Accounts executáveis

Accounts que armazenam apenas o código imutável do programa e são marcadas como 'executáveis'.

2. Accounts não executáveis

Essas accounts armazenam todos os dados que seu programa pode usar, incluindo variáveis, ativos e o estado do programa. Embora qualquer pessoa possa ler os dados dessas accounts, apenas o proprietário do programa (quem o implantou) pode alterá-los.

As accounts são mantidas por validator nodes que cobram um custo de manutenção chamado 'Rent' em troca do espaço de memória usado para armazenar as informações acima. O Rent é pago em lamports — a denominação fracionária do SOL (o token nativo da Solana).

O código e os dados do programa na Solana são mantidos separadamente devido a um sistema conhecido como Sealevel Parallel Runtime.

O que é o sealevel parallel runtime?

Sealevel Parallel Runtime é a implementação da Solana de um sistema de processamento de transações em paralelo. Blockchains tradicionais de thread única, como a Ethereum, podem processar apenas uma transação por vez para evitar concorrência. Isso acontece porque os smart contracts da Ethereum são stateful — ou seja, tanto o estado quanto o código estão acoplados no mesmo contrato.

Com a ajuda do Sealevel, a Solana consegue processar milhares de transações não conflitantes em paralelo. Utilizando múltiplos núcleos de validator, a Solana também consegue executar até 50.000 Tps com um tempo de bloco de 400 milissegundos. Isso é possível porque as instruções de transação são stateless e definem previamente quais dados de account elas irão modificar. Assim, programas que não compartilham os mesmos dados de account podem ser executados simultaneamente.

Quais são os tipos de programas na Solana?

O ecossistema da Solana é composto por dois tipos distintos de programas — programas nativos e programas on-chain. Vamos analisar os dois.

O que são programas nativos?

Programas nativos são responsáveis por implementar as funcionalidades centrais da rede Solana, como gerenciar a alocação de armazenamento de accounts, criar novas accounts, processar transações e impor as regras da rede Solana.

Programas nativos são parte integral do modelo central da blockchain Solana. Eles geralmente são escritos em linguagens de baixo nível, como Rust e C/C++, otimizadas para desempenho e segurança. Programas nativos podem ser chamados por qualquer programa/usuário, enquanto um programa de nível kernel em um sistema operacional não pode ser chamado e acessado diretamente por um usuário.

A atualização desses programas só pode ocorrer como parte de upgrades centrais da blockchain ou upgrades do cluster, para adicionar funcionalidades, corrigir bugs ou melhorar o desempenho.

Existem diversos programas nativos que ajudam a proteger o validator. Alguns deles são:

1. System program

O System program é responsável por criar novas accounts, transferir SOL entre duas accounts, atribuir a propriedade de accounts e realizar outras operações de gerenciamento de accounts.

2. Berkeley Packet Filter (BPF):

O Berkeley Packet Filter cuida da implantação, dos upgrades e da execução de programas on-chain.

3. Stake program

O Stake program é responsável por gerenciar o staking de tokens SOL na blockchain Solana.

O que são programas on-chain?

Programas on-chain são programas escritos por usuários (ou seja, smart contracts) implantados diretamente na blockchain. Eles podem ser um dapp, uma exchange, contratos de teste, uma implementação de carteira multi-sig ou qualquer outro programa genérico.

Diferente dos programas nativos, os programas on-chain não fazem parte do núcleo do cluster Solana. Em vez disso, são programas personalizados criados e implantados por desenvolvedores na blockchain Solana. Isso significa que os programas on-chain não são essenciais para o funcionamento da blockchain Solana.

Eles são construídos sobre a infraestrutura central fornecida pelos programas nativos e permitem que os desenvolvedores criem uma ampla variedade de aplicações e serviços na blockchain Solana.

Os dados com os quais os programas interagem são armazenados em accounts de dados separadas e passados como referências por meio de instruções. Somente o proprietário da account pode atualizar os dados do programa.

Diagrama de programas Solana armazenando estado em contas de dados separadas
Programs em Solana

O que é a Solana Program Library?

A Solana Program Library (SPL) é uma coleção de programas modulares pré-escritos que podem ser usados para criar aplicações descentralizadas na blockchain Solana. O objetivo da SPL é facilitar a criação de apps pelos desenvolvedores, fornecendo um conjunto de componentes reutilizáveis e modulares que podem ser facilmente integrados às suas aplicações, reduzindo a necessidade de escrever código complexo do zero.

Dessa forma, a SPL permite que os desenvolvedores criem apps usando uma abordagem de "blocos de construção", em que cada componente pode ser facilmente integrado à aplicação.

A SPL contém diversos programas genéricos on-chain, sendo o Token program e suas variações os mais populares, o que ajuda a incorporá-los ao seu projeto sem precisar implementá-los do zero.

Pré-requisitos da SPL

Para interagir com a SPL, você pode escolher entre a abordagem via CLI ou a abordagem via JS, mais comumente usada, que utiliza a solana/web3.js para conectar seu código JavaScript à blockchain Solana.

Para interagir com qualquer cluster da Solana, também é necessário configurar a Solana CLI (Command Line Interface). A CLI pode não ser a mais amigável para desenvolvedores iniciantes, mas oferece o acesso mais direto e seguro às suas accounts na Solana. Além disso, é na CLI que os Solana Core Developers costumam disponibilizar as novas funcionalidades primeiro.

O que é o SPL Token Program?

O SPL Token Program é uma implementação genérica para tokens fungíveis e não fungíveis na blockchain Solana. Ele fornece uma interface e uma implementação detalhada que permite aos desenvolvedores criar seu próprio token. O código é escrito nativamente em Rust, e seus bindings gerados automaticamente estão disponíveis em C e JavaScript. O código-fonte está disponível no repositório SPL no GitHub.

Na Ethereum, o Token program funciona de forma diferente de um contrato ERC20 da Ethereum. Vamos usar um exemplo para entender a diferença:

Suponha que você queira publicar três tokens diferentes na blockchain Ethereum. Para isso, você precisa implantar 3 contratos separados, um para cada token. E cada contrato de token manterá o controle do seu próprio estado (por exemplo, saldos e transferências).

Já na Solana, não é necessário implantar três programas de token separados. Em vez disso, você pode implantar um único programa de token genérico, capaz de operar em diversas accounts (por exemplo, accounts de mint e de recebimento).

O endereço do mint identifica de forma exclusiva o tipo de token. Essa informação pode ser passada como argumento para uma única instância estática do programa ERC20, já implantada na chain da Solana.

Como usar o SPL Token Program para criar um token fungível

Com o SPL Token Program, você pode criar seu token fungível em poucas etapas. Antes de mergulhar no Token Program, certifique-se de ter configurado sua carteira via CLI, ou de ter conectado sua carteira Phantom à Devnet da Solana, e de ter feito o airdrop de SOL suficiente na devnet para sua carteira.

Etapa 1: crie seu token fungível

O comando de criação de token é uma instrução para o SPL Token Program on-chain criar um novo token. Ao criar o token com sucesso, receberemos um Token ID junto com a assinatura da transação. Mas ainda precisamos fazer o mint desses tokens.

Este é o comando do token: spl-token create-token

Resultados da execução do comando spl-token create-token
Resultados da execução do comando spl-token create-token

Etapa 2: crie uma token account

Para armazenar as informações relacionadas ao nosso token em uma account de dados separada. A token account pertence ao SPL-Token Program, que controla o acesso a esses tokens, junto com o campo owner (nosso Token ID, que pode gastar/transferir os tokens).

Por se tratar de uma account de dados, seu conteúdo pode ser modificado pelo Token Program ao adicionar/fazer mint, transferir ou queimar os tokens.

Este é o comando de criação da token account: spl-token create-account

Como você pode ver abaixo, perdemos um pouco de SOL como taxa de transação ao criar nosso token e sua account associada. Além disso, note que o supply inicial é zero. Isso significa que precisamos adicionar uma quantidade desejada de supply fazendo o mint dos tokens.

Saldo após executar um comando spl-token create-account.
Saldo após executar um comando spl-token create-account.

Etapa 3: faça o mint da quantidade desejada de tokens.

Para fazer o mint de uma determinada quantidade de tokens, execute o seguinte comando:

Depois de executar o comando, a quantidade indicada de tokens será mintada na sua carteira do sistema de arquivos, e o supply do token será atualizado.

Saída do terminal após mintar 2.000 tokens SPL, mostrando o supply atualizado
Resultados após mintar 2.000 tokens

Você pode verificar o supply atual do token e a account associada a ele executando o seguinte comando:

Resultados da verificação do supply e do saldo de contas spl-token
Resultados da verificação do supply e do saldo de contas spl-token

Agora, vamos transferir nossos tokens para nossa carteira Phantom — uma carteira popular na Solana.

Etapa 4: transfira os tokens

O plano é transferir uma quantidade 'x' de tokens para o destinatário — nossa carteira Phantom. O 'fund recipient' é responsável por criar uma token account para o destinatário, caso ela ainda não exista. Isso é chamado de criar uma Associated Token Account.

Aqui está o comando para transferir tokens:

Saída do terminal do comando spl-token transfer enviando tokens para uma wallet Phantom
Resultados da transferência de tokens

Você receberá uma mensagem de sucesso assim que a transferência for concluída.

Mensagem de sucesso de transferência da wallet Phantom
Mensagem de sucesso de transferência da wallet Phantom

Você pode verificar a transferência executando este comando: *spl-token accounts

Observação: se você executar o comando de supply do token, ele ainda mostrará 2.000 tokens, pois o supply indica o número de tokens em circulação na rede, enquanto o saldo se refere ao número de tokens que sua token account possui.

Saída do terminal comparando o saldo da conta de token SPL com o supply total
Saldo de Token vs. Supply de Token

Etapa 5: limite o supply do token

Um dos aspectos cruciais da segurança e da demanda de um contrato é restringir o supply do token. Para desativar a funcionalidade de mint, defina a mint authority como 'None'.

Comando para desativar a mint authority do token: *spl-token authorize mint --disable

Mintando mais 3000 tokens antes da mintagem ser desativada
Mintando mais 3000 tokens antes da mintagem ser desativada
Saída do terminal após desativar a mint authority do token SPL
Resultados da desativação da mint authority

Etapa 6: queime tokens

Se você quiser reduzir o supply de um token, pode optar por queimá-lo.

Aqui está o comando para isso: spl-token burn

Saída do terminal da execução do comando spl-token burn
Queimando Tokens SPL

Uma vez queimados, tanto o supply quanto o saldo serão reduzidos. Como você pode ver no exemplo, nosso saldo caiu de 4.978 para 3.978, e o supply foi reduzido para 4.000.

Saída do terminal após queimar tokens SPL, mostrando o saldo e supply reduzidos
Resultados da Queima de Tokens SPL

A SPL fornece um guia de referência completo sobre como usar o Token Program para realizar outras operações, como:

  • Fazer wrap de SOL em um token.
  • Transferir tokens para uma token account de destinatário explícita.
  • Criar um token não fungível.

Comece sua jornada de desenvolvimento em Solana com a SPL

A Solana Program Library conta com uma série de programas on-chain pré-publicados, com os quais é fácil interagir. Com a SPL, os desenvolvedores podem focar nas características e funcionalidades únicas de seus apps — em vez de gastar tempo com código básico e repetitivo de criação de tokens.

Se você é iniciante e quer começar sua jornada de desenvolvimento em Solana, o primeiro passo é explorar a SPL e a Solana API da Alchemy, além de criar uma conta gratuita de nó RPC da Solana. Isso vai ajudar você a colocar seu programa em funcionamento rapidamente.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.