首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

虾说区块链-49-《精通比特币》笔记四

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

区块链-《精通比特币》笔记四:

《精通比特币》第二版网络在线阅读地址:

http://book.8btc.com/books/6/masterbitcoin2cn/_book/ch07.html

数据记录输出:应对区块链中区块链节点存储消耗大量磁盘空间的问题,大量不能用于交易的UTXO膨胀,针对不能用于交易的UTXO,在0.9版本bitcoin核心客户端上,采用return操作符实现在交易输出上增加80字节的非交易数据,实现一种可复查的非交易型输出,该类型存储于区块链上但不存储在UTXO集,return脚本样式:return。Data部分限制为80字节,以hash方式呈现。Return不涉及可用于支付的解锁脚本的特点,不锁定资金,一般以一个金额为0的bitcoin输出,在验证时候标记交易无效,一般一笔标准的交易只有一个return的输出。最初retrun为80字节,功能释放后减少为40字节,或者少于80字节。

时间锁:timelocks,时间锁允许一段时间才允许支出的交易,由nlocktime字段实现,为复杂的多级智能合同提供技术基础。

交易锁定时间:在交易中设置时间锁功能,交易锁定时间在交易数据结构设定中一个字段,定义交易有效的最早时间。锁定时间了nlocktime在大多数交易中设置为0,表示即刻传播执行,超过5亿解释为unix时间戳后的秒数,并且交易在指定时间之前无效,在未来的时间或者区块中才会发送到网络中,等同一个延期支票的概念。

交易锁定时间限制和检查锁定时间验证:交易锁定时间限制一笔交易的执行前提,必须在一定的时间和区块条件成熟后才能执行,一旦为到达前提则认为是无效交易。通过check lock time verify(CLTV)检查锁定时间验证来控制。CLTV在2015年12月bitcoin软分叉升级BIP-65规范提出,脚本语言中添加一种checklocktimeverify的操作符。CLTV是每个输出时间锁定,不是每个交易的时间锁定,区别于nlocktime:nlocktime是交易级时间锁定,CLTV是基于输出的时间锁。CLTV限制特定的UTXO,结合nlocktime设置为更大或者相等的值,约定未来的一个时间才能花费。脚本示例:DUP HASH160EQUALVERIFY CHECKSIG、CHECKLOCKTIMEVERIFY DROP DUP HASH160 EQUALVERIFY CHECKSIG .CLTV以一个参数作为输入,类同nlocktime格式数字,在后缀做一个bool的判断。

相对时间锁:nlocktime和CLTV都是绝对时间锁,相对时间锁是在消耗输出的条件制定为从快链接中输出确认为经过时间。作为是将两个或者多个互相依赖的交易链接在一起,对依赖从先前交易的确认所经过的时间的一个交易加一个时间约束。这个作用在闪电网络中被经常用到。脚本使用:CHECKSEQUENCEVERIFY(CSV)操作码实现。相对时间锁通过BIP-68和BIP-112规范共同实现,找2016年5月软分叉升级被激活的一个共识机制。

nSequence相对时间锁:在每个输入中加多一个nSequence字段。该字段设计为了让交易在内存中能修改,但未真正运行,那么输入交易的序列值小于2^32,表示为未确定的交易。这类型的交易在内存池中保存,有大于之前nSequence值后被取代,在有nlocktime和CLTV的交易中nSequence值必须小于2^32.(一般为2^32-1)。在一笔交易中nSequence值小于2^31就是一笔相对时间锁定的输入交易,一直要到相对锁定时间后才生效。

CSV的相对时间锁:CSV的值和相应的nSequence格式相匹配,在一个父交易传播后,消耗相对锁定时间后子交易才进行。

针对费用狙击时间锁定:费用狙击矿工师徒从将来块来重写过去块,实现狙击最高费用的交易,扩大盈利。那么在节点中bitcoincore将在任何创建交易上将nlocktime设置为下一个块,那么在分叉攻击下,时间锁阻止在下一个块,矿工智能在当前有效块中重新挖矿,不产生新的费用。Bitcoin core将素有新交易的nlocktime设置,在所有输入上nSequence设置为0xFFFFFFFE启用nlocktime。

中位时间过去Median-Time-Past:通过取最后11个块的时间戳并计算其中位数作为中位时间过去的值,这个中间时间值就成了共识时间,用于所有时间计算。

具有流量控制的脚本:bitcoin使用if、else、endif、notif操作码实现流量控制,表达为布尔运算符。

带有verify操作码的条件子句:bitcoin另一种条件以任何verify结尾的操作码,如果条件不为true那么即刻终止。

本文由币乎社区(bihu.com)内容支持计划赞助。

之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171220B0BD6T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券