比特币交易中的locktime字段和tx_in.sequence字段的作用和意义

locktime

lock_time是一个多意字段,表示在某个高度的Block之前或某个时间点之前该交易处于锁定态,无法收录进Block。

值	含义
0				立即生效
< 500000000		含义为Block高度,处于该Block之前为锁定(不生效)
>= 500000000	含义为Unix时间戳,处于该时刻之前为锁定(不生效)

**若该笔交易的所有输入交易的sequence字段,均为INT32最大值(0xffffffff),则忽略lock_time字段。**否则,该交易在未达到Block高度或达到某个时刻之前,是不会被收录进Block中的。

tx_in.sequence

sequence是用来交易被打包前即还在mempool的时候(可能是因为有locktime)还能被替换,即发送者用同样的tx_in构造了另外的交易。要替换成功,新交易用的tx_in.sequence比旧的要大。

更多

  • https://bitcoin.stackexchange.com/questions/87372/what-does-the-sequence-in-a-transaction-input-mean
  • https://bitcoin.stackexchange.com/questions/2025/what-is-txins-sequence

两者的关系

所有sequence字段被置为0xffffffff,表示发送方不会再修改这个交易了,也就是发送方不会再把tx_vin拿去发给别人。很多时候locktime是为了发送方在locktime前可以改变主意,当发送方不会改变主意后,lock_time也被忽略,交易会被直接打包。这也算是一个合理的设计。

你可能感兴趣的:(blockchain,bitcoin,2019)