跳到主要内容

locktime

时间锁与相对锁定(CLTV/CSV/BIP68/112/113)

Bitcoin 提供绝对与相对时间锁,控制交易可被验证/打包的时间窗口。

绝对时间锁(nLockTime 与 CLTV)

  • nLockTime:交易级别锁定时间
    • >= 500_000_000 表示 Unix 时间戳
    • < 500_000_000 表示区块高度
    • 校验基于 MTP(Median-Time-Past, BIP113),而非本地时钟
  • OP_CHECKLOCKTIMEVERIFY (CLTV):脚本级绝对锁定(BIP65)

相对时间锁(Sequence 与 CSV)

  • BIP68:重新解释 nSequence 字段以携带相对锁定信息
    • 位 31:必须清零
    • 位 22:0=高度1=时间(512 秒单位)
    • 低 16 位:锁定量
  • OP_CHECKSEQUENCEVERIFY (CSV):脚本级相对锁定(BIP112)

用法示例

  • 延时支付:
    • 父交易输出脚本使用 CLTV 指定高度/时间
    • 花费时必须满足该锁定条件
  • 通道与承诺交易:
    • 使用 CSV 实现相对时间延迟,便于争议期内的撤销与惩罚

实现要点

  • 使用 MTP(11 个区块时间中位数)判断时间锁,防止矿工时间戳操纵
  • 同时满足交易级与脚本级锁定条件(若两者同时存在)