Timelock ist ein Überbegriff für vier Mechanismen: nLockTime der gesamten Transaktion, OP_CHECKLOCKTIMEVERIFY (CLTV/BIP65), relative nSequence gemäß BIP68 und OP_CHECKSEQUENCEVERIFY (CSV/BIP112). Zeitprüfungen verwenden BIP113 Median Time Past.
Bitcoin hat zwei absolute und zwei relative Schichten. nLockTime begrenzt die gesamte Transaktion, CLTV einen bestimmten Skriptzweig, BIP68 gibt der Eingabe ein relatives Alter und CSV ermöglicht dem Skript, dieses Alter anzufordern.
nLockTime ist ein 32-Bit-Feld. Null bedeutet keine absolute Sperre. Wenn alle Eingaben nSequence = 0xffffffff haben, wird eine nicht erfüllte nLockTime ignoriert; Daher ist für eine wirksame Sperre mindestens eine nicht-endgültige Sequenz erforderlich.
Werte unter LOCKTIME_THRESHOLD = 500.000.000 bedeuten die Blockhöhe, Werte ab dieser Grenze einen Unix-Zeitstempel. Grenzen verändern nur die Interpretation desselben Feldes.
Die Sperrzeit wird mit der Median Time Past des vorherigen Blocks verglichen, nicht mit dem frei gewählten Zeitstempel des Kandidatenblocks. Bitcoin Core verwendet GetMedianTimePast bei der Suche nach dem nächsten Block.
OP_CHECKLOCKTIMEVERIFY von BIP65 erfordert, dass die nLockTime-Ausgaben der Transaktion einen bestimmten Betrag oder eine bestimmte Zeit erreichen und dass die entsprechende Eingabe nicht endgültig ist. CLTV selbst sendet nichts und entsperrt nicht automatisch.
Für Transaktionen der Version 2+ interpretiert BIP68 nSequence als relative Verzögerung vom Alter des verbrauchten UTXO, in Blöcken oder Einheiten von 512 Sekunden. Das Disable-Flag kann diese relative Logik für die Eingabe deaktivieren.
OP_CHECKSEQUENCEVERIFY von BIP112 ermöglicht es dem Skriptzweig, ein relatives Mindestalter anzufordern. Es ist für Erholungszwecke geeignet und die Strafbahnen öffnen erst nach der Verzögerung, einschließlich Blitzkonstruktionen.
SEQUENCE_FINAL = 0xffffffff kann nLockTime für alle Eingänge neutralisieren. Das Deaktivierungsflag BIP68 ist ein weiteres Bit mit einer anderen Bedeutung. CSV behandelt einen Operanden, der dieses Flag enthält, als NOP.
Das Erreichen von Höhe oder Zeit ändert nur die Gültigkeit. Das Wallet muss weiterhin die Transaktion speichern oder erstellen, signieren, andere Skriptbedingungen erfüllen, Gebühren zahlen, bewerben und eine Bestätigung erhalten.
Überprüfen Sie nLockTime, Transaktionsversion und nSequence jeder Eingabe sowie im CLTV- oder CSV-Skript. decoderawtransaction zeigt das Feld an und testmempoolaccept gibt an, ob der Kandidat derzeit akzeptabel ist.
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Lightning Network, Payment Channel, Transaktion, Bitcoin Script. Auf diesen Eintrag verweisen außerdem Bestätigung, Bitcoin Script, HTLC, CHECKLOCKTIMEVERIFY.