Home » La gran actualización de Taproot: mitos y verdades

La gran actualización de Taproot: mitos y verdades

by Patricia

La semana pasada se activó Taproot, una de las actualizaciones más importantes de la historia de Bitcoin. Pero lo que realmente hace es difícil de entender y no pocas veces se tergiversa. Por lo tanto, pedimos a un experto.

La semana pasada se activó Taproot, una de las mayores actualizaciones de Bitcoin de todos los tiempos, que la comunidad ha estado esperando con impaciencia durante años. Pero, ¿qué es exactamente Taproot? ¿Y qué hace?

Cualquiera que lea las noticias sobre Taproot con esta pregunta en mente cosechará bastante confusión. Así que este artículo comienza con un pequeño resumen de lo que escriben los demás.

Cuando las agencias de prensa ya están informando de una actualización del bitcoin …

Una de las características más notables de Taproot es que es la primera actualización de Bitcoin que fue noticia para la agencia de prensa DPA. Esto explica que, de repente, se encuentre información sobre Taproot en casi todos los medios, desde el Süddeutsche y el FAZ hasta el Wiener Standard y la Gaceta de la ciudad. O, mejor dicho: desinformación.

Taproot, explica Finanzen.net, tiene una «gran importancia para la cadena de bloques de Bitcoin». La actualización hace que Bitcoin sea «aún más ágil y flexible» y prepara «el camino para importantes innovaciones tecnológicas». El FAZ y muchos otros periódicos citan el informe de la DPA según el cual la actualización aporta «más privacidad, menos requisitos de almacenamiento y una disminución de los costes».

Todo esto sigue siendo tan vago que no puede ser ni erróneo ni correcto. Si se quiere saber más concretamente, se aprende bastante menos, y si es así, se equivoca o engaña con mucho gusto. Finanzen.net, por ejemplo, dice que Taproot «genera una sola clave pública para los pagos en lugar de varias claves públicas […]», lo cual, aparte de la confusión de términos, es correcto a medias en el mejor de los casos. Además, Taproot permite «contratos inteligentes más complejos en la blockchain de Bitcoin», por lo que posiblemente Bitcoin podría competir pronto con Ethereum.

En el FAZ, uno se entera de que las firmas Schnorr «proporcionan más privacidad para Bitcoin». El periódico y la DPA pidieron al profesor de blockchain Philipp Sandner que se pronunciara al respecto, y éste disertó que «estas transacciones de Schnorr… liberan un conjunto de transacciones con una sola firma». Incluso un profesor puede estar a veces tan equivocado que uno no sabe por dónde empezar.

La fuente de información más competente sobre Taproot es Heise. La revista informática explica que la actualización introduce el «tipo de transacción Pay-to-Taproot (P2TR)», «que combina los conceptos de firmas Schnorr y ‘Merklized Alternative Script Trees'». Pero incluso Heise se tambalea cuando la revista afirma que Taproot aumenta la privacidad de las transacciones o que Schnorr permite firmar una transacción con una firma agraviada.

Esto es una verdad a medias, en el mejor de los casos, y sobre todo demuestra lo difícil que es entender -y explicar- una actualización técnicamente sofisticada como Taproot.

Actualización como una envoltura

Intentamos poner un poco de orden en el caos de Taproot. Para ello nos pusimos en contacto con Mark Erhardt, también conocido como Murch en Internet. Mark trabaja en Nueva York en Chaincode Labs, habiendo trabajado anteriormente para BitGo en Palo Alto. Es difícil estar más cerca de los centros de desarrollo de Bitcoin que el nativo de Baden.

Mark nos ha ayudado no sólo a entender mejor el concepto de Taproot, sino también a comprender lo que significa la actualización en términos concretos.

¿Qué está cambiando Taproot? ¿Cuáles son las ventajas de la actualización?

Taproot consta, a grandes rasgos, de dos componentes: Firmas de Schnorr y un árbol de guiones. Ambos componentes son independientes entre sí, pero trabajan juntos, y cada uno no es fácil de entender. Este es uno de los obstáculos para entender lo que realmente hace Taproot – y lo que no hace.

Schnorr – el mejor ECDSA

Las firmas

Schnorr son las más fáciles de entender. Estos, explica Mark, existían antes del algoritmo de firma ECDSA utilizado por Bitcoin.

