Introducción
La
Fundamentos de Bitcoin Script
Estructura básica
Bitcoin Script es un lenguaje de bajo nivel,
scriptPubKey: define las condiciones para gastar la salida.
scriptSig: proporciona los datos necesarios para satisfacer esas condiciones.
Tipos de scripts comunes
Preparación de la auditoría
Recolección de datos
Antes de iniciar, recopila:
Transacciones relevantes y scripts asociados.
Documentación o especificaciones del contrato inteligente (si aplica).
Versiones del cliente Bitcoin Core o de bibliotecas en uso.
Análisis preliminar
Verifica que los scripts estén correctamente formateados y que no contengan
Metodología de auditoría
1. Desensamblado de scripts
Utiliza herramientas que traduzcan los bytes del script a su representación opcode. Identifica patrones como
2. Verificación de condiciones
Comprueba que cada rama condicional (OP_IF / OP_ELSE) cubra escenarios de falla y éxito, evitando
3. Pruebas de vectores límite
Genera transacciones de prueba que intenten explotar cada opcode. Por ejemplo:
Manipular secuencias de bytes de la firma para verificar rechazo.
Enviar firmas ECDSA no DER para detectar validaciones laxas.
4. Revisión de costes y límites
Evalúa el consumo de
Herramientas y Recursos
| Bitcoin Core | Nodo completo con RPC para obtener y decodificar scripts. | bitcoin.org |
| Esplora-scripts | Visor de scripts con desensamblado interactivo. | GitHub |
| Script Debugger | Depurador paso a paso de ejecución de script. | scriptdebugger.io |
Casos Prácticos
Ejemplo de auditoría P2SH multisig
Consideremos un script P2SH de 2-de-3 multisig. Pasos:
Obtener scriptHash y desensamblar redeem script.
Verificar que OP_CHECKMULTISIG esté precedido por el número correcto de claves (OP_2 y OP_3).
Probar envíos con solo una firma para validar rechazo correcto.
Auditoría de un timelock (CLTV)
Para scripts que usan OP_CHECKLOCKTIMEVERIFY:
Comprueba que el valor de tiempo sea razonable y no permita gasto inmediato.
Simula transacciones antes y después del bloque/límite UNIX.
Conclusión
La auditoría de contratos Bitcoin mediante scripts exige
