Cómo escribir e implementar su primer contrato inteligente

Desde que Ethereum adornó el espacio criptográfico con su presencia a mediados de 2015, el revolucionario invento del programador canadiense-ruso Vitalik Buterin ha dado lugar a muchas nuevas aplicaciones descentralizadas (dApps). Junto con la gran cantidad de dApps que se están construyendo, el éxito de Ethereum se atribuye principalmente a la implementación de contratos inteligentes.

Curiosamente, la invención de los contratos inteligentes se remonta a 1996. El informático Nick Szabo elaboró ​​el término "contratos inteligentes" y los explica de la siguiente manera:

“A estos nuevos contratos los llamo“ inteligentes ”porque son mucho más funcionales que sus antepasados ​​inanimados basados ​​en papel. No se implica el uso de inteligencia artificial. Un contrato inteligente es un conjunto de promesas, especificadas en forma digital, incluidos los protocolos dentro de los cuales las partes cumplen estas promesas ”- Nick Szabo, 1996

Su trabajo más tarde inspiró a muchos otros investigadores y científicos, incluido Vitalik, quien creó Ethereum.

Información básica

Antes de profundizar en la guía, es importante comprender dos conceptos importantes.

Lo primero que debemos entender es qué es la máquina virtual Ethereum ( EVM ). Su único propósito es actuar como un entorno de ejecución para contratos inteligentes basados ​​en Ethereum. Piense en ello como una supercomputadora global que ejecuta todos los contratos inteligentes. Como sugiere el nombre, el EVM es virtual y no una máquina física. Puede leer más sobre EVM aquí.

El segundo concepto que debemos comprender es qué es el gas . En el EVM, el gas es una unidad de medida que se utiliza para asignar una tarifa a cada transacción con un contrato inteligente. Cada cálculo que ocurre en el EVM requiere gas. Cuanto más complejo y tedioso es, más gas se necesita para ejecutar el contrato inteligente.

Cada transacción especifica el precio del gas que está dispuesto a pagar en éter por cada unidad de gas, lo que permite al mercado decidir la relación entre el precio del éter y el costo de las operaciones de cómputo (medido en gas). Es la combinación de los dos, el gas total utilizado multiplicado por el precio del gas pagado, lo que da como resultado la tarifa total pagada por una transacción.

Fee for transaction = Total gas used * gas price;

Lea más sobre el gas aquí.

Ahora que tiene conocimientos básicos sobre qué es un contrato inteligente y cómo se ejecuta el contrato inteligente, podemos ir directamente a cómo vamos a hacer nuestro propio contrato inteligente.

Configurar

Usaremos una herramienta para esto: Pragma. Es una plataforma fácil de usar para crear e implementar contratos inteligentes. Regístrese aquí y vaya al editor:

Inicie sesión en Metamask. Si aún no ha instalado MetaMask, puede comenzar aquí.

Cambie a la red de prueba de Kovan tanto en Pragma como en MetaMask.

Solo para brindarle una breve descripción general sobre las redes de prueba, consulte este artículo.

La red principal de Ethereum es la red oficial de Ethereum. Es más seguro y usa Ether, que tiene un valor monetario real.

Las redes de prueba son redes de Ethereum en las que se acuerda que el Ether no tiene valor monetario. Los desarrolladores usan estos patios de recreo para probar aplicaciones antes de implementarlas en la red principal para sus usuarios.

Para cambiar entre estas redes, haga clic en el nombre de la red junto al icono de MetaMask y seleccione la red. Para este tutorial, elija Kovan .

Escribiendo el contrato inteligente

El siguiente contrato implementará la forma más simple de una criptomoneda. Es posible generar monedas de la nada, pero solo la persona que creó el contrato puede hacerlo (es trivial implementar un esquema de emisión diferente). Además, cualquiera puede enviarse monedas entre sí sin necesidad de registrarse con un nombre de usuario y contraseña. Todo lo que necesita es un par de claves Ethereum.

Este código básicamente te permite acuñar y enviar tokens a otras cuentas.

Veámoslo línea por línea:

pragma solidity ^0.4.21;

Esto indica que el código fuente está escrito para la versión 0.4.21 de Solidity o algo más nuevo que no rompa la funcionalidad. Esto es para garantizar que el código no se comporte de manera diferente con las nuevas versiones del compilador.

contract yourToken

Todo lo relacionado con yourToken va dentro de este contrato. Esencialmente, un contrato en solidez es la colección de funciones y estado (código y datos) en una dirección en la cadena de bloques Ethereum.

address public minter;

Esta es la dirección del minter. La palabra clave "público" hace que esas variables sean legibles desde el exterior.

event Sent(address from, address to, uint amount);

Los eventos permiten que los clientes ligeros (UI) reaccionen a los cambios de manera eficiente.

function yourToken() public {
minter = msg.sender;
}

Establezcamos su dirección de Ethereum como minter del contrato. Deberá acceder al contrato a través de su MetaMask para poder acuñar. Pasaremos por esto nuevamente después de implementar el contrato.

function mint(address receiver, uint amount) public {
if(msg.sender != minter) return;
balances[receiver]+=amount;
}

Esta función le permite acuñar la cantidad de monedas que desee. Puedes acuñar tantas fichas como quieras. La condición if le dice al sistema que deje de ejecutarse si no eres el minter, que se establece en la función yourToken.

Si eres el acuñador, te permite acuñar las fichas.

function send(address receiver, uint amount) public {
if(balances[msg.sender] < amount) return;
balances[msg.sender]-=amount;
balances[receiver]+=amount;
emit Sent(msg.sender, receiver, amount);
}

Esta es una función que permite que una dirección envíe los tokens a otra dirección. Toma dos parámetros: receptor y monto. Reduce la cantidad de la dirección del remitente y agrega la misma cantidad a la dirección del destinatario. El evento enviado, que declaramos anteriormente, ahora se usa para realizar la transferencia. Actualmente, hemos mantenido el remitente como msg.sender, que es el emisor, ya que no queremos complicar el contrato.

Eso es. Su contrato ya está listo, así que compilémoslo.

Compilar e implementar el contrato inteligente

Una vez que se compila el contrato, implementémoslo en la cadena de bloques. Como se mencionó anteriormente, usaremos la red de prueba de Kovan para implementar el contrato.

Verifique si el contrato inteligente está implementado.

Para el contrato que implementé para este tutorial, esta es la transacción. También puede verlo en Pragma bajo sus contratos.

Interactuar con el contrato inteligente en Pragma

Ahí tienes. Su primer contrato inteligente, implementado en blockchain. :)

Se introdujeron muchos conceptos nuevos junto con un par de herramientas increíblemente útiles. Puede ser un poco abrumador, ¡y está bien! Solo trata de entender los conceptos y luego corre con ellos.

¿Ha creado contratos inteligentes simples pero interesantes? Publícalos en los comentarios y los agregaré en la publicación como referencia.

¿Tiene preguntas? Agrégalos en los comentarios o únete a nuestro grupo de telegramas y habla con nosotros directamente.