«El proceso de la firma es súper interesante, pero el inventor, Klaus-Peter Schnorr, lo patentó. Como la tasa de la patente era demasiado cara, otros criptógrafos inventaron ECDSA para firmar también basándose en curvas elípticas. Sin embargo, mientras tanto, la protección de la patente ha expirado».

ECDSA es bueno, muy bueno de hecho, por lo que Satoshi eligió el algoritmo para Bitcoin. Pero no es tan bueno como Schnorr, y sin la protección de la patente, probablemente no habría habido ninguna razón para que alguien utilizara ECDSA en lugar de Schnorr.

La diferencia más importante radica en un detalle pequeño pero en parte crucial: «Las firmas no son lineales en ECDSA, lo son en Schnorr», explica Mark. «Si un esquema de firma es lineal, se pueden agregar múltiples firmas para que el agregado permita comprobar. No se puede hacer eso con esquemas no lineales, como ECDSA».

Así que, teóricamente, lo que afirman la FAZ y Heise es cierto: se podrían agregar todas las firmas de una transacción en una sola a través de Schnorr. Actualmente, si una transacción tiene muchas entradas -por lo que combina muchas monedas- hay que firmar cada entrada y escribir cada firma en la blockchain. Eso explica gran parte de los datos de las transacciones. Schnorr podría cambiar esto.

¡Puede! Porque «lamentablemente, esta agregación no llegó a la actualización de Taproot», aclara Mark. «Eso habría requerido definiciones y discusiones adicionales, por lo que decidieron hacerlo más tarde»

Firmas secretas agregadas

No obstante, la agregación de firmas Schnorr con Taproot ya es posible. Pero no para las transacciones normales, sólo para las transacciones multisig. Multisig significa que dos o más partes tienen que firmar una transacción para que se puedan emitir monedas desde una dirección especial (dirección multisig).

«Digamos que creamos juntos una cartera en la que sólo podemos gastar dinero si ambos firmamos. Eso sería un «multisig de 2 en 2″. Gracias a Taproot, podemos agregar nuestras claves públicas: Usted me da su clave pública, yo la combino con la mía, y el resultado es indistinguible de una dirección normal. Para que no se note que es una cartera compartida».

Este «no poder contarlo» es la razón definitiva por la que se dice que Taproot mejora la privacidad.

Anteriormente, las direcciones multisig podían reconocerse fácilmente. Empezaron con un tres, en lugar de un uno como las direcciones tradicionales. SegWit ha suavizado esto un poco, ya que un formato de dirección SegWit también comienza con un 3. Aun así, los distintos tipos de direcciones crean diferencias que socavan parcialmente la privacidad de Bitcoin.

Con Taproot, estas diferencias se pueden nivelar por completo. No importa qué condiciones de salida incorpore una dirección -una firma, varias firmas, timelocks, contratos inteligentes-, todas tienen el mismo aspecto.

Pero las firmas de Schnorr no son suficientes para esto. Ya que sólo son eficaces para las construcciones multisig: «2 de 2», «3 de 3», etc. En la práctica, sin embargo, son más populares otros modelos, en concreto las llamadas firmas de umbral, como «2 de 3»: Un tercero tiene una llave de reserva e interviene si se pierde otra llave, o arbitra si los otros dos no están de acuerdo.

En estos modelos, la agregación por firmas de Schnorr no funciona. Así que en este punto tenemos que hablar de la segunda parte de Taproot: el árbol de scripts.

Un árbol de guiones para los demás casos

El antiguo empleador de Mark, el proveedor de monederos BitGo, ofrece una construcción clásica «2 de 3″: hay tres llaves. Una la tiene el cliente, otra BitGo y la tercera es una copia de seguridad bien protegida y almacenada en frío. De estas tres claves, se necesitan dos para enviar una transacción, que suelen ser las del cliente y las de BitGo.

«Hay una expectativa en cuanto a las dos llaves que se utilizarán. Ahora se puede servir con firmas agregadas de Schnorr. Así que formamos una salida P2TR con las claves tuyas y de BitGo, y cuando se da el caso normal, podemos firmar con una firma agregada».

Esta forma de firmar las transacciones por dos partes es la más elegante, sencilla y bonita. En comparación, el método actual que utiliza direcciones «P2SH» (pay-to-script hash) es francamente monstruoso.

