OSMO:Amber Group:解密基于DAG的架构设计_AVAL

在过去十年中,区块链已成为分布式账本技术的一种主要形式。虽然区块链目前仍占据主导地位,但其存在固有的可扩展性问题,因此有越来越多的项目正在提出替代性解决方案。其中之一便是DAG,作为比传统区块链更有效的解决方案,DAG已被许多替代性L1所推崇。然而,在web3领域中,对于DAG到底是什么、以及它与现有区块链技术有什么区别,仍存在很多困惑。本研究报告旨在通过详解DAG的工作原理及其在加密领域的应用,向读者介绍使用DAG技术的替代性L1,同时对DAG技术的不同用途进行分类,并普及DAG相关知识。“DAG”到底是什么意思?

“DAG”是“DirectedAcyclicGraph”的首字母缩写。对于不熟悉计算机科学的人来说,这可能是一个拗口的名词,因此我们对每个单词进行如下详解:-Directed:该数据结构的数据只向一个方向传输-Acyclic:在数据结构上不能从当前状态返回到之前的状态,即“非循环的”-Graph:在数据结构可视化下,该结构显示为多个顶点之间相互关联的一组关系DAG结构究竟是什么样的?检查数据的排序方式是确定数据结构究竟是DAG还是区块链的最佳方法。这种排序方式是指如何及时地对交易进行排序。因为我们理解时间是线性的,所以我们通常会认为事件也是按照特定顺序发生的。人类认同时间这一概念,因此我们也认同事件是按顺序发生的。

上图是“全序”的一个例子。当确定了哪个事件先发生之后,所有事件都将有确切的顺序。在一组全序的事件中,我们会确切地知道每个事件在全序中的位置。如图使用全序时,事件A首先出现,然后是事件B,再然后是事件C。这就是事件在区块链中的记录方式。然而,分布式账本的全序可能会在吞吐量和延迟方面限制可扩展性。可以通过“偏序”账本来解决部分问题。在偏序中,每个事件相对于所有其他事件的确切顺序是未知的。相反,只有相关事件的顺序是已知的。我们不确定所有事件的顺序,但我们可以确定相互依赖的事件之间的顺序。

例如,我们可以确定事件B发生在事件C之前。但是,在偏序系统中,我们不确定事件A何时发生。事件A可能发生在这些事件之前、或者之后、甚至之间。事件A与其他事件无关。通常来讲,为什么我们想知道这些交易是如何排序的?因为我们想知道一个事件是如何导致另一个事件发生的。偏序没有时间概念,所以在不清楚每个事件发生时间的前提下,我们如何对事件进行排序呢?“因果序”是该问题的解决方法。因果序是一种偏序,其不考虑事件发生的时间,而只考虑事件之间的因果关系。只要我们可以确定哪些事件导致了其他事件,我们便可以对这些事件进行排序。

上图是一个因果序的例子。上图中的事件没有时间戳,所以无法确定这些事件的确切发生时间。但是,我们可以看到A导致B发生,而B导致C和E发生。然后可以得出A最终导致D和F发生。因为C引起了D,E引起了F,所以我们可以确定C和D以及E和F的因果顺序。但是,我们不需要确定C和E或C和F的顺序,也不需要确定E相对于C或D的顺序。并非所有事件都是偏序并且彼此之间都有因果关系,但这并无大碍,因为不相关的事件不需要相对于彼此进行排序。通过使用因果序,我们将不再受限于类似“事件链”的结构,因此将能够构建DAG结构。彼此无关的事件根本不需要排序。交易呈因果序的分布式账本结构为DAG,而全序的账本结构为区块链。由于因果序允许某些交易完全跳过排序,因此与基于区块链的账本相比,基于DAG的账本在吞吐量和延迟方面有可扩展性优势。现在,许多Layer1都鼓吹DAG技术是他们架构设计中的差异化因素之一,但并非所有人都使用DAG来实现因果序。遗憾的是,现在还没有一个框架能够对DAG架构进行分类。出于本文的研究目的,我们将找出是什么真正构成DAGLayer1,并尝试根据交易的排序方式将相关项目分为两类。首先,我们将探讨使用DAG来处理交易,但其账本是全序的Layer1。然后,我们将探讨账本是因果序的同时,使用DAG结构存储事件和交易的Layer1。有些协议使用基于DAG的账本,而有些则只在交易处理中部分使用DAG,区分这两类协议非常重要,因为后者可能不会像前者一样提升交易吞吐量。使用DAG的区块链

