Contrato Hola Mundo

Explicamos con ejemplos c贸mo crear una cuenta y un contrato Hello World para subir a una blockchain basada en EOS.IO. Para este ejemplo, nos basamos en recursos publicados por Block.one para compartir con la comunidad.

Obtenga sus Llaves Privadas#

Mas informaci贸n sobre llaves privadas.

Adquirir Recurso RAM#

Una vez que se tiene la cuenta, podemos usar el Faucet para recibir tokens ficticios gratis, que en este caso ser谩n EOS, necesarios para usar recursos de la red (siempre y cuando se tenga participaci贸n en esa red). La l贸gica de esto es que, para el contrato, estaremos requiriendo adquirir recursos RAM de block producers, para lo cual necesitaremos estos EOS que se nos acaban de enviar.

Con este comando podemos revisar la cantidad de EOS con los que contamos en esta cuenta (que en este caso son 100 EOS), as铆 como el recurso RAM, que en este momento es de 5.366 KiB.

Para adquirir RAM, escribimos el comando buyram para nuestra cuenta. Se debe especificar dos veces el nombre de la cuenta, una vez para definir de d贸nde salen los EOS y otra vez para indicar hacia d贸nde se env铆a el RAM. En la misma l铆nea, se debe indicar la cantidad de EOS que estaremos aportando. Para el ejemplo estaremos enviando 50 EOS. Al tener la billetera desbloqueada, autom谩ticamente adquirimos el RAM por el monto de EOS que indicamos.

Luego de ejecutar la compra, se puede verificar que ahora se tienen 86 KiB de RAM y solo 50 EOS de los 100 que originalmente nos fueron asignados.

En el block explorer de Bloks.io, se puede buscar la informaci贸n de esa cuenta. Adicionalmente, se pueden revisar las acciones tomadas, incluyendo las transacciones de compra de RAM, los tokens del Faucet y el historial completo de movimientos.

Crear un Contrato#

Para continuar, vamos a crear un contrato sencillo dentro de un nuevo directorio, el cual llamamos 鈥渉olacontrato鈥. Como en EOS se requieren recursos, estos deber谩n estar asociados a los tokens de una cuenta, por lo que se debe poner el mismo nombre del contrato anteriormente creado.

Para editar el contrato, puede usarse un editor de texto. Para este ejemplo se utiliz贸 Sublime Text.

La primera l铆nea incluye una librer铆a que a la cual se tiene acceso a trav茅s del Contract Development Toolkit (CDT), una herramienta que permite acceder a recursos para crear los contratos.

En la l铆nea de clase, se deber谩 exponer nuestro contrato 鈥渉olacontrato鈥 que tiene una acci贸n definida, que en este caso llamamos 鈥淗ola鈥 y su argumento es un usuario tipo nombre. Al guardar el contrato, en el directorio queda un archivo C++.

El archivo C++ se tiene que compilar usando la herramienta CDT (Contract Development Toolkit), que recibe de input el archivo C++ y como output origina un archivo web assembly (wasm) que es un archivo ejecutable por el contrato. Adicional al archivo wasm, tambi茅n se genera un archivo abi que sirve para el mapeo de las funciones del contrato. El comando va a recibir el contrato como un input y como output va a generar un archivo wasm que es el archivo que realmente se sube al blockchain.

Como no especificamos una, el sistema nos da un mensaje de que no existe una cl谩usula ricardiana. Una cl谩usula ricardiana es un contrato en prosa, escrito en ingl茅s, que describe la intenci贸n del contrato y que debe estar alineada con la intenci贸n para la que se cre贸. En el sitio de Block.one vienen recursos para las cl谩usulas ricardianas. Para efectos del ejemplo no creamos uno.

Una vez ejecutado el comando para set contract, el sistema lee la informaci贸n en el contrato para luego publicarlo.

Publicar el Contrato#

Para publicar nuestro contrato, debemos usar el comando usado en cleos y el API endpoint usado anteriormente para subir el contrato a la ubicaci贸n que queremos con un permiso activo para poder firmar con la billetera creada.

De vuelta al block explorer (Bloks.io), podemos verificar que la cuenta es due帽a de un contrato que expone la acci贸n 鈥淗ola鈥 y que contiene la informaci贸n abi en la que se especifican en estructura JSON las acciones dentro del contrato y componentes asociados.

Una vez que el contrato est茅 listo, podemos ejecutar una acci贸n en el contrato. Con cleos existe un comando para especificar el endpoint y as铆 ejecutar la acci贸n 鈥淗ola鈥. Para este ejemplo, ponemos como input: 鈥渆oscostarica鈥. El output de la acci贸n ser谩 el texto 鈥淗ola eoscostarica鈥.

Podemos verificar en el explorador de bloques las acciones ejecutadas.

Es necesario esperar unos segundos para completar la irreversibilidad del bloque, ya que los block producers deben hacer la validaci贸n del bloque de datos para esto.

Finalmente, esta es una muestra de c贸mo se puede interactuar con una blockchain. Existen herramientas de Javascript, librer铆a EOS JS que podr铆a implementarse para ejecutar acciones de una manera m谩s program谩tica para integrar con dApps, poder persistir datos, o incluso ejecutar l贸gica de negocios en la blockchain con este mismo patr贸n.

Video Tutorial#

Last updated on by JustinCast