Secuencia de comandos de Bitcoin

Definición

Bitcoin Script es un lenguaje de programación basado en pila, Turing-incompleto, que define las condiciones bajo las cuales se pueden gastar las transacciones de Bitcoin . Es un sistema de scripting sencillo pero potente, integrado en cada salida (script de bloqueo o scriptPubKey) y entrada (script de desbloqueo o scriptSig) de cada transacción de Bitcoin, lo que permite programar las condiciones de gasto sin exponer la red Bitcoin a los riesgos de una plataforma de contratos inteligentes Turing-completa. Bitcoin Script permite carteras multifirma , transacciones con bloqueo temporal, contratos con bloqueo hash, canales de pago e intercambios atómicos, todo ello sin necesidad de una cadena de bloques de propósito general.

 Origen e Historia

FechaEventos
2008Satoshi Nakamoto diseña Bitcoin Script como parte del diseño del libro blanco de Bitcoin
2009Script de Bitcoin implementado en el bloque génesis de Bitcoin; Pago a clave pública (P2PK) es el primer tipo de script
2012BIP 16: Se introduce Pay-to-Script-Hash (P2SH), que permite scripts de canje complejos
2015Se agregó CHECKLOCKTIMEVERIFY (CLTV) que permite bloqueos de tiempo absolutos en las transacciones
2016Se agregó CHECKSEQUENCEVERIFY (CSV) que habilita bloqueos de tiempo relativos para canales de pago
2017SegWit presenta Pay-to-Witness-Public-Key-Hash (P2WPKH) y P2WSH
2021La actualización de Taproot (BIP 340/341/342) introduce firmas Schnorr y MAST a través de Tapscript
2023Los ordinales de Bitcoin aprovechan Script para inscribir datos en datos de testigos
2023Se intensifica el debate sobre la reactivación de BIP 347 (OP_CAT) para posibles extensiones de script

 Bitcoin Script está deliberadamente limitado, y eso es una característica, no un error. La simplicidad es seguridad. — Greg Maxwell, desarrollador de Bitcoin Core

 Cómo Funciona

 EJECUCIÓN DE SCRIPT DE TRANSACCIÓN DE BITCOIN ═══════════════════════════════════════════════════════ SCRIPT DE BLOQUEO (scriptPubKey) — en la salida UTXO: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG (P2PKH estándar: pago al hash de clave pública)

DESBLOQUEO DE GUIÓN (scriptSig) — proporcionado por el gastador:

EJECUCIÓN (basada en pila): La pila comienza vacía

  1. Empujar → Pila: [sig]
  2. Empujar → Pila: [sig, pubKey]
  3. OP_DUP: duplicado superior → Pila: [sig, pubKey, pubKey]
  4. OP_HASH160: hash superior → Pila: [sig, pubKey, pubKeyHash]
  5. Empujar → Pila: [sig, pubKey, pubKeyHash, esperado]
  6. OP_EQUALVERIFY: comparar → Pila: [sig, pubKey] (si es igual)
  7. OP_CHECKSIG: verificar firma → Pila: [TRUE]

Resultado: VERDADERO = la transacción es válida y el UTXO se ha gastado.

TIPOS DE SCRIPT: P2PK → Pago a clave pública (legado) P2PKH → Pago a hash de clave pública (más común) P2SH → Pago a hash de script (multifirma, complejo) P2WPKH → SegWit nativo (bech32) P2TR → Pago a Taproot (más eficiente/privado) ═══════════════════════════════════════════════════════ 

Tipo de scriptFormato de direcciónCaso de usoPrivacidad
P2PK(sin dirección estándar)Bitcoin original, Monedas SatoshiBajo
P2PKH1… (Base58)Pagos estándar con firma únicaBajo
P2SH3… (Base58)Scripts complejos y multifirmaMedia
P2WPKHbc1q… (bech32)SegWit nativo, tarifas más bajasMedia
P2WSHbc1q… (bech32)Scripts nativos de SegWitMedia
P2TRbc1p… (bech32m)Raíz principal, Tapscript, OrdinalesAlto

 En términos simples

  1. Cerradura y llave:Cada salida de Bitcoin tiene un bloqueo (script de bloqueo): para gastarlo, debes proporcionar la clave correcta (script de desbloqueo) que satisfaga las condiciones.
  2. Máquina apiladora:El script se ejecuta introduciendo valores en una pila y ejecutando operaciones: es simple, predecible y deliberadamente no Turing-completo para evitar bucles infinitos.
  3. Ejemplo de multifirma:Un script multifirma 2 de 3 requiere 2 de 3 firmas de clave privada designadas para desbloquear fondos, que se utilizan para tesorerías de equipo y billeteras seguras.
  4. Privacidad de Taproot: Taproot crea firmas múltiples complejas y scripts de contratos inteligentes parecen idénticas a las simples transacciones de firma única en la cadena de bloques, lo que mejora la privacidad.
  5. Límites deliberadosA diferencia de Solidity de Ethereum, Bitcoin Script no puede acceder a datos externos, realizar bucles ni llamar a otros contratos, lo que lo hace predecible y seguro.

 Ejemplos del mundo real

