Implementación de su primer contrato inteligente
Supongo que está tan emocionado como nosotros de implementar e interactuar con su primer contrato inteligente en la cadena de bloques de Ethereum.
No se preocupe; como es nuestro primer contrato inteligente, lo implementaremos en una red de prueba local, de modo que no cueste nada publicarlo y pueda experimentar tanto cuanto quiera.
Escribir nuestro contrato
El primer paso es visitar Remix(opens in a new tab) y crear un nuevo archivo. En la parte superior izquierda de la interfaz de Remix, añada un nuevo archivo e introduzca el nombre de archivo que quiera.
En el nuevo archivo, vamos a pegar el siguiente código:
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Public variable of type unsigned int to keep the number of counts7 uint256 public count = 0;89 // Function that increments our counter10 function increment() public {11 count += 1;12 }1314 // Not necessary getter to get the count value15 function getCount() public view returns (uint256) {16 return count;17 }1819}Mostrar todoCopiar
Si está acostumbrado a programar, puede adivinar fácilmente lo que hace este programa. Aquí hay una explicación línea por línea:
- Línea 4: Definimos un contrato con el nombre
Counter
. - Línea 7: Nuestro contrato almacena un entero sin firma llamado
count
que empieza con 0. - Línea 10: La primera función modificará el estado del contrato e incrementará (
increment()
) nuestra variablecount
. - Línea 15: La segunda función es solo un getter para poder leer el valor de nuestra variable
count
fuera de nuestro contrato inteligente. Nótese que, como definimos la variablecount
como pública, esto no es necesario, sino que se muestra como ejemplo.
Esto es todo para nuestro primer y simple contrato inteligente. Como es sabido, parece una clase de lenguajes OOP (programación orientada a objetos) como Java o C++. Ahora es momento de experimentar con nuestro contrato.
Implementación del contrato
Como escribimos nuestro primer contrato inteligente, vamos a implementarlo en la cadena de bloques para poder experimentar con él.
Implementar nuestro contrato inteligente en la cadena de bloques consiste simplemente en enviar una transacción que incluya el código del contrato inteligente compilado sin especificar ningún destinatario.
Primero compilaremos el contrato haciendo clic en el ícono Compile situado en la parte izquierda:
Luego haga clic en el botón Compile:
Puede optar por seleccionar la opción "Auto Compile" para que el contrato siempre se compile cuando guarde el contenido en el editor de texto.
Luego, navegue a la pantalla de implementación y ejecución de transacciones:
Una vez que esté en la pantalla de "Deploy and run", compruebe que el nombre del contrato aparezca y haga clic en Deploy. Como puede ver en la parte superior de la página, el entorno actual es "JavaScript VM", lo que significa que desplegaremos e interactuaremos con nuestro contrato inteligente en una cadena de bloques de prueba local para poder probar más rápido y sin ningún costo.
Una vez que haya pulsado el botón “Deploy”, verá que su contrato aparece en la parte inferior. Haga clic en la flecha de la izquierda para expandir y ver el contenido de nuestro contrato. Esta es nuestra variable counter
, nuestra función increment()
y el getter getCounter()
.
Si hace clic en el botón count
o getCount
, se recuperará el contenido de la variable count
del contrato y se mostrará. Como aún no hemos invocado la función increment
, debería mostrarse 0.
Llamemos ahora a la función increment
haciendo clic en el botón. Verá los registros de las transacciones que se realizan, en la parte inferior de la ventana. Verá que los registros son diferentes cuando pulsa el botón para recuperar los datos en lugar del botón increment
. Es porque leer datos en la cadena de bloques no necesita ninguna transacción (escritura) o tarifa. Porque solo modificar el estado de la cadena de bloques requiere hacer una transacción:
Después de presionar el botón de incremento que generará una transacción para llamar a nuestra función increment()
, si volvemos a hacer clic en los botones de conteo o getCount, leeremos el estado recién actualizado de nuestro contrato inteligente con la variable de conteo siendo mayor que 0.
En el siguiente tutorial, veremos cómo puede añadir eventos a sus contratos inteligentes. El registro de eventos es una forma conveniente de depurar su contrato inteligente y entender lo que sucede al llamar a una función.
Última edición: @lukassim(opens in a new tab), 26 de abril de 2024