转帖说明:我不支持bsv,只是因为bsv是比特币的二次分叉币,在技术上有很多相同点。
作者:BSV区块链
时间:2024年1月8日
来源:https://zhuanlan.zhihu.com/p/670256635
nLocktime与nSequence
nLocktime 和 nSequence 是应用于比特币交易的互相锁定功能。
nSequence
交易中的每个输入都有nSequence参数。如果交易的 nLocktime 的互锁机制被激活(即 nLocktime 被设置为未来的某个时间点),且交易中有一个或多个输入的 nSequence 小于 UINT_MAX (0xFFFFFFFF),那么该交易就不能打包进区块中。
nLocktime
每个交易都有nLockTime 参数,它专门用于指定unix 时间或区块高度,在nLocktime指定的值(不论时间还是区块高度)到达之前,该交易都不能被打包到区块中。如果交易中所有输入的 nSequence 都等于 UINT_MAX,则忽略 nLockTime参数。
如果一笔交易的nLockTime值被设定为小于500,000,000,则这个整数值被系统解释为区块高度,在网络到达此高度之后才会接受这笔交易。如果一笔交易的nLockTime值被设定为大于500,000,000,该整数值会将被系统解释为 UNIX 时间戳,在此时间之后该交易才能被打包在区块里。
Unix 时间戳是自 Unix 纪元(从 1970 年 1 月 1 日 00:00:00 UTC 开始)以来历经的秒数减去闰秒。由于闰秒的 Unix 时间与其前一秒相同,故闰秒将被忽略。每一天都被视为正好包含 86400 秒。由于这种处理方式,Unix 时间不是 UTC 时间的真实表示。
nLocktime与nSequence在支付信道中的应用
如果交易的nLockTime 设置在未来,并且存在一个或多个输入的 nSequence 字段小于 0xFFFFFFFF,则该交易被认为是未完成的,它会被储存在节点的交易池中,直到 nLockTime 到期或所有输入的 nSequence 最终确定,才会被打包到区块中。
未完成交易可替换为包含具有更高 nSequence 编号的相同输入的交易。此功能可用于在交易中构建起支付信道(payment channel),支付信道能够允许两方以P2P(点对点)的方式动态地交换数据。
没懂
测试文章忘记删除了,改成别的文章了。