Este es un editorial de opinión de Federico Tenga, colaborador desde hace mucho tiempo en proyectos de Bitcoin con experiencia como fundador, consultor y educador de empresas emergentes.
El término “contratos inteligentes” es anterior a la invención de la cadena de bloques y del propio Bitcoin. Su primera mención es en un Artículo de 1994 de Nick Szabo, quien definió los contratos inteligentes como un “protocolo de transacción computarizado que ejecuta los términos de un contrato”. Si bien según esta definición, Bitcoin, gracias a su lenguaje de secuencias de comandos, admitió contratos inteligentes desde el primer bloque, el término fue popularizado más tarde por los promotores de Ethereum, quienes torcieron la definición original como “código que todos los nodos ejecutan de manera redundante en un consenso global”. la red”
Si bien delegar la ejecución del código a una red de consenso global tiene ventajas (por ejemplo, es fácil implementar contratos no adeudados, como los creadores de mercado automatizados), este diseño tiene un defecto importante: falta de escalabilidad (y privacidad). Si todos los nodos de una red deben ejecutar el mismo código de manera redundante, la cantidad de código que realmente se puede ejecutar sin aumentar excesivamente el costo de ejecutar un nodo (y, por lo tanto, preservar la descentralización) sigue siendo escasa, lo que significa que solo se puede ejecutar una pequeña cantidad de contratos. ejecutado.
Pero, ¿y si pudiéramos diseñar un sistema en el que los términos del contrato sean ejecutados y validados solo por las partes involucradas, en lugar de por todos los miembros de la red? Imaginemos el ejemplo de una empresa que quiere emitir acciones. En lugar de publicar el contrato de emisión públicamente en un libro de contabilidad global y utilizar ese libro de contabilidad para realizar un seguimiento de todas las futuras transferencias de propiedad, simplemente podría emitir las acciones de forma privada y pasar a los compradores el derecho a seguir transfiriéndolas. Entonces, el derecho a transferir la propiedad puede transmitirse a cada nuevo propietario como si fuera una modificación del contrato de emisión original. De esta forma, cada propietario puede verificar de manera independiente que las acciones que recibió son genuinas leyendo el contrato original y validando que todo el historial de modificaciones que movió las acciones se ajuste a las reglas establecidas en el contrato original.
Esto en realidad no es nada nuevo, de hecho es el mismo mecanismo que se usaba para transferir propiedades antes de que los registros públicos se hicieran populares. En el Reino Unido, por ejemplo, no era obligatorio registrar una propiedad cuando se traspasaba su dominio hasta los años ’90. Esto significa que todavía hoy más del 15% de la tierra en Inglaterra y Gales no está registrada. Si está comprando una propiedad no registrada, en lugar de verificar en un registro si el vendedor es el verdadero propietario, tendría que verificar una cadena ininterrumpida de propiedad que se remonta al menos a 15 años (un período que se considera lo suficientemente largo como para suponer que el vendedor tiene título suficiente de la propiedad). Al hacerlo, debe asegurarse de que cualquier transferencia de propiedad se haya realizado correctamente y que las hipotecas utilizadas para transacciones anteriores se hayan pagado en su totalidad. Este modelo tiene la ventaja de una privacidad mejorada sobre la propiedad, y no tiene que depender del mantenedor del registro público de la propiedad. Por otro lado, hace que la verificación de la propiedad del vendedor sea mucho más complicada para el comprador.
¿Cómo se puede mejorar la transferencia de propiedades no registradas? En primer lugar, convirtiéndolo en un proceso digitalizado. Si hay un código que puede ejecutar una computadora para verificar que todo el historial de transferencias de propiedad cumple con las reglas del contrato original, comprar y vender se vuelve mucho más rápido y más barato.
En segundo lugar, para evitar el riesgo de que el vendedor gaste dos veces su activo, se debe implementar un sistema de prueba de publicación. Por ejemplo, podríamos implementar una regla que establezca que cada transferencia de propiedad se debe realizar en un lugar predefinido de un periódico conocido (p. ej., coloque el hash de la transferencia de propiedad en la esquina superior derecha de la primera página del New York Times). Veces). Dado que no puede colocar el hash de una transferencia en el mismo lugar dos veces, esto evita los intentos de doble gasto. Sin embargo, usar un periódico famoso para este propósito tiene algunas desventajas:
- Tienes que comprar muchos periódicos para el proceso de verificación. No muy práctico.
- Cada contrato necesita su propio espacio en el periódico. No muy escalable.
- El editor del periódico puede censurar fácilmente o, peor aún, simular el doble gasto poniendo un hash aleatorio en su ranura, haciendo que cualquier comprador potencial de su activo piense que se ha vendido antes y disuadiéndolo de comprarlo. No muy desconfiado.
Por estas razones, es necesario encontrar un mejor lugar para publicar pruebas de transferencias de propiedad. ¿Y qué mejor opción que la cadena de bloques de Bitcoin, un libro público confiable ya establecido con fuertes incentivos para mantenerlo resistente a la censura y descentralizado?
Si usamos Bitcoin, no debemos especificar un lugar fijo en el bloque donde debe ocurrir el compromiso de transferir la propiedad (por ejemplo, en la primera transacción) porque, al igual que con el editor del New York Times, el minero podría meterse con él. Un mejor enfoque es colocar el compromiso en una transacción de Bitcoin predefinida, más específicamente en una transacción que se origina a partir de una salida de transacción no gastada (UTXO) a la que está vinculada la propiedad del activo que se emitirá. El vínculo entre un activo y un UTXO de bitcoin puede ocurrir ya sea en el contrato que emite el activo o en una transferencia de propiedad posterior, cada vez que el UTXO de destino se convierte en el controlador del activo transferido. De esta manera, hemos definido claramente dónde debe estar la obligación de transferir la propiedad (es decir, en la transacción de Bitcoin que se origina en una UTXO en particular). Cualquiera que ejecute un nodo de Bitcoin puede verificar de forma independiente los compromisos y ni los mineros ni ninguna otra entidad pueden censurar o interferir con la transferencia de activos de ninguna manera.
Dado que en la cadena de bloques de Bitcoin solo publicamos un compromiso de transferencia de propiedad, no el contenido de la transferencia en sí, el vendedor necesita un canal de comunicación dedicado para proporcionar al comprador todas las pruebas de que la transferencia de propiedad es válida. Esto se podría hacer de varias maneras, potencialmente incluso imprimiendo las pruebas y enviándolas con una paloma mensajera, que, aunque un poco poco práctica, aún haría el trabajo. Pero la mejor opción para evitar la censura y las violaciones de la privacidad es establecer una comunicación cifrada directa entre pares, que en comparación con las palomas también tiene la ventaja de ser fácil de integrar con un software para verificar las pruebas recibidas de la contraparte.
Este modelo que se acaba de describir para los contratos validados del lado del cliente y las transferencias de propiedad es exactamente lo que se implementó con el protocolo RGB. Con RGB, es posible crear un contrato que defina derechos, los asigne a uno o más UTXO de bitcoin existentes y especifique cómo se puede transferir su propiedad. El contrato se puede crear a partir de una plantilla, denominada “esquema”, en la que el creador del contrato solo ajusta los parámetros y los derechos de propiedad, como se hace con los contratos legales tradicionales. Actualmente, existen dos tipos de esquemas en RGB: uno para emitir tokens fungibles (RGB20) y un segundo para la emisión de coleccionables (RGB21), pero en el futuro, cualquiera puede desarrollar más esquemas sin permiso y sin necesidad de cambios en el nivel de protocolo.
Para usar un ejemplo más práctico, un emisor de activos fungibles (por ejemplo, acciones de la empresa, monedas estables, etc.) puede usar la plantilla de esquema RGB20 y crear un contrato que defina cuántos tokens emitirá, el nombre del activo y algunos metadatos adicionales asociados. con eso. Luego puede definir qué UTXO de bitcoin tiene derecho a transferir la propiedad de los tokens creados y asignar otros derechos a otros UTXO, como el derecho a realizar una emisión secundaria o a renombrar el activo. Cada cliente que reciba tokens creados por este contrato podrá verificar el contenido del contrato de Génesis y validar que cualquier transferencia de propiedad en el historial del token recibido haya cumplido con las reglas establecidas en el mismo.
Entonces, ¿qué podemos hacer con RGB en la práctica hoy? En primer lugar, permite la emisión y transferencia de activos tokenizados con mejor escalabilidad y privacidad en comparación con cualquier alternativa existente. Por el lado de la privacidad, RGB se beneficia del hecho de que todos los datos relacionados con la transferencia se mantienen del lado del cliente, por lo que un observador de blockchain no puede extraer ninguna información sobre las actividades financieras del usuario (ni siquiera es posible distinguir una transacción de bitcoin que contenga un compromiso RGB). de uno normal), además, el receptor comparte con el remitente solo UTXO ciego (es decir, el hash de la concatenación entre el UTXO en el que desea recibir los activos y un número aleatorio) en lugar del propio UTXO, por lo que no es posible que el pagador controle las actividades futuras del receptor. Para aumentar aún más la privacidad de los usuarios, RGB también adopta el mecanismo criptográfico a prueba de balas para ocultar los montos en el historial de transferencias de activos, de modo que incluso los futuros propietarios de activos tengan una visión ofuscada del comportamiento financiero de los titulares anteriores.
En términos de escalabilidad, RGB también ofrece algunas ventajas. En primer lugar, la mayoría de los datos se mantienen fuera de la cadena, ya que la cadena de bloques solo se usa como una capa de compromiso, lo que reduce las tarifas que deben pagarse y significa que cada cliente solo valida las transferencias que le interesan en lugar de todas las actividad de una red global. Dado que una transferencia RGB aún requiere una transacción de Bitcoin, el ahorro de tarifas puede parecer mínimo, pero cuando comienza a introducir el procesamiento por lotes de transacciones, puede volverse masivo rápidamente. De hecho, es posible transferir todos los tokens (o, más generalmente, “derechos”) asociados con un UTXO hacia una cantidad arbitraria de destinatarios con un solo compromiso en una sola transacción de bitcoin. Supongamos que es un proveedor de servicios que realiza pagos a varios usuarios a la vez. Con RGB, puede realizar miles de transferencias en una sola transacción de Bitcoin a miles de usuarios que solicitan diferentes tipos de activos, lo que hace que el costo marginal de cada pago sea absolutamente insignificante.
Otro mecanismo de ahorro de comisiones para los emisores de activos de bajo valor es que en RGB la emisión de un activo no requiere el pago de comisiones. Esto sucede porque no es necesario comprometer la creación de un contrato de emisión en la cadena de bloques. Un contrato simplemente define a qué UTXO ya existente se asignarán los activos recién emitidos. Entonces, si usted es un artista interesado en crear tokens coleccionables, puede emitir tantos como desee de forma gratuita y luego solo pagar la tarifa de transacción de bitcoin cuando aparece un comprador y solicita que el token se asigne a su UTXO.
Además, debido a que RGB se basa en las transacciones de bitcoin, también es compatible con Lightning Network. Si bien aún no está implementado en el momento de escribir este artículo, será posible crear canales Lightning específicos de activos y enrutar los pagos a través de ellos, de forma similar a como funciona con las transacciones Lightning normales.
Conclusión
RGB es una innovación revolucionaria que se abre a nuevos casos de uso utilizando un paradigma completamente nuevo, pero ¿qué herramientas están disponibles para usarlo? Si desea experimentar con el núcleo de la tecnología en sí, debe probar directamente el nodo RGB. Si desea crear aplicaciones sobre RGB sin tener que profundizar en la complejidad del protocolo, puede utilizar el biblioteca rgb-lib, que proporciona una interfaz sencilla para los desarrolladores. Si solo quiere intentar emitir y transferir activos, puede jugar con Monedero Iris para Androidcuyo código también es de código abierto en GitHub. Si solo desea obtener más información sobre RGB, puede consultar esta lista de recursos.
Esta es una publicación invitada de Federico Tenga. Las opiniones expresadas son totalmente propias y no reflejan necesariamente las de BTC Inc o Bitcoin Magazine.