EscenarioTipo de scriptBeneficio
Intercambio de billetera calienteP2SH 2 de 3 multifirmaRequiere 2 de 3 llaves para gastar: protege contra el robo de una sola llave
Canal de Lightning NetworkHTLC (Contrato de tiempo bloqueado con hash)Permite pagos instantáneos de BTC fuera de la cadena
Intercambio atómico BTC↔LTCHTLC en ambas cadenasIntercambio entre cadenas sin intermediarios y sin confianza
Herencia bloqueada en el tiempoVERIFICAR BLOQUEO TIEMPO VERIFICARLos fondos solo se pueden gastar después de una fecha específica
Inscripción de ordinalesDatos de testigos de P2TRInscripción de NFT/datos en Taproot Witness

 Ventajas

La VentajaDetail
SeguridadEl diseño incompleto de Turing impide posibles vectores de ataque complejos en contratos inteligentes
PrevisibilidadCada script se ejecuta de forma determinista con computación acotada.
ExpresividadPermite múltiples firmas, bloqueos de tiempo y HTLC suficientes para Lightning Network
EficienciaLos scripts son compactos, lo que minimiza los datos de transacción y las tarifas.
Privacidad (Taproot)Condiciones de gasto complejas indistinguibles de los pagos simples

 Desventajas y riesgos

SupervisiónDetail
Funcionalidad limitadaNo se puede implementar complejo DeFi oráculos o contratos inteligentes arbitrarios
Complejidad del guiónLos scripts multi-firma avanzados son complejos de implementar correctamente
Problemas de formato heredadoLos tipos de scripts más antiguos (P2PK, P2PKH) tienen menor privacidad que las alternativas modernas
Códigos de operación deshabilitadosSe deshabilitaron varios códigos de operación potentes (OP_CAT, OP_CHECKSIGFROMSTACK) por seguridad
Riesgos de errores de scriptLos errores en scripts personalizados pueden bloquear fondos de forma permanente

Consejos de gestión de riesgos:

  • Pruebe siempre las implementaciones de scripts personalizados en la red de prueba antes de en la red principal
  • Utilice direcciones P2TR (Taproot) para una mejor privacidad y compatibilidad futura
  • Para billeteras multi-firma, utilice implementaciones establecidas (Bitcoin Core, Sparrow Wallet) en lugar de scripts personalizados
  • Almacene los scripts de canje (P2SH) de forma segura: los necesita para gastar fondos

 Preguntas Frecuentes

P: ¿Por qué Bitcoin Script no es Turing-completo?

R: La completitud de Turing permite bucles infinitos, lo cual es peligroso en una cadena de bloques donde todos los nodos deben ejecutar todos los scripts. La incompletitud deliberada de Bitcoin Script garantiza que los scripts terminen de forma predecible, lo que previene ataques de denegación de servicio y posibilita la verificación formal de los scripts.

P: ¿Qué es un HTLC en Bitcoin Script?

R: Un Contrato de Tiempo Bloqueado por Hash (HTLC) es un script que permite reclamar un pago al revelar un secreto (preimagen) que se convierte en un valor predeterminado, o reembolsarlo al remitente tras un tiempo de espera. Los HTLC son el componente fundamental de la Red Lightning.

P: ¿Cómo mejora Taproot Bitcoin Script?

A: Taproot (BIP 340/341/342) introduce firmas Schnorr que permiten la agregación de claves, MAST (árboles de sintaxis abstracta merklizados) a través de Tapscript, lo que permite scripts complejos al tiempo que revela solo las ramas ejecutadas y hace que todas las salidas de Taproot se vean idénticas externamente, lo que mejora significativamente la privacidad y la eficiencia.

Consejo de UPay: Al configurar una billetera de Bitcoin, utilice direcciones Taproot (bc1p…) para obtener la mejor combinación de privacidad, eficiencia y compatibilidad futura. La mayoría de las billeteras modernas, como Sparrow y Phoenix, son compatibles con Taproot de forma nativa.

Descargo de responsabilidad: este contenido es sólo para fines educativos y no constituye asesoramiento financiero o técnico.

UPay — Haciendo de las criptomonedas una enciclopedia

Noticias y Eventos