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 个区块时间中位数)判断时间锁,防止矿工时间戳操纵
- 同时满足交易级与脚本级锁定条件(若两者同时存在)