Skip to main content

Opcode | Bitcoin Glossary | Mapping Bitcoin

Opcode

Protocolo

Also known as: operation code, script opcode

Instrucción de bajo nivel en el lenguaje Script de Bitcoin que define operaciones criptográficas y aritméticas para las condiciones de gasto de los UTXOs.

Descripción General

Un opcode (código de operación) es una instrucción única en el Bitcoin Script, el lenguaje de programación basado en pila utilizado para definir las condiciones de gasto de bitcoin. Cada opcode realiza una operación específica, como empujar datos a la pila, realizar aritmética, verificar firmas criptográficas o controlar el flujo del programa. Los opcodes son los bloques de construcción fundamentales de toda la lógica de transacciones de Bitcoin.

Categorías de Opcodes

┌──────────────────┬──────────────────────────────┐
│    Categoría      │    Ejemplos                   │
├──────────────────┼──────────────────────────────┤
│ Constantes       │ OP_0, OP_1, OP_PUSHDATA      │
│ Control de flujo │ OP_IF, OP_ELSE, OP_ENDIF     │
│ Pila             │ OP_DUP, OP_DROP, OP_SWAP     │
│ Aritmética       │ OP_ADD, OP_SUB, OP_EQUAL     │
│ Criptografía     │ OP_HASH160, OP_CHECKSIG      │
│ Tiempo de bloqueo│ OP_CHECKLOCKTIMEVERIFY       │
│ Especiales       │ OP_RETURN, OP_NOP             │
│ Deshabilitados   │ OP_CAT, OP_MUL (seguridad)   │
└──────────────────┴──────────────────────────────┘

Cómo Se Ejecutan los Opcodes

Bitcoin Script es un lenguaje basado en pila. Los datos se empujan a una pila, y los opcodes extraen valores de la pila, realizan operaciones y empujan los resultados de vuelta.

Ejemplo: Verificar una firma (P2PKH simplificado)

Pila:         Script:
              <sig> <pubKey> OP_DUP OP_HASH160
              <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Paso 1: Empujar <sig>         Pila: [sig]
Paso 2: Empujar <pubKey>      Pila: [sig, pubKey]
Paso 3: OP_DUP                Pila: [sig, pubKey, pubKey]
Paso 4: OP_HASH160            Pila: [sig, pubKey, hash]
Paso 5: Empujar <pubKeyHash>  Pila: [sig, pubKey, hash, pubKeyHash]
Paso 6: OP_EQUALVERIFY        Pila: [sig, pubKey] (hashes coinciden)
Paso 7: OP_CHECKSIG           Pila: [VERDADERO] ← ¡Gasto válido!

Opcodes Deshabilitados

Varios opcodes fueron deshabilitados en los primeros días de Bitcoin por Satoshi Nakamoto debido a preocupaciones de seguridad, incluyendo OP_CAT (concatenar), OP_MUL (multiplicar) y OP_LSHIFT. Algunos de estos son objeto de propuestas de re-habilitación en curso en la comunidad de desarrollo de Bitcoin.

Conceptos Erróneos Comunes

Bitcoin Script es intencionalmente no Turing-completo — carece de bucles y cómputo sin límites. Esta es una característica de seguridad, no una limitación. Garantiza que la validación del script siempre termine y tenga un uso predecible de recursos, previniendo ataques de denegación de servicio contra los nodos.