¿Cómo hacer tu propia criptomoneda e implementa tu primer contrato inteligente?

¿Cómo hacer tu propia criptomoneda e implementa tu primer contrato inteligente?

Crear e implementar fácilmente un token ERC-20

¿Alguna vez pensaste en hacer tu propia criptomoneda? Es posible y mucho más fácil de lo que piensas.

Este tutorial te enseñará cómo escribir e implementar un contrato inteligente en Ethereum, y ese contrato inteligente contendrá todas las reglas de tu token. Al final del curso, podrás ver tu nuevo token en tu cartera digital y transferirla a otras carteras.

Primero unas explicaciones breves para tener todo claro:

Token vs moneda

¿Cuál es la diferencia?

Una moneda tiene su propia cadena de bloques. Por ejemplo Bitcoin opera en la cadena de bloques de Bitcoin, Ethereum opera en la cadena de bloques de Ethereum y Dogecoin opera en la cadena de bloques de Dogechain. Cada una tiene su propio libro de transacciones.

Sin embargo, un token se basa en una cadena de bloques existente. No tienen su propio libro de transacciones y, en cambio, son simplemente contratos inteligentes que se implementan en una cadena de bloques. Un token puede representar literalmente cualquier cosa: billetes de lotería, una pintura, una onza de oro, puntos de experiencia en un videojuego, lo que sea. Algunos de estos ejemplos son tokens no fungibles (o NFT), lo que significa que todos tienen valores diferentes y no son iguales entre sí.

Ahí es donde entra algo llamado ERC-20. ERC-20 introduce un estándar para tokens fungibles, es decir, tokens que tienen el mismo valor.

Los tokens ERC-20 se construyen en la red Ethereum y actúan de manera similar a ETH. Un token ERC-20 también tiene otras características, que puede consultar aquí. En este tutorial, crearemos un token ERC-20.

Primer Paso:

Instalación de metamask

Antes de continuar con cualquier tipo de desarrollo web3, deberás instalar Metamask. Es una extensión para navegador de una cartera digital que permite interactuar con aplicaciones blockchain. Instálalo en tu navegador favorito y sigue los pasos para configurar una cartera Ethereum. Cuando hayas terminado, deberías ver algo como esto:

image.png

Implementaremos nuestro contrato inteligente en la red de prueba de Kovan para este curso. Una red de prueba es una red que simula Ethereum, por lo que puede implementar y probar su código en la cadena de bloques sin utilizar activos o dinero real. Deberás conectar su Metamask a Kovan desde el menú desplegable en la parte superior (si acaba de instalar Metamask, este menú desplegable se establecerá de forma predeterminada en Ethereum Mainnet). Dato curioso: hay 5 redes de prueba actualmente en uso, y todas llevan el nombre de estaciones de metro de todo el mundo. El siguiente paso es poner algo de ETH en su billetera Kovan. Puede usar este sitio:

ethdrop.dev

Simplemente pega la dirección de su cartera. Esto no es ETH real. Después de hacer eso, deberías ver que el número de ETH en tu cartera aumenta, y si haces clic en la pestaña Actividad, verás la transacción.

Remix IDE

Los contratos inteligentes de Ethereum están escritos en un lenguaje de programación llamado Solidity. En este tutorial, no entraremos en los detalles esenciales de su sintaxis o palabras clave. Si desea aprender Solidity, una de las formas más populares de hacerlo es a través de un juego llamado CryptoZombies.

Una manera fácil de comenzar a escribir contratos inteligentes en Solidity es usando Remix.

Es un IDE (Entorno de Desarrollo Integrado) en línea que permite escribir e implementar fácilmente contratos inteligentes en Ethereum. Se verá así cuando lo abras:

image.png

Ignoremos el código que ya está ahí. Son buenos ejemplos de contratos inteligentes que puedes consultar más adelante para obtener más información sobre Solidity.

Antes de comenzar a escribir código, actualicemos la configuración del compilador de Remix para usar la versión más reciente de Solidity. Puedes hacer esto haciendo clic en el botón Compilador en la barra lateral y seleccionando la opción superior en el menú desplegable bajo Compilador. En el momento de escribir este artículo, estoy usando la versión 0.8.9. (Nota: Solidity cambia rápidamente, por lo que si sigue este tutorial meses después de que está escrito y utiliza la versión más reciente, es posible que tenga algunos problemas.)

image.png

Cree un nuevo archivo haciendo clic en este ícono:

image.png

Asignemos el nombre deseado para tu token. Es una buena práctica darle al archivo el mismo nombre que su contrato. En este tutorial lo llamaremos PesudoToken.

image.png

Ahora estamos listos para escribir el código.

Lo primero que tenemos que incluir es nuestra declaración de pragma. Le dice a Solidity para qué versión está escrito nuestro código. La versión aquí debe ser la misma que la versión que seleccionó para su compilador.

pragma solidity ^0.8.9;

A continuación, vamos a importar una implementación de ERC-20 desde Open Zeppelin. Esto hace la mayor parte de nuestro trabajo por nosotros, y cualquier otro código que escribamos personalizará nuestro token. Fácil, ¿verdad?

import 'https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol';

A continuación, escribamos nuestro contrato e introduzcamos ERC-20.

contract PesudoToken is ERC20 {
      constructor() ERC20 ('Pesudo Token', 'PSO') {
                   _mint(msg.sender, 100 * 10 ** 18);
          }
    }

