Timelock je zastřešující pojem pro čtyři mechanismy: nLockTime celé transakce, OP_CHECKLOCKTIMEVERIFY (CLTV/BIP65), relativní nSequence podle BIP68 a OP_CHECKSEQUENCEVERIFY (CSV/BIP112). Časové kontroly používají BIP113 Median Time Past.
Bitcoin má dvě absolutní a dvě relativní vrstvy. nLockTime omezuje celou transakci, CLTV konkrétní scriptovou větev, BIP68 dává vstupu relativní stáří a CSV dovoluje Scriptu toto stáří vyžadovat.
nLockTime je 32bitové pole. Nula znamená bez absolutního locku. Pokud mají všechny vstupy nSequence = 0xffffffff, nesplněný nLockTime se ignoruje; pro účinný lock je proto potřeba alespoň jeden non-final sequence.
Hodnoty pod LOCKTIME_THRESHOLD = 500 000 000 znamenají výšku bloku, hodnoty od této hranice Unix timestamp. Hranice pouze mění interpretaci stejného pole.
Časový locktime se porovnává s Median Time Past předchozího bloku, ne s volně zvoleným timestampem kandidátního bloku. Bitcoin Core při kontrole příštího bloku používá GetMedianTimePast.
OP_CHECKLOCKTIMEVERIFY z BIP65 vyžaduje, aby nLockTime spending transakce dosáhl zadané výšky nebo času a aby příslušný vstup nebyl final. CLTV samo nic neodešle ani automaticky neodemkne.
U transakcí verze 2+ interpretuje BIP68 nSequence jako relativní prodlevu od stáří utráceného UTXO, v blocích nebo jednotkách 512 sekund. Disable flag může tuto relativní logiku pro vstup vypnout.
OP_CHECKSEQUENCEVERIFY z BIP112 dovoluje scriptové větvi požadovat minimální relativní stáří. Hodí se pro recovery a penalty cesty otevřené až po prodlevě, včetně Lightning konstrukcí.
SEQUENCE_FINAL = 0xffffffff může při všech vstupech neutralizovat nLockTime. Disable flag BIP68 je jiný bit s jiným významem; CSV s operandem obsahujícím tento flag zachází jako s NOP.
Dosažení výšky nebo času pouze změní validitu. Peněženka stále musí transakci uchovat či vytvořit, podepsat, splnit další Script podmínky, zaplatit fee, propagovat a získat potvrzení.
Kontrolujte nLockTime, verzi transakce a nSequence každého vstupu a ve scriptu CLTV nebo CSV. decoderawtransaction ukáže pole a testmempoolaccept řekne, zda je kandidát právě přijatelný.
Pro nejúplnější obraz čtěte toto heslo společně s CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Lightning Network, Payment Channel, Transakce, Bitcoin Script. Opačným směrem na něj odkazují také Potvrzení, Bitcoin Script, HTLC, CHECKLOCKTIMEVERIFY.