全序的区块链是如何运用DAG的?

Fantom是一个利用DAG的区块链例子,DAG用来加速其共识协议,同时以传统的、全序的区块链结构输出结果。如果一个区块链声称自己是基于DAG的,那么通常情况下,Layer1使用的是基于DAG的共识机制,而非基于DAG的账本。Fantom:利用DAG技术并且基于Gossip协议的区块链Fantom的共识协议Lachesis整合在一个基于DAG的结构上,称为Opera链。Opera链的网络由节点组成,这些节点是运行Fantom软件的计算机。构建Fantom共识机制的块被称为“事件块”。Fantom的“块”与我们通常所说的“区块”有所不同。

在高层次上,节点创建事件块,这些事件块形成一个DAG。Fantom使用这个事件块的DAG并生成一条区块链。Fantom将数据存储在事件块中,其中包含财务、技术和其他信息。事件块是由单个节点创建的数据结构,用于全网共享交易及用户信息。在上图中,我们看到的是一个DAG结构,圆形代表节点,事件块由节点生成。在上图中没有表现出来,其实每个节点都在生成事件块。每当节点交换交易信息时,都会创建一个新的共享事件块。事件块会在整个网络中共享。当一个事件块与另一个事件块通信时,被通信的事件块会存储前一个事件块的交易信息,然后创建一个新的事件块。随后将此信息传递给下一个事件块。交易信息被hash,每个事件块包含一个或多个先前事件块的哈希值。这会使数据不可变,因为在不更改哈希值的情况下无法修改或删除先前的事件块。

如上图,Opera链DAG结构中的绿色区域是事件块,它们相互通信,直到找到一个被称作“Clotho”块的事件块。Clotho块包含一个“标记表”,这是一种数据结构,用于保存特定事件块之间的所有连接数据。要想被认定为Clotho块,Clotho必须与先前设置的事件块具有2/3以上的超多数连接。Clotho块通过标记表数据结构来与DAG结构中的其他Clotho块进行通信。

根据彼此之间的通信信息,Clotho块之间达成共识来创建另一个事件块,称之为“Atropos”块。每个Clotho块在创建时都有一个特定的时间戳。如果所有节点中至少2/3的节点时间相同,则Clotho块将成为Atropos块。这些Atropos块串联在一起构成“主链”。主链可以看作是DAG结构中的区块链。每个Atropos块都与其他Atropos块相连接,共享从Clothos块收集来的信息,而Clothos块的信息又来自所有其他事件块。

该主链包含所有事件的全序。所有参与节点都有一份主链的副本,并且可以在Lachesis共识协议中搜索自己区块的历史位置。节点不需要存储每个事件块的所有信息,只需参考主链即可。这让系统能快速访问先前事件。因为智能合约通常需要将与之交互的所有交易进行排序才能正常运行,而DAG不会记录准确的交易时间并且只对部分交易进行排序,所以这会使大多数DAG协议无法与智能合约结合,理解这一点非常重要。从IOTA和Avalanche的X-Chain中也能够看出这点。相比之下,Opera链的架构允许记录交易的准确时间以及对交易进行排序。然而,虽然Fantom的Opera链与以太坊主链相比确实提升了交易吞吐量,但是却无法达到与其他因果序DAG同等的延迟和吞吐量。这是因为Fantom的Opera链使用的以太坊虚拟机(EVM)限制了其性能。Fantom的Opera链通过允许CosmosSDK构建在Lachesis协议上而非EVM上,实现打破部分瓶颈。未来,Fantom计划打造Fantom虚拟机(FVM),这将进一步改善可扩展性。自Fantom崛起以来,以太坊上已经构建了一些新的Layer2扩展解决方案。Fantom的EVM层在这一波新的扩展解决方案中逐渐失去了意义,因此Fantom在现有解决方案下通过开发FVM来实现超越限制是有道理的。具有因果序输出的DAG

