Cómo crear un contrato inteligente: instrucciones para principiantes
Página principal Tutoriales, Blockchain

Le contamos por dónde empezar si ha decidido intentar desarrollar contratos inteligentes. A los que posean ciertos conocimientos de desarrollo web no les resultará demasiado difícil.

Los contratos inteligentes facilitarán la forma de hacer negocios en la nueva economía descentralizada. La mayoría de los contratos inteligentes se realizan en plataformas DApp (aplicaciones descentralizadas) como ethereum, Lisk o Cardano, y las grandes empresas tecnológicas como IBM han empezado sus propios negocios para desarrollarlos. Esto tiene sentido, ya que hay muchas empresas que preferirían confiar en un gigante del sector como IBM para construir un producto para ellos que tener que hacerlos ellas mismas.

El desarrollo de contratos inteligentes puede convertirse en una habilidad comercializable para los desarrolladores que saben cómo construirlos. Una parte sorprendente de los contratos inteligentes es que no son difíciles de construir. Las plataformas DApp y las herramientas que las rodean hacen posible crearlos y construir su propia tecnología blockchain con gran facilidad.

Los desarrolladores de Javascript no deberían sentirse intimidados por el blockchain. Con un poco de comprensión, el blockchain se convierte en otro framework más.

Planificación de un contrato inteligente

Al crear un contrato inteligente por primera vez, debe decidir qué desea que le facilite.

Para este ejemplo, vamos a centrarnos en la venta de entradas para eventos. La venta de entradas presente enormes problemas debido a los revendedores que compran grandes cantidades de entradas así como al uso de entradas falsas. La tecnología blockchain destaca en muchas cosas, y dos de ellas son la facilitación de las transacciones y el seguimiento de la información.

Debido a esto, una simple línea de código en el contrato puede limitar los precios de reventa de las entradas. Esto evitaría que los revendedores compren una gran cantidad de entradas, ya que venderlas no sería rentable. Mediante los contratos inteligentes, también puede generar tickets tokenizados únicos específicos del propietario y que no pueden ser falsificados. Si le gusta asistir a conciertos, festivales y eventos deportivos, seguramente le vea el potencial.

Opciones de la plataforma DApp

Lo siguiente que hay que elegir es sobre qué plataforma DApp construir el contrato.

El ethereum es la plataforma más grande y establecida. También cuenta con la base de usuarios más activa, y en cualquier tipo de desarrollo, una comunidad activa para responder a sus preguntas es la clave para terminar su producto.

Una desventaja, sin embargo, es que utiliza su propio lenguaje, Solidity, para redactar los contratos.

Otra opción, Lisk, es una plataforma DApp basada en Javascript, por lo que no tendrá ninguna sintaxis nueva. También tiene su propia tienda DApp (como Google Play o iTunes Store) donde puede publicar su aplicación cuando esta esté lista.

También puede probar Cardano, que fue construido por un fundador del ethereum y cuenta con un equipo muy grande e impresionante. Su producto es todavía nuevo, pero si cumplen su promesa de separar la información contractual de los datos transaccionales, podría ser la mejor opción.

Por ahora, repasemos el ethereum o Lisk.

Como desarrollador de Javascript, Lisk puede parecer la decisión lógica, ya que usted ya tiene experiencia en este lenguaje.

Sin embargo, no descarte el ethereum. La comunidad de desarrolladores es tan amplia que seguramente pueda responder a cualquier pregunta que tenga. El ethereum también incluye el framework Truffle, creado por Consensys, que le permite integrar y probar fácilmente su aplicación de contrato inteligente.

Construyendo un contrato inteligente

El lenguaje Solidity parece más intimidante de lo que realmente es. Lo primero de lo que se daría cuenta es del asombroso parecido que guarda con un tipo de JavaScript. Sin embargo, posee algunas diferencias sutiles, como el requisito de punto y coma y el uso de funciones de hash. Las funciones de hash se utilizan para crear claves únicas y asignarlas a otras variables. En nuestro ejemplo, los usaríamos para crear tickets únicos y asignarlos a las cuentas que los compran.

