Skip to main content

Opcode | Bitcoin Glossary | Mapping Bitcoin

Opcode

Protocolo

Also known as: operation code, script opcode

Código de operação no Bitcoin Script que define instruções executadas na pilha. Bitcoin tem mais de 100 opcodes para criptografia, aritmética e controle.

Visão Geral

Um opcode (código de operação) é uma instrução única no Bitcoin Script, a linguagem de programação baseada em pilha usada para definir as condições de gasto do bitcoin. Cada opcode realiza uma operação específica, como empurrar dados para a pilha, realizar aritmética, verificar assinaturas criptográficas ou controlar o fluxo do programa. Os opcodes são os blocos de construção fundamentais de toda a lógica de transações Bitcoin.

Categorias de Opcodes

┌──────────────────┬──────────────────────────────┐
│    Categoria      │    Exemplos                   │
├──────────────────┼──────────────────────────────┤
│ Constantes       │ OP_0, OP_1, OP_PUSHDATA      │
│ Controle de fluxo│ OP_IF, OP_ELSE, OP_ENDIF     │
│ Pilha            │ OP_DUP, OP_DROP, OP_SWAP     │
│ Aritmética       │ OP_ADD, OP_SUB, OP_EQUAL     │
│ Criptografia     │ OP_HASH160, OP_CHECKSIG      │
│ Bloqueio temporal│ OP_CHECKLOCKTIMEVERIFY       │
│ Especiais        │ OP_RETURN, OP_NOP             │
│ Desabilitados    │ OP_CAT, OP_MUL (segurança)   │
└──────────────────┴──────────────────────────────┘

Como os Opcodes Executam

Bitcoin Script é uma linguagem baseada em pilha. Os dados são empurrados para uma pilha, e os opcodes retiram valores da pilha, realizam operações e empurram os resultados de volta.

Exemplo: Verificar uma assinatura (P2PKH simplificado)

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

Passo 1: Empurrar <sig>         Pilha: [sig]
Passo 2: Empurrar <pubKey>      Pilha: [sig, pubKey]
Passo 3: OP_DUP                 Pilha: [sig, pubKey, pubKey]
Passo 4: OP_HASH160             Pilha: [sig, pubKey, hash]
Passo 5: Empurrar <pubKeyHash>  Pilha: [sig, pubKey, hash, pubKeyHash]
Passo 6: OP_EQUALVERIFY         Pilha: [sig, pubKey] (hashes coincidem)
Passo 7: OP_CHECKSIG            Pilha: [VERDADEIRO] ← Gasto válido!

Opcodes Desabilitados

Vários opcodes foram desabilitados no início da história do Bitcoin por Satoshi Nakamoto devido a preocupações de segurança, incluindo OP_CAT (concatenar), OP_MUL (multiplicar) e OP_LSHIFT. Alguns desses são objeto de propostas de reabilitação em andamento na comunidade de desenvolvimento Bitcoin.

Conceitos Errôneos Comuns

Bitcoin Script é intencionalmente não Turing-completo — carece de loops e computação ilimitada. Esta é uma característica de segurança, não uma limitação. Garante que a validação do script sempre termine e tenha uso previsível de recursos, prevenindo ataques de negação de serviço contra nós.