区块链的数据结构.PDF

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 路径长度增长极其缓慢,仅

文档评论(0)

shiyouguizi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档