知识库详情
知识库

以“词条释义”的形式对比特币区块链技术中经常涉及的术语及基本概念进行专业化的阐释和解读。

nLocktime与nSequence
返回上级
BSV区块链编辑 2022-04-14 18:03 370

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(点对点)的方式动态地交换数据。

交易
双重支付
比特币支付
交易手续费
比特币交易
Paymail
比特币数字签名
未花费交易输出(UTXO)
nLocktime与nSequence
支付信道
VOUT
TXID(交易ID)
找零/零钱
交易确认