Creando Un token ERC20 Seguro con Openzeppelin en menos de 10 minutos. Usaremos Ganache, truffle, Visual Studio.

in #ethereum6 years ago (edited)

Hola a "tod@"

Quisiera Compartir con uds mi experiencia de como crear un token en Ethereum de forma segura y rápida.

primero vamos a seguir unas serie de paso:
esto lo hago con fine educativo de como implementar contrato inteligente usando truffle.

primer paso debemos tener instalado Chocolatey.
para instalarlo debe abrir un terminal cmd.exe en este caso yo estoy usando win 7 ultimate 64bit

este es el comando para ejecutarlo por cmd.exe: @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Lo recomendable para windows es usar el PowerShell.exe como modo administrador para que no te de errores.

codigo para PowerShell.exe es el siguiente: Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

powers.png

Una vez comienza la instalación debe aceptar las opciones dando la tecla Y

luego ejecutarnos los siguientes códigos uno por uno :

choco install nodejs.install –y

choco install git –y

choco install VisualStudioCode -y

instala ganache un nodo de ethereum local https://truffleframework.com/ganache

Paso dos ya teniendo coholate instalado vamos a ejecutar la herramientas npm
abrimos otro consola de PowerShell como administrador.

y ejecutamos los siguientes comando:

npm install -g npm

npm install -g -production windows-build-tools

npm install -g ethereumjs-testrpc

npm install -g truffle

luego de hacer esto paso vamos a comenzar: a implementar el contracto del token

lo primero que vamos hacer es crear la carpeta usando los siguientes terminales si usaran cmd.exe o git Bash.
en este caso usare git bash por comodidad pero es lo mismo usar cmd.exe

ya teniendo la consola abierta en cmd.exe o git Bash vamos a escribir los siguiente comando:

       mkdir  MyToken     
       cd MyToken 

revisamos la versión de truffle que tenemos para la versión pragma con el siguiente comando 1.PNG

truffle verison

este comando nos mostrara la versión de truffle que estamos utilizando
2.PNG

okz ahora vamos a usar la caja de truffle tutorial token que contiene los archivos necesario para implementar nuestro Contrato ERC20

escribimos el siguiente codigo

truffle unbox tutorialtoken

se nos descargara los siguientes contenidos:
3.PNG

luego abrimos el Visual Studio con el comando: code ubicamos la carpeta MyToken

4.PNG

seguimos el el comando colocamos el siguiente comando:

npm init

debemos daler enter hasta instalar toda la dependencia
5.PNG

debe quedarnos del siguiente modo

6.PNG

ahora descargamos la libreria de openzeppelin con el siguiente codigo

npm install openzeppelin-solidity

ahora vamos de nuevo a visual studio y comenzamos a redactar nuestro contrato.

en la carpeta de conctracs crearemos el siguiente archivo TutorialToken.sol

7.PNG

ahora comenzamos a escribir nuestro contrato inteligente

pragma solidity ^0.4.24;

import "openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol";

contract TutorialToken is StandardToken {

}

importamos los archivo contratos inteligente de openzeppelin del siguiente modo

import "openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol"; esto importa el contrato de StandardToken si quiere ver su codigo lo puede hacer de su repositorio Github https://github.com/OpenZeppelin/openzeppelin-solidity

ahora vamos a darle los parámetros al token donde declararemos el nombre símbolo y los decimales
usando el siguiente codigo

string public name = "TutorialToken";
string public symbol = "TUT";
uint8 public decimals = 2;
uint public INITIAL_SUPPLY = 10000000000;

Usamos variables de tipo string publica llamadas nombre "name", simbolo "symblo" en cual refleja el nombre del token que vamos a crear, tambien hay entereo tipo uint8 publico para los decimales del token en este caso lo hare con 2 decimales.
otro entero publico donde indica el suministro total de los token a realizar en este caso eh creado 100millones y como estoy usando 2 decimales debo agregarle eso 00 de mas.

ahora necesitamos un constructor que me permita llamar al contrato que estamos implementando para eso escribiré los siguiente

constructor() public {
totalSupply_ = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
}

debe quedar del siguiente modo

8.PNG

listo ya tenemos nuestro contracto creado ahora vamos a configurar para desplegar.

vamos a migrations/ y creamos un archivo llamado 2_deploy_contracts.js

en cual agregaremos el siguiente contenido

var TutorialToken = artifacts.require("TutorialToken");

module.exports = function(deployer) {
deployer.deploy(TutorialToken);
};

este contrato hace la declaración del contrato TutorialToken y se manejara automáticamente por el compilador

9.PNG

okz ya estamos casi listo para desplegar el contrato ahora abrimos ganache

ella nos dara 10 cuenta de ethereum con 100 ethereum falso para poner en marcha nuestra prueba

10.PNG

ahora vamos a la consola de comando y escrbimos los siguiente

truffle compile

esto hará la compilación del contrato

luego vamos a migrar el contrato

truffle migrate

si lo esta haciendo por cmd escribe:
truffle.cmd compile

truffle.cmd migrate

11.PNG

12.PNG

vamos a familiarizarnos con el nuevo token

lo recomendable es instalar la extension de MetaMask en tu navegador https://metamask.io/

tendra que ingresar las 12 palabra de seguridad que te proporciona ganache.

13.PNG

configura el RPC de MetaMask RPC personalizado http://127.0.0.1:7545.

en la consola ejecuta lo siguiente

npm run dev

listo esto correra tu dapp donde podrá jugar con el token

hemos teminado con este tutorial si te gusto y quiere ver mas informacion relacionada de como migrar a una red de prueba de ether solo escribe y comenta tu opiniones son valiosa para mi.

no olvide de comentar, estare implementando contrato inteligente en etherum en español .

saludo de Venezuela