128 / 691OP

Bitcoin Script opcode

Opcode é uma instrução de Bitcoin Script. Ao verificar um gasto, manipula a pilha ou verifica uma condição; seu significado também depende da versão do script.

Opcode é um byte de instrução, não uma chave privada ou transação independente. Um gasto válido exige todo o contexto correto de script e transação, não apenas o nome da operação.

Script é decodificado em instruções e dados. OP_PUSHDATA determina a inserção de bytes; bytes dentro dos dados inseridos não são reinterpretados como outros opcodes. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]

OP_DUP duplica o topo da pilha e OP_DROP o remove. A falta de um argumento pode causar falha; ordem e codificação dos itens fazem parte da condição. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]

OP_EQUAL compara dois itens e insere o resultado. OP_EQUALVERIFY falha se forem diferentes e remove o resultado se iguais; nenhuma operação verifica sozinha o controle de uma chave. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]

OP_CHECKSIG verifica assinatura com chave pública e mensagem derivada da transação. Legacy e SegWit v0 usam ECDSA, chaves comuns de 32 bytes de Tapscript usam Schnorr. sighash também determina o alcance do compromisso. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]

OP_IF e OP_ELSE escolhem um ramo pela pilha. Script não tem laços gerais; regras de ramos não executados ainda dependem do opcode e da versão. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]

OP_CHECKLOCKTIMEVERIFY verifica um bloqueio absoluto, OP_CHECKSEQUENCEVERIFY uma condição relativa da entrada pertinente. Não esperam, enviam pagamento nem substituem a condição de assinatura. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]

Tapscript muda regras de assinatura, acrescenta OP_CHECKSIGADD e rejeita OP_CHECKMULTISIG quando executado. Uma lista sem versão não é um guia completo de validação. [BIP 342 — Validation of Taproot Scripts]

BIP 342 reserva OP_SUCCESSx para extensões: encontrá-los ao decodificar Tapscript permite sucesso segundo essas regras. Isso não ativa uma operação proposta nem impõe com segurança a condição pretendida. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core — Segregated Witness benefits]

A política de rede pode recusar retransmitir transação admitida pelo consenso num bloco. Bitcoin Core v29.0 desencoraja OP_SUCCESSx por padrão; política de nó não é uma nova regra de consenso. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core v29.0 — Standard script flags]

Ao ler um script, identifique versão, pilha inicial, mensagem assinada e todos os caminhos de falha. Sintaxe válida ou nome atraente não garante custódia correta; importa o uso completo. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]

Para ter uma visão mais completa, leia este verbete junto com Bitcoin Script, CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Taproot.

DOC · 001Bitcoin Core v29.0 — Script interpreterDocumentação ↗DOC · 002Bitcoin Core v29.0 — Opcode definitionsDocumentação ↗DOC · 003BIP 342 — Validation of Taproot ScriptsEspecificação ↗DOC · 004Bitcoin Developer Guide — TransactionsDocumentação ↗DOC · 005Bitcoin Core v29.0 — Standard script flagsDocumentação ↗DOC · 006Bitcoin Core — Segregated Witness benefitsDocumentação ↗
Fontes em primeiro lugar · Não é recomendação de investimento