130 / 691CSV

CHECKSEQUENCEVERIFY

CSV impose un verrou relatif à une entrée donnée. Le délai dépend de la confirmation de la sortie dépensée, pas de la création du portefeuille ou de la signature.

Selon BIP 112, OP_CHECKSEQUENCEVERIFY vérifie l'argument du script face au nSequence de l'entrée. BIP 68 impose ensuite l'âge correspondant de la sortie ; ce sont deux contrôles liés, pas un paiement automatique.

CSV contraint nSequence de l'entrée dépensée. Il ne mesure pas lui-même l'âge UTXO ; BIP 68 utilise l'historique de confirmation pour empêcher une inclusion trop précoce. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [BIP 68 — Relative lock-time]

Pour un argument ordinaire sans indicateur de désactivation, CSV exige une version de transaction au moins 2 et le bit 31 de nSequence désactivé. Un argument négatif ou une sequence incompatible échoue. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Core v29.0 — Script interpreter]

Le bit 22 distingue blocs et temps. Activé, l'unité vaut 512 secondes ; le temps est codé par pas de 512 secondes. Les types de l'argument et de nSequence doivent correspondre. [BIP 68 — Relative lock-time]

Les 16 bits inférieurs codent le délai avec le masque 0x0000ffff. CSV compare cette plage avec son type, pas l'ordre des nombres nSequence entiers non masqués. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Script interpreter]

Si la sortie est confirmée à H = 900000 avec un délai de 10 blocs, la première hauteur candidate est H + 10 = 900010. Neuf blocs ne suffisent pas ; le nombre ne garantit pas des minutes exactes. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Transaction sequence locks]

L'origine temporelle est Median Time Past du bloc avant la confirmation de sortie. Elle est comparée au MTP précédant le bloc candidat ; le code 2 signifie au moins 1024 secondes entre ces médianes, pas deux horloges locales. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Transaction sequence locks]

Un délai nul n'ajoute pas d'attente, mais CSV ordinaire conserve ses autres contrôles. Si l'argument non négatif active lui-même le bit 31, CSV agit comme NOP ; cet argument n'impose aucun verrou relatif. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Core v29.0 — Script interpreter]

Chaque entrée a sa confirmation et sa sequence ; tous les verrous applicables doivent être satisfaits. Une réorganisation peut déplacer la confirmation de départ : l'éligibilité antérieure n'est pas irréversible. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Transaction sequence locks]

CSV laisse l'argument sur la pile, souvent suivi de OP_DROP. Signature et autres branches déterminent l'autorisation ; le temps ne restaure pas une clé perdue ni n'exclut un chemin alternatif antérieur. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Developer Reference — Transactions]

BIP 112 a introduit CSV en remplaçant OP_NOP3 avec les règles BIP 68/113. Après le délai, il faut encore transmettre et confirmer la transaction ; frais, données disponibles et état de chaîne comptent toujours. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Core 0.12.1 — BIP 68/112/113 release notes]

Pour une vision complète, lisez aussi CHECKLOCKTIMEVERIFY, Bitcoin Script opcode, Timelock, Bitcoin Script. Cette entrée est également citée par Confirmation, Timelock, HTLC, Bitcoin Script opcode.

DOC · 001BIP 112 — OP_CHECKSEQUENCEVERIFYSpécification ↗DOC · 002BIP 68 — Relative lock-timeSpécification ↗DOC · 003Bitcoin Core v29.0 — Script interpreterDocumentation ↗DOC · 004Bitcoin Core v29.0 — Transaction sequence locksDocumentation ↗DOC · 005Bitcoin Developer Reference — TransactionsDocumentation ↗DOC · 006Bitcoin Core 0.12.1 — BIP 68/112/113 release notesDocumentation ↗
Sources d’abord · Pas un conseil financier