Pular para o conteúdo principal

Pré-requisitos

  • Um contrato implantado na Plasma testnet. Consulte implantar um contrato se ainda não implantou um.
  • O código-fonte do seu contrato e as configurações de compilação.
  • Argumentos do construtor usados durante a implantação (se houver).
O block explorer da Plasma (plasmascan.to) oferece uma API de verificação compatível com o Etherscan. Os exemplos abaixo usam essa API diretamente — nenhuma conta de terceiros é necessária para submeter uma verificação.

Contratos de Exemplo

Usaremos dois contratos de exemplo para demonstrar argumentos de construtor simples e complexos:

Contrato Simples

Um contrato básico de armazenamento de dados que demonstra conceitos fundamentais de smart contracts.

Contrato Complexo

Um sistema de vault mais sofisticado para gerenciar depósitos de tokens com parâmetros configuráveis.

Verificar com Foundry

Foundry fornece o comando forge verify-contract para verificação de contratos.
  1. Certifique-se de que seu foundry.toml inclua as configurações de verificação:
  2. Verifique o contrato. Para o contrato SimpleStorage com um argumento de construtor do tipo string:
    Para o contrato TokenVault com vários argumentos de construtor:
  3. Verifique o status da verificação. O Foundry exibirá o status da verificação em tempo real com a flag --watch. Procure por:

Verificar com Hardhat

Hardhat oferece verificação de contratos por meio do plugin @nomicfoundation/hardhat-verify.
  1. Atualize seu hardhat.config.js para incluir configurações de verificação:
  2. Verifique o contrato. Para o contrato simples:
    Para contratos com vários argumentos de construtor, crie um script de verificação scripts/verify.js:
  3. Execute o script de verificação:

Verificação Automatizada Durante a Implantação

Você também pode verificar contratos automaticamente durante a implantação adicionando a verificação ao seu script de implantação:

Verificar com Ethers.js

Ethers.js requer chamadas de API manuais ao block explorer para verificação. Essa abordagem oferece controle total sobre o processo de verificação.
  1. Instale as dependências necessárias:
  2. Crie o script de verificação verify-ethers.js:
  3. Codifique os argumentos do construtor. Para argumentos de construtor complexos, você precisa codificá-los em ABI. Você pode usar a ferramenta cast do Foundry:
  4. Finalmente, execute a verificação:

Verifique o Status da Verificação

Após a verificação, você pode verificar se foi bem-sucedida:

No Block Explorer

  1. Visite o Plasma testnet explorer.
  2. Pesquise pelo endereço do seu contrato.
  3. Procure por uma marca de seleção verde ao lado da aba “Contract”.
  4. Clique na aba “Contract” para visualizar o código-fonte verificado.

Programaticamente

  1. Crie um script de verificação de status check-verification.js:

Métodos Alternativos

Embora os block explorers sejam o método de verificação mais comum, você também pode usar:

Sourcify

Sourcify fornece verificação descentralizada de contratos:

Tenderly

Tenderly oferece verificação como parte de sua plataforma de depuração. Consulte a documentação para detalhes.

Achatamento de Contratos

Para contratos com imports ou bibliotecas, você pode precisar achatar seu contrato em um único arquivo antes da verificação. Ferramentas populares incluem: Para projetos complexos com bibliotecas externas, consulte a documentação de verificação do Hardhat para opções avançadas de configuração.

Solução de Problemas

Incompatibilidade dos Argumentos do Construtor

Verifique novamente se os argumentos do construtor correspondem exatamente ao que foi usado durante a implantação. Use cast abi-encode para verificar a codificação.

Incompatibilidade da Versão do Compilador

Garanta que a versão do compilador em sua solicitação de verificação corresponda à versão usada durante a compilação.

Incompatibilidade das Configurações de Otimização

Verifique se as configurações de otimização (habilitado/desabilitado e contagem de runs) correspondem às suas configurações de compilação.

Já Verificado

Isso significa que a verificação já foi bem-sucedida anteriormente. Verifique o block explorer para confirmar.

Limite de Taxa

Aguarde alguns minutos antes de tentar novamente. Considere atualizar seu plano de API se precisar de limites maiores.