Pular para o conteúdo
0%

Interagindo com um smart contract

Última atualização: 1 de novembro de 20214 min de leitura

Antes de começar este tutorial sobre como interagir com um smart contract, você deve ter concluído a parte 1 — Hello World Smart Contract (criando e fazendo deploy de um smart contract). Na parte 3 vamos abordar como enviar nosso contrato para o Etherscan para que qualquer pessoa possa entender como interagir com ele!

Parte 2: interaja com seu smart contract

Agora que fizemos o deploy com sucesso de um smart contract na rede ropsten, vamos testar nossas habilidades de web3 e interagir com ele!

Passo 1: crie um arquivo interact.js

Este é o arquivo onde vamos escrever nosso script de interação. Vamos usar a biblioteca Ethers.js que você instalou anteriormente na Parte 1.

Dentro da sua pasta scripts/ do tutorial do hardhat, ou do seu diretório home no caso do tutorial do Truffle, crie um novo arquivo chamado interacts.js e adicione as seguintes linhas de código:

Passo 2: atualize seu arquivo .env

Vamos usar novas variáveis de ambiente, então precisamos defini-las no nosso arquivo .env e garantir que o módulo dotenv esteja carregando essas variáveis.

Precisaremos adicionar uma definição para o nosso API\_KEY do Alchemy e o CONTRACT\_ADDRESS onde seu smart contract foi implantado.

Seu arquivo .env deve ficar mais ou menos assim:

Passo 3: pegue a ABI do seu contrato

Nossa ABI de contrato (Application Binary Interface) é a interface para interagir com nosso smart contract. Você pode aprender mais sobre ABIs de contrato em nosso eth_getLogs deep dive aqui. O Hardhat (e o Truffle) gera automaticamente uma ABI para nós e a salva no arquivo HelloWorld.json.

Para usá-la, precisamos extrair o conteúdo adicionando as seguintes linhas de código ao nosso arquivo contract-interact.js:

Se quiser ver a ABI, você pode imprimi-la no console:

Para executar interact.js e ver sua ABI impressa no console, vá até o terminal e execute

Hardhat:

Truffle:

Passo 4: crie uma instância do seu contrato

Para interagir com nosso contrato, precisamos criar uma instância dele no nosso código. Para fazer isso com o Ethers.js, vamos precisar trabalhar com três conceitos:

  1. Provider - este é um node provider que te dá acesso de leitura e escrita à blockchain.
  2. Signer - representa uma conta Ethereum que tem a capacidade de assinar transações.
  3. Contract - este é um objeto do Ethers.js que representa um contrato específico implantado on-chain.

Vamos usar a ABI do contrato do passo anterior para criar nossa instância do contrato:

Você pode ler mais sobre Providers, Signers e Contracts nos explicadores de Ethers.js do Alchemy.

Passo 5: leia a init message

Lembra quando implantamos nosso contrato com theinitMessage = "Hello world!"? Agora vamos ler essa mensagem armazenada no nosso smart contract e imprimi-la no console.

Em JavaScript usamos funções assíncronas para interagir com redes.

Use o código abaixo para chamar a função message no nosso smart contract e ler a init message:

Depois de executar o arquivo usando npx hardhat run scripts/interact.js no terminal, devemos ver esta resposta:

Parabéns! Você acabou de ler com sucesso dados de smart contract da blockchain Ethereum, muito bem!

Passo 6: atualize a mensagem

Agora, em vez de apenas ler a mensagem, também podemos atualizar a mensagem salva no nosso smart contract usando a função update! Bem legal, não é?

Para isso, podemos chamar diretamente a função update no nosso objeto Contract instanciado, assim:

Note que fazemos uma chamada a .wait\(\) no objeto de transação retornado. Isso garante que nosso script espere a transação ser minerada na blockchain antes de prosseguir. Se você deixasse essa linha de fora, seu script poderia não conseguir ver o valor atualizado de message no seu contrato.

Passo 7: leia a nova mensagem

Você deve conseguir repetir o Passo 5 para ler o valor atualizado de message. Reserve um momento e veja se consegue fazer as mudanças necessárias para imprimir esse novo valor!

Se precisar de uma dica, é assim que seu arquivo interact.js deve ficar neste ponto:

Agora basta executar o script e você deve conseguir ver a mensagem antiga, o status de atualização e a nova mensagem impressos no seu terminal!

npx hardhat run scripts/interact.js --network ropsten

Enquanto executa esse script, você pode notar que o passo Updating the message... demora um pouco para carregar antes que a nova mensagem seja definida. Isso se deve ao processo de mineração! Se você tiver curiosidade sobre como acompanhar transações enquanto elas estão sendo mineradas, visite o mempool do Alchemy para ver o status da sua transação (se está pendente, minerada, ou foi descartada pela rede). Se sua transação foi descartada, também é útil verificar o Ropsten Etherscan e procurar pelo hash da sua transação.

E é isso! Agora você implantou E interagiu com um smart contract Ethereum. Se quiser publicar seu contrato no Etherscan para que qualquer pessoa saiba como interagir com ele, confira a parte 3: enviando seu smart contract para o etherscan! 🎉

Depois de concluir este tutorial, nos conte como foi sua experiência ou se você tem algum feedback nos marcando no Twitter @Alchemy!

Newsletter da Alchemy

Seja o primeiro a saber sobre lançamentos

Assine nossa newsletter

Receba as últimas atualizações de produtos e recursos da Alchemy

A
O
D
+
Mais de 80.000 inscritos

Ao inserir seu endereço de e-mail, você concorda em receber nossas comunicações de marketing e atualizações de produtos. Você reconhece que a Alchemy processa as informações que recebemos de acordo com nosso Aviso de Privacidade. Você pode cancelar a inscrição a qualquer momento.