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:
- Camino de clave (key path). Gastar con una sola firma, como un pago común.
- 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?
- Flexibilidad. Permite colocar varias condiciones de gasto diferentes en una sola salida.
- 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.
- 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?
- Comienza con una clave pública interna.
- Organiza los scripts de gasto (tapscripts) en un árbol y calcula la raíz de Merkle de él.
- Calcula el tweak = hash(clave pública + raíz del árbol) y ajusta la clave pública:
Q = P + tweak·G. - Codifica la clave pública ajustada (32 bytes) en una dirección Bech32m con la versión de testigo 1 (direcciones
bc1p...).
Raíz de Merkle
Dirección (Bech32)
Algoritmo de Firma
Taproot usa firmas Schnorr (BIP340) en lugar de ECDSA, con claves públicas x-only de 32 bytes:
Schnorr
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.