Graftroot es una actualización soft fork de la cadena de bloques de Bitcoin que permite obtener funcionalidades adicionales en las transacciones multi firma. Esto hace posible que se cumplan ciertas condiciones en función de parámetros preconcebidos.
Esto en cierta forma suena bastante a un contrato inteligente, y es que básicamente lo es. Por eso es una actualización tan interesante para el ecosistema de Bitcoin.
Para que esta nueva mejora pueda funciona correctamente, es necesario que se implementen las firmas de Schnorr y Taproot primero.
Graftroot utiliza Taproot para darle al usuario la posibilidad de delegar la capacidad de gastar una transacción.
Ya hemos hablado de Taproot en el artículo enlazado más arriba, donde se destaca la capacidad para mejorar la privacidad de Bitcoin al permitir que un usuario pueda crear transaccione multi firma y complejas transacciones CoinJoin que se ven como si fueran una transacción normal.
Esto hace más difícil el trabajo del análisis de cadena para encontrar ciertos patrones al analizar las transacciones y vulnerar el anonimato y privacidad del usuario.
Con Graftroot, los participantes en una dirección multi firma pueden firmar los scripts que quieren utilizar, lo que permite crear una cadena de bloques más eficiente en términos de almacenamiento, y también un MAST.
Básicamente, un MAST es una estructura de datos que combina los árboles de Merkle (que permiten comprobar la información de un conjunto de datos sin la necesidad de todo el conjunto) y AST (árboles de sintaxis abstractos) que agregan lógica a las transacciones al permitir que el usuario pueda dividir un programa en diferentes partes.
Al combinar todo esto, los desarrolladores pueden hacer un mejor uso del almacenamiento de la blockchain.
Caso contrario, las transacciones de Bitcoin ocuparían más espacio en los nodos, las firmas no podrían ser agregadas y no existiría la posibilidad de agregar lógica a una transacción.
Contenido
¿Cómo funciona Graftroot?
En Taproot, los participantes de un contrato inteligente de Bitcoin, donde existen múltiples condiciones de script, combinan sus claves públicas para formar lo que se conocen como “clave pública umbral” y una “firma umbral”.
Este mismo proceso se aplica a Graftroot, con la diferencia de que cada participante firma independientemente las diferentes condiciones de scripting (condición para el gasto de la transacción), creando así un umbral de firmas para cada condición en lugar de una para todo el conjunto de condiciones.
De acuerdo a Gregory Maxwell (el desarrollador de Bitcoin que propuso esta mejora):
Con graftroot, los participantes establecen una clave de umbral, opcionalmente con una alternativa de taproot, igual que hacen con taproot. En cualquier momento, pueden delegar su capacidad de firmar en un script sustituto, firmando ese script (y solo el script) con su clave taproot, y compartiendo esa delegación con quien ellos decidan. Más tarde, cuando llegue el momento de gastar la moneda, si los firmantes no están disponibles y hay que utilizar el script, la parte que reclama hace lo que sea necesario para satisfacer el script (por ejemplo, proporciona su propia firma y un bloqueo de tiempo, o lo que sea) y presenta esa información junto con la firma del script del firmante.
Un ejemplo nos servirá para ver todo esto de forma más clara.
Supongamos que nosotros, Juan y María construimos una transacción de Bitcoin con diferentes condiciones alternativas de scripting, donde las condiciones para su gasto son estas alternativas:
- Los bitcoins pueden ser gastados con 2 de 3 firmas de los participantes.
- Nosotros podemos gastar los bitcoins luego de 1 mes sin que las otras 2 personas deban firmar.
- Juan puede gastar los bitcoins con una clave secreta sin nuestra firma ni la de María.
Cada participante firma los script alternativos y almacena los umbrales de firma para cada condición. Estos pueden ser utilizados luego para probar que los scripts han sido acordados por las partes.
Una vez que una condición especifica se ha alcanzado (por ejemplo, ha pasado un mes y no se han reunido 2 de 3 firmas o Juan no ha proporcionado la clave secreta), entonces se puede utilizar la segunda condición para que nosotros gastemos los BTC.
Deberemos revelar nuestra condición alternativa de script que guardamos y la firma umbral para demostrar que estamos autorizados a gastar la transacción. Las otras condiciones no son reveladas.
Por el contrario, si los 3 participantes liquidamos la transacción con un cierre cooperativo, ninguna de las condiciones quedaría expuesta y la transacción se vería similar para un tercero a una transacción estándar.
Incluso, los participantes en las condiciones de scripting se mantendrían sin identificar por parte de alguien que observa todo desde afuera.
La gran ventaja que tiene Graftroot por sobre Taproot es la capacidad del protocolo para escalar en la cantidad de condiciones de scripting sin perder eficiencia. Puede ser muchas las condiciones. Las condiciones de scripting incluso pueden agregarse después de que el contrato haya sido creado.
Según Maxwell:
El resultado es que en lugar de permitir una sola alternativa se puede ofrecer un número ilimitado de alternativas. Todas se ejecutan con igual eficiencia que una sola alternativa, y el número de ellas se oculta sin sobrecarga. También se pueden proporcionar alternativas para las monedas existentes, sin necesidad de que se muevan: el movimiento solo es necesario para destruir la capacidad de utilizar alternativas al cambiar de clave.
Otro beneficio importante de Graftroot es la habilidad para delegar las claves en los scripts, un debate que según Maxwell genero una acalorada discución en 2012.
¿Cuáles son los problemas de Graftroot?
Sin embargo, no todo en Graftroot parece bueno. El protocolo es interactivo, lo que implica que los participantes necesitan comunicarse acerca de las alternativas de los scripts antes de poder gastar los bitcoins de forma cooperativa.
También hay un problema de gestión de claves que se incrementa a medida que añadimos más condiciones de scripting y participantes.
Aquí los participantes necesitan almacenar las claves umbrales de las alternativas correlativas, lo cual no es muy atractivo para personas que no estén tan involucradas técnicamente.
El problema de la complejidad subyacente en las condiciones de scripting también genera problemas a la hora de crear y usar estas condiciones cuando se traten de interfaces en las aplicaciones.
Taproot y Graftroot facilitan la navegación por las condiciones de scripting en la parte que se encuentra detrás de un programa, pero siguen siendo funcionalidades difíciles de enmascarar para la interfaz que el usuario observara y con la cual interactuara.
¿Cuándo estará disponible?
Hay muchos proyectos que quieren hacer uso de esta funcionalidad cuando esté completamente operativa en el protocolo de Bitcoin.
En particular, las firmas de Schnorr parecen ser una de las actualizaciones más importantes para Bitcoin desde SegWit.
Schnorr ya ha sido implementado, al igual que Taproot, mientras que MAST se espera que se implemente luego de estos dos. Puede que Graftroot sea implementado junto con esta última actualización, pero también puede ser dejado para más adelante.
Casos de uso de Graftroot
Unas simples condiciones de scripting multi firma pueden evitar que se produzcan incidentes como el de Quadriga (un exchange de Bitcoin que perdió el acceso a sus monederos en frío), y las condiciones de scripting más complejas y escalables pueden permitir que se generen transacciones o contratos más complejos.
El beneficio añadido de Taproot y Graftroot es su privacidad inherente, haciendo que estas transacciones complejas se vean como transacciones estándar.
Agrega un Comentario