大多数人说的“DAG”实际上指的是一个因果序分布式账本。这些DAG是如何工作的,它们与相对的全序有什么区别?Avalanche的X-Chain、IOTA和Sui是具有因果序分布式账本的例子。AvalancheX-Chain,一个基于UTXO的DAG。

比特币引入了未花费交易输出模型来记录钱包之间的转账状态。每个UTXO都是一个所有权链,所有者签署交易后便将UTXO所有权转移至新所有者的地址。在UTXO的背景下,比特币应被描述为区块链,而Avalanche的X-Chain应被描述为DAG。X-Chain使用因果序的Avalanche共识协议。当你向某人发送AVAX时,你就在使用X-Chain。要了解Avalanche的DAG是如何工作的,首先需要知道Avalanche的DAG结构是如何形成的。

交易员完全定价欧洲央行10月份将再次加息75个基点:9月26日消息,与欧洲央行会议日期挂钩的掉期合约显示,货币市场现在预计欧洲央行加息75个基点的可能性为100%。如此加息规模将促使关键利率——存款机制利率翻倍至1.5%,为2008年以来最高水平。“很难在10月份的会议上反对加息75个基点,”花旗利率策略师Antoine Gaveau在报告中写道。该行经济学家预计9月份欧元区整体通胀率将从8月份的9.1%上升至9.8%。(金十)[2022/9/26 22:31:03]

Avalanche共识分为四个主要阶段:Slush、Snowflake、Snowball和Avalanche。最后阶段与Avalanche共识相对的是Snowman共识,我们将在后面对此进行探讨。我们先来看看Slush共识是如何运作的。Avalanche网络由许多节点组成。每个节点具有三种状态:无状态、真和假。下面我们更直观地分别用颜色来表示:无色、蓝色和红色。

每个节点一开始都是无色的,在此面临投票决定真或假。一旦选择了一种颜色,该节点就会与网络中的众多其他节点进行通信。如果这些节点还没有颜色,它们将采用与该节点相同的颜色。如果大多数节点具有相同的颜色,则原始节点将保持该投票结果。如果大多数节点是不同的颜色,则原始节点会将其投票结果反转为该颜色。

节点之间将进行多轮通信,直到所有节点达成共识。目标是让每个节点在颜色上形成一致。当节点倾向于某个颜色时,这将加强该倾向并将正确结果导向于该颜色。这个概念是Avalanche的构建基础,一切都建立于此概念之上。Avalanche的第二个构成部分是Snowflake协议。在节点导入内存时,每个节点都有一个计数器。每当进行Slush协议通信返回相同颜色时,计数器都会加1。而每当节点反转结果返回不同颜色时,计数器都会重置。一旦计数器达到足够大的数字时,它将锁定其状态并防止节点改变颜色。这将有助于巩固真实的颜色。节点在第三个阶段Snowball协议中将以更大的内存记录数值。Snowball协议在Snowflake协议的基础上增加了置信度。Snowflake协议的节点不是根据与之通信的其他节点来改变颜色的,而是通过回顾自身所有的颜色变化历史,并根据节点的置信度状态来改变颜色,置信度考量了该节点的投票变化历史数据。以上所有阶段最终导向Avalanche协议。Avalanche是一个仅能添加的DAG结构。Avalanche也可以在没有DAG结构的情况下运行,比如Avalanche在合约链(C-Chain)和平台链(P-Chain)上的线性结构即是这种情况。Avalanche共识的开发团队TeamRocket认为DAG架构优于区块链,因为DAG架构每个交易的投票都联动其添加的所有交易,所以DAG的投票机制更有效率。

