El pasado 12 de junio de 2021, lo mineros de Bitcoin bloquearon ,mediante señalización, la bifurcación suave Taproot, lo que permitirá a la blockchain de Bitcoin disponer de nuevas características enfocadas a una mayor eficiencia, privacidad y escalabilidad en el protocolo.

 

El problema

El protocolo Bitcoin trabaja con transacciones que incluyen scripts para gestionar los fondos. Dos de los tipos de transacciones más comunes que se dan en el ecosistema Bitcoin son P2SH (Pay to Script Hash), y P2PKH (Pay to Public Key Hash), las cuales son ineficientes, en cuanto a su gestión, y mejorables, en cuanto a la privacidad, por parte del protocolo.

Por un lado, en la actualidad, el protocolo Bitcoin es incapaz de agregar claves y firmas digitales, por lo que para validar las transacciones, los mineros deben verificar una por una, todas las transacciones de forma individualizada, haciendo que dicho proceso sea poco eficiente.

Por otro lado, cuando se dan diferentes condiciones para desbloquear los fondos, los Árboles de Merkle que se utilizan en la actualidad, obligan a revelar la totalidad de las condiciones, aunque no se hayan dado, lo que implica una pérdida de privacidad importante.

Como consecuencia de lo anterior, para intentar dar solución a estas cuestiones, los desarrolladores del ecosistema Bitcoin han propuesto los BIPs 340, 341, y 342, entre otros, cuya implementación dará lugar a la bifurcación suave Taproot, la cual vamos a pasara a explicar en los siguientes apartados.

 

¿Qué es Taproot?

Taproot es una bifurcación suave (soft fork) de la cadena de bloques de Bitcoin, que va a permitir, a partir del bloque 709.632 (aproximadamente en el mes de noviembre de 2021), que el protocolo disponga de nuevas características que potencian la eficiencia, la privacidad y la escalabilidad del mismo. 

Como hemos indicado anteriormente, el pasado 12 de junio de 2021 se bloqueó la actualización Taproot por parte de los mineros. Como consecuencia, los nodos de la red Bitcoin deberán actualizarse a una nueva versión que soporte el soft fork antes del bloque 709.632, como por ejemplo Bitcoin Core 0.21.1 o posterior, de tal forma que puedan implementar, de forma segura, las nuevas funcionalidades y características que implementa Taproot. Sin embargo, al tratarse de una bifurcación suave, los nodos que no se actualicen serán compatibles con Taproot, aunque no podrán implementar sus nuevas características.

El objetivo de Taproot es implementar principalmente las mejoras aprobadas en los BIPs (Bitcoin Improvement Proposals) 340 (Schnorr Signatures for secp256k1), 341 (Taproot: SegWit version 1 spending rules), y 342 (Validation of Taproot Scripts). A grandes rasgos, podríamos decir que, dichas mejoras pasan por implementar el sistema de firmas Schnorr, el uso de los MASK (Merkelized Abstract Syntax Tree), y el nuevo lenguaje de Script llamado Tapscript, sobre los cuales hablaremos a continuación en sucesivos apartados.

 

Sistema de firmas Schnorr

Schnorr es un  algorítmo criptográfico de firmas digitales que fue creado por Claus Schnorr, y cuya patente fue liberada en 2008, por lo que, en la actualidad, puede ser incorporado a protocolos como Bitcoin sin restricciones.

Una de sus principales características es la propiedad de linealidad (linear math), lo que permite al sistema ser muy eficiente al verificar las transacciones de forma muy rápida.

Permite la agregación de claves y firmas con una única verificación. Es decir, se pueden combinar varias firmas y claves en una sola en la misma transacción. Como consecuencia, en el caso de las transacciones multifirma, combinando las claves públicas y las firmas digitales («threshold public keys» y «threshold signatures») respectivamente, se convierten en indistinguibles de cualquier otra transacción, por lo que no se puede saber si una transacción responde a un sistema multifirma o no.

El sistema de firmas Schnorr permite mejorar el protocolo Bitcoin, ya que aumenta la eficiencia del mismo al poder verificar las transacciones de forma mucho más rápida que la actual (mejora en tiempo), y ahorrando espacio, ya que las transacciones multifirma contienen menos información (mejora en espacio). Un ejemplo de ello, es que los mineros podrían llegar a agregar claves públicas y firmas digitales de las transacciones y verificarlas en conjunto. Por otro lado, mejora el protocolo Bitcoin en cuanto a la privacidad se refiere, ya que permite agregar claves y firmas digitales de tal forma que no se sabe si las transacciones responden a un sistema multifirma o no.

 

MAST

MAST (Merkelized Abstract Syntax Tree) es una estructura de datos basada en los árboles de Merkle, que permite combinar varias condiciones que se pueden dar para gastar los fondos, codificándolas de forma conjunta en un sólo hash. Es decir, en lugar de bloquearse los bitcoins en un único script, con MAST los mismos bitcoins se pueden bloquear en un conjunto de scripts diferentes, bajo un conjunto de condiciones diferentes y mutuamente excluyentes.

Para gastar los fondos sólo será necesario revelar la condición que se cumple, entre un conjunto posible de condiciones. Es decir, solo será necesario revelar la rama que se está ejecutando y los hash que conectan con la raíz del Árbol de Merkle.

Como consecuencia de lo anterior, se reduce el tamaño de la pila de O (n) a O (log n), siendo n el número de ramas mutuamente excluyentes. Esto permite que se puedan ejecutar condiciones de gasto complicadas, que en la actualidad no son viables debido al tamaño de los scripts o al límite del código de la operación.

Expliquemos lo anterior con el siguiente ejemplo. Supongamos que Javier y Antonio deciden bloquear los fondos de una transacción que ascienden a 2 BTC poniendo dos condiciones excluyentes. La primera condición es que pasado un mes, el primero que la firme podrá gastar dichos 2 BTC, y la segunda condición es que, pasados dos meses, sólo Antonio podrá gastar los 2 BTC. Javier se adelanta a Antonio, y pasado un mes, desbloquea los fondos usando su clave privada. Para ello, solo se ha tenido que revelar la primera de las dos condiciones, y no ha sido necesario revelar la segunda condición ya que esta última nunca se ha cumplido.

En resumen, según lo que hemos visto anteriormente, MAST permite mejorar el protocolo Bitcoin de tres formas diferentes. Por un lado, aumenta la privacidad, ya que no es necesario indicar todas las condiciones que se pueden dar en una transacción para poder verificarla, es decir, mantiene ocultos los scripts no utilizados. Por otro lado, aumenta la flexibilidad de los contratos inteligentes, ya que permite la inclusión de varias condiciones de gasto sin los límites que impone el sistema P2SH para evitar ataques de denegación de servicio. Por último, aumenta la escalabilidad, ya que al sólo requerir la condición que se usa al final, se reduce la cantidad de datos que se deben transmitir, almacenar y validar, generando transacciones más pequeñas en términos de datos, y menos costosas en términos de tarifas.