Saltar al contenido
0%

Interactuar con un smart contract

Última actualización: 1 de noviembre de 20214 min de lectura

Antes de comenzar este tutorial sobre cómo interactuar con un smart contract, debes haber completado la parte 1 — Hello World Smart Contract (crear y desplegar un smart contract). En la parte 3 veremos cómo enviar nuestro contrato a Etherscan para que cualquiera pueda entender cómo interactuar con él!

Parte 2: interactuar con tu smart contract

Ahora que desplegamos exitosamente un smart contract en la red ropsten, probemos nuestras habilidades de web3 e interactuemos con él!

Paso 1: crea un archivo interact.js

Este es el archivo donde escribiremos nuestro script de interacción. Usaremos la librería Ethers.js que instalaste previamente en la Parte 1.

Dentro de tu carpeta scripts/ para el tutorial de hardhat, o tu directorio home para el tutorial de Truffle, crea un nuevo archivo llamado interacts.js y agrega las siguientes líneas de código:

Paso 2: actualiza tu archivo .env

Vamos a usar nuevas variables de entorno, así que necesitamos definirlas en nuestro archivo .env y asegurarnos de que el módulo dotenv esté cargando estas variables.

Necesitaremos agregar una definición para nuestro API\_KEY de Alchemy y el CONTRACT\_ADDRESS donde se desplegó tu smart contract.

Tu archivo .env debería verse algo así:

Paso 3: obtén el ABI de tu contrato

El ABI de nuestro contrato (Application Binary Interface) es la interfaz para interactuar con nuestro smart contract. Puedes aprender más sobre los Contract ABIs en nuestro eth_getLogs deep dive aquí. Hardhat (y Truffle) genera automáticamente un ABI para nosotros y lo guarda en el archivo HelloWorld.json.

Para usar esto necesitaremos extraer el contenido agregando las siguientes líneas de código a nuestro archivo contract-interact.js:

Si quieres ver el ABI puedes imprimirlo en tu consola:

Para ejecutar interact.js y ver tu ABI impreso en la consola navega a tu terminal y ejecuta

Hardhat:

Truffle:

Paso 4: crea una instancia de tu contrato

Para interactuar con nuestro contrato necesitamos crear una instancia de él en nuestro código. Para hacerlo con Ethers.js, necesitaremos trabajar con tres conceptos:

  1. Provider - este es un node provider que te da acceso de lectura y escritura a la blockchain.
  2. Signer - esto representa una cuenta de Ethereum que tiene la capacidad de firmar transacciones.
  3. Contract - este es un objeto de Ethers.js que representa un contrato específico desplegado on-chain.

Usaremos el ABI del contrato del paso anterior para crear nuestra instancia del contrato:

Puedes leer más sobre Providers, Signers, y Contracts en las explicaciones de Ethers.js de Alchemy.

Paso 5: lee el mensaje inicial

¿Recuerdas cuando desplegamos nuestro contrato con theinitMessage = "Hello world!"? Ahora vamos a leer ese mensaje almacenado en nuestro smart contract e imprimirlo en la consola.

En JavaScript usamos funciones asíncronas para interactuar con redes.

Usa el código de abajo para llamar a la función message en nuestro smart contract y leer el mensaje inicial:

Después de ejecutar el archivo usando npx hardhat run scripts/interact.js en la terminal deberíamos ver esta respuesta:

¡Felicitaciones! Acabas de leer exitosamente datos de un smart contract desde la blockchain de Ethereum, muy bien!

Paso 6: actualiza el mensaje

Ahora, en lugar de solo leer el mensaje, también podemos actualizar el mensaje guardado en nuestro smart contract usando la función update! Bastante interesante, ¿no?

Para hacerlo podemos llamar directamente a la función update en nuestro objeto Contract instanciado, así:

Nota que hacemos una llamada a .wait\(\) en el objeto de transacción retornado. Esto asegura que nuestro script espere a que la transacción sea minada en la blockchain antes de continuar. Si dejaras fuera esta línea, es posible que tu script no pueda ver el valor actualizado de message en tu contrato.

Paso 7: lee el nuevo mensaje

Deberías poder repetir el Paso 5 para leer el valor actualizado de message. Tómate un momento y mira si puedes hacer los cambios necesarios para imprimir ese nuevo valor!

Si necesitas una pista, así debería verse tu archivo interact.js en este punto:

Ahora solo ejecuta el script y deberías poder ver el mensaje anterior, el estado de actualización, y el nuevo mensaje impresos en tu terminal!

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

Mientras ejecutas ese script, puede que notes que el paso de Updating the message... tarda un poco en cargar antes de que se establezca el nuevo mensaje. ¡Eso se debe al proceso de minado! Si tienes curiosidad sobre cómo rastrear transacciones mientras se están minando, visita el Alchemy mempool para ver el estado de tu transacción (si está pendiente, minada, o fue descartada por la red). Si tu transacción fue descartada, también es útil revisar Ropsten Etherscan y buscar tu hash de transacción.

¡Y eso es todo! Ahora has desplegado e interactuado con un smart contract de Ethereum. Si quieres publicar tu contrato en Etherscan para que cualquiera sepa cómo interactuar con él, revisa la parte 3: enviar tu smart contract a etherscan! 🎉

Una vez que completes este tutorial, cuéntanos cómo fue tu experiencia o si tienes algún comentario etiquetándonos en Twitter @Alchemy!

Boletín de Alchemy

Entérate primero de los lanzamientos

Suscríbete a nuestro boletín

Recibe las últimas actualizaciones de productos y recursos de Alchemy

A
O
D
+
Más de 80,000 suscriptores

Al ingresar tu correo electrónico, aceptas recibir nuestras comunicaciones de marketing y actualizaciones de productos. Reconoces que Alchemy procesa la información que recibimos de acuerdo con nuestro Aviso de Privacidad. Puedes cancelar tu suscripción en cualquier momento.