Descripción general
Miniscript es un lenguaje para escribir condiciones de gasto de Bitcoin de manera estructurada y analizable. Desarrollado principalmente por Pieter Wuille, Andrew Poelstra y Sanket Kanjalkar, Miniscript se sitúa entre las descripciones de política de alto nivel y el Bitcoin Script crudo. Hace posible analizar automáticamente scripts para verificar su corrección, calcular requisitos de firma y estimar tamaños de transacción — tareas extremadamente difíciles con Script crudo.
Arquitectura
┌─────────────────────────────────┐
│ Lenguaje de Política (alto niv.)│
│ ej., thresh(2, pk(A), │
│ pk(B), pk(C)) │
├─────────────────────────────────┤
│ Miniscript (estructurado) │ ← El análisis ocurre aquí
│ ej., thresh(2, pk_k(A), │
│ s:pk_k(B), s:pk_k(C)) │
├─────────────────────────────────┤
│ Bitcoin Script (opcodes crudos) │
│ ej., <A> OP_CHECKSIG ... │
└─────────────────────────────────┘
Beneficios principales
- Verificación de corrección: Determinar automáticamente si un script es válido, no maleable y seguro según consenso
- Análisis de gasto: Determinar todas las formas posibles de satisfacer un script y qué claves o condiciones se necesitan para cada una
- Estimación de comisiones: Calcular el tamaño máximo del testigo, permitiendo una estimación precisa de comisiones antes de firmar
- Composición: Combinar de forma segura múltiples condiciones de gasto (ej., timelocks con multisig) sin errores sutiles
Casos de uso
Miniscript es particularmente valioso para configuraciones de custodia complejas, como una bóveda que requiere 2-de-3 firmas normalmente pero permite una única clave de recuperación después de un timelock. Sin Miniscript, construir y verificar tales scripts requeriría profunda experiencia en Script y auditoría manual.
Malentendidos comunes
Miniscript no es un reemplazo de Bitcoin Script — es un subconjunto estructurado de él. No todos los Bitcoin Scripts válidos pueden expresarse como Miniscript, pero todos los Miniscripts se compilan a Bitcoin Script válido. Se enfoca específicamente en el subconjunto de scripts útiles para condiciones de gasto.