RGB, smart contracts sobre Bitcoin y Lightning Network

RGB no es una tecnología que soluciona todos los problemas en base a magia aunque; así lo parezca. La realidad es que detrás del desarrollo de RGB hay tanto ideas nuevas como antiguas que convergen para lograr una solución que muchos en la comunidad BTC llevan pidiendo mucho tiempo: smarts contracts Turing Completo sobre Bitcoin.

Sin embargo, antes de explicar cómo funciona RGB, es necesario tener algunos conceptos claros sobre BTC y sus capacidades reales.

Bitcoin tiene smarts contracts, siempre los ha tenido

En primer lugar, limpiemos nuestras ideas de afirmaciones erróneas: Bitcoin tiene smart contracts. Son muchos los recién llegados al mundo cripto (y los que llevan tiempo también) que piensan que Bitcoin no tiene smart contracts. Pero la realidad es, que si, Bitcoin tiene smarts contracts y siempre los ha tenido. Más específicamente, estos smart contracts en Bitcoin reciben el nombre de Bitcoin Script y  son los responsables de que podamos movilizar valor dentro de la red BTC.

https://lh6.googleusercontent.com/dsP_y58CWf2uxYsAO2wyu2wrFJoWncD_1UZiDl_ZrBOeB-2IDAbIVZ4BZ738zkBb0X1hceFLFNntkZgtfCBaxokm_0Gi4rJUMSzTrxJZKBK6f9eSqxX72JD24AmLpkXNxooay_RBDNSYHW3FCQ=s0

En este punto te preguntarás ¿Por qué se dice que BTC no tiene smart contracts? La razón es muy sencilla: Bitcoin Script está capado. Está tan capado, que frente a Solidity (el lenguaje de smart contracts usado en ETH) bien podríamos decir que Bitcoin Script es una broma de mal gusto. Sin embargo, esto tiene un objetivo muy claro: hacer de Bitcoin Script un lenguaje muy seguro. Bitcoin Scripts es tan seguro que en lo más de 10 años de vida de Bitcoin jamás se ha escuchado del hackeo de un Bitcoin Script, pero si de los smart contracts escritos en Solidity.

Por supuesto, esto tampoco significa que Bitcoin Script sea perfecto. De hecho, tiene errores, muchos de ellos bien documentados, pero frente a Solidity, podemos decir que Bitcoin Scripts tiene un récord casi perfecto.

Entonces ¿Cuál es el problema de Bitcoin Scripts? Pues que es un lenguaje Turing Incompleto y, por tanto, limitado en lo que puede realizar. A diferencia de Solidity, que si es Turing Completo y puedes hacer con él, lo que tu mente imagine. Para ejemplificar de forma más sencilla, puedes ver a Bitcoin Scripts como un avión a hélice y a Solidity como uno a reacción. Con ambos puedes viajar, pero la posibilidades de ambos son muy distintas.

https://lh6.googleusercontent.com/1KOXQLmgH9GP3OyWDL7WvCISlNNnBJSz6gmP_fBGzNce_41SkXywnBRFgj2RM7veFuOu9FIt26UrKdEZTU47n2nNl2UxDhgg-ZnjhLqtQnt3UCVwlRoZjgOdd9z2nMTrdjy7qzELZb1tSQ6Rkw=s0Lo anterior se vuelve mucho más acentuado cuando comparas un código en Bitcoin Script al lado de un código en Solidity, sencillamente Solidity es humanamente legible y fácil de trabajar. Sin embargo, esto es algo que los devs de Bitcoin conocen y han mejorado a lo largo de ellos, y entre esas mejoras RGB presenta bondades que son únicas.

RGB, nuevas posibilidades para BTC

En primer lugar, RGB funciona en base a un esquema de validación del lado cliente (client-side validation).Dicho de una forma más sencilla, RGB está diseñado para que cada usuario sea capaz de ver un smart contract, ejecutarlo, verificar el mismo y rastrear su estado en cualquier momento sin que ello tenga que ser procesado en su conjunto por la red donde está dicho smart contract. Esto permite que la ejecución de cada contrato se dé solo entre las partes interesadas en el mismo, sin que se genere una sobrecarga de operaciones sobre la red. Adicionalmente, RGB permite que estos smart contracts estén  fuera de la cadena (off-chain) permitiendo almacenar los mismos lejos de la blockchain evitando un crecimiento desmesurado de la misma (cosa que pasa en Ethereum y muchas blockchain que siguen su modelo).

La idea básica de estas funciones es; que no sea necesario que la red procese los smart contracts, evitando la sobrecarga de la misma. Simplemente los usuarios que interactúan con el smart contracts acceden al mismo. Al hacerlo son capaces de usar  sus recursos computacionales para ejecutarlo, y al terminar su ejecución, toman las salidas y estados del mismo para almacenarlos en la blockchain. Una vez allí, estos datos son una constancia verificable públicamente de la interacción con dicho smart contract por parte del usuario y de los resultados de dicha interacción.

