Cómo crear su propia criptomoneda en 30 minutos

Antecedentes

Las criptomonedas existen desde hace casi 10 años, siendo la primera la más famosa: Bitcoin. Las criptomonedas tienen el potencial de interrumpir casi todas las industrias donde el valor se transfiere entre dos partes a través de un tercero, ya que ofrecen la capacidad de reemplazar costosos intermediarios confiables con algoritmos económicos basados ​​en software que hacen cumplir la transferencia de valor cuando se cumplen las condiciones predefinidas. Las tarifas bancarias se reemplazan por tarifas mineras, lo que puede reducir los costos.

Ethereum comparte muchas propiedades e con Bitcoin, pero también comprende un sistema informático distribuido completo de Turing llamado Ethereum Virtual Machine (EVM). La característica principal de Ethereum son los contratos inteligentes; Los contratos inteligentes tienen estado y la ejecución de las funciones expuestas por el contrato cambia el estado del contrato. El valor que se transfiere entre dos partes es un ejemplo de tal cambio de estado; la votación en línea es otra.

Los contratos inteligentes generalmente se escriben en un lenguaje llamado Solidez, que se compila en código de bytes; Luego, el contrato se implementa en el EVM y su funcionalidad puede ser invocada por cualquier persona con una dirección de Ethereum. Cualquiera también puede implementar contratos inteligentes en el EVM (con un costo), por lo que el sistema también es sin permisos (es decir, abierto a todos).

tokens ERC 20

En este documento voy a mostrar lo fácil que es crear una criptomoneda muy básica. A esto lo llamaremos GPasToken . Este será un token ERC 20 escrito en Solidity y desplegado en una cadena de bloques local para garantizar la funcionalidad correcta. También mostraremos cómo probar nuestro contrato para asegurarnos de que nuestra implementación sea correcta. Usaremos varias herramientas y bibliotecas para facilitar las cosas.

Los tokens ERC 20 (o criptomonedas) no son más que contratos inteligentes que se ajustan a una interfaz predefinida; la mayoría de las criptomonedas basadas en Ethereum más conocidas implementan la interfaz ERC 20.

Este ejercicio se realizó en una Mac; algunos pasos pueden diferir levemente para Windows.

Introducción

Primero, creemos una carpeta para nuestro nuevo proyecto:

Ahora presentamos un marco que nos permite crear, probar e implementar nuestros contratos inteligentes, y una biblioteca para garantizar que nuestros tokens sean seguros y cumplan con ERC 20. El marco que usaremos se llama Truffle. También usaremos una biblioteca con algunas plantillas de contrato predefinidas, llamada OpenZeppelin. Heredamos del contrato que más se acerca al problema en cuestión, en este caso, la creación de nuevos tokens digitales es un problema resuelto, por lo que no reinventaremos ninguna rueda aquí.

Para instalar Truffle globalmente usando npm y configurar su proyecto, ejecute estos comandos en una ventana de terminal:

Finalmente instale OpenZeppelin usando npm:

Creación de un token ERC 20

Si profundiza en node_modules / openzeppelin-solidity / token / ERC20 , encontrará varias plantillas que puede utilizar para su contrato inteligente. Todos estos son compatibles con ERC 20 y usarlos es tan simple como heredar de su plantilla de contrato preferida. Creemos GPasToken.sol y agreguemos el código requerido para nuestro contrato inteligente.

Cree el contrato usando touch contratos / GPasToken.sol y luego abra el archivo resultante y agregue este código…

BasicToken (y los contratos base de los que hereda) implementa la mayor parte de la funcionalidad que necesitamos, solo definimos un nombre, símbolo, suministro y número de decimales (he elegido 0, pero muchos tokens ERC 20 usan 18 lugares decimales; esto es una cuestión de preferencia personal). A continuación se muestra un ejemplo del código que se está implementando dentro de BasicToken:

El código también existe dentro de los contratos básicos para manejar transferencias, etc. Si está trazando una analogía con la programación tradicional, imagine una sola instancia de una clase ejecutándose en su computadora, cada invocación de una función puede cambiar potencialmente el estado del objeto. En este caso, el contrato es la clase y cada invocación de una función es una transacción en la cadena de bloques de Ethereum (con el orden de cada llamada a una función en el contrato administrado por el libro mayor de la cadena de bloques).

Prueba

Con nuestro contrato en su lugar, agregamos un archivo de prueba usando touch test / GPasTokenTest.sol , y algún código para probar nuestro contrato…

Asegúrese de que los nombres de las pruebas tengan como prefijo la palabra prueba . Las pruebas no están haciendo nada especialmente interesante, pero deberían demostrar adecuadamente cómo escribir una prueba básica.

Implementación

Para asegurarse de que se implemente el contrato, primero ejecute este comando …

… luego agregue este código al archivo resultante …

Ahora vamos a utilizar otra herramienta de la suite Truffle llamada ganache-cli , que es básicamente un nodo Ethereum que se ejecuta en nuestra propia máquina; ¡Esto nos permite implementar contratos inteligentes en nuestra propia cadena de bloques local, por lo que no necesitamos usar Ether real! Ganache se puede instalar globalmente con npm usando este comando (una herramienta GUI también está disponible si lo prefiere):

Ejecute Ganache escribiendo ganache-cli en la terminal. Debería ver que ha generado 10 cuentas, completas con claves privadas, cada una financiada con 100 Ether.

Necesitamos decirle a Truffle que implemente nuestro contrato en nuestra instancia de Ganache, y podemos hacerlo editando truffle.js (o truffle-config.js para Windows) para que apunte a la ubicación correcta:

Para asegurarse de que el contrato esté compilado, ejecute truffle compile desde la raíz del proyecto y luego truffle migrate para implementar. Tome nota del ID del contrato, el resultado se verá así:

El ID del contrato es la parte 0x….

Ahora ha implementado sus propios tokens digitales en su instancia local de Ganache.

Ver sus tokens

Puede ver sus tokens usando cualquier billetera ERC 20 que pueda apuntar a una red de prueba de host local. Utilizo MyEtherWallet, que es un servicio en línea. En la parte superior derecha de la página de inicio debería haber un menú desplegable donde puede elegir a qué red conectarse. Seleccione Personalizado e ingrese localhost y el puerto de su instancia de Ganache (ganache-cli es 8545 por defecto). Ahora importe su billetera usando Ver información de billetera e ingrese la clave privada de la primera dirección que generó su instancia de Ganache. Ahora puede agregar tokens personalizados (en este caso use el símbolo GPAS ) y verificar su saldo.

Conclusión

Todavía hay mucha publicidad en torno a las criptomonedas, a pesar de la reciente caída en el precio de las criptomonedas como Bitcoin y Ethereum. En este ejemplo, mostré cómo, con solo unas pocas docenas de líneas de código, se pueden crear e implementar tokens digitales en la red Ethereum.