Taproot

La gran actualización de 2021

Taproot es una gran actualización de Bitcoin, activada en 2021.

El cambio principal fue la introducción del script de bloqueo Pay To Taproot (P2TR), que permite desbloquear una salida usando una elección de scripts personalizados. También hubo dos cambios extra importantes: las firmas Schnorr y Tapscript.

Fundamentos

¿Cómo funciona Taproot?

Un script P2TR puede desbloquearse de una de dos maneras:

  1. Camino de clave (key path). Gastar con una sola firma, como un pago común.
  2. Camino de script (script path). Revelar y satisfacer uno de los scripts personalizados.

La parte interesante es que todos los scripts personalizados se organizan en un árbol. Ese árbol de scripts se usa para crear una raíz de Merkle, que es una huella digital de todas las formas de desbloquear la salida. Esa huella digital (llamada tweak) se combina entonces con la clave pública para crear una clave pública ajustada (el "taproot"), que es lo que va en el script de bloqueo.

La belleza de P2TR es que la clave pública ajustada puede desbloquearse con una única firma. Esa firma se crea ajustando la clave privada original por el mismo valor del tweak usado en la clave pública, lo que funciona gracias a la matemática de las curvas elípticas.

Beneficios

¿Cuáles son los beneficios de Taproot?

  1. Flexibilidad. Permite colocar varias condiciones de gasto diferentes en una sola salida.
  2. Privacidad. Si gastas por el camino de clave, nadie sabe que había scripts alternativos. E incluso una transacción multisig compleja puede parecer un pago común en la blockchain.
  3. Eficiencia. Solo revelas el script que realmente usaste (no todos), y las firmas Schnorr son más pequeñas y pueden verificarse por lotes.

Construcción

¿Cómo construyes una dirección P2TR?

  1. Comienza con una clave pública interna.
  2. Organiza los scripts de gasto (tapscripts) en un árbol y calcula la raíz de Merkle de él.
  3. Calcula el tweak = hash(clave pública + raíz del árbol) y ajusta la clave pública: Q = P + tweak·G.
  4. Codifica la clave pública ajustada (32 bytes) en una dirección Bech32m con la versión de testigo 1 (direcciones bc1p...).
Ícono de herramienta Raíz de Merkle

Raíz de Merkle

Calcule la raíz de Merkle a partir de una lista de TXIDs.

Bloque

Una lista de TXIDs separados por espacios, comas o nuevas líneas. Las comillas y los corchetes se ignoran.

Los TXIDs deben insertarse en la orden de bytes invertida (como aparecen en los exploradores), pero se convierten a la orden de bytes natural antes de calcular la raíz de Merkle.

TXIDs (0)

El orden de los bytes como sale de la función hash

El orden de los bytes como se muestra en los exploradores

Ícono de herramienta Dirección (Bech32)

Dirección (Bech32)

Codifique un script de bloqueo P2WPKH, P2WSH o P2TR en una dirección.

ScriptPubKey
Versión
0 bytes
0 bytes Tipo:
Red

Codificación Bech32 del ScriptPubKey

0 caracteres

    Algoritmo de Firma

    Taproot usa firmas Schnorr (BIP340) en lugar de ECDSA, con claves públicas x-only de 32 bytes:

    Ícono de herramienta Schnorr

    Firma Schnorr

    Firme un mensaje usando una clave privada.

    0x
    0 bytes
    0x
    0 bytes
    0x
    0 bytes
    0x
    0 bytes

    Nunca introduzca su clave privada en un sitio web, ni use una clave privada generada por un sitio web. Los sitios pueden guardar fácilmente la clave privada y usarla para robar sus bitcoins.

    Tapscript

    Tapscript es una versión actualizada del lenguaje Script usado en los scripts de gasto de Taproot. Hace pequeños ajustes en los opcodes (por ejemplo, sustituye OP_CHECKMULTISIG por OP_CHECKSIGADD, más adecuado para Schnorr) y elimina el límite de tamaño del script, abriendo espacio para mejoras futuras.

    Etimología

    El nombre "taproot" (raíz pivotante, en botánica) remite a la forma en que la clave pública ajustada funciona como una "raíz" única de la que se ramifican todas las condiciones de gasto.