Esto elimina las complejas estructuras como máquinas virtuales distribuidas (como el caso de la EVM), hace a los contratos mucho más flexibles, el costo por interacción es también mucho más bajo (adiós a la pesadilla del Gas). Incluso es posible actualizar en caliente los smart contracts sin tener que apuntar a nuevas direcciones, lo que facilita el desarrollo de DApps y la resolución de problemas. Todo ello mientras se mantiene la seguridad del sistema y se evitan manipulaciones indeseadas.

Sin duda, esto abre todo un nuevo conjunto de posibilidades para BTC, que puede ver potenciada su tecnología a niveles incluso superiores a los que Ethereum (e incluso Etheruem 2.0) puede brindar.

https://lh4.googleusercontent.com/FjHroNmr5bom1eXGsDtylQHhaDxjFtZXn1lyEI_aLW9cTxdyNhbuRupjKbfPtqHBjFeb2EkVCc8vYf5qKkuj4wnU67VpgVS9GJD0XI2CDXjdBmIAfNEmMSLrgFzVPzBKn_1L0UWucJPnB9Th3w=s0

Un diseño escalable y compatible

Sin embargo, lo mejor de RGB es que todo ello se construye sobre los cimientos actuales de Bitcoin y Lightning Network sin tener que cambiar absolutamente sobre las bases fundacionales de estos protocolos. Esto significa que RGB está construido para ser compatible al 100% con estos protocolos y sus estándares funcionales.

De hecho, la estructuración de RGB permite agregar los smart contracts a Bitcoin, sin romper el funcionamiento de BTC o LN, y ofreciendo un alto nivel de privacidad gracias a tecnologías como MimbleWimble y Transacciones Confidenciales de Liquid Blockstream. Adicional a esto, RGB usa un modelo computacional SRM (State Replicated Machines o Máquinas de estado replicadas) que ofrece enormes ventajas, tal como podemos ver en protocolo de consenso como Tendermint o DiemBFT (el protocolo de consenso diseñado por Facebook para Diem-Libra). Entre esas ventajas está la capacidad de reiniciar desde cualquier punto estado-temporal distribuido en la red, algo que Erick Zhang (creador de NEO y dBFT) explica muy bien en este paper.

Esto último es importante porque permite que el estado génesis de un contrato inteligente RGB tenga una representación inicial en la red. A medida que dicho estado va evolucionando, sus datos van formando un DAG (Grafo Acíclico Dirigido) que es verificable por un usuario independientemente del estado-temporal que elija. Básicamente, todo el historial de smart contracts y sus interacciones se resumen en un hash (un merkle tree o árbol merkle) y el usuario puede tomar ese hash y verificarlo de forma muy fácil y sencilla. Esto evita que los smart contracts puedan ser adulterados o que el usuario pueda manipular la información del mismo.

Adicional, las operaciones (como mover monedas de una dirección a otra usando el smart contract) todas quedan controladas por el modelo UTXO de Bitcoin y de estados de canales de LN. Esto significa que la seguridad de tus monedas (o tokens) recae sobre Bitcoin, su blockchain y un sistema de firmas criptográficas especiales que sirven de compromiso y testigo de la información movilizada por el usuario usando dicho smart contract.

Otro elemento importante en las capacidades de RGB es su capacidad de funcionar por medio del sharding. Esto significa que los clientes RGB son capaces de organizarse en subredes cada una de ellas manteniendo determinados contratos y sus estados almacenados de forma descentralizada. ¿Resultado? La capacidad computacional de RGB crece de forma exponencial con el crecimiento de sus shards, hasta el punto, que la generación de protocolos descentralizados de IA y computación distribuida intensiva son posibles.

RGB Core y RGB Node, las piezas fundamentales de RGB

Para hacer realidad RGB existen dos piezas fundamentales, RGB Core y RGB Node. RGB Core es una colección de funciones escritas en Rust que permite la implementación de todas las funcionalidades ya descritas anteriormente. La función de RGB Core es permitir la creación de un sistema integrable con BTC y LN, que sea seguro (de allí el uso de Rust) e implementar todas las funcionalidades RGB para que estas puedan ser usadas.

De RGB Core nace RGB Node el cual es el encargado de crear el espacio de ejecución de RGB, lo que lo convierte en el corazón de esta tecnología. El nodo es capaz de funcionar como una serie de microservicios interconectables que permite establecer una red P2P con cifrado extremo a extremo y capaz de ejecutarse en redes Tor. Todo ello contando con soporte para la red mainnet BTC, protocolo LN (LNP) y canales generalizado LN (GLC). Además, es capaz de ejecutar un nodo Bitfrost para la interconexión con otros servicios y para la creación de torres de vigilancia (watchtower) para crear infraestructuras adicionales usando dicha tecnología.