Avalanche共识由多个Snowball事件组成,以此将所有已知交易构建成动态DAG——每个Snowball事件都是图中的一个顶点。顶点类似线性区块链中的一个个区块。它包含其父代的哈希值,以及一系列交易的列表。Avalanche共识建立在Snowball的基础上,置信度的概念依然有效,只不过是应用于DAG的各个节点上。与之前讨论的红蓝决策不同,Avalanche共识中的节点会判断一笔交易是否正确或是否与其他交易冲突,并彼此达成共识。每个交易都链接在一个父交易上,所有父交易都链接回一个创世顶点上。一个交易下可以有子交易,子交易与其所有的父交易相链接。因为需要一个交易作为所有其他交易的基础,所以Avalanche需要一个创世顶点;创世顶点很重要,因为只支持添加操作的交易都需要一个添加主体。但是,如果直接将Snowball应用于节点构成的DAG上,这会引发一个尚未解决的问题,这就是交易冲突或双花。因此Avalanche在Snowball的基础上添加了“chit”这一概念。当置信度达到阈值时,将一个称为chit的计数器添加到交易中,并赋值“1”。如果没有赋值,则chit计数器为“0”。该节点将计算chit值的总和作为额外的置信设置,类似于Snowball的置信度。然后节点使用chit的总和来确定某个交易的置信度,及其所有子交易的置信度。Avalanche能够整合Slush、Snowflake和Snowball并将它们调整为线性链。这样做是为了与Avalanche共识并行的Snowman共识,这两者完全不同。不同于Avalanche的UTXO模型,Snowman共识是基于账户的。Snowman共识用于Avalanche网络的平台链和合约链。该协议原理与上述相同,但每个顶点只有一个父节点而不是多个父节点。因此所有顶点形成全序。这也使整体结构呈现为区块链,而不是DAG。这对于需要知道交易先后顺序的应用程序来说非常有用,并且Snowman共识还支持智能合约。Avalanche共识协议用在货币转账上表现惊人,并且还可以应用于各种其他协议。在硬分叉至其自有项目BitcoinABC之前,Avalanche曾被用作比特币现金的预共识机制。Avalanche的DAG结构提升了交易速度,同时因为比特币现金不需要智能合约,所以DAG不兼容智能合约的缺陷对此也毫无影响。在支付领域中,Avalanche能够忽略智能合约的需求,只强调基于DAG的账本如何能更有效地扩展功能。IOTA,使用工作量证明且基于交易的DAG

IOTA的因果序结构被称为Tangle,这是一个并行处理交易的网络。Tangle是IOTA构成DAG的数据结构。IOTA的tangle包含交易,其中每笔交易在图中表示为一个顶点。当一笔新交易加入Tangle时,它会选取两个先前的交易来批准,并将两个新链接添加到图中。在下图中,交易G批准了交易E和F。交易包含诸如“Alice给了Bob十个IOTA币”之类的信息。未经批准的交易被称为“tip”。交易G就是一个tip,因为它尚未被批准。每个新加入的交易都需要链接两个待批准的tip。有一些策略来帮助选择tip,但最简单的是随机选择两个tip来批准。对于新交易来讲,选择tip来批准的过程极具可扩展性。

红色交易I和G是未经批准的tip,因为它们没有与任何其他交易相关联。其他所有交易都已被批准,因为每个交易都有与之相链接的其他交易。同时,IOTA导入了权重,这是加强IOTADAG架构的重要概念。我们如何知道交易是否可信?在典型的区块链中,通常会看到区块链的确认量。IOTA通过查看交易权重来实现类似功能。

交易的权重代表节点为创建该交易所做的工作量。每笔交易都有一个初始权重,权重值可以是1、3、9等。较高的权重说明节点在交易上花费了更多工作。每笔交易还有一个累积权重;这是其自身权重加上直接或间接批准它的所有交易的权重值总和。让我们深入了解一下该机制的工作原理。

