132 / 691MINI

Miniscript

Lenguaje estructurado para Bitcoin Script

Miniscript es una representación estructurada y tipada de un subconjunto limitado de Bitcoin Script. Permite componer condiciones de gasto, analizar propiedades y construir una satisfaction válida sin lógica específica para cada script.

Miniscript no es un nuevo opcode, una regla de consensus ni un lenguaje de propósito general. Es una capa intermedia entre una spending policy humana y Bitcoin Script concreto, normalmente dentro de un output descriptor wsh() o Taproot.

Miniscript estructura solo un subconjunto de Bitcoin Script para firmas, hashlocks, timelocks y combinaciones. No cambia consensus ni añade opcode; las monedas quedan protegidas por el Script resultante y Miniscript es la representación analizable que el software compila o reconoce.

Una spending policy expresa la intención: «A, o B tras 144 bloques». Un compiler elige Miniscript concreto, que se traduce a Bitcoin Script. Un Output Descriptor además vincula script, claves, derivation, red y checksum, por ejemplo wsh(...).

pk(), older(), after(), sha256(), and_v(), or_d() y thresh() tienen semántica exacta. Wrappers como v: cambian tipo o comportamiento sin cambiar la intención. Los tipos B, V, K y W controlan interfaces del stack y solo permiten composiciones compatibles.

Una satisfaction es el witness que hace verdadera una rama; una dissatisfaction es el falso canónico necesario para AND, OR y threshold. Un signer genérico elige rutas según firmas, preimages y timelocks disponibles. Miniscript no crea claves privadas ni evita una condición ausente.

after(n) usa nLockTime absoluto y older(n) nSequence relativo según BIP 68. Los locks por altura y tiempo deben ser compatibles y la transacción debe fijar bien sus campos; al final valida consensus Bitcoin Script, no el texto de policy.

El análisis estático limita tamaño de Script y witness, operaciones, signature checks, elementos del stack y coste de cada satisfaction. El resultado depende de P2WSH o Tapscript y debe respetar límites de consensus y standardness.

La corrección de tipos garantiza composición segura, no una custody policy sensata. El análisis de malleability pregunta si un tercero puede alterar una satisfaction válida sin romper condiciones. Las garantías dependen de supuestos declarados, como igual acceso a hash preimages, y se pueden prohibir claves duplicadas.

Una policy puede compilarse en Miniscripts equivalentes con tamaños distintos. El compiler optimiza un cost model; pesos como 9@ son pistas de probabilidad, no reglas de consensus. Otra compilación normalmente produce otro Script y otras direcciones.

En una descriptor wallet, Miniscript vive en wsh() o en un Taproot script path con key origins. PSBT transporta transacción y derivation a signers, pero el dispositivo debe soportar el descriptor y policy. Verifique claves, threshold, timelocks y ramas inesperadas en pantalla.

Conserve descriptor con checksum, key map, derivation paths, red, ramas receive/change, range y scan birthday. Ejecute parser y analyzer, derive varias direcciones y pruebe cada satisfaction prevista en regtest o signet. Compruebe recovery watch-only y firma antes de depositar fondos. Fuentes: BIP 379 — Miniscript; Miniscript Reference — Specification and Analyzer; Bitcoin Core — Output Descriptors; Bitcoin Core 24.0 — Miniscript Support; BIP 388 — Wallet Policies for Descriptor Wallets.

Para obtener la imagen más completa, lee esta entrada junto con Bitcoin Script, Output Descriptor, Multisig, Andrew Poelstra, Timelock, Bitcoin. También enlazan con esta entrada Output Descriptor, Opcode de Bitcoin Script, Dead Man’s Switch, Pieter Wuille.

DOC · 001BIP 379 — MiniscriptEspecificaciónDOC · 002Miniscript Reference — Specification and AnalyzerEspecificaciónDOC · 003Bitcoin Core — Output DescriptorsDocumentaciónDOC · 004Bitcoin Core 24.0 — Miniscript SupportDocumentaciónDOC · 005BIP 388 — Wallet Policies for Descriptor WalletsEspecificación
Revisado el 1 de agosto de 2026Fuentes primero · No es asesoramiento financiero