Página 1 de 1

Programa tu propio token (no técnicos)

Publicado: Jue Sep 27, 2018 10:38 am
por alpalau
En muchas ocasiones me han preguntado si eso de hacer tu propio token es difícil y que cómo se podría hacer. La verdad es que crear un token en el sentido puramente técnico, es decir, disponer de las funcionalidades técnicas, es muy fácil. En esta entrada me gustaría mostrar una manera muy simple de crear uno (sin pipeline de desarrollo ni nada de eso) para que nos hagamos una idea. En un principio, esta entrada la podría seguir una persona no técnica.

Herramientas que vamos a utilizar:
Metamask - Leer esta otra entrada donde explico qué es y cómo funciona. Esto es un requisito para no perderos si no sabéis cómo funciona
Remix - Compilador + cliente online para desplegar código a la red Ethereum
OpenZeppelin - Framework de smart contracts probados conscientemente para validar su robustez y seguridad, reutilizables para Ethereum y eWASM
Ropsten Faucet - Una de las páginas para obtener Ethers gratis para la red de Ropsten y poder hacer pruebas

1. Preparando Remix
Primero de todo, vamos a abrir la web de Remix. Por defecto, se nos mostrará un código de ejemplo:
Imagen
Iremos revisando las diferentes partes según vayamos avanzando ya que esta entrada no pretende ser un tutorial de Remix (aunque la verdad que es una herramienta útil para validaciones rápidas).
Vamos a eliminar el código que nos dan de ejemplo:
Imagen
Lo hacemos para ambos archivos y, seguidamente, crearemos el nuestro:
Imagen
Genial, ahora tenemos el entorno a 0 y preparado para crear nuestro propio token ERC20.

2. Importando ERC20 de OpenZeppelin
Como la seguridad de los smart contracts es algo muy delicado, generalmente se suele utilizar librerías probadas y revisadas por mucha gente. Es poco seguro construir piezas críticas de tu código por tu cuenta. Para ello vamos a utilizar un smart contract de una librería muy conocida, OpenZeppelin. En concreto copiaremos estos 3 smart contracts:
https://github.com/OpenZeppelin/openzep ... IERC20.sol
https://github.com/OpenZeppelin/openzep ... feMath.sol
https://github.com/OpenZeppelin/openzep ... /ERC20.sol
La manera de copiarlos es la siguiente (repetir para los 3):
Imagen
Imagen
Imagen
Al final del proceso, tendréis que tener los siguientes archivos:
Imagen
Para que todo funcione, deberemos de realizar las siguientes modificaciones:
Fichero ERC20.sol
Imagen
Ahora, vamos a copiar lo siguiente en nuestro archivo miPrimerToken.sol:

Código: Seleccionar todo

pragma solidity ^0.4.24;

import "./ERC20.sol";

contract miPrimerToken is ERC20 {
  string public constant name = "MINITOKEN"; // solium-disable-line uppercase
  string public constant symbol = "MTOK"; // solium-disable-line uppercase
  uint8 public constant decimals = 0; // solium-disable-line uppercase

  uint256 public constant INITIAL_SUPPLY = 100 * (10 ** uint256(decimals));

  /**
   * @dev Constructor that gives msg.sender all of existing tokens.
   */
  constructor() public {
    _mint(msg.sender, INITIAL_SUPPLY);
    }
}
Este archivo será el único que deberemos programar. El resto será importado de librerías testadas. El fichero debería de quedar de la siguiente forma:
Imagen

3. Consiguiendo Ethers para poder comprar GAS
Vamos a la página del Ropsten Faucet y nos aseguramos que Metamask esté conectado a la red de Ropsten:
Imagen
Seguidamente, hacemos clic en request 1 ether from faucet:
Imagen
:!: Al hacer clic en el botón, no se recibe ningún mensaje y parecerá como que no ha hecho nada. Esperar 20seg y comprobar que tenéis 1 ether más en vuestra dirección de Metamask.

3. Compilando y probando nuestro token
Volveremos a la pestaña de Remix y lo primero que haremos será compilar el código:
Imagen
Debería aparecernos los mensajes en verde conforme la compilación ha ido de forma correcta. Los warnings los podemos ignorar.
Una vez compilado, vamos a desplegarlo en la red Ropsten de Ethereum:
Imagen
Importante marcar la opción de Injected Web para que pueda interactuar con nuestro Metamask. Automáticamente nos reconocerá la red (Ropsten) y la dirección que tenemos abierta.
Esto nos generará un aviso en Metamask. Hacemos clic en su icono y confirmamos el envío de la transacción de creación del token:
Imagen
Una vez confirmado (puede tardar un poco según la congestión de la red de pruebas), podremos ver su proceso en la consola o en el propio Metamask:
Imagen
Imagen
Si hacemos clic en ese Contract Deployment de Metamask, nos llevará a un explorador web donde podremos ver (también podríamos desde Remix) la dirección del token:
Imagen
Copiamos esa dirección, en mi caso 0x1f4639daae90236d9834159b9ff978a6f7542dc7 y la añadimos como nuevo token a Metamask:
Imagen

Ya tenemos nuestro token en la red con 100 unidades en nuestra cuenta! Al ser ERC20 un estándar, podríamos integrar ese token con prácticamente todas las herramientas y wallets del ecosistema. Podríamos enviar y recibir estos tokens en la red de Ropsten.

Consideraciones
* Este proceso se ha seguido con fines puramente instructivos, en el mundo "real" no se hace así (sí para pequeñas pruebas/validaciones). Aunque el explorador va muy bien y te permite olvidarte de herramientas locales, configuraciones, etc. lo más habitual es utilizar herramientas de desarrollo para controlar el ciclo de vida de todo este código
* El token vive en la red de pruebas Ropsten. Para la red principal el proceso es el mismo solo que tendríamos que conectar Metamask a la red y, obviamente, no tendríamos un fuente de Ethers gratis...

Espero que os haya gustado.

Re: Programa tu propio token (no técnicos)

Publicado: Jue Sep 27, 2018 12:00 pm
por jochemin
Muy buen tutorial. Calidad!

Re: Programa tu propio token (no técnicos)

Publicado: Jue Sep 27, 2018 10:43 pm
por Javier Domínguez G.
Fantástico Albert, vaya nivel de explicación. Qué envidia me dais los que os explicáis tan bien! :D