Deploy de programa Solana com Anchor

Web3 e Blockchain

Deploy de programa Solana com Anchor

Luiz Duarte
Escrito por Luiz Duarte em 15/04/2025
Junte-se a mais de 34 mil devs

Entre para minha lista e receba conteúdos exclusivos e com prioridade

Recentemente escrevi um tutorial onde ensinei como criar seu primeiro programa Solana usando a linguagem Rust e o framework Anchor, você confere este tutorial neste link. Uma coisa que não ensinei na ocasião é que é extremamente importante é o processo de deploy do seu programa na blockchain e este é o objetivo do tutorial de hoje.

O processo de fazer deploy consiste da compilação do seu programa e envio do binário a um nó da rede, que depois vai propagar esse deploy para todos os demais nós. O processo de compilação eu mostrei juntamente no tutorial anterior (“anchor build”), até a parte de testarmos se deu tudo certo. Agora, nesta etapa, vamos ver como fazer o deploy, sendo que usarei a devnet para isso, mas os passos são os mesmos para mainnet, mudando apenas algumas configurações que serão citadas ao longo do tutorial.

Vamos lá!

#1 – Fazendo o Deploy

Acesse o seu projeto e vá no arquivo Anchor.toml. Você deve alterar nele a configuração cluster, que por padrão estará apontando para localnet e você ajustar para devnet, testnet ou mainnet, conforme a rede em que irá fazer deploy, como abaixo. Além disso, ajuste a propriedade wallet para usar uma carteira que vamos colocar na raiz do projeto.

O id.json é um arquivo que contém um array de números representando a chave privada de uma carteira cripto, a carteira que será a authority do seu programa (administradora). Se você já possuir uma carteira para fazer o deploy, copie o id.json dela para a raiz desse projeto e pule a próxima etapa. Caso contrário, você pode gerar uma nova carteira com o comando abaixo, uma vez na pasta do projeto.

Como resultado dessa geração (pode ignorar a parte que ele pede uma frase BIP39) você vai ter uma chave pública no terminal, copie ela e coloque fundos usando o faucet oficial da Solana (se estiver fazendo deploy para devnet) ou em alguma corretora (se estiver fazendo deploy na mainnet). É imperativo que você tenha fundos suficientes, caso contrário terá um erro de “Account has insufficient funds for spend”. Para fins de comparação, um simples “hello world” consome cerca de 1.34 SOL no deploy.

Agora, antes do deploy em si, é importante fazermos uma última compilação do projeto, com o comando abaixo (build simples).

Ou o comando abaixo para build verificado (recomendado para produção, mas muito lento e exige Docker).

Quando você executa esse comando e ele é bem sucedido, é criado na pasta /target/deploy dois arquivos: o keypair do seu programa (com extensão .json) e os binários do mesmo (com extensão .so). Se usou o build verificado, o arquivo .so ficará na pasta verifiable. Para saber o endereço público que seu programa irá ter na blockchain, você pode usar o comando abaixo no terminal (ajustando o nome do arquivo corretamente).

Esse comando decodifica o keypair e te retorna a chave pública do programa (endereço). Pegue esse endereço e volte ao Anchor.toml para ajustar ele na propriedade de mesmo nome do programa. No exemplo abaixo, meu programa é o hello_world_solana.

Use esta chave também no seu arquivo lib.rs, na instrução declare_id, bem ao topo.

Mais uma recomendação é a adição de um security.txt no seu projeto publicado. Esse arquivo conté metadados para que pentesters e auditores (ou até mesmo hackers) consigam entrar em contato contigo caso encontrem vulnerabilidades no seu projeto. Para adicionar estes metadados, o primeiro passo é instalar essa dependência no seu projeto Anchor.

Depois disso, vá no seu lib.rs e adicione a seguinte importação no topo.

E ao final do arquivo a estrutura de metadados, substituindo as informações abaixo pelas do seu projeto.

Por fim, gere agora um novo build.

Agora execute o comando de deploy, como abaixo (este comando faz um deploy simples e não verificado). A carteira authority (que consta no id.json) irá pagar as taxas deste deploy.

Se tudo der certo, você vai ter uma mensagem de sucesso que ainda inclui o seu Program Id (novamente) e a assinatura do programa, como abaixo.

Curso Web23

#2 – Publicando seu IDL

Um elemento chave para integrações futura com o seu programa na rede Solana é a publicação do IDL dele, ou Interface Definition Language, a especificação do programa. Uma integração comum que se beneficia desse recurso é o próprio block explorer da Solana, que consegue entregar informações sobre as transações com muito mais qualidade quando o programa possui seu IDL publicamente fornecido. Para quem vem do mundo EVM, o IDL é o equivalente Solana do ABI dos smart contracts Ethereum.

O IDL é gerado automaticamente na pasta target/idl quando você faz o build, dê uma olhada se ele está lá antes de prosseguir. Depois, rode o comando abaixo.

Em filepath, use o caminho relativo até “target/idl/seu-idl.json” e como ID do programa você deve informar o mesmo ID recebido na etapa anterior e que será seu endereço na blockchain. É importante salientar que esta publicação é uma transação, logo, incorrerá em taxas proporcionais ao tamanho do IDL. Após finalizar, você receberá o endereço da account onde o IDL foi armazenado.

Isso é útil mais tarde para quem quiser se integrar com seu programa, bastando para isso baixar o IDL a partir do block explorer e importar no projeto cliente, permitindo que as libs de integração consigam montar os comandos corretamente. No próximo passo veremos mais sobre o explorer, lá você encontrará uma aba onde pode ver seu IDL publicado.

Exemplo com Security.txt e IDL publicado neste link.

Até a próxima!

Curso Bot

TAGS:

Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *