十二、nLockTime(CLTV)与Sequence number(CSV)

在第9课 Transaction数据结构、UTXO、钱包 – 详解中,我们对Transaction的数据结构进行了深入剖析,其中最关键的部分就是UTXO。

这节课,我们讲详细说明Transaction里面另外2个关键字段:nLockTime 与sequence number,同时也介绍2个常用专业术语:CLTV, CSV。

nLockTime 与 CLTV
在前面第10课,介绍Transaction的详细结构时,可以看到最前面有1个lockTime字段,也就是我们说的nLockTime。

通常情况下,nLockTime = 0,代表这笔交易不会积压,节点收到这笔交易之后,立即会进入Memory Pool,之后开始打包,挖矿的过程。

但当nLockTime > 0 时,这笔交易会被节点Hold在那,不会打包,不会进入区块链网络。

具体来说:
nLockTime < 5亿 ,其值代表Block height,是说整个区块链的高度达到nLockTime指定的值,才将该交易打包到区块链里面。在此之前,该交易一直Hold在那。 //代表Block height到达这个值,再打包

nLockTime >= 5亿,其值代表一个未来的时间戳,是说时间超过了该时间戳,该交易才被打包,进入区块链。在此之前,该交易一直Hold在那。

为了验证nLockTime属性,在script language里面,也就有一个对应的操作符,叫做OP_CHECKLOCKTIMEVERIFY(简称CLTV)。

Sequence Number 与 CSV
nLockTime是Transaction级别的,每个Transaction有1个nLockTime字段;

Sequence Number呢,是Input级别的,1个Transaction里面多个Input,每个都对应1个Sequence Number,所以它的粒度比nLockTime要细。

Sequence Number是个整数,什么意思呢?
原理和nLockTime类似,也是把交易Hold在那,等到该Input所引用的交易(也就是上1个交易的UTXO)所在的Block,其后面跟随了sequence number个Block之后,该交易才能被打包,被广播进区块链网络。

说通俗点,就是上1个Block要足够成熟,后面跟了很多个块之后,该Block里面的UTXO才能被花出去。

绝对时间 与 相对时间
从上面的解释可以看出,nLockTime和sequence number,都是一个Time Lock。要把当前的交易Hold在那,等到时间成熟了再能打包进区块链。
2者都是关于时间的,但有1个很大差别:
nLockTime :绝对时间,用的是整个区块链的长度,或者 时间戳来表达的。
sequence number : 相对时间,当前交易所引用的UTXO所在的块,后面追加了多少个块。

遗留问题:
讲了这么多,这2个字段有什么用呢,干嘛要单独讲这2个东西?
非常重要!!! 后面要讲的《微支付通道》和《闪电网络》,将要用到这2个字段,敬请期待。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值