以太坊Trinity共识算法中使用的数据结构

分布式分类账技术是一种强大的、颠覆性的创新,可以改变我们的社会,提高应用的生产力。根据著名的N. Virt公式“算法+数据结构=程序”,每个计算机程序的主要成分是算法+数据结构。我们上一篇文章讨论的是关于在一天发平台上使用的共识算法,在这篇文章中我们将讨论以太坊Trinity算法所操作的数据结构。

以太坊Trinity共识算法中使用的数据结构

区块链是一种分散式结构的系统,其中链表充当事务块的基本数据结构。关于哪些事务块应该附加到它的决策是由共识算法决定的。有时,选择基本数据结构比选择特定的共识算法对速度、吞吐量、可伸缩性和事务成本的影响大得多。
大多数现有的区块链解决方案甚至在增加资源的情况下也无法扩展其吞吐量,因为它们基于链表数据结构,并添加了一些安全性,使其成为不可变的和仅追加的。研究人员和实践者得出结论,事务存储最自然的数据结构是有向无环图(DAG)——一种没有有向循环的有限有向图。严格地说,基于DAG的分布式账本本身并不是区块链,但是具有这种结构的项目由于能够克服区块链设计的限制而越来越受欢迎。让我们按照时间顺序讨论现有的基于DAG的方法。

以太坊Trinity共识算法中使用的数据结构

IOTA DAG

IOTA发布了一种名为Tangle的基于DAG的技术。这个概念被用来解决物联网限制下的可伸缩性问题。同时,通过设置用户的困难度,构造了一个利用权值水平的临时现场来实现交易的一致性。为了解决重复支出和寄生虫攻击的问题,他们使用马尔科夫链蒙特卡罗提示选择算法,根据累积交易权的大小随机选择提示。然而,如果一个事务与另一个事务发生冲突,仍然需要检查所有过去的事务历史来查找冲突。

以太坊Trinity共识算法中使用的数据结构

Byteball DAG
Byteball使用名为bytes的内部支付系统。这用于支付向分布式数据库添加数据的费用。每个存储单元相互链接,其中包括一个或多个早期存储单元的哈希值。特别是,共识排序是通过选择一个主链组成的,主链被确定为由最多根组成的根。大多数根通过主链的一致时间来检测双重支出。费用是根据字节大小收取的,在确定根的过程中需要搜索和更新所有单位的列表。

以太坊Trinity共识算法中使用的数据结构

Hedera Hashgraph
Hashgraph是一个异步的基于数据挖掘的分布式分类账。每个节点由它自己的祖先连接,并通过八卦协议随机通信已知事件。此时,任何一个著名节点都可以由“看到”和“强烈看到”关系确定在每一轮迅速达成共识。他们指出,如果超过2/3的节点对某一事件达成一致意见,则将分配该事件的一致意见位置。
Phantom协商算法是基于广泛DAG操作的Lachesis协议。此图的节点是事件,这些事件包含关于事务、它们的作者和定义事件拓扑顺序的Lamport时间戳的信息。流程的状态可以从其初始状态以及一直到当前状态的操作或事件序列中获得。如果事件块被2n/3节点控制(已知),则共识算法将事件块追加到DAG。基于成本函数的某种机制选择了图形中附加事件块的位置。

以太坊Trinity共识算法中使用的数据结构

Perlin DAG
Perlin使用DAG一致性协议提供了可伸缩分布式账本协议。valanche声称,它不需要选举任何形式的领导人(因此没有领导人),而是简单地“引导”所有节点达成共识。这种方法部分是通过DAG的亚稳态机制实现的。亚稳性本质上是指系统被设计来带来一个答案(即所有节点都以同一种方式投票),因此不会保持平衡(因为如果系统保持平衡,就无法达成一致意见)的概念。这些协议在拜占庭式对手面前提供了强大的安全保证概率,同时它们的并发特性使它们能够实现高吞吐量和可伸缩性。

以太坊Trinity共识算法中使用的数据结构

Enecuum Hyperdag

我们自己的方法Hyperdag将Nakamoto的区块链推广为一个DAG块,它采用了一些使用DAG的其他解决方案的最佳实践。与Hashgraph类似,DAG是扩散性的,可以在决定哪些事务有效且可靠时最大限度地利用附加历史记录。使用Hyperdag存储事务可以创建只包含同构事务的分支(区块链)。每个分支本质上是一个单独的区块链,同时也是整个系统的一部分。
每个分支可以为新块的创建和确认设置自己的特定规则。节点不需要复制和存储所有辅助的以太坊分支。Hyperdag支持创建独立的分支机构,在这些分支机构中,可以定制规则来解决许多潜在的业务问题,包括以低廉和快速处理大量交易的能力。此外,该解决方案允许集成来成功解决可伸缩性问题。