Al crear su primer contrato con ethereum, le recomendamos que utilice el entorno de desarrollo remix.solidity.org. Este ofrece un entorno interactivo para desplegar su contrato e interactuar con él desde diferentes cuentas de ethereum. Un menú desplegable le permite cambiar de cuenta y utilizar cualquiera de las llamadas de función de su contrato pulsando los botones correspondientes.

Lo que hay que tener en cuenta

La única característica diferente de Solidity es el uso de direcciones. Todas las cuentas de ethereum tienen unas direcciones únicas, y esas direcciones representan a las partes que acuerdan un contrato.

En nuestro ejemplo de contrato de venta de entradas, quienquiera que cree el evento tendrá su dirección de cuenta adjunta. Cada vez que alguien compre una entrada nueva, los fondos se transfieren directamente al dueño del evento, eliminando al intermediario. El comprador hace una llamada, y los fondos son retirados de su cuenta, identificados por su dirección, y transferidos al propietario.

Solidity también ofrece una manera única de adjuntar fondos a una llamada de contrato inteligente. Cada llamada de función viene con un mensaje. Este mensaje puede contener información única del remitente, incluyendo su dirección de cuenta, así como un valor en ethereum que desea enviar al propietario del contrato.

También cabe destacar que en Solidity, no todas las llamadas por contrato son gratuitas. Para modificar la información del contrato, por ejemplo, comprar o utilizar una entrada, la red de máquinas que confirman la ejecución del contrato cobra "gas". El gas es básicamente un peaje para aprovechar la potencia de computación de la red.

Otras llamadas que se limitan a consultar el contrato para obtener información, por ejemplo, consultar el precio de una entrada u obtener el número de entradas restantes, son gratuitas. Esto se debe a que no hay información actualizada sobre el contrato; no hay riesgo en estas actividades.

Conectando a JavaScript

La parte más difícil de trabajar en Solidity es integrar su contrato con Javascript. Todo esto se hace utilizando el framework Truffle.

El primer paso para integrar su contrato es desplegarlo y migrarlo a su red de prueba. Truffle proporciona su propio RPC, una red de prueba ethereum separada, llamada Ganache. Este proceso le proporciona una versión JSON del contrato a la que puede llamar utilizando las direcciones de su red de prueba a través de su aplicación Javascript.

Si está buscando más información sobre este proceso, Truffle hace un gran trabajo al delinearlo en sus documentos y cajas de ejemplo que se encuentran en su sitio web.

Otra dificultad a superar cuando se crea un contrato inteligente es cómo conceptualizarlo. Pensando en el blockchain como un desarrollador web, puede considerarlo como un sustituto de la base de datos. En lugar de una fuente centralizada para toda su información, existe una cadena de contratos y transacciones a seguir que conducen a la información.

Debido a que un blockchain es como una base de datos, lo natural es conectar el contrato a su servidor. La creación de una capa API para el contrato hace que el acceso a la información desde el lado del cliente de la aplicación sea tan fácil como realizar una solicitud AJAX. El sitio web de Truffle explica claramente cómo conseguir esta configuración.

Aunque un blockchain es similar a una base de datos, no es completamente idéntica. Posee un protocolo totalmente único que incluye transacciones, hash y creación de bloques. Esta puede ser la parte más difícil del desarrollo del ethereum. En nuestro ejemplo de venta de entradas, debe estructurar una llamada de contrato para comprar una entrada de forma diferente a la llamada para utilizar una entrada. La máquina virtual de ethereum es exigente con estas llamadas.

Esta es otra área donde la gran comunidad de desarrollo del ethereum es útil. Es muy probable que cualquier pregunta que tenga ya haya sido respondida en el Ethereum Stack Exchange, y si no es así, otros desarrolladores están más que dispuestos a ayudarte a desarrollar su contrato.

Preparado por José Rodríguez

Fuente: CoinCentral

Lea también:
Por favor, describa el error
Cerrar