Durante los primeros años de Bitcoin no se discutía mucho acerca de los contratos inteligentes; no eran muy conocidos para la comunidad en general aunque realmente su creación antecede a Bitcoin (Nick Szabo los preconceptualizó en 1997).
Sin embargo, no pasó mucho tiempo para que plataformas blockchain como Ethereum y RSK comenzaran a formar parte de la discusión diaria, proveyendo de recursos esenciales para el desarrollo de estos programas en redes distribuidas.
Al pensar en un contrato, nos remitimos casi sin querer a extensos documentos con letras pequeñas, firmas por todas partes y un abogado del cual no confiamos mucho, pero es con el que contamos.
Los contratos inteligentes difieren sutilmente de este concepto. Como programas informáticos, tienen la capacidad de ejecutarse de forma automática una vez configurados con base a los acuerdos logrados entre las partes.
Funcionan como guardianes del cumplimiento de acuerdos del mundo real, al ejecutarse de una forma irreversible e incuestionable. Para esto dependen de los oráculos, puntos de entrada de información desde fuera de la blockchain.
Las condiciones acordadas para su cumplimiento deben estar muy claras entre sus participantes y transmitirse a los programadores y desarrolladores para que configuren el contrato inteligente, ya que, de alguna manera, se debe "traducir" el acuerdo desde el lenguaje verbal al lenguaje informático.
Cada vez más el mercado profesional recompensa a quienes manejen conocimientos sobre programación informática. Los contratos inteligentes, como herramienta disruptiva e innovadora ligada al mundo de las criptomonedas, no se quedan atrás.
En este artículo explicaremos los pasos a seguir para la creación y despliegue de un contrato inteligente. Mencionaremos datos clave para desarrollar contratos basados en Ethereum y RSK, redes blockchain con sus propias características, pero que guardan un marco de trabajo común entre ambos, como el lenguaje de programación Solidity.
La tecnología de blockchain es fundamental para la programación y armado de contratos inteligentes
Soy programador ¿Con cuáles herramientas cuento?
La red más popular para programar contratos inteligentes es Ethereum. Desde allí muchos otros proyectos se han inspirado para habilitar la ejecución de contratos inteligentes en sus propios ámbitos y lenguajes de programación.
En vista de que Solidity, el lenguaje de programación por defecto de Ethereum se inspira en otros lenguajes como C++, Python and JavaScript, dominar estos lenguajes es el punto de partida para programar contratos inteligentes.
Solidity es imprescindible para crear aplicaciones descentralizadas en Ethereum. Solidity permite la ejecución de contratos inteligentes en la Ethereum Virtual Machine (EVM), la procesadora computacional de este protocolo.
Este lenguaje es utilizado también por RSK, una plataforma de contratos inteligentes que es una cadena lateral de la blockchain de Bitcoin, que permite a los desarrolladores crear, importar y desplegar contratos inteligentes de una forma más estandarizada y sencilla. De esta forma, RSK aprovecha la seguridad provista por el poder de cómputo de Bitcoin para procesar contratos inteligentes.
Al visitar Ethereum encontraremos una cantidad enorme de recursos con diversas funcionalidades. Desde herramientas para construir aplicaciones hasta las que nos permiten rastrearlas y analizar su desempeño.
Truffle
La herramienta principal para programar contratos inteligentes basados en la EVM es Truffle. Este entorno digital permite desplegar contratos y configurar su evolución en el tiempo, así como conectar e interactuar con otros contratos y protocolos.
Utilizando Truffle podemos desarrollar contratos inteligentes y desplegarlos en otros protocolos blockchain compatibles, privados o públicos, abriendo la posibilidad de crear una variedad de aplicaciones descentralizadas (Dapps). Además, permite enlazar diversos contratos entre sí y compilarlos de una forma efectiva, haciendo más fácil su manejo en conjunto y migración hacia otros entornos de trabajo o redes.
De esa manera, si tenemos un contrato inteligente desarrollado en alguno de los lenguajes de programación compatibles con Ethereum, se pueden importar hacia RSK. Así, este marco de trabajo de código abierto permite conectar un nodo de RSK y realizar pruebas con los contratos inteligentes previamente creados, tal como simular una red en la que interactúen diversos participantes y contratos de forma segura.
Ganache
Ganache es la red simulada de pruebas integrada a la suite de Truffle, lo que permite desplegar contratos en una red con las últimas actualizaciones de Ethereum, configurar la minería y emisión de bloques y depurar la red de errores e inconsistencias del protocolo, sin riesgos y sin costos adicionales.
Los desarrolladores de software cuentan con un sinfín de herramientas para armar programas y apliaciones
VisualStudio
Otras de las herramientas disponibles es VisualStudio, una consola para inserción y edición de código con una interfaz más intuitiva y visual. Este programa permite a los desarrolladores ver cómo sus líneas de código se relacionan con otras.
Entre las características más importantes de este programa está, que se puede editar código en vivo, directamente en una aplicación que se esté ejecutando. Asimismo, incluye variedad de extensiones para añadir otros lenguajes de programación, temas y servicios de terceros.
Buidler
Buidler es la herramienta recomendada por Ethereum para verificar el correcto funcionamiento de los contratos inteligentes, en un entorno de pruebas libre de riesgos donde se integran plugins y herramientas adicionales.
Metamask
Entre los requisitos imprescindibles para interactuar con contratos inteligentes está utilizar una cartera apropiada. Una de las más conocidas es Metamask, que, una vez instalada como extensión en el navegador web, nos permitirá manipular Ethers y tokens ERC-20. Con esta cartera podremos interactuar con los contratos inteligentes y realizar transacciones de este tipo. Es una de las más conocidas, aunque hay otras disponibles como MyEtherWallet.
Con estas herramientas podemos desplegar los contratos inteligentes previamente diseñados, conectándolos con un nodo de la red pública. Esta suite de herramientas resulta muy versátil tanto para Ethereum como RSK. Recordemos que la EVM y su lenguaje de programación son compatibles con otras plataformas como RSK o redes privadas como Microsoft Azure.
¿Qué debo tomar en cuenta?
El principal requisito además de conocer lenguajes de programación como Javascript, es dominar Solidity, como lenguaje principal a utilizar en la creación de contratos inteligentes.
Para crear un contrato inteligente tampoco se debe olvidar definir la conceptualización y el esquema de este. Basándonos en contratos legales reales podemos emular sus condiciones, su estructura, las instrucciones a seguir. Escuchar a las partes involucradas y entender bien los requisitos y características que nuestro contrato debe tener.
En cuanto al desarrollo de aplicaciones descentralizadas y tokens utilizados con otros propósitos, se debe pensar detenidamente cuál será la funcionalidad de este contrato antes de ofrecerlo como producto a la comunidad de usuarios. Estos deben tener claro para qué se utiliza el token y cuál es su funcionamiento adecuado.
Igualmente considerar la creación de una interfaz gráfica para mejor manejo del usuario final. La facilidad y accesibilidad que tenga el cliente del contrato en utilizar sus funcionalidades puede ser crucial en el caso de contratos que requieran la inserción manual de información.
También puede ser recomendable trabajar con consultores o entidades como OpenZeppelin, con el objeto de que verifiquen con experticia el funcionamiento de estos contratos, además de que no tengan brechas de seguridad o puntos débiles que puedan ser explotados.
Desplegar el contrato inteligente en Ethereum
Para desplegar un contrato inteligente en la red pública de Ethereum debemos contar primero con unos Ethers depositados en nuestra cartera, para así poder realizar la transacción que pondrá nuestro contrato en línea; y pagar el "gas" de la red.
Una vez hayamos realizado las pruebas y depurado de errores el contrato, utilizamos Truffle para desplegarlo, usando el comando truffle deploy. Al desplegar el contrato, obtendremos la dirección de este, mediante la cual los usuarios del contrato podrán interactuar con este.
En el caso de Ethereum se cuenta con una variedad de redes de prueba, con diferentes características a elegir según la preferencia de los desarrolladores.
Tenemos a Ropsten, una blockchain basada en el algoritmo de Prueba de Trabajo (PoW) y que incluso permite la minería de Ethers.
También contamos con Kovan, una blockchain basada en la Prueba de Autoridad (PoA) y desarrollada por el equipo de Parity. En este caso, los Ethers no se minan, sino que son adquiridos mediante un faucet.
Por otro lado, Rinkeby, también basada en la Prueba de Autoridad y desarrollada por el equipo de Geth. Tampoco se pueden minar Ethers, sino adquirirlos a través de un faucet.
Con la red de pruebas de Ethereum se puede interactuar a través de Metamask, pero también a través de las carteras MyEtherWallet y MyCrypto.
RSK, contratos inteligentes asegurados por Bitcoin
Como ya hemos comentado, los contratos inteligentes se pueden crear a partir de Truffle utilizando otras herramientas y recursos complementarios. Pero el código de un contrato inteligente también se puede importar en otras plataformas y entornos, como es el caso de RSK.
RSK es una blockchain que permite la configuración de contratos inteligentes sobre Bitcoin. La complejidad técnica del protocolo Bitcoin hace más difícil el desarrollo y ejecución de contratos inteligentes en su red. Sin embargo, RSK utiliza el poder de procesamiento de Bitcoin para ejecutar contratos y transacciones, siendo un puente de enlace con el protocolo de la criptomoneda originaria.
Tal y como RSK explica en su blog, los pasos a seguir para desplegar un contrato inteligente comienzan con la instalación de un nodo local de RSK.
Instalar un nodo de RSK
En la página web de RSK brindan los detalles al respecto de instalar un nodo, haciendo énfasis en que estos son compatibles con los principales sistemas operativos, como Mac, Linux y Windows. Según indican, la instalación no debería demorarse más de 15 minutos si se siguen las instrucciones paso a paso.
La importancia de instalar un nodo radica en que con él transmitiremos y desplegaremos nuestro contrato inteligente, siendo un puente de conexión con el resto de los participantes de la red.
Probar contratos inteligentes en RSK
Antes de desplegar un contrato inteligente en la red principal de RSK, se debe primero evaluar su desempeño en la red de pruebas. Esta red la podemos utilizar con la cartera Metamask, definiendo un nombre customizado de la red, para luego ingresar a la URL del nodo público de pruebas en la casilla RPC (Procedimiento Remoto). Por último, configurar rBTC, la ficha nativa de RSK, como token por defecto.
Una vez lista esta configuración, ingresamos al faucet de tokens tR-BTC, copiamos la dirección, resolvemos el captcha y esperamos cerca de 30 minutos para recibir los tokens.
Conclusiones
Los contratos inteligentes tienen la facultad de ejecutar tareas de forma automática, previo acuerdo de las partes. Su programación y codificación es compleja y por eso mismo, tienen el potencial de impulsar la creación y desarrollo de múltiples aplicaciones y utilidades.
Cada vez más los smart contracts formarán parte de procesos que están cambiando el mundo. Estarán involucrados en la inteligencia artificial, el internet de las cosas y el manejo masivo de datos e información.
Igualmente, puede formar parte de las dinámicas sociales en torno al mundo de las monedas digitales, como habilitar las finanzas descentralizadas y el intercambio de activos basados en blockchain, indicó Criptonoticias.