XRL Tech Corner

Blog
Tamaño de fuente: +

Crear un contrato inteligente Ethereum con Solidity

En este artículo vamos a explicar paso a paso como crear un contrato inteligente de ethereum con solidity. Para realizar con éxito este ejemplo básico, es necesario tener unos mínimos conocimientos de criptomonedas, wallets, y Ethereum.

 

Qué necesitamos?

Actualmente hay algunas herramientas útiles como:

  • Metamask, que es un plugin para los navegadores web
  • Truffle que es un entorno de desarrollo bastante completo
  • Mist que es un explorador de Dapps (aplicaciones distribuidas)
  • Geth que es un cliente programado en Go
  • Ethereum Wallet que es una cartera que permite desplegar contratos
  • Browser Solidity que es un editor y compilador en la nube para trabajar con los contractos inteligentes.

En nuestro caso vamos a usar Geth (un cliente de ethereum en Go y Ethereum Wallet una aplicación que nos servirá para desplegar contratos inteligentes ubicados en el blockchain.

 

Descargar e instalar los programas

Primero vamos a decargar e instalar Geth. Si utilizamos Windows, la mejor opción es bajarse el instalador de 64 bits, aunque también hay versiones para otros sistemas operativos.

Una vez descargado, lo instalaremos en una unidad de disco que tenga suficiente espacio libre por si luego queremos descargar toda la cadena de bloques de ethereum (red pública).

A continuación descargaremos la Ehtereum Wallet. Podemos descargar el instalable o el zip para descomprimirlo en la carpeta que queramos.

 

Creación de una cadena de bloques privada

Para realizar los contratos de pruebas crearemos una red privada de ethereum en nuestro pc con un nodo que contendrá nuestra propia cadena de bloques privada. Para ello abriremos una ventana de "Símbolo de sistema" y iremos dentro de la carpeta de instalación de geth y ejecutaremos:

geth --datadir=./cadenadebloques/ --dev

Esta sentencia creará dentro de la carpeta "cadenadebloques" la carpeta "geth" y "keystore". Dentro de la carpeta "geth" encontraremos la carpeta "chaindata" con la información de la cadena de bloques.

Una vez decargado e instalado, abriremos la aplicación Ethereum Wallet y ella detectará la ejecución de geth en modo red privada virtual con 0 peers, haremos click en "LAUNCH APPLICATION".

Nada más abrir la aplicación de Ethereum Wallet nos puede dar un infarto al ver tal cantidad de Ether en nuestra wallet!

Por defecto se creará la cuenta principal (etherbase) con mucho ether, pero vamos a añadir otra cuenta para realizar nuestras pruebas de transferencias. Haremos click en "AÑADIR CUENTA" y especificaremos una contraseña. Una vez creada haremos click en "stay anonymous".

Nota: Se puede abrir la consola de commandos de geth en la ruta de instalación de geth escribiremos:

geth --datadir=./cadenadebloques attach

Esto abrirá una consola específica de geth ligada a la primera instancia de geth que ejecutamos.

 

Creación de un contrato inteligente

Para continuar crearemos un contrato simple. El "hola mundo" de los contratos inteligentes, que la verdad tiene muy poco de inteligente.

pragma solidity ^0.4.18;

contract HolaMundo {

/* Defino una variable de tipo string para almacenar el texto*/

string constant texto="hola";

/* Función principal */

function saluda() public pure returns (string) {

   return texto;

}

}

Hacemos click en la pestaña de "CONTRATOS" y luego en "DEPLOY NEW CONTRACT": Debajo en el cuadro de texto pegaremos el código de ejemplo de arriba.

En la lista desplegable "SELECT CONTRACTO TO DEPLOY" seleccionaremos "Hola Mundo".

Nos saldrá una opción para seleccionar las comisiones (fees), en función de lo rápido que queremos minar el contrato, se aplicarán unas u otras.

Una vez elegido esto, nos saldrá una nueva ventana "Create contract" con el total de comisiones, incluido el precio de gas, sólo tendremos que poner la contraseña de nuestra cuenta principal (que por defecto está en blanco) y hacer click en "SEND TRANSACTION".

 

 

Minado del contrato inteligente

A continuación tendremos que minar el contrato para que se incluya en la cadena de bloques. Para ello bastará con realizar transacciones de ether entre las dos cuentas que tenemos.

 

Una vez minado podremos entrar en el detalle del contrato y veremos el resultado del método saluda que devuelve la cadena "hola".

Como ejemplo complementario se puede desplegar el mismo contrato que permita cambiar el texto del saludo:

pragma solidity ^0.4.18;

contract HolaMundo2 {

/* Defino una variable de tipo string para almacenar el texto*/

string texto="hola";

/* Función principal */

function saluda() public view returns (string) {

return texto;

}

function cambiaSaludo(string _sal) public {

texto=_sal;

}

}

Una vez desplegado y minado podemos ver el detalle y hacer una llamada al método cambiaSaludo. 

Veremos como el valor de la variable del contrato es ahora "holita".

Para los que quieran continuar avanzando en el tema de los contratos inteligentes, existe un tutorial completo de solidity en español disponible en Tutoriales Online.

 

Conclusión

En pocos pasos hemos visto que crear y desplegar un contrato inteligente es algo sencillo y rápido con las herramientas adecuadas. Este es el punto de partida para realizar contratos más elaborados, de tipo Crowfunding, Conferencias, Smart Properties, AltCoins, etc...

Hay que tener en cuenta que desplegar contratos en la red pública de Ethereum tendrá un coste en Ether, al igual que la ejecución de algunas transacciones del contrato.

Valora este artículo del blog:
Plantillas de email marketing
KeepCoding Bootcamp

Artículos relacionados

 

Comentarios

No hay comentarios por el momento. Se el primero en enviar un comentario.
¿Ya està registrado? Ingresa Aquí
Invitado
Domingo, 18 Febrero 2018
Si desea registrarse, por favor rellene los campos de nombre de usuario y nombre.

Imagen Captcha