当前位置:首页 > 物联网 > 区块链
[导读] 树这种数据结构,在区块链中扮演着重要的角色,交易的数据,账号的管理,交易的收据信息等都是一树为基础。本文主要介绍三种树,也是在以太坊的中运用最多的三种树结构:Trie树, Patricia Tr

树这种数据结构,在区块链中扮演着重要的角色,交易的数据,账号的管理,交易的收据信息等都是一树为基础。本文主要介绍三种树,也是在以太坊的中运用最多的三种树结构:Trie树, Patricia Trie和Merkle树。

Trie树

Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。举个例子,用trie树保存10个节点的6个字符串:tea,ten,to,in,inn,int。具体图如下:

可以看到字符串in,inn和int的公共前缀是“in”,这样的效果就是压缩了数据,减少空间的存储。那么如果没有公共的前缀,那么问题就来了,占用大量的空间,这样的检索的速度将会减慢。

· Patricia Trie树

Patricia Trie树的不同之处在于Trie树给每一个字符串分配一个节点,这样将使那些很长但又没有公共节点的字符串的Trie树退化成数组。在以太坊里面会由黑客构造很多这种节点造成拒绝服务攻击。前缀树的不同之处在于如果节点公共前缀,那么就使用公共前缀,否则就把剩下的所有节点插入同一个节点。Patricia相对Tire的优化正如下图:

我们可以举个例子来总结Patricia Trie树,如下图:

最终的8个key对应的Value 如下表:

· Merkle Tree

称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。这个树结构是比特币采用的数据结构。Merkle Tree的主要作用是当我拿到Top Hash的时候,这个hash值代表了整颗树的信息摘要,当树里面任何一个数据发生了变动,都会导致Top Hash的值发生变化。而Top Hash的值是会存储到区块链的区块头里面去的, 区块头是必须经过工作量证明。这也就是说我只要拿到一个区块头,就可以对区块信息进行验证。

· ETH Merkle Patricia Tries 树

以太坊的每个区块头包含三个重要的树:

1.交易树

2.收据树(交易执行过程中的一些数据)

3.状态树(账号信息, 合约账户和用户账户)

如下通过例子来介绍,例如,两个区块头,其中state root,tx root receipt root分别存储了这三棵树的树根,第二个区块显示了当账号 175的数据变更(27 -》 45)的时候,只需要存储跟这个账号相关的部分数据,而且老的区块中的数据还是可以正常访问。如下图:

· 算法解释

假设输入值J,包含Key Value对的集合(Key Value都是字节数组):

当使用这个集合的时候,我们将集合表示如下:

对应特定字节,我们表示为对应的半字节(nibble),其中Y集合在Hex-Prefix Encoding中有说明,意为半字节(4bit)集合(之所以采用半字节,其与后续说明的分支节点branch node结构以及key中编码flag有关),公式如下:

在Tries树中有三种节点:

1.叶子节点(Leaf): 叶子节点包含两个字段, 第一个字段是剩下的Key的半字节编码,而且半字节编码方法的第二个参数为true, 第二个字段是Value

2.扩展节点(ExtenTIon): 扩展节点也包含两个字段, 第一个字段是剩下的Key的可以至少被两个剩下节点共享的部分的半字节编码,第二个字段是n(J,j)

3.分支节点(Branch): 分支节点包含了17个字段,其前16个项目对应于这些点在其遍历中的键的十六个可能的半字节值中的每一个。第17个字段是存储那些在当前结点结束了的节点(例如, 有三个key,分别是 (abc ,abd, ab) 第17个字段储存了ab节点的值)

分支节点只有在需要的时候使用, 对于一个只有一个非空 key value对的Trie树,可能不存在分支节点。如果使用公式来定义这三种节点, 那么公式如下:图中的HP函数代表Hex-Prefix Encoding,是一种半字节编码格式,RLP是使用RLP进行序列化的函数。

如果当前需要编码的KV集合只剩下一条数据,那么这条数据按照第一条规则进行编码。

如果当前需要编码的KV集合有公共前缀,那么提取最大公共前缀并使用第二条规则进行处理。

如果不是上面两种情况,那么使用分支节点进行集合切分,因为key是使用HP进行编码的,所以可能的分支只有0-15这16个分支。可以看到u的值由n进行递归定义,而如果有节点刚好在这里完结了,那么第17个元素v就是为这种情况准备的。

对于数据应该如何存储和不应该如何存储, 黄皮书中说明没有显示的定义。所以这是一个实现上的问题。我们简单的定义了一个函数来把J映射为一个Hash。 我们认为对于任意一个J,只存在唯一一个Hash值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

物联网设备数量呈指数级增长,其身份认证安全与区块链智能合约的可靠性成为制约行业发展的关键瓶颈。本文将从区块链物联网身份认证的底层原理出发,结合Hyperledger Fabric智能合约漏洞扫描与性能基准测试技术,系统阐...

关键字: 区块链 物联网 身份认证

在万物互联的M2M(机器对机器)通信时代,设备间的安全交互成为核心挑战。传统中心化认证体系因单点故障、数据泄露风险及高运维成本,难以满足物联网设备指数级增长的安全需求。区块链技术凭借去中心化、不可篡改和智能合约自动执行等...

关键字: 区块链 M2M

据报道,全球前三大比特币和加密货币矿机制造商比特大陆、嘉楠耘智和比特微电子为规避美国关税政策影响,都计划在美国设立制造工厂并建立供应链。

关键字: 加密货币 比特币

当前电力行业正经历着前所未有的变革。新型电力系统的建设加速推进,分布式新能源、电动汽车、储能设备等新型电力元素大规模接入,使得电力系统的供需互动更加复杂。与此同时,区块链技术凭借其去中心化、不可篡改、可追溯等特性,在金融...

关键字: 电力鸿蒙 区块链

香港2025年4月13日 /美通社/ -- 香港应用科技研究院 (应科院) 于第50届“日内瓦国际发明展”中成绩斐然,荣获16个奖项,其中包括1项评审团嘉许金奖、4项“金奖”、7项“银奖”及4项铜奖。今届获奖项目涵盖人工...

关键字: 人工智能 感测器 区块链 模型

在马来西亚获得政府间(G2G独特 认可的人工智能实验室将汇聚全球领先区块链、人工智能及机器人企业的合作 马来西亚吉隆坡2025年4月11日 /美通社/ -- 马来...

关键字: 人工智能 智能实验室 区块链 身份验证

在数字化时代,物联网(IoT)和区块链技术都备受关注,前者将无数设备连接成庞大网络,后者则以去中心化、不可篡改等特性重塑信任机制。当这两者相遇,碰撞出了创新的火花,区块链技术在物联网领域展现出巨大的应用潜力,为物联网的发...

关键字: 物联网 区块链 数字化

对于奢侈品牌,假冒伪劣产品和恶意灰色市场交易是一个长期存在的挑战。事实上,如今假冒市场被视为全球最大的非法贸易领域。经合组织(OECD)估计,2019 年其规模约为 4640 亿美元,占世界贸易总额的 2.5%,显然,对...

关键字: NFC防伪技术 半导体 区块链

区块链科普系列活动(一) 北京2024年12月24日 /美通社/ -- 在这个日新月异的科技时代,区块链与先进计算正以前所未有的速度推动着各行各业的变革。为了助力区块链及先进计算领域的创业者、从业人员把握时代脉搏,引领...

关键字: 区块链 亚马逊 数字化 AWS
关闭