Aquí, la palabra clave “is” hereda la implementación de ERC20 que hemos importado. Hemos pasado dos argumentos a nuestro constructor ERC-20, el nombre del token y el ticker (como Bitcoin y BTC). Eso es todo. Ha creado un contrato inteligente de token ERC-20.

Pero no existen tokens. El número de tokens creados es cero. Si echas un vistazo al código ERC-20 de Open Zeppelin, verás un comentario en la parte superior:

This implementation is agnostic to the way tokens are created. This means that  a supply mechanism has to be added in a derived contract using {_mint}.

Generemos algunos tokens en la implementación y los enviamos a nuestra cartera. Vamos a crear nuevos tokens, aumentando la cantidad de tokens que existen. La función _mint ya existe en Open Zeppelin , así que la llamaremos en nuestro constructor.

image.png

¿Qué está pasando aquí? _mint toma dos argumentos: la dirección de la cuenta en la que se genera el token y el número de tokens que se acuñan.

msg.sender es una variable incorporada en Solidity y se refiere a la persona que actualmente se conecta con el contrato. Como somos los que implementamos el contrato y ejecutamos el constructor, en este caso somos msg.sender.

100 10 ** 18 parece un poco complicado, pero todo lo que hace es describir la cantidad de tokens decimales, lo que permite que su token se divida en partes más pequeñas, es decir, puede enviar 2.1 o 0.73 tokens. 10 ** 18 es el estándar para tokens, y puede ver lo que eso significa aquí .

Su código completo se verá así:

pragma solidity ^0.8.9;
import 'https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol';
contract PesudoToken is ERC20 {
       constructor() ERC20('Pesudo Token', 'PSO') {
                         _mint(msg.sender, 100 * 10 ** 18);
      }
}

Ahora ha creado un contrato inteligente que generará y enviará 100 de sus nuevos tokens ERC-20. Hay muchas más personalizaciones que puede hacer (capacidad para acuñar más tokens, limitar cuántos existen, requisitos para quemar tokens, etc.) pero por ahora, vayamos al paso más emocionante.

Implementando nuestro contrato inteligente Antes de que podamos implementar nuestro contrato, debemos compilarlo. Con el contrato inteligente del token abierto, abra la pestaña Compilar como lo hizo antes y haga clic en Compilar PesudoToken.sol.

image.png

El contrato ya está compilado y listo para su implementación. A continuación, vamos a conectar Remix a nuestro proveedor web3 inyectado, que en nuestro caso es Metamask. Esto nos permitirá ver todos nuestros tokens en nuestra cartera. Remix hace que esto sea increíblemente fácil y solo requiere unos pocos clics.

Hagamos clic en el botón de implementación en la barra lateral, como se muestra a continuación:

image.png

En Entorno, busque Injected web3 en el menú desplegable. Cuando haga clic aquí, será redirigido a una pantalla de permisos de Metamask que se parece a esto:

image.png

Después de dar el permiso, debería ver la palabra Kovan debajo del menú desplegable Entorno (Environment). También debería ver la dirección de su billetera en la sección Cuenta. Verifique para asegurarse de que esto sea correcto antes de continuar.

image.png

Luego, busca el contrato inteligente en el menú desplegable y presione Implementar. Serás redirigido a Metamask pidiendo permiso (te costará parte del Kovan ETH que obtuviste antes). Haz clic en Confirmar.

image.png

image.png

Eso es todo: El contrato inteligente se implementa en la red de prueba de Kovan Antes de ver esto en Metamask, asegurémonos de que todo funcionó. Si se desplaza hacia abajo en la pestaña Implementar y ejecutar transacciones y hace clic en el menú desplegable de su contrato, verá algunos botones y campos naranjas y azules.

image.png

Estas son las diferentes funciones que contiene su token ERC-20. Como notará, no las escribimos, son las funciones que nuestro token heredó del código Open Zeppelin ERC-20. Un botón naranja te permite escribir, mientras que un botón azul te permite leer. Para asegurarse de que nuestro contrato se implementó y nuestro constructor funcionó correctamente, copie la dirección de su cuenta en el campo azul balanceOf y haga clic en el botón balanceOf. Debería ver un número similar a este:

image.png

Ese número no es el número de tokens en base 10, es un valor uint256 que incluye ese 10 * decimal que especificamos anteriormente. Realmente, este número significa 100. ¡Ahora veamos esto en Metamask! Para hacer esto, deberá copiar la dirección del contrato. Lo encontrará en la sección Contratos implementados.

image.png

Luego abra Metamask, abra la pestaña Activos y haga clic en Agregar token. Haga clic en Token personalizado en la parte superior y pegue la dirección del contrato. Los campos Token Symbol y Token Decimal deben completarse automáticamente.

image.png

Luego, después de hacer clic en Siguiente, debería ver su nuevo token debajo de su ETH en Metamask. También podrá ver que tiene 100 tokens, que es exactamente lo que establecemos en el contrato inteligente. Puede enviar estos tokens entre cuentas en Metamask y actuará exactamente como cualquier otro token en la cadena de bloques Ethereum.

image.png

¿Qué sigue?

Ahora has escrito e implementado tu primer contrato inteligente en Ethereum. Si deseas jugar un poco más con su token, intenta crear una función que le permita generar más tokens. Incluso puedes establecer límites sobre quién puede generar tokens, o la cantidad máxima de tokens permitidos que existan en la red; consulte la palabra clave require. Recuerda, cada vez que implemente un contrato inteligente, tendrá una nueva dirección en Ethereum. Eso es algo hermoso sobre blockchain, es inmutable.

¡Felicidades!