每笔交易都有自己的权重,同时每当一个tip添加到tangle上时,累积权重都会增加。上图中,我们可以看到交易D直接由交易E和H批准,同时也间接由G和I批准。因此D的累积权重为3+1+3+1+1=9,即其自身权重加上E、H、G和I的权重之和。累积权重较大的交易比累积权重较小的交易更重要。每个添加到tangle中的新交易都会通过自身交易的权重来增加前面交易的累积权重。随着时间的推移,较旧的交易变得越来越重要。因为我们可以认为没有实体能够在短时间内生成具有足够大权重的交易,因此使用累积权重能够避免垃圾交易攻击及其他载体的攻击。类似于Avalanche的X-Chain,这种方法虽然具有高度可扩展性,但几乎不可能集成智能合约。因此为了与其他智能合约链竞争,IOTA正在上线一个单独的智能合约层,称为“Assembly”。Assembly是一个全序的Layer2,旨在支持EVM和WASM智能合约。Sui,使用权益证明的智能合约DAG

虽然Sui在本报告中被归类为因果序,但实际上Sui同时使用了全序和因果序。Sui的交易处理架构可以看成是两部分:一部分是全序的、按顺序执行的依赖交易,另一部分是因果序的、并行执行的独立交易。依赖交易使用Sui的Narwhal和Bullshark协议。Narwhal是基于DAG的内存池,而Bullshark是一个共识协议,与Narwhal集成以达成共识。依赖交易只需与它们所关联的其他交易按顺序执行。但是,在交易完全独立时,Sui采用另一种方法。对于独立交易,Sui不使用Narwhal和Bullshark,而使用一种称为拜占庭一致广播(BCB)的方法。该方法不需要全局共识,因此几乎可以瞬间处理交易并写入账本。大多数分布式账本都以地址为中心,而Sui的账本则以“对象”为中心。对象可以是NFT、dapp、代币,或者基本上你可以在传统区块链上构建为智能合约的任何东西。每个对象都有一个“所有者”属性,该属性指定谁可以与该对象交互。一个对象可以有四种不同类型的所有权。第一种是由一个地址拥有的对象,这样用户可以在Sui上拥有一些东西,比如在钱包里持有代币。第二种所有权是由另一个对象拥有的对象,例如在一个多重签名智能合约内持有的代币。第三种所有权是不可变的对象,本质上没有所有者。没有人可以更改不可变对象,但任何人都可以与之交互。第四种也是最后一种所有权是共享的对象。任何人都可以读取或写入共享对象,例如AMM。

无论交易如何排序,所有交易都在同一个网络上并行处理。交易只是针对某个对象的具体实例进行简单地元数据更改,交易将对象作为输入,并读取、写入或改变这些输入的对象,以生成新创建或更新的对象作为输出。每个对象都知道产出它的上一个对象的哈希值。对象要么适合Sui的全序共识架构,要么适合Sui的因果序共识架构。共享对象的交易必须是全序的,因为任何用户的交易都会更改他们正在交互的对象,因此交易排序很重要。但是,如果一个对象由一个地址拥有,那么只有该地址才能够在交易中更改对象。因此,写入此种对象的交易是独立的,这也就意味着它可以使用拜占庭一致广播。虽然Narwhal和Bullshark的结合构建出了快速响应的共识架构,但BCB几乎是瞬时的。

Sui的账本是一个“对象存储库”或“对象池”,其数据存储在DAG中。例如,发送USDC这一行为是更新一个对象的“所有者”属性的行为,这不会对其他对象产生影响。Sui的账本是一个“对象存储库”或“对象池”,其数据存储在DAG中。在这个DAG中,节点是对象,而图中的每个箭头代表一个交易,该交易更新给定对象的属性。此图中未表现出来的是创世交易,它不接受任何输入并且生成的对象处于系统初始状态。虽然其他具有DAG结构的分布式账本都无法集成智能合约,但Sui似乎已经用一种创新的方法扫清了障碍。Sui的智能合约语言Move支持将对象进行分类以及并行执行Sui的交易。如果没有Move,Sui的智能合约架构可能无法实现。关键要点

