P2TR

Pay To Taproot — bloquea una salida a una clave pública y scripts opcionales

BIP 341: Taproot — Reglas de gasto de SegWit versión 1

P2TR (Pay To Taproot) es un script de bloqueo que bloquea una salida a una clave pública y a múltiples scripts de bloqueo personalizados opcionales*.

Es efectivamente un híbrido de los scripts P2WPKH y P2WSH, pero el bloqueo en sí es pequeño y contiene una sola clave pública (gracias a una matemática y criptografía ingeniosas).

P2TR se introdujo en la actualización Taproot.

*Los scripts personalizados usan una variante del script llamada tapscript.

Uso

¿Cómo funciona P2TR?

Los detalles técnicos de un P2TR son algo complejos, así que te mostraré la estructura del ScriptPubKey y del testigo para que tengas una idea de cómo funcionan.

ScriptPubKey (bloqueo)

Un script de bloqueo P2TR comienza con el opcode de versión OP_1 seguido del push de datos de una clave pública:

OP_1 <clave pública (32 bytes)>

Sin embargo, esta clave pública es un poco "diferente" por dos motivos:

  1. Es una clave pública ajustada (tweaked). Es como cualquier clave pública normal, pero fue ajustada para incluir un compromiso con todos los scripts personalizados que te gustaría usar para desbloquear la salida. Ese valor de ajuste (tweak) es básicamente el hash de todos los scripts personalizados.
  2. Las claves públicas en P2TR solo tienen 32 bytes. Son un poco más cortas que las claves comprimidas de 33 bytes de los scripts antiguos, ya que no incluyen el byte inicial (0x02 o 0x03) que indica si la coordenada y es par o impar.

La clave pública ajustada se llama taproot, de ahí el nombre Pay To Taproot.

ScriptSig

Una salida P2TR no se desbloquea mediante el ScriptSig, sino por el campo de testigo.

Testigo (desbloqueo)

Una salida P2TR puede desbloquearse de dos formas, y la estructura del campo de testigo varía según el método:

  1. Gasto por camino de clave (Key Path Spend). Método estándar. Proporcionas una única firma (Schnorr) para la clave pública ajustada — barato e indistinguible de un pago común.
  2. Gasto por camino de script (Script Path Spend). Revelas uno de los scripts personalizados (tapscript), una prueba de Merkle de que forma parte del compromiso, y los datos para satisfacirlo.

Herramientas

La dirección P2TR es una codificación Bech32m de la versión de testigo 1 + la clave pública ajustada de 32 bytes (direcciones que empiezan con bc1p):

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