Todos os artigos

Verificando smart contracts na Polygon zkEVM usando o explorer

·
19 de jan. de 2023
·
4 min de leitura
·
••• visualizações
·
••• curtidas

Traduzido do artigo original em inglês. Ler em inglês

O código-fonte de smart contracts implantados na chain Polygon POS pode ser verificado usando o explorer, da mesma forma, contratos implantados na testnet da Polygon zkEVM também podem ser verificados usando o explorer da testnet da Polygon zkEVM. Neste tutorial técnico, vamos ver como fazer isso.

Smart contracts verificados oferecem trustlessness porque são contratos cujo código-fonte publicado corresponde ao seu bytecode. Smart contracts verificados garantem isso. Isso permite que os usuários leiam o contrato e entendam como ele foi implementado, e também interajam com ele diretamente pelo explorer.

Antes de começar a verificação, precisamos entender que os contratos podem ser arquivos únicos ou vários arquivos. Arquivos solidity únicos são contratos solidity que não herdam outros contratos, bibliotecas ou interfaces.

Na vida real, contratos implantados raramente vão ser arquivos solidity únicos, então neste tutorial vamos verificar um token ERC20 implantado na testnet da zkEVM. Arquivos solidity únicos podem ser verificados exatamente da mesma forma.

Agora vamos verificar nossos contratos na zkEVM!

Fazendo o deploy do nosso contrato

O primeiro passo é fazer o deploy do nosso contrato

Para conseguir fazer o deploy na testnet, você precisa tê-la importado na sua carteira metamask. Se ainda não fez isso, siga os passos descritos neste post do blog. O post explica em detalhes como importar a testnet e também como conseguir ETH de testnet.

Para fazer o deploy, vá até o Remix IDE, crie um novo arquivo e cole este código.

// SPDX-License-Identifier: MIT
 
pragma solidity ^0.8.9;
 
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
 
contract zkToken is ERC20, Ownable {
    constructor() ERC20("zkToken", "ZKT") {
        _mint(msg.sender, 10000 * 10 ** decimals());
 
    }
 
    function mint(address to, uint256 amount) public onlyOwner {
            _mint(to, amount);
    }
 
}

Vá até a “aba compile” e, antes de compilar, anote a versão do compilador que você está usando. Aqui vamos usar a versão 0.8.12.

Depois de clicar em “compile” e o contrato compilar com sucesso, é hora de fazer o deploy.

Agora vá até a aba “Deploy & Run Transaction”. Troque o padrão "Remix VM London" por "Injected Web3 Provider", o que vai fazer a metamask abrir. Antes de fazer isso, garanta que você já trocou para a testnet da polygon zkEVM.

Conecte sua carteira, clique no botão laranja "deploy" e o contrato vai ser implantado na hora!

Como o nosso contrato importa outros contratos, não dá para verificar colando o código-fonte diretamente, vamos precisar fazer o flatten do código.

Fazendo o flatten do contrato com o plugin Flattener no Remix

Quando fazemos o flatten dos nossos smart contracts, juntamos todo o código solidity em um único arquivo em vez de ter vários arquivos-fonte. Isso significa que, em vez de ter imports, agora temos o código importado embutido no mesmo arquivo.

Para fazer o flatten do nosso smart contract, seguimos estes passos:

Passo 1 - Navegue até o "plugin manager" no Remix, que fica logo acima da aba de configurações.

Passo 2 - Procure o plugin "Flattener" e ative

Passo 3 - Agora navegue até a aba do flattener e clique em "Flatten Contracts/zkToken.

Passo 4 - Em seguida, o contrato com flatten é salvo clicando no botão de salvar

Conferindo o contrato no explorer

Agora que o nosso contrato foi implantado, podemos conferir ele no explorer.

Antes de tudo, colamos o endereço do contrato na barra de busca e vamos ver esta interface.

Navegue até a aba "code" e encontre o botão "verify and publish".

Depois de clicar no botão "verify and publish", aparecem três opções, vamos seguir com a primeira, "verify via flattened source code", e depois clicar em "Next"

Em seguida, preenchemos o formulário apresentado.

deixamos o resto como está.

Voilà!, agora temos o check que indica que o nosso contrato foi verificado!


Conclusão

Verificamos com sucesso o nosso contrato ERC20 na testnet da polygon zkEVM, e agora qualquer pessoa pode interagir com ele. Mais cedo, mencionei que arquivos solidity únicos podem ser verificados seguindo esses mesmos passos, só que sem precisar fazer o flatten do código.

Muito em breve, acredito que ferramentas de verificação como o Sourcify, que oferecem verificação completa usando os metadados do contrato, vão suportar a testnet da polygon zkEVM e, quando isso acontecer, vou escrever sobre isso!

•••
Compartilhe este artigo:

Fique por dentro

Receba os artigos mais recentes no seu e-mail.