就速度和吞吐量而言,交易的因果序似乎比全序更有优势。然而,当尝试创建的应用程序需要严格按时间排序时,缺乏排序的因果序就会产生问题,并且许多项目无法在其DAG架构上正确地运行智能合约。Fantom类似区块链结构的全序架构支持EVM和智能合约。尽管Fantom具有全序输出,但开发人员依然找到了方法来优化DAG共识机制下的Layer1。Avalanche则选择了不同的方法,其创建了一个单独的共识机制Snowman来支持EVM和智能合约的便捷开发。IOTA也选择了另一种方法,其正在创建框架来实现在IOTA上轻松部署区块链实例,以此来支持EVM,从而有效地创建全序的Layer2基础设施。Sui的独特设计很有前景,交易既可以是全序的,也可以根据需要采用因果序,兼容智能合约的同时,还能够减少延迟。

Sui是最新基于DAG的Layer1,但Sui实现了差异化并且对先前架构的缺陷进行了改进,因此Sui实现了让DAG真正成为分布式账本的一种结构。即便因果序交易不会成为未来主流,但基于DAG的技术也有助于扩展现有区块链。虽然DAG作为一种扩展方法未必在所有应用场景下都是最佳选择,但在Avalanche的X-Chain和IOTA上,DAG在延迟和吞吐量方面看起来表现出色。然而,不支持智能合约的缺陷让DAG在当前的竞争中处于劣势,特别是现在市场流行Layer2汇总和链下零知识扩展解决方案。虽然大多数基于DAG的账本的确能够在较少损失去中心化性的同时降低延迟,但作为分布式账本的区块链和DAG都需要网络上的每个节点参与处理每笔交易。为了实现完全可扩展性,这是所有分布式账本都需要解决的最大问题之一。Sui通过独特的BCB设计来解决这个问题,它允许交易跳过共识。但这并不是每个基于DAG的架构都需要解决的关键问题,也不应该以此为据宣称所有基于DAG的架构都优于基于区块链的架构。归根结底,DAG只是一种数据结构,我们也只是正在看到它在分布式账本技术中的应用。Sui的MystenLabs目前正在与Layer1区块链Celo合作,将Narwhal架构应用到其内存池中。Narwhal是一种具有DAG结构的内存池协议。Celo作为账本具有区块链结构,但它利用DAG作为其后端组件来实现性能改进。通过更先进的扩展解决方案,在DAG与区块链之间的斟酌或将变得不再有意义。本文的目的是让读者了解现有架构。类似DAG在Narwhal上的应用将是未来DAG的主要应用场景。虽然我们无法预测DAG在分布式账本领域的应用范围,但DAG作为一项技术,它的影响必将日益扩大。关于作者

本文作者RobertMcTague在AmberGroup生态基金担任投资助理,该基金是AmberGroup的加密行业早期风险基金。他取得了电气工程学士学位,在加入Amber之前曾在一家DeFi公司工作,专注于帮助公司业务发展。在学习之余,他热衷于开发智能合约和研究web3整体框架。免责声明

本文所载的资料供参考之用,属摘要形式,并不完备。该等资料不是、也无意作为出售或购买任何证券或产品的要约或要约邀请。该等资料并未提供,亦不应视为提供投资建议。该等资料并不考虑任何潜在投资者的特定投资目标、财务状况或特殊需要。对于“资料”的公正性、正确性、准确性、合理性或完整性,不作任何明示或暗示的承诺或保证。我们不承诺更新该资料。潜在投资者不应将其视为自己判断或研究的替代品。潜在投资者应在其认为必要的范围内,咨询自己的法律、监管、税务、商业、投资、财务和会计方面的顾问,并根据自己的判断和顾问的建议做出任何投资决定。原地址

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-6:923ms