- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
区块链的数据结构.PDF
区块链的数据结构
哈希指针是一个指向数据储存位置及该位置数据哈希值的指针。在区块链中,
有两种利用哈希指针构建的数据结构,一是以哈希指针实现的数据链表,二是以
哈希值实现的二叉搜索树,又称“Merkle 树”。
一、以哈希指针实现的数据链表
比特币的完整节点保存了区块链自创世区块以来的所有信息,成为区块链的
一个本地信息副本。随着新区块的产生,节点会收到网络传输的新区块信息,并
对新区块信息进行验证,将其链接到现有的区块上,使得区块链本地副本信息不
断的更新和扩展,如图1 所示:
图1 区块链的连接示意图
二、Merkle 树
区块链的每一个区块都包含了该区块产生期间的所有交易,并用Merkle 树
的形式表示。Merkle 树是一种Hash 二叉树,用作快速归纳和校验大规模数据完
整性的数据结构。
在比特币网络中,Merkle 树被用来归纳一个区块的所有交易,同时生成整
个交易集合的数字指纹,且提供了一种校验区块是否存在某交易的高效途径。生
成一棵完整的 Merkle 树需要递归地对哈希节点对进行哈希,并将新生成的哈希
节点插入到Merkle 树中,直到只剩一个哈希节点,该节点就是Merkle 树的根。
在比特币的Merkle 树中两次使用到了SHA256 算法,因此其加密哈希算法也被称
为Double-SHA256。
当N 个数据元素经过加密后插入Merkle 树,至多计算2*log2(N)次就能检
查出任意某数据元素是否在该树中,这使得该数据结构非常高效;但同时无法从
Merkle 树内找到对应的交易,这是区块链单向验证性的特点。Merkle 树是自底
向上构建的,举例说明:同一时间发生A、B、C、D 四笔交易,起始所有交易都
存于基础节点,分别进行Hash,以交易A 的Hash 过程为例,得到HA =
SHA256(SHA256(交易A)),同样得到HB、HC、HD;然后创建二层节点HAB=
SHA256(SHA256(HA + HB)),同样得到HCD;继续操作直到生成顶端唯一的节点
——HABCD。如下图所示:
图2 Merkle 树中计算节点
因为Merkle 树是二叉树,所以每一层需要偶数个点,如果节点数为奇数,
系统将复制一份数值使得节点数变成偶数。这种偶数个分层节点的树也被称为平
衡二叉树。如下图所示,C 点就被复制了一份。
图3 节点C 复制的情况
为四个交易构造Merkle 树的方法同样适用于为任意交易数量构造Merkle
树。在比特币中,在单个区块中有成百上千的交易是非常普遍的,这些交易都会
采用同样的方法归纳起来,产生一个仅仅32 字节的数据作为Merkle 根。下图出
现了多个节点,其运算过程与四个节点是一致的,其实无论多少个节点都可以通
过Merkle 树归纳为32 个字节。
图4 囊括多个数据的Merkle 树
为了证明区块链内存在某一个特定的交易,一个节点只需要计算log2(N)个
32 字节的哈希值,形成一条从特定交易到树根的认证路径或者Merkle 路径即可。
随着交易数量的急剧增加,这样的计算量就显得异常重要,因为相对于交易数量
的增长,以基底为2 的交易数量的对数的增长会缓慢许多。这使得比特币节点能
够高效地产生一条10 或者12 个哈希值(320-384 字节)的路径,来证明了在一
个巨量字节大小的区块中某笔交易的存在。
在图5 中,一个节点能够通过生成一条仅有4 个32 字节哈希值长度(总128
字节)的Merkle 路径,来证明区块中存在一笔交易K。该路径有4 个哈希值 (在
图5 中由蓝色标注)HL、HIJ、HMNOP 和HABCDEFGH。由这4 个哈希值产生的认证
路径,再通过计算另外四对哈希值HKL、HIJKL、HIJKLMNOP 和Merkle 树根(在
图中由虚线标注),任何节点都能证明HK (在图中由绿色标注)包含在Merkle
根中。
图5 Merkle 根的追溯路径
用列表表示交易数量对路径大小的影响,如表1 所示,当区块大小由16 笔
交易(4KB)急剧增加至65535 笔交易(16MB)时,为证明交易存在的Merkle
路径长度增长极其缓慢,仅
您可能关注的文档
- ICChina2016高峰论坛、研讨会会议议程ICChina2016高峰论坛.doc
- InformationSystemsAnalysisandDesign实验4功能与数据库设计.ppt
- LemanConferenceChina李曼中国会议Workshoponnutritionof.PDF
- NiTi形状记忆合金的性能测试与表征-材料工程.PDF
- PLCS7-200可编程序控制器设计基础.ppt
- SimSurfing版村田中高压电容器选择工具(电压模式)的使用方法.PDF
- T-BERDMTS-8000可扩展多测试平台-ViaviSolutions.PDF
- TDR931系列综合保护装置说明书.doc
- xxxx风电场xx期工程.doc
- ZF4B-126T型气体绝缘金属封闭开关设备-SwitchgearandCircuit.PDF
文档评论(0)