Pero, ¿y si se trata del caso de la copia de seguridad? ¿Si pierdo mi llave y BitGo firma con la llave de reserva? ¿O si BitGo falla y tengo que poner en juego la llave de reserva?

«Estas otras vías no previstas se entretejen como hojas en el árbol de guiones que Taproot ha introducido», explica Mark. Y por supuesto, esta explicación pide a gritos ser explicada por sí misma.

De las hojas a la raíz

Un árbol de scripts es básicamente «sólo» un árbol de Merkle o de hash de scripts. Pero, ¿qué es un árbol de hash?

Un árbol de hash es un arreglo especial de un gran número de hashes. Por ejemplo, digamos que tenemos cuatro transacciones de bitcoin y las hacemos hash. Entonces tendríamos cuatro hashes. En un árbol de hash, se denominan «hojas».

El objetivo del ejercicio es avanzar desde las hojas a las ramas hasta la raíz del árbol de hash. Para ello, primero unimos el primer y el segundo hash y hacemos un hash con eso. Hacemos lo mismo con el tercero y el cuarto. Los dos hashes que tenemos como resultado – las ramas – también los hash. Esto nos da la raíz: un hash que representa una multitud de hashes.

Este árbol de hash parece un árbol al revés: La corona está en la parte inferior, la raíz en la parte superior. Imagen de wikipedia.org, licencia: Creative Commons

Este árbol de hash parece un árbol al revés: La corona está en la parte inferior, la raíz en la parte superior. Imagen de wikipedia.org, licencia: Creative Commons


¿Qué hace esa raíz? Permite que un solo hash pruebe una variedad de datos. Un ejemplo es un bloque de Bitcoin: los mineros toman una gran cantidad de transacciones -normalmente unos cuantos miles- y forman la raíz del árbol de hash a partir de ellas. Esta raíz es la base de la minería, y permite a cualquiera comprobar si un bloque es válido.

En el scriptbaim introducido por Taproot, cada «hoja» es una forma de gastar Bitcoins – un script. La dirección multisig mencionada anteriormente no sólo contiene el agregado de dos claves públicas, sino también la raíz del árbol de scripts.

Ahora bien, si se da el caso no esperado de que yo firme con mi y la clave de respaldo porque BitGo falla, sucede lo siguiente, explica Mark: «Revelo el script correspondiente, que se almacena en una hoja del árbol de scripts. Para demostrar que la dirección original codifica estas condiciones de salida, revelo los hashes de otras hojas y ramas para poder reconstruir la raíz. Entonces satisfago la escritura contenida en la hoja con las firmas de las dos llaves».

Así que tenemos un procedimiento en el que las transacciones multisig suelen ser -cuando se da el caso esperado- más elegantes, más sencillas y también más privadas. Sólo en los casos no previstos entra en acción el árbol de scripts. El resultado es igual de complejo que el método P2SH, pero es algo más privado.

Porque con el P2SH, todo el guión es un hash, que contiene todas las posibilidades de cómo se van a gastar las monedas. Para escribir una transacción válida, tengo que mostrar el texto puro del script. Así que tengo que hacer público qué claves públicas están involucradas, incluso si no se utilizan en absoluto.

Con P2TR, en cambio, basta con que escriba la opción que realmente se produce en texto plano en la transacción. Todas las demás opciones permanecen ofuscadas.

El avance de la multisig

No es necesario debatir si Taproot es elegante. Lo es. El árbol de scripts es un complemento útil para las firmas de Schnorr. Es comprensible que un desarrollador como Mark esté entusiasmado con Taproot y no pueda esperar a que la actualización llegue a todas las carteras.

Pero aquellos para los que la elegancia técnica no es un fin en sí mismo, sino un medio, probablemente se pregunten ahora: ¿qué sentido tiene en términos reales? Entonces, ¿qué puede hacer mejor Bitcoin ahora con Taproot que antes?

«Multisig es un estándar mucho más seguro para gestionar el dinero», dice Mark. «Puedes crear copias de seguridad y hacer más difícil el gasto. Te hace menos vulnerable».

Hasta ahora, sin embargo, los métodos multisig tenían importantes inconvenientes: solían ser complejos, tanto para el usuario como para el desarrollador, limitaban la privacidad y costaban más en tasas. Todos estos inconvenientes desaparecen con Taproot. «Das menos información privada, revelas menos sobre tu configuración y puedes hacer más con menos datos en la blockchain».

