Der BIP 68 definiert das Eingangsfolgenummernfeld als Bitvektor neu, der eine relative Verriegelungszeit codiert.
Eine Transaktion kann mit einer absoluten Sperrzeit belastet werden, indem das Feld nLockTime auf einen Wert ungleich Null gesetzt wird und indem sichergestellt wird, dass mindestens eine Eingabesequenz nicht maximal ist (nicht 0xffffffff).
Was passiert, wenn eine One-Input-Transaktion nLockTime > 0 setzt und eine relative Sperrzeit unter BIP 68 einführt? Beispielsweise könnte nLockTime in 12.000 Blöcken ablaufen und die relative Sperrzeit der Eingabe könnte in 11.000 Blöcken ablaufen. Umgekehrt kann die relative Sperrzeit nach der absoluten Sperrzeit ablaufen.
Welcher Verriegelungsmechanismus gewinnt in diesen Fällen? Werden beide Sperren geprüft oder nur eine? Wenn letzteres, welches?
Der Abschnitt "Kompatibilität" von BIP 68 weist darauf hin, dass beide Sperren überprüft werden, aber nach meiner Lektüre wird dies nicht explizit angegeben:
Die einzige Verwendung von Sequenznummern durch die Referenz-Client-Software von Bitcoin Core besteht darin, die Überprüfung der nLockTime-Einschränkungen in einer Transaktion zu deaktivieren. Die Semantik dieser Anwendung wird von diesem BIP bewahrt.
Wenn eine bestimmte Sperrzeit im nLockTime
Feld in einer Transaktion angegeben ist. Dies bedeutet, dass diese Transaktion nicht gesendet/von Bergleuten akzeptiert werden kann, bis entweder das blockheight
oder unixtime
verstrichen ist.
Wenn andererseits a OP_CSV
verwendet wird, bedeutet dies, dass eine Transaktion, die sich auf diese Eingabe bezieht, nicht ausgegeben werden kann, bis some blockheight
oder unixtime
verstrichen ist.
Wenn wir beide zusammenführen und zusammen verwenden, erstellen wir im Grunde genommen eine Transaktion, die nicht an das Bitcoin-Netzwerk gesendet werden kann, bis einige Zeit nLockTime
verstrichen ist, und sie kann auch nicht ausgegeben werden, bis einige blockheight
Zeit verstrichen ist. OP_CSV
zielt speziell auf die Ausgabefähigkeit einer Transaktion ab, während eine zeitgesperrte Transaktion einfach verhindert, dass eine Transaktion an das Bitcoin-Netzwerk gesendet wird, bis ihre Sperrzeit abgelaufen ist.
Reiches Apodaca
rny
nsequence
Feld an. Wenn das Disable-Flag gesetzt ist, wird es nicht ausgewertet (da es keine übereinstimmende Bedeutung gibt). Andernfalls wird es ausgewertet. Sie können dies im Quellcode von Bitcoin Core, script/interpretter.cpp, Zeile 334 und weiter, einsehen. Das Verhalten von OP_CSV und Timelocks ist unterschiedlich, sie überschreiben sich nie gegenseitig, da sie semantisch unterschiedliche Dinge bedeuten.