Como verificar programa Solana com Solana Verify

Web3 e Blockchain

Como verificar programa Solana com Solana Verify

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

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

Uma das coisas mais comuns para dar segurança aos investidores e usuários de protocolos na blockchain é a verificação de programas/contratos. Basicamente a verificação é o processo de gerar um hash/assiantura de um programa Solana e comparar ele contra um repositório que supostamente é o código open-source do mesmo. Se as assinaturas baterem, quer dizer que aquele realmente é o código e os interessados podem auditá-lo e entender como ele foi construído. Ou seja, qualquer pessoa do mundo poderá olhar o seu código, entender como ele funciona e verificar se possui algo malicioso ou não.

É importante que antes de continuar você já tenha experiência com deploy de programas Solana. A familiaridade com esse tipo de tarefa tornará tudo mais fácil de entender. Caso nunca tenha feito um deploy antes, eu ensino neste tutorial.

Vamos lá!

#1 – Verificando seu programa Solana

Certifique-se de que você já fez o build e deploy do seu programa ao menos uma vez antes de avançar.

Pegue o Program Id do seu programa e vá no explorer.solana.com ou Solscan, certifique-se de escolher a rede corretamente (devnet no meu caso) e cole o endereço do seu programa. Você vai acessar a página de detalhes do seu programa (exemplo e outro exemplo). Repare que ela vai dizer que seu código-f0nte ainda não foi verificado, é isso que vamos resolver agora.

Primeiro, você precisa se certificar que o seu código-fonte está salvo publicamente em um repositório no GitHub e que neste repositório tenha somente este projeto na raiz do mesmo (até tem como verificar em subpastas, mas exige mais configurações que não cobrirei neste tutorial, use a documentação oficial neste caso). Outro ponto que você precisa se certificar é que sua conta padrão da máquina possua saldo, pois a transação de verificação irá usar ela.

Para verificar seu programa você vai precisar ter o Docker instalado na sua máquina e depois você vai precisar instalar o verificador da Solana também, um utilitário de linha de comando em Rust que você pode instalar com o comando abaixo.

Com o Solana Verify instalado, faça um novo build do programa com ele.

Se ele der erro de versão do arquivo Cargo.lock (“parse error: invalid Cargo.lock format version: 4“), apenas vá até ele e troque da version 4 para version 3 e rode o comando novamente.

Agora se ele der erro de conexão com o Docker (“docker: Cannot connect to the Docker daemon”), certifique-se de o Docker está rodando normalmente na sua máquina (eu tive um problema com isso no Mac, resolvi com essa ajuda aqui).

Uma vez que o build rode com sucesso, você pode pegar o hash do executável com o seguinte comando (substituindo a variável pelo valor correto).

Depois de compilado no Docker, é hora de fazer o deploy substituindo as variáveis entre < e > pelos seus próprios valores. Repare como defini que a carteira que está no id.json da raiz do projeto é que é a administradora do mesmo, estou considerando aqui que é a mesma carteira que você usou no deploy inicial, caso contrário dará erro. Apesar disso, as taxas de execução desse comando sempre serão pagas pela carteira default da sua máquina (também é possível modificar isso através de parâmetros).

Na sequência, hora de rodar o comando de verificação a partir do repositório, como abaixo.

E pronto, se tudo deu certo, em dado momento o terminal irá perguntar se você deseja subir a verificação par aa blockchain e basta confirmar, aguardar e a transação de verificação irá acontecer. Agora seu programa estará agora como verificado no block explorer.

Caso você tenha o erro “Error: No such file or directory (os error 2)” isso quer dizer que falta um arquivo de configuração da rede na sua máquina, algo que pode consertar facilmente com o comando abaixo.

Mude a sua rede de acordo se não estiver verificando na testnet e tente novamente que agora o arquivo em questão irá existir. Se precisar rodar o comando verify-from-repo novamente e não quiser fazer todo o build de novo, pode usar a flag –skip-build.

Você vai reparar que na devnet os exploradores de bloco não vão mostrar seu programa como “verificado” (não sei dizer o motivo, mas não vão), então como saber se ele está verificado de fato? Além da mensagem de sucesso após o comando de verificação, você pode tentar verificá-lo novamente, aí receberá este comentário:

“Program already uploaded by the current signer. Updating the program.”

Ou seja, ele já estava verificado e você está fazendo de novo. O que não é nenhum problema, ok? Apenas a página do programa no block explorer devnet não vai mostrar a “badge” de verificado.

Curso Web23

#2 – Tornando seu programa imutável

Uma última dica ligada a verificação de contrato é torná-lo imutável.

Por padrão os programas Solana são atualizáveis, ou seja, o autor do deploy original (authority) pode subir novas versões do programa que irão substituir as antigas. Note que isso é algo sensível de ser feito, principalmente considerando que as accounts utilizadas não são afetadas de nenhuma maneira, somente a account executável em si (programa). Não apenas isso, essa característica da rede é um problema de segurança grave para investidores, pois permite que o dev do programa mude as regras do protocolo com ele em andamento ou até mesmo faça rug pulls e outros golpes financeiros, então não raro é imprescindível que, uma vez que seu programa esteja estável e livre de bugs, que você torne o mesmo imutável, eliminando a informação do authority dele e com isso impedindo que novos deploys atualizem o mesmo.

Para fazer isso, uma vez que seu programa já esteja deployado na blockchain, rode o comando abaixo. Esse comando indica que esse programa não poderá mais ser atualizado pois é a versão “final”. Note como as chaves do owner atual do programa devem ser passadas o parâmetro keypair e a rede no parâmetro “u”.

O resultado, somente a carteira do owner e aparece que o programa não é mais “upgradeable”, como abaixo.

Opcionalmente, durante o próprio deploy inicial você já pode especificar isso, utilizando a flag abaixo no comando solana program deploy. Esse comando faz com que o contrato não tenha authority e com isso não possa mais ser atualizado.

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 *