128 / 691OP

Bitcoin Script opcode

Un opcode est une instruction de Bitcoin Script. Lors de la vérification d'une dépense, il manipule la pile ou vérifie une condition ; son sens dépend aussi de la version du script.

Un opcode est un octet d'instruction, ni une clé privée ni une transaction autonome. Une dépense valide exige tout le contexte du script et de la transaction, pas simplement un nom d'opération.

Script est décodé en instructions et données. OP_PUSHDATA indique de pousser des octets ; les octets à l'intérieur des données poussées ne sont pas réinterprétés comme des opcodes. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]

OP_DUP duplique le sommet de pile, OP_DROP le retire. Un argument manquant peut provoquer un échec ; ordre et encodage des éléments font partie de la condition. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]

OP_EQUAL compare deux éléments et pousse le résultat. OP_EQUALVERIFY échoue s'ils diffèrent et retire le résultat s'ils sont égaux ; aucune opération ne vérifie seule le contrôle d'une clé. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]

OP_CHECKSIG vérifie une signature avec une clé publique et un message dérivé de la transaction. Legacy et SegWit v0 utilisent ECDSA, les clés ordinaires de 32 octets de Tapscript utilisent Schnorr. sighash détermine aussi la portée de l'engagement. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]

OP_IF et OP_ELSE choisissent une branche à partir de la pile. Script n'a pas de boucles générales ; les règles des branches non exécutées dépendent néanmoins de l'opcode et de la version. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]

OP_CHECKLOCKTIMEVERIFY vérifie un verrou absolu, OP_CHECKSEQUENCEVERIFY une condition relative de l'entrée concernée. Ils n'attendent pas, n'envoient pas de paiement et ne remplacent pas une condition de signature. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]

Tapscript modifie les règles de signature, ajoute OP_CHECKSIGADD et rejette OP_CHECKMULTISIG lors de son exécution. Une liste sans version n'est donc pas un guide complet de validation. [BIP 342 — Validation of Taproot Scripts]

BIP 342 réserve OP_SUCCESSx aux extensions : en rencontrer un au décodage de Tapscript permet le succès selon ces règles. Cela n'active pas une proposition et n'impose pas sûrement la condition souhaitée. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core — Segregated Witness benefits]

La politique réseau peut refuser de relayer une transaction admise par consensus dans un bloc. Bitcoin Core v29.0 décourage OP_SUCCESSx par défaut ; la politique du nœud n'est pas une nouvelle règle de consensus. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core v29.0 — Standard script flags]

En lisant un script, identifiez version, pile initiale, message signé et tous les chemins d'échec. Une syntaxe valide ou un joli nom d'opcode ne garantit pas une garde correcte ; l'utilisation complète compte. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]

Pour une vision complète, lisez aussi Bitcoin Script, CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Taproot.

DOC · 001Bitcoin Core v29.0 — Script interpreterDocumentation ↗DOC · 002Bitcoin Core v29.0 — Opcode definitionsDocumentation ↗DOC · 003BIP 342 — Validation of Taproot ScriptsSpécification ↗DOC · 004Bitcoin Developer Guide — TransactionsDocumentation ↗DOC · 005Bitcoin Core v29.0 — Standard script flagsDocumentation ↗DOC · 006Bitcoin Core — Segregated Witness benefitsDocumentation ↗
Sources d’abord · Pas un conseil financier