Saltar al contenido
buybitcoinsmart

Glosario / Protocolo y actualizaciones

Gasto por ruta de script

¿Qué es un gasto por ruta de script?
Un gasto por ruta de script desbloquea una salida Taproot revelando un script de hoja, los valores de entrada que lo satisfacen y un bloque de control que demuestra que la dirección fija esa hoja.

Se especifica en el BIP-341.

Los gastos por ruta de script son la ruta alternativa para gastar una salida Taproot, la que se usa cuando nunca llegó la firma cooperativa que todos esperaban. La prueba viaja en un bloque de control de 33 bytes más otros 32 por cada nivel del árbol, y BIP-341 limita ese árbol a 128 niveles. Tomar esta ruta publica la rama que usted usó, así que la única condición en la que realmente se apoyó deja de ser privada.

Cómo funciona

Un nodo que valida un gasto por ruta de script lee la pila del testigo de atrás hacia adelante, porque el último elemento hace la mayor parte del trabajo.

Ese último elemento es el bloque de control, y su longitud se comprueba antes que cualquier otra cosa. Tiene que medir exactamente 33 + 32m bytes para un número entero m entre 0 y 128, y cualquier otra longitud hace fallar el gasto directamente. BIP-341 pone el techo en 128 porque un árbol empaquetado de forma óptima solo llega a mayor profundidad para una hoja con una probabilidad de uso inferior a 1 entre 2^128.

El primer byte lleva dos cosas que no tienen relación entre sí. Si se le aplica la máscara 0xfe, se obtiene la versión de hoja, 0xc0 para las reglas de tapscript; el bit que elimina la máscara es la paridad de la coordenada Y de la clave de salida, presente para que el gasto pueda verificarse por lotes. Los 32 bytes siguientes son la clave pública interna, la que habría firmado un gasto cooperativo; todo lo que viene después es la ruta de Merkle, 32 bytes por nivel.

Después, el nodo reconstruye el compromiso. Calcula el hash de la versión de hoja junto con el script revelado para obtener un hash de hoja e incorpora por turno cada elemento de la ruta. El lado nunca se envía: los dos valores de 32 bytes de cada paso se ordenan lexicográficamente antes de calcular el hash, así que la comparación decide el orden y no viaja ningún bit que indique el lado. La raíz de Merkle y la clave interna producen un ajuste (tweak), y la clave ajustada tiene que coincidir con los 32 bytes que hay en la dirección, bit de paridad incluido, antes de que se permita ejecutar el script.

Un byte puede cambiar todo lo que lo precede. Si el testigo contiene al menos dos elementos y el último empieza por 0x50, ese elemento se elimina como anexo antes de que empiece la validación. BIP-341 no le da ningún significado y advierte que incluir uno puede provocar "PERMANENT FUND LOSS" (pérdida permanente de fondos).

Dónde aparece

Un gasto por ruta de script se reconoce en un explorador de bloques como una entrada Taproot cuyo testigo, sin contar el anexo, contiene más de un elemento.

El propio ejemplo práctico de BIP-341 es un árbol de cinco scripts, de A a E. Gastar con el script D publica D, más un bloque de control que contiene la clave interna y tres hash: C, E y el hash combinado de A y B. Ese bloque de control mide 129 bytes para un contrato de cinco condiciones, y los otros cuatro scripts nunca se publican.

La prueba también delata algo. La sección de seguridad de BIP-341 señala que la profundidad de la hoja revelada filtra la profundidad mínima del árbol, lo que "suggests specific wallet software that created the output and helps clustering" (sugiere el software de billetera concreto que creó la salida y facilita la agrupación). La defensa que sugiere BIP-341 es apartarse del árbol que, de otro modo, las probabilidades de las hojas harían óptimo.

La misma sección es tajante sobre la reutilización de claves. Las claves tienen que ser nuevas en cada hoja, no solo en la que usted gastó, porque una rama repetida reaparece como un hash repetido en una prueba posterior, y las hojas que comparten claves abaratan la búsqueda por fuerza bruta de un script no revelado.

Gasto por ruta de script frente a tapscript

Un gasto por ruta de script es la ruta; tapscript es el lenguaje que se habla al final de ella. BIP-341 define todo hasta el momento en que empieza la ejecución: el bloque de control, el plegado ordenado de Merkle, la comprobación del ajuste, el bit de paridad. Lo que se ejecuta después lo decide la versión de hoja.

Actualmente, solo 0xc0 significa tapscript. Una hoja que lleve cualquier otra versión no es un error, porque BIP-341 exige que la ejecución tenga éxito con las versiones de hoja desconocidas. Ese es el gancho que permite que una bifurcación blanda (soft fork) posterior defina un lenguaje de script distinto dentro del mismo formato de dirección bc1p, lo que convierte el gasto por ruta de script en la mitad duradera de la pareja.

No confundir con

Preguntas frecuentes

¿Puede alguien ver las condiciones de gasto que no usé?

No. Un gasto por ruta de script publica un script de hoja más los hash hermanos de su ruta, y todas las demás ramas siguen siendo para siempre un hash ilegible. Lo que sí se hace público es que existía una ruta de script y a qué profundidad del árbol estaba la hoja revelada.

¿Por qué lleva el bloque de control un bit de paridad?

Para hacer posible la verificación por lotes. El bit menos significativo del primer byte registra si la coordenada Y de la clave de salida es par o impar, lo que permite a un verificador reconstruir un único punto de la curva a partir de los 32 bytes de la dirección en lugar de probar los dos.

Para seguir leyendo

Fuentes

Última revisión: 6 de septiembre de 2026.

Términos relacionados

Más en la sección Protocolo y actualizaciones

Leer esta página en inglés