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 smart contracts 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 posible, 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 de que funcione. 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 smart contracts.

La mejora propuesta por Taproot va 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 claves públicas simples y nada más que sea suficiente para autorizar una transacción, podemos hacerlo aún mejor.

Con Graftroot, los participantes establecen 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 usarse 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, mejorando las condiciones de programación y activación de los scripts, y todo ello sin alterar el protocolo y gozando de las ventajas de privacidad que Taproot y Schnorr nos permiten.

Ciertamente una elegante solución, 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 puedan ser vistas por nadie más.

Esto significa que, si por ejemplo, Daniela retira 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 blockchain, solo podremos ver el script que le ha permitido tal acción, el resto de scripts y condiciones permanecerán ocultas. Dicho de otra forma, solo aquella condición que se cumpla en la transacción podrá ser vista en la blockchain de forma pública, el resto de alternativas y condiciones permanecerán privadas y nadie podrá saber cuáles fueron.

Esta función ciertamente 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 blockchain, no tendrán mayor diferencia de una transacción normal de criptomonedas.

En cuanto a la “función aseguradora” imagina ¿Cuántos Bitcoins no están congelados en la blockchain 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 moverse bajo otras condiciones que se programen, evitando 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.

¿Cuánto sabes, criptonauta?

¿La aplicación de Graftroot pondrá a Bitcoin al mismo nivel programación de smart contracts de Ethereum?

¡FALSO!

Si bien Graftroot (y Taproot) amplían por mucho la capacidad actual de Bitcoin para smart contracts, esto no significa que la capacidad de programación de Bitcoin supera o alcanza la de Ethereum. De hecho, ese no es el objetivo, sino permitir que la red sea capaz de llevar a cabo operaciones que en este momento recaen en opciones centralizadas o protocolos de segunda capa. Por ejemplo, con Taproot y Graftroot activos, el mismo protocolo Bitcoin sería capaz de ejecutar DEX o Atomic Swaps seguros sin necesidad de un protocolo externo de algún tipo, algo con lo que los usuarios se beneficiarán ampliamente.

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, 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.