54 / 691TIME

Timelock

时间锁

比特币时间锁使用绝对或相对共识条件延迟交易或特定支出路径生效的时刻。

时间锁是四种机制的总称:整个事务的 nLockTime、OP_CHECKLOCKTIMEVERIFY (CLTV/BIP65)、根据 BIP68 的相对 nSequence 和 OP_CHECKSEQUENCEVERIFY (CSV/BIP112)。时间检查使用 BIP113 过去的中位时间。 (Median Time Past)

比特币有两个绝对层和两个相对层。 nLockTime 限制整个交易,CLTV 特定的脚本分支,BIP68 为输入提供相对年龄,CSV 允许脚本请求该年龄。

nLockTime 是一个 32 位字段。零意味着没有绝对锁定。如果所有输入的 nSequence = 0xffffffff,则忽略未满足的 nLockTime;因此,有效锁定至少需要一个非最终序列。

低于 LOCKTIME_THRESHOLD = 500,000,000 的值是平均块高度,此边界的值是 Unix 时间戳。边界只会改变同一领域的解释。

锁定时间与前一个块的中位时间进行比较,而不是与候选块的自由选择的时间戳进行比较。 Bitcoin Core 在检查下一个区块时使用 GetMedianTimePast。

BIP65 中的 OP_CHECKLOCKTIMEVERIFY 要求交易的 nLockTime 花费达到指定的金额或时间,并且相应的输入不是最终的。 CLTV 本身不会发送任何内容或自动解锁。

对于版本 2+ 的交易,BIP68 将 nSequence 解释为从已用 UTXO 的年龄开始的相对延迟,以块或 512 秒为单位。禁用标志可以关闭该输入相关逻辑。

BIP112 中的 OP_CHECKSEQUENCEVERIFY 允许脚本分支请求最小相对年龄。它适用于仅在延迟后才开放的恢复和处罚车道,包括闪电施工。

SEQUENCE_FINAL = 0xffffffff 可以抵消所有输入上的 nLockTime。禁用标志 BIP68 是另一个具有不同含义的位; CSV 将包含此标志的操作数视为 NOP。

达到的高度或时间只会改变有效性。钱包仍然需要存储或创建交易、对其进行签名、满足其他脚本条件、支付费用、推广并获得确认。

检查 CLTV 或 CSV 脚本中每个输入的 nLockTime、交易版本和 nSequence。 Decoderawtransaction 将显示该字段,而 testmempoolaccept 将告诉候选者当前是否可接受。

要获得更完整的理解,请将本词条与以下词条结合阅读: CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Lightning Network, Payment Channel, 交易, Bitcoin Script. 反向关联还来自: 确认, Bitcoin Script, HTLC, CHECKLOCKTIMEVERIFY.

DOC · 001BIP 65 — OP_CHECKLOCKTIMEVERIFY规范DOC · 002BIP 68 — Relative lock-time using consensus-enforced sequence numbers规范DOC · 003BIP 112 — CHECKSEQUENCEVERIFY规范DOC · 004BIP 113 — Median time-past as endpoint for lock-time calculations规范DOC · 005Bitcoin Core transaction finality文档DOC · 006Bitcoin Core script interpreter文档DOC · 007Bitcoin Core locktime constants文档DOC · 008Bitcoin Core implemented BIPs文档
复核于2026年8月1日来源优先 · 非投资建议