Interagindo com um smart contract
Autor: Alchemy Team
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:
- Provider - este é um node provider que te dá acesso de leitura e escrita à blockchain.
- Signer - representa uma conta Ethereum que tem a capacidade de assinar transações.
- 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
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.
Artigos relacionados

Transforme o Claude Code em um agente de pesquisa onchain
Transforme o Claude Code em um agente de pesquisa onchain com o Alchemy CLI. Rastreie lançamentos de tokens, carteiras de deployers e admin keys fazendo as perguntas certas.

O roteador Cortex: como escolhemos o nó saudável mais rápido para cada requisição
Levar uma requisição até uma região próxima é o básico. O que acontece depois, escolher qual nó responde, é onde o Cortex atua.

Melhor infraestrutura blockchain para agentes de IA (2026)
Compare a melhor infraestrutura blockchain para agentes de IA em 2026: frameworks de agentes, provedores de RPC e dados prontos para agentes, e os padrões que os conectam.