Skip to main content

Bitcoin Script | Bitcoin Glossary | Mapping Bitcoin

Bitcoin Script

Protocolo

Also known as: Script

Lenguaje de scripting en pila que define condiciones para gastar UTXOs en Bitcoin. Es intencionalmente limitado para maximizar seguridad y predictibilidad.

Descripción general

Bitcoin Script es el lenguaje de programación que impulsa todas las transacciones de Bitcoin. Cada salida de transacción contiene un script de bloqueo (scriptPubKey) que especifica las condiciones bajo las cuales se puede gastar la salida. Para gastar esa salida, una transacción posterior debe proporcionar un script de desbloqueo (scriptSig) que satisfaga esas condiciones. Script está intencionalmente limitado en capacidad para priorizar la seguridad y la previsibilidad.

Cómo funciona la ejecución de Script

Script utiliza un modelo de ejecución basado en pila donde los datos y los operadores se procesan de izquierda a derecha, empujando valores hacia y extrayendo valores de una pila:

Ejemplo: Verificación P2PKH (Pay-to-Public-Key-Hash)

Script de desbloqueo (scriptSig):     <signature> <public_key>
Script de bloqueo (scriptPubKey):    OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Ejecución:
  Pila: []
  Empujar <signature>         → [sig]
  Empujar <public_key>        → [sig, pubKey]
  OP_DUP                      → [sig, pubKey, pubKey]
  OP_HASH160                  → [sig, pubKey, hash(pubKey)]
  Empujar <pubKeyHash>        → [sig, pubKey, hash(pubKey), pubKeyHash]
  OP_EQUALVERIFY              → [sig, pubKey]        (los hashes deben coincidir)
  OP_CHECKSIG                 → [true]               (firma válida)

Filosofía de diseño

Script es deliberadamente no Turing-completo: no tiene bucles y siempre termina. Esta elección de diseño previene ataques de denegación de servicio y garantiza que el tiempo de ejecución de cada script pueda ser acotado. Aunque esto limita la expresividad de Script en comparación con los lenguajes de contratos inteligentes de propósito general, hace que la validación de transacciones de Bitcoin sea altamente predecible y segura.

Tipos de script comunes

  • P2PKH: Pago a un hash de clave pública (direcciones legacy que comienzan con 1)
  • P2SH: Pago a un hash de script (direcciones que comienzan con 3), habilitando scripts complejos como multisig
  • P2WPKH/P2WSH: Versiones SegWit con datos de testigo separados de la transacción
  • P2TR: Salidas Taproot que pueden gastarse mediante una ruta de clave o una ruta de script

Casos límite

Un caso límite notable es el opcode OP_RETURN, que marca una salida como comprobablemente no gastable. Esto se usa para incrustar pequeñas cantidades de datos arbitrarios en la blockchain sin crear UTXOs no gastables que los nodos deban rastrear indefinidamente.