Mark espera que Taproot ayude a Multisig a abrirse paso. Que más carteras adopten Multisig, que haya mejores normas y que la experiencia del usuario, que actualmente suele ser todavía grotesca, mejore.

Lo que no hace Taproot

A pesar de todo el entusiasmo, Mark advierte contra las expectativas exageradas y falsas. Lo que nos lleva de nuevo al punto de partida. Sobre el informe de la DPA y su interpretación en las redacciones.

«A veces se dice que Taproot aporta DeFi a Bitcoin porque permite los contratos inteligentes. Esto es un error. Los contratos inteligentes ya existen, y todo lo que puede hacer Taproot era posible antes, sólo que era más complicado, más caro y menos privado.»

También circulan algunas ideas erróneas sobre la privacidad con Taproot. «Ayer leí en un importante periódico alemán que el Bitcoin es cada vez más anónimo gracias a Taproot. Eso tampoco es cierto. Es cierto que ya no se puede ver si una o más partes están firmando. Sin embargo, la dirección sigue siendo un seudónimo y todavía se puede ver qué monedas se están emitiendo «

«.

Los analistas de blockchain no tendrán problemas para analizar y agrupar carteras y direcciones como antes, incluso después de Taproot. «Sólo se aprende un poco menos sobre la configuración bajo el capó. Ya sea una dirección normal, un canal Lightning o una configuración multisig. Pero el seguimiento general del flujo de dinero sigue siendo el mismo. «

Ahora es el turno del ecosistema

Como suele ocurrir con Bitcoin, una actualización tarda en llegar a los monederos y a los usuarios. Piensa en SegWit. La actualización tardó mucho tiempo en llegar a una gran parte de las transacciones, y aún más para que la compatibilidad con las direcciones bech32 se generalizara.

Murch espera que sea más rápido para Taproot. «Los monederos BitGo ya pueden recibir monedas con Taproot. Esto demuestra que esta vez puede ser más rápido».

Para entender de qué se trata y por qué no es sencillo, hay que conocer algunos detalles más técnicos. A riesgo de abrumarles, tenemos que hablar de los formatos de las direcciones implicadas.

  • Las direcciones por defecto se denominan «Pay-to-Public-Key-Hash» (P2PKH) y comienzan con un 1.
  • Las direcciones «Pay-to-Script-Hash» (P2SH) de las que ya hemos hablado empiezan por un 3. Estos se utilizaron para el multisig y otros contratos inteligentes como los de bloqueo de tiempo.
  • SegWit también se construyó inicialmente con direcciones que empezaban por un 3: El «Nested SegWit Addresses» o – perdón: «Pay to Script Hash Pay to Witness Public Key Hash» (P2SH-P2WPKH). Aquí, más o menos el script para SegWit fue hash y transferido a una dirección P2SH. Esto permitió que SegWit se introdujera de una manera menos disruptiva.
  • Las direcciones nativas de SegWit-v0, o direcciones Pay to Witness Public Key Hash (P2WPKH), que técnicamente funcionan de forma más eficiente, utilizan el formato bech32. Esta nueva norma tiene un aspecto completamente diferente, las direcciones son más largas, están formadas sólo por letras minúsculas y empiezan por «bc1».

Pay-to-Taproot (P2TR) también utiliza el estándar bech32. Sin embargo, hay una ligera diferencia en la generación de las direcciones, por lo que las direcciones v0 utilizadas hasta ahora no son compatibles. Esto es intencional para evitar que alguien pierda dinero.

«En la preparación de Taproot, descubrimos que algunos monederos estaban ignorando la versión de Witness en las direcciones bech32 y definiendo siempre las salidas como Native-Segwit-v0», explica Mark. «Si uno de estos monederos hubiera enviado dinero a una dirección P2TR, la secuencia de comandos P2TR se habría codificado en la salida, pero habría requerido la realización de una secuencia de comandos P2WPKH para gastar debido al error de versión. El beneficiario no habría podido gastar el dinero».

Por ello, para Mark es importante que el mayor número posible de monederos permita primero el envío de dinero a las direcciones de Taproot. Porque hasta que esto sea posible de forma generalizada, siempre será desventajoso para los usuarios utilizar estas direcciones.

Los desarrolladores del núcleo han hecho su trabajo. Pero el trabajo para el ecosistema acaba de empezar en este momento.

Related Posts

Leave a Comment