Graftroot es una mejora diseñada para ampliar las capacidades de Taproot, una propuesta que busca ofrecer a Bitcoin mejores capacidades para su lenguaje de programación habilitando la creación de contratos inteligentes más potentes.
El desarrollo de Bitcoin no se detiene, y en medio de esa dinámica, una mejora que se espera dentro de este protocolo es la de Graftroot. Esta mejora tiene como base el trabajo que se está realizando sobre dos mejoras ya conocidas Taproot y las firmas Schnorr, y su objetivo es la de flexibilizar la creación de transacciones y scripts para crear condiciones de bloqueo mucho más elaboradas. De esta forma, los scripts de Bitcoin usando Graftroot podrían permitir la programación de diversas condiciones de bloqueo que en estos momentos no son posibles, todo ello mientras se mantiene la seguridad y se mejora la privacidad del sistema.
Pero ¿Cómo Graftroot puede hacer todo esto posible? Pues bien, esto y mucho más lo analizaremos a continuación.
Origen de Graftroot
En primer lugar, el origen de Graftroot nos remonta a dos conceptos muy importantes: Taproot y las firmas Schnorr. Estos son la base de construcción de los Graftroot, y sin estos es imposible que funcionen. Para dejarlo muy claro, Taproot es una mejora que busca cambiar la forma en como los scripts de Bitcoin pueden construirse, ejecutarse y almacenarse en la blockchain de Bitcoin. Su misión principal es la de flexibilizar los Bitcoins Scripts para que estos puedan mejorar su capacidad de programación o de contratos inteligentes.
La propuesta mejorada por Taproot fue acompañada de un nuevo tipo de firma digital llamado firmas Schnorr. Este es un tipo de firma digital cuya finalidad es la de crear firmas digitales más pequeñas, seguras y privadas que sus contrapartes ECDSA, el estándar usado por Bitcoin en la actualidad.
Dicho esto, podemos ver que Taproot y las firmas Schnorr mejorarán mucho la capacidad de Bitcoin, y es algo que podemos aplaudir. Sin embargo, esto no termina allí. El 5 de febrero de 2018, el desarrollador de Bitcoin, Gregory Maxwell, envió un correo electrónico a la lista de desarrolladores de Bitcoin dando a conocer su propuesta Graftroot. La propuesta era una mejora para Taproot que ampliará sus posibilidades. La idea caló rápidamente, en especial porque el diseñador de Taproot era también Gregory Maxwell, y nadie mejor que él conocía la forma en cómo funcionaba esta mejora y cómo podría mejorarse.
De hecho, Maxwell presentó ambas ideas con una separación de solo 13 días entre ellas, dejando muy en claro que había margen para mejorar ambas ideas.
Gregory Maxwell: ¿Qué es Graftroot?
Taproot adolece de una limitación y es que solo se puede proporcionar de forma nativa una alternativa. Se pueden hacer árboles o cascadas de taproots, pero tienen menos privacidad y eficiencia que un solo nivel. Sin embargo, bajo el supuesto de la raíz principal, en la que existe una función monótona en públicos simples y nada más que sea claves suficientes para autorizar una transacción, podemos hacerlo aún mejor.
Con Graftroot, los participantes activan una clave de umbral (threshold key), opcionalmente con una taproot alternativa, al igual que lo hacen con la taproot. Así en cualquier momento, pueden delegar su capacidad para firmar un script sustituto firmando ese script (y solo el script) con su clave principal, y compartiendo esa delegación con quien elijan. Más tarde, cuando llega el momento de gastar la moneda, si los firmantes no están disponibles y debe usar el script, la parte redentora 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 del firmante firma del script.
El resultado es que, en lugar de permitir una sola alternativa, se puede proporcionar un número ilimitado de alternativas. Todos son ejecutados con igual eficiencia que una sola alternativa, y el número de ellos está oculto sin gastos generales. Se pueden proporcionar alternativas para monedas también, sin necesidad de que se muevan, el movimiento es solo necesario para destruir la capacidad de utilizar alternativas cambiando claves.
Lo anterior dicho de una forma menos técnica y extensa es: Grafroot nos permite introducir más programación en los scripts, mejorar las condiciones de programación y activación de los scripts, y todo ello sin el protocolo y gozando de las ventajas de privacidad que Taproot y Schnorr no permite.
Ciertamente una solución elegante, que al mismo tiempo ofrece mejoras que todos agradeceremos y que tendrán un gran impacto positivo en la usabilidad de Bitcoin.
¿Cómo funciona Graftroot?
Ahora bien, exactamente cómo funciona Graftroot. Pues bien, en primer lugar, como ya comentamos, Graftroot funciona gracias a Taproot y las firmas Schnorr. Estas dos funciones son básicas y necesarias para el buen funcionamiento. Pero no te preocupes, puedes saber todo lo que debes saber si visitas nuestros artículos para Taproot y firmas Schnorr, aquí en Bit2Me Academy.
Dicho esto, procederemos a dar un breve ejemplo de cómo funciona Graftroot. Para ello imagina el siguiente escenario:
Ejemplo de cómo funciona Graftroot
En primer lugar, tenemos a Daniela y Luis gestionando una billetera multifirma. La billetera es del tipo 2-de-2, es decir, se necesitan las 2 firmas para poder autorizar un gasto del dinero dentro de esa billetera.
Sin embargo, Daniela y Luis decidieron flexibilizar la forma de gasto en ciertas condiciones. Así establecen que luego de un año, el dinero en dicho monedero puede ser movilizado con la firma de uno de ellos nada más. Así, Daniela o Luis, pasado ese tiempo, pueden mover el dinero gracias a esta condición aseguradora. Junto a esta condición, programan otra en la que Luis puede gastar el saldo proporcionando un secreto.
Escritas las condiciones, Daniela y Luis crean sus claves de umbral (threshold keys) usando firmas Schnorr, firman los scripts principales y alternativos, y cada uno de ellos mantiene los datos que necesitan para cumplir las condiciones de gastos que han sido programadas en los scripts.
Explicando el escenario
En primer lugar, Daniela y Luis pueden crear una multifirma 2-de-2 y poner su dinero allí, esto es algo que en este momento podemos hacer en Bitcoin. Lo que sí es nuevo, es incluir varias condiciones alternativas que se ejecutarán si se presentan las condiciones necesarias para que dicha operación se cumpla. Y que en caso de cumplirse una de ellas, el resto de condiciones no pueden ser vistas por nadie más.
Esto significa que, si por ejemplo, Daniela retiró el dinero un año después porque Luis ha tenido algún problema, ella podrá hacerlo sin problemas. Pero al mismo tiempo en la cadena de bloques, solo podremos ver el script que le ha permitido tal acción, el resto de scripts y condiciones mejoradas ocultas. Dicho de otra forma, solo aquella condición que se cumpla en la transacción podrá ser vista en la cadena de bloques de forma pública, el resto de alternativas y condiciones mejorarán privadas y nadie podrá saber cuáles fueron.
Esta función seguramente mejora la privacidad, pero no solo eso, mejora la capacidad para programar cada Bitcoin dentro de la red. Y lo mejor, es que estas transacciones cuando sean vistas en la cadena de bloques, no tendrán mayor diferencia de una transacción normal de criptomonedas.
En cuanto a la “función asegurada” imagina ¿Cuántos Bitcoins no están congelados en la cadena de bloques porque simplemente se olvidó o perdió la llave para su manejo? Con una dirección y un script usando Graftroot sería posible programar condiciones especiales para que el dinero dentro de esa dirección pueda cambiar bajo otras condiciones que se programen, impidiendo así las pérdidas de los mismos. De esa forma casos como los de QuadrigaCX con sus 1000 BTC perdidos, o el de un usuario de Bitcointalk con 8900 BTC perdidos, serían otra historia.
Pros y contras de Graftroot
Pros
En primer lugar, uno de los pros de Graftroot es que permiten crear smart contracts (Bitcoin Scripts) mucho más elaborados. Es decir, con más condiciones y con funciones que de otra forma serían imposible de implementar. Esto mejora significativamente la usabilidad de Bitcoin, y abre las puertas para la implementación on-chain de nuevas funciones de intercambio seguras y transparentes.
Además, Graftroot no renuncia a las mejoras de privacidad y escalabilidad que Taproot y las firmas Schnorr nos ofrecen, ya que estas dos tecnologías son necesarias para Graftroot. Esto ha motivado a los desarrolladores a ver con buenos ojos el uso de Taproot y Schnorr dentro de Bitcoin, lo que pronto podremos ver.
Contras
Por el lado negativo, Graftroot introduce una mayor complejidad en el código de Bitcoin, lo que inexorablemente lleva a problemas de seguridad. Sin embargo, tanto Taproot, como Schnorr dentro de Bitcoin llevan en desarrollo desde 2018, el código se ha estudiado, lo que reduce la posibilidad de problemas de este tipo.
Lo que sí es realmente un problema con Graftroot es que este es un sistema interactivo, en el que ambas partes deben firmar los scripts (el principal como los alternativos) a los fines de poder realizar algún gasto. Si esto no sucede por algún motivo, el dinero estará allí hasta que dicha acción se complete.