论文阅读整理Monoxide: Scale out Blockchains with Asynchronous Consensus Zones

Monoxide其实是code name,作者通过运行多个独立和平行的单链共识实例(区)来实现这一点,工作核心突破在于大幅提升区块链系统的伸缩性,并且不影响去中心化或安全性。
共识在每个区域内独立发生,通信量最小,这划分了整个网络的工作量,并且确保随着网络的增长,每个独立节点的负担在可承受范围;设计亮点1→ 作者提出了最终原子性,以确保跨区交易的原子性,保证了交易的有效完成,不需要两阶段提交协议的开销(跨组的交易验证分为了两阶段);设计亮点2→ 作者提出了Chu-ko-nu mining,以确保每个区域的内有效采矿能力与整个网络的水平相同,并且使得对任何但各区域的攻击与对整个网络的攻击一样困难。最后,作者通过在全球1200台虚拟机支持4.8w个节点的测试平台上,证明了对比于比特币和以太网网络,Monoxide能够提供1000倍的吞吐量和2000倍的容量。

1 引言

问题的提出和动机主要是因为区块链吞吐量较低,造成问题的原因一是交易规模的增大,二是因为区块产生的速度是固定的;由于存储和通信等原因,区块链扩展性较差。

异步共识组(Asynchronous Consensus Zones)是本文的主要思想,作者多次强调了共识组由多个同质的、功能上完全一致、地位上完全平等、逻辑上尽量隔离的独立共识系统的实例所构成的,共识组们并行工作,分摊全网的吞吐、计算、存储的压力,分摊全网的维护工作。

共识区域通过是存储量、计算能力和状态表示内存和区域总数成正比来展示容量的自然线性可扩展,要设计这样的区块链系统面临两个挑战:
1.在处理跨区域交易时应以可扩展方式确保高吞吐量;
2.由于个别区域链的独立增长,诚实的采矿能力被稀释,尽可能趋于平衡,以此增加安全性。

由于多方的状态更新在不同区域内独立发生,因此有效处理此类情况是吞吐量扩展性和整个系统性能提升的关键。**作者提出了最终原子性来保证跨区域的事务原子性,使用这个技术可以使得所有操作都能最终完成并实现正确的结束状态,而不是像两阶段提交协议那样序列化事务。**作者提出的系统不保证矿工可处理所有的中继交易,就像比特币和以太坊不保证交易处理一样;相反,每个区域的矿工都被激励(根据对工作负载的估值设置奖励)通过处理中继交易并确保最终原子性来完成每一步。

增大有效挖矿算例以加强共识区域的安全性。区块链系统依靠绝大多数的挖矿能力来超越攻击者;当算力被分布到不同区域,攻击者可以将算力聚集到单个区域,很容易超过该区域的51%阈值。为了解决这个问题,作者提出了“诸葛联挖”,矿工可以通过解决一个PoW难题在不同区域内创建多个区块,这极大放大了诚实矿工的有效采矿能力,他们在区域之间被平均分配了采矿能力。另一方面,这种放大不适用于攻击者,因为放大的挖矿算力被迫平均分配到多个区域,而不能集中到单个区域,这样每个区域的有效算力将于全网总算力处于同一水平,导致攻击单个区域与攻击整个网络一样困难。

2 背景

Monoxide系统使用帐户/余额模型,因为它的简单性,因为具有任意金额的事务可以用一个发送帐户和一个接收帐户执行(而不是两边有多个UTXO);平衡可以扩展到更复杂的状态以支持可编程的应用逻辑,并且允许交易携带状态的增量更新,这与只能携带完整状态的UTXO 交易相反,极大地节省了非同质代币等应用的交易规模(例如以太坊的 ERC-721 代币),其中状态是一组唯一标识符。

3 系统设计

3.1 分区

在系统中,帐户或用户由其地址表示,即其公钥的固定大小的哈希值,该系统以固定且确定性的方式将用户地址空间统一划分。给定分片比例 k,可以轻松推导出用户的区域索引,即通过计算其地址的前 k 位。发起交易(initiative tx)的区域索引由付款人地址决定,中继交易(relay tx)的区域索引由收款人地址决定。 一个块用<s,k,h> 指定,h是它的链的高度,分片规模k定义了区域的数量,进而决定了整个网络的吞吐量和能力。
为简单起见,以下讨论假设 k 是固定的

Monoxide中,全节点加入swarm以广播新交易并从其他全节点(包括矿工)接收块。 swarm 是一组参与相同数据集复制的节点, 在比特币或以太坊中,只有一个集群,每个完整节点都复制相同的数据集,包括所有区块和交易。 在Monoxide为了不同的目的建立了多个群体,分布式哈希表 (DHT) 用于群寻址和对等发现。

Monoxide有一个由所有完整节点组成的全局集群,用于复制所有区域的最小公共信息;另一方面,大多数通信发生在特定区域的集群中,完整节点仅属于特定区域。在每个swarm中,参与的全节点都是稀疏连接的,使用gossip协议来广播消息,与区域类似地在特定于区域的群也由区域索引 s 和分片规模 k 标识。

3.2 跨区工作

每个transaction都有一个zone索引,交易只会被发送到索引相同的zone,relay transaction也只会发到目标zone。区块分为分为链块和交易块,链块是元数据包括pow的nonce,指向上个块的指针,Merkle树根(所有confirmed的交易和initiative transaction生成的relay transaction,这部分在其他zone内的验证)。交易块包括具体的交易信息,由全节点保存,zone交易不生成relay transaction,直接完成,跨zone工作分为两步即付款方验证和收款方验证。

3.3 最小化跨区域开销

在区块链系统中,大多数通信用于复制未确认的交易和广播带有已确认交易的新区块。 在我们的系统中,通信成本仅在区域内的节点之间进行,因为Monoxide在每个节点上维护一个分布式哈希表 (DHT),在获取到未确认交易或转发区块的区域索引 s 后,根据本地 DHT 路由表选择与 s 具有相同区域索引的节点,并按照 gossip 协议将交易和区块发送给这些节点,这将隔离每个区域内的大多数通信。

对于跨区域交易,Monoxide仅将中继交易发送到目标区域而不是整个网络,并且除了实际确认的交易之外,链形成的最小化数据会在所有区域中复制。

4 高效的跨区原子性

在Monoxide中,将一个区块分为两部分:一个链块和一个承载实际确认交易的交易块。
在这里插入图片描述
对于付款人a的提款操作ρ和收款人b的存款操作φ的主动交易,如果a和b属于同一区域,则可以立即在区域内处理。 当 a 和 b 来自不同的区域时,我们通过派生和转发携带存款操作到其目标区域的中继交易来引入双阶段交易处理机制,图 2 说明了处理数据结构的跨区域支付过程。

在区域a进行事务验证和转发
1.当矿工构建一个新区块时,未确认的交易<ρ,a,φ,b>由付款人 a 的区域中的矿工获取。
2.如果a的余额不小于转账金额,则发起交易生效;如果余额不足,交易将被标记为无效,并被完成嵌入到区块中。
3.否则,构建一个链块 Θa 和一个交易块 Φa。Φa 有一个经过验证的交易列表,包括从 a 到 b 的交易。
4.矿工处理特定于所有已确认交易列表的 PoW 难题。
5.在 PoW 难题解决后,链接块 Θa 立即在全局群中广播,交易块 Φa 在 a 的特定区域群中广播。
6.执行并结束区域内事务。
7.然后执行所有跨区域交易中的提款操作 ρ。
8.每个跨区交易派生出一个出站中继交易 ψ:=<φ,b,γ>,将发送到目的区,即收款人 b 的区 B。

区域b的中继交易处理
1.一个入站中继交易 ψ:=<φ,b,γ> 在构建新区块时被收款人 b 的区域中的矿工拾取。
2.矿工根据其原始区块 Θa 验证入站中继交易; 如果无效,请跳过此步骤。
3.矿工构建了一个新的链块 Θb 和一个新的交易块 Φb;Θb包括入站中继交易 <φ,b,γ>。
4.解决 PoW 难题后,区块 Φb 将在 b 的区域中广播。
5.执行存款操作 φ,结束交易 <ρ,a,φ,b>。

4.1 验证

4.1.1 交易验证

当 B 区的矿工收到 A 区的中继交易时,它需要验证该交易以避免来自恶意对等方的攻击。 如图 2 所示,一笔转发交易 ψ:=<φ,b,γ> 包含验证数据 γ,其中:
在这里插入图片描述
位置指针p表示在其原始块中出站中继交易列表中的位置,Merkle树路径{hq}是指从Merkle树根到其入口的路径上所有兄弟节点的哈希值; 区域索引 s、分片比例 k 和高度 t 用于标识其原始块。

Merkle 树根将使用 Merkle 树路径 {hq} 和交易 <φ,b> 本身重新计算。 验证重新计算的 Merkle 树根是否与其原始块 Θa 中的根匹配,并且 Θa 在区域 A 的链上。请注意,与兄弟姐妹(左或右)的关系未编码在 {hq} 中,这是从 p 中推断出来的。

4.1.2 区块验证

在接收到矿工广播的区块(一对链块和交易块)时,全节点需要验证该块以防御恶意矿工。
在Monoxide中一个完整的节点会验证三种类型的交易。
1.在Zone内的主动交易;
2.来自别的zone的relay;
3.本zone发出的relay(暂存,为了节省空间不需要把这种消息嵌入到交易块,因为可以从已确认的交易列表中推理出来)。

确认的交易根据当前用户状态进行验证,任何包含非法交易或不匹配的主动/中继交易对的区块都将被拒绝。如第 4.1 节所述,入站中继交易根据其原始区块进行验证,此过程还通过仔细检查所有出站中继交易列表的 Merkle 树根来检查是否所有出站中继交易都按预期创建。 假设出站中继交易是有序的,并且与确认的主动交易的顺序完全一致。 请注意,只有 Merkle 树根嵌入在链接块中,而不是出站中继交易本身。

4.2 最终原子性

涉及取款和存款操作的支付交易应该是原子的,以确保全局分类账的正确性。

Monoxide中,对于跨区交易,允许先执行提款操作,与其他交易交错执行,然后再执行相应的存款操作。实现的是,一旦确认提现操作,最终会执行存款操作,我们称这种原子性为最终原子性。我们乐观地假设,只要有行为良好的矿工想要赚取交易费用,中继交易进行的提款操作最终就会被选中,我们的设计确保中继交易不会因费用分摊的充分激励而受到歧视。

理论上,可能存在行为不端的矿工在未确认任何交易的情况下创建空块,无论是正常交易还是中继交易。在这种情况下,吞吐量将受到损害,最终原子性将无法实现,直到一个行为良好的矿工最终获得了创建块的机会。

默认情况下,新导出的出站中继事务由在原始区域创建链块和事务块的矿工转发到它们的目的区域。一旦中继事务被复制到目的区域,它将永远不会在被矿工拾取之前过期,除非它的初始事务无效,例如,由于链分叉而成为孤立块(我们将在后面讨论这种情况);如果中继事务被意外丢弃(这是极不可能的),它可以由起源区域中的任何完整节点基于其链上的起源块重新构建,重新启动重建的中继事务的复制不需要额外的验证或共识。

在现有的区块链系统中,一旦付款交易被打包在链上的区块中(首先确认),其收款人将可以看到付款交易。在添加 n-1 个连续块后(第 n 个确认,比特币中 n=6,以太坊中 n=12),它将被保护。相比之下,我们系统中的跨区域支付交易将对收款人可见,一旦其中继交易被转发到收款人的区域,并且其原始区块可用。有了最终的原子性,交易被认为是最终安全的,一旦它的主动交易得到 n 确认,并且中继交易得到第一次确认。由于这两个区域的矿工是独立工作的,所以主动交易的n-确认与中继交易的转发和首次确认是重叠的。因此,最终的原子性不会引入额外的延迟,这在我们 7.3 节的实验中也得到了证明。理论上,当中继交易等待太长时间无法被矿工接收时,可能会出现额外的延迟。这可能比对其主动交易的 n 次确认花费更长的时间。

4.3 Fork

在工作量证明共识系统中,不同的矿工可以在同一高度创建两个甚至更多的区块。最终成功解决分叉后,其中只有一个块将被接受,其余的将作为孤块丢弃。比特币中的分叉问题通过最长链规则解决,以太坊采用了 GHOST 协议 ,而我们在共识区域使用 GHOST 协议,即使在分叉率很高的情况下也是可靠的。

在每个共识区域中,分叉率与以前的单链共识系统完全相同的方式独立执行。
块的状态可能为:
1.可用的:没有分叉,或者该块在获胜路径上。
2.未解决:该区块位于一条相等的竞争路径上。
3.孤立的:区块正在丢失的路径上。

分叉是一个连续过程,因为需要创建和附加更多的块;以前可用的块可能最近变成孤立的或未解决的,反之亦然。

在最终原子性的情况下,一个区域中分叉率的结果可能会影响在另一个区域中转发和确认的中继事务的有效性。中继事务的验证依赖于与其起源块相关的证明。如果在分叉率后原始块不再可用,则证明将无效,从而使所有源自它的中继事务无效。

预确认
在其原始块处于可用状态之前,不会在新块创建中考虑未确认的中继事务。中继交易将保留在未确认的交易集中,无论其原始区块的有效性如何,并等待原始区块可用。
在这里插入图片描述
确认后
如图 3 区域 A 所示,一个先前可用的区块最近成为未解决/孤立的,不幸的是,源自它的中继交易 x 已经被确认并嵌入到区域 B 的区块 b 中。在这种情况下,区块 b 将不会失效,并且只有中继交易 x 将失效。 同时,区域 b 中的账本状态需要通过执行自创世区块以来所有历史区块的所有交易来重建,跳过所有无效的中继交易,包括 x。在实践中,状态检查点可以加速状态重建,以便只重新执行最近块的操作。

使后续交易无效
中继事务x无效之后,更糟糕的场景是后续确认的事务也即将失效,因为它们依赖于更新的中继事务x。如图3所示,中继事务x在块b中存入u个令牌,余额变为u0+u。那么在块c中确认了事务y,并提取了v个令牌(u0 < v ≤ u0 +u),如果中继事务x无效且事务y无效,那么跨区域交易,块c将无效之后的所有后续块也将被丢弃。
为了避免这种情况,矿工将通过延迟λ块的入站中继事务的执行来针对特定状态验证候选事务。因此,事务y直到块d才会被确认,这使得这种情况不太可能发生,因为块a已经收到了至少λ个确认。让最新的块是b,正常状态S是通过执行从genesis块到块b的所有事务中的所有操作来构建的。Sλ是通过从起源块执行到块b-λ,然后执行除块b−λ+1到b的入站中继事务之外的所有操作来构建的。在创建块b+1时,必须根据状态S和Sλ验证未确认的跨区域事务,将其视为候选。

5 保证单共识组的安全

在我们有 n 个区域的系统中,合理的采矿设施将理想地将其总采矿能力分配到不同的区域,以最大化回报(偏向于采矿难度较低的区域)。 最终使得整个网络 H 的算力收敛到跨区域均匀分布,因此每个区域的挖矿算力将是 H/n。 当恶意挖矿设施将其所有的算力T集中在一个区域时,如果T>H/n×50%,则攻击将成功,当T>H/n×50%时,该值会低得令人无法接受。
为了解决这个问题,我们引入了一个 Chu-ko-nu 挖矿机制,该机制允许并鼓励一个矿工同时参与多个共识组内部的挖矿竞争,可以收获多个共识组的出块奖励。对于一个参与K个共识组挖矿的矿工,实际算力会被放大到其物理算力的K倍,并且放大后的算力必须平均分配到K个共识组,当大多数矿工参与Chu-ko-nu挖矿时,每个区的攻击门槛提高了接近50%。
此外,Chu-ko-nu 挖矿可以通过提高区块创建的效率来节省解决 PoW 所消耗的能源,与 PoW 机制本身一样,基于 Chu-ko-nu 挖矿的安全性是由激励驱动的。如果攻击者控制了全网50%以上的物理挖矿算力,就会被下架,PoW机制也是如此,同时,防御是所有承认激励的矿工。

5.1 Chu-ko-nu mining

Chu-ko-nu 挖矿允许矿工使用单个 PoW 解决方案在不同区域同时创建多个区块,但每个区域不超过一个区块。
在这里插入图片描述
在这种情况下,图 4 (批量链接块和链接块的比较)的批处理链接块将替换图 2 中所示的链接块,并在所有区域之间复制;允许矿工根据其 IT 资源容量从区域索引 b 或所有区域 (n=2^k,b=0) 开始对 n 个区域进行 Chu-ko-nu 挖矿。

矿工将对所有涉及的 n 个区域执行交易验证并收集 n 个链头 Ai,即图 4 中的 A 部分,如果没有像比特币或以太坊那样的 Chu-ko-nu 挖矿,矿工需要找到 n 个 nonce ηi(i∈[0,n−1]) 每个满足:
在这里插入图片描述
其中 C 是批次的配置(图 4 中的 C 部分),h0 表示该批次中所有链接头列表上的 Merkle 树 ϒb 的根:
在这里插入图片描述
请注意,我们假设所有涉及的区域中的 PoW 目标都是相同的

一旦找到 ηb,特定区域的批链块将被组合并发送到相应的区域。 如图 4 所示,对于每个区域,一个批链块携带一个链头 (A)、它的默克尔树路径 {hj}(B)、批配置 C 和找到的批 PoW 随机数 ηb, 这是用于重新计算公式 3 和验证 PoW 的最少信息。 我们的系统没有在 Merkle 树路径 {hj} 中明确记录与兄弟姐妹(左或右)的关系。 相反,关系是从批处理列表 (s-b) 中偏移量的位推断出来的。通过这种方式,区域索引 s 与批次中的区块列表(等式 4)中的偏移量相耦合,这保证了矿工在批次中只能为每个涉及的区域创建一个区块。

在每个区域中,全节点以及矿工在接受新块时平等对待批链块和链块。它们遵循第 4.3 节中描述的相同方法来检测和解决分叉。 一个区域的链允许在不同的块高度包含批链块和链块。

Chu-ko-nu 挖矿在实践中与合并挖矿 [4] 具有相似的精神,允许使用单个PoW 解决方案创建多个块。合并挖矿是针对不同的动机和场景而设计的,这是为了保护小算力的区块链。Chu-ko-nu 采矿旨在通过放大的有效采矿能力来加强跨区域的采矿能力分配。Chu-ko-nu 挖矿是通过多条同等角色和同等算力的链来进行的,而不是一个母链和一个辅助链;Chu-ko-nu 挖矿还对每个区域强制执行一个区块,这会导致不同的数据结构和实现。

5.2 区域独立验证

Chu-ko-nu 挖矿批量解决链头的 PoW,而带有解决的随机数的批量链块是特定于区域的并单独发送,每个区域的批量链块将在每个区域中独立验证和接受。一个区块可以被孤立甚至失效,但这不会影响其他区块的验证或接受。

独立验证还允许在一批中有效处理区域的混合 PoW 目标。在这种情况下,批量链块的构造与第 5.1 节中描述的相同,但它允许每个链头中的 PoW 目标值不同。 同时,在探测批量 PoW 随机数 ηb 时,有可能实现了一些具有高 PoW 目标(更容易实现)的块,但其他块则没有。无论其他区域的 PoW 目标未完成(因此不会被发送),这些已完成区域的批量链块将被组合并立即发送到它们的区域。链头列表(等式 4)中已完成的块将被删除并替换为其连续的候选块。批量 PoW随机数的探测将切换到公式 3 中更新 h0 的新谜题。由于在不同区域找到满足的随机数的事件是独立且随机的,因此这种切换不会降低挖矿效率。

5.3 重新分配挖矿算力

本节解释了为什么Chu-ko-nu挖掘可以使对单个区域的攻击与对整个网络的攻击一样困难,可以将攻击栏设置为与比特币和以太坊相同的安全级别。

我们用哈希率来描述挖矿能力,它与产生新区块的速度成正比。 在一个有 2^k 个区域的网络中,让 mp 是参与 Chu-ko-nu 挖矿的矿工的总物理哈希率,md 是不参与挖矿的矿工(作为个体矿工)的总物理哈希率。 分布在每个区域的有效哈希率 ms 可以计算为:
在这里插入图片描述
如果恶意节点可以在任何区域获得> ms/2 的哈希率,则它可以控制该区域。 因此,每个区域的攻击条,可以计算为获得的恶意节点的哈希率除以网络中的总哈希率,为:
在这里插入图片描述
当挖掘设备占总哈希率的优势时,该算法收敛到50%。例如,如果在256区域的网络中,采矿设施贡献了99%的哈希率,那么一次成功的攻击需要网络中总物理哈希率的49.5%。当前情况(2018年9月)在比特币网络中,100%的哈希率是由采矿设施[5]贡献的。

为了使单个PoW解决方案的激励最大化,专业的采矿设施将参与所有区域,并希望从所有区域获得奖励。Chu-ko-nu采矿实际上增强了矿工的采矿能力,这与矿工参与的区域的数量相乘。扩大的采矿力量均匀地分布在所有涉及的区域。这种有效地扩大采矿能力的方法有助于诚实的矿工将采矿能力分配到所有区域,但并不适用于针对单个特定区域的攻击者。

5.4 可伸缩的挖矿系统

系统的性能不是一个定值,是一个和系统资源配置相关,可以被调整的值。分片越多,用户会被切的更细,就有更大的概率使得交易双方处于不同分片。当分片到1288个共识组的时候,跨共识组交易的比例几乎是100%。
在这里插入图片描述

6 讨论

6.1 单地址热点

单个地址可能涉及大量交易,例如大型加密货币交易所的存款地址。 在第 7 节描述的工作负载中,地址 0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE 是币安(顶级加密货币交易所)的一个存款地址,是超过 2% 的总交易的收款人。 由于单个地址是我们分区方案中最好的单位,因此现在我们的系统无法将此类工作负载进一步划分为多个区域

6.2 激励和费用

我们遵循比特币的激励模式,在每个区域用逐步下降的币来奖励矿工,最终得到固定的加密货币总供应量。交易费用是由发布交易的人设定的参数,通常是根据最近确认的交易的平均费用金额,理性的矿工根据交易费用对未确认的交易进行优先排序。

我们在跨区域交易中引入了费用分摊,激励矿工在交易处理的初始步骤和中继步骤上进行工作,使中继交易在类似水平上与交易费用具有同等优先级。对于简单的付款,交易费用可以平均分摊。对于具有可编程事务逻辑的复杂事务,事务拆分应该基于每个步骤的工作量评估,类似以太坊中的气体计算。

我们希望这样的任务将由整个网络中的所有完整节点和矿工自愿完成,因为自愿传播的区域内交易在比特币和以太坊网络中工作得很好。使用跨区域事务创建块的成本比区域内事务高一些。我们建议跨区域的交易发布者设置两倍甚至三倍的交易费用。

我们鼓励Chu-ko-nu挖掘,为使用Chu-ko-nu生成的区块提供相等的币奖励。因此在固定的实际采矿权条件下,Chu-ko-nu开采的利润与参与开采的地区数量成比例。专业作业的矿工在所有区域同时作业是合理的,这提高了网络的整体安全性。

6.3 支付之外的泛化

到目前为止,Monoxide团队据作者的分享团队正在进行三方面的工作,提议的可编程交易逻辑支持加密货币的可编程发行和转移,以及用户定义的可替代和不可替代令牌,类似于以太坊上的ERC20/ERC721令牌。它还支持更复杂的应用程序,如域名注册系统。

7 实验结果

我们通过回放以太坊从开始到区块高度 5867279 的完整历史 ERC20 支付来评估提议的系统,其中包括 1650 万个唯一地址和 7580 万笔交易。 我们将系统部署在一个分布式环境中,该环境包括 1,200 个虚拟机,每个虚拟机具有 8 个内核和 32GB 内存。 这些机器均匀分布在 15 个可用区,用于测试现实世界中的跨国延迟。 在测试网络中,我们将端到端 peek 带宽限制为 30Mbps,测得的平均端到端延迟为 102.48 毫秒。 在每个区域中,我们为区块大小设置了 32KB 的限制,并将区块创建间隔设为 15 秒的目标,这为一对一的代币传输产生了大约 15.6 TPS。 每个区的平均孤儿率为8.3o/oo,与区数无关。 在这样的测试平台上,我们的系统支持 48,000 个区块链节点。

7.1 可伸缩性

首先评估引入的分区机制是否可以平衡区域之间的支付数量,通过改变分片比例k以生成不同数量的区域,即分别将k设置为4、5、8并获得16、32、256个区域。 图 7 说明了每个区域中处理的事务是平衡的,具有不同的分片规模 k。 同时,存在单地址热点,可以进一步优化,如第 6.1 节所述。
在这里插入图片描述
在这里插入图片描述

通过测量具有不同区域数量的系统的实际吞吐量来评估可扩展性,当增加区域数量时,我们固定每个区域中的节点数量,即每个区域平均有 24 个节点和 12 个矿工。 从图6可以看出,随着Zone数量的增加,测得的TPS会向外扩展。系统表现出线性可扩展性,当有2,048个Zone时,TPS最高可达11,694.89 TPS。 唯一的例外是将区域数量从 1 增加到 2 时。 由于中继事务的开销,使用两个区域比使用一个区域的性能增益是 1.88 倍。

7.2 开销

虽然系统的吞吐量随着区域的数量线性扩展,但跨区域中继事务实际上会带来开销,增加了事务的数量和要存储和复制的数据的总大小。**图8(跨区域事务的百分比,接近100%。几乎每一个原始交易都会产生一个中继交易)**显示了跨区域事务的百分比随着区域数量的增加而增加。在我们的实验中,当超过64个区域时,几乎所有的事务都将导致一个中继事务。这种放大至多使事务总数翻倍,而丝毫不会削弱吞吐量的可伸缩性。如图6所示,当区域超过64个时,吞吐量继续向外扩展。
在这里插入图片描述
图 9 (整个网络中区块链数据的大小)说明了整个网络中数据复制和存储的放大大小。
在这里插入图片描述
首先,当增加区域数量时,几乎所有交易都会导致中继交易,即在这种情况下超过 64 个区域。 交易被放入原始区域的块和持久存储中; 和中继交易是目的地区域的交易,将交易块的大小加倍。 其次,与需要数百 KB 的区块中的交易相比,具有数十字节的链接区块的意义要小得多。 但是,由于链接块被复制到所有区域,因此它们在整个网络中的存储总大小将随着区域的数量而放大。 如图所示,它们的总大小被推到了几十 KB,有 2048 个区域,占交易大小的 6.2%,这在实践中是可以接受的。

7.3 确认延迟

每个节点的平均连接数影响网络中的数据传播速度,进而影响区块链的确认延迟。图10显示了经过的时间和达到的节点数的累积分布函数。我们将每个节点的平均连接数配置为16、32、64、128,观察到最快的传播速度是128。在我们的实验中,每个完整节点平均连接68.5个节点。
在这里插入图片描述
事务(<1KB)传播速度,从每个节点到其他节点的平均连接数不同。这里显示的最快的传播是128连接,最慢的是8连接。介于两者之间的是64/32/16连接。

如第 4.2 节所述,当交易的块在网络中的节点之间复制时,首先确认交易;在 n 个区块之后,交易是安全的。 比特币将 n 配置为 6,块生成间隔为 10 分钟,需要 1 小时来确保交易安全。 在我们的系统中,中继交易必须在原始交易达到 n 个确认之前在链上,因此没有额外的确认延迟。
在这里插入图片描述
图 11 (事务首次确认的平均时间)显示了中继交易的第一次确认时间, 延迟在 13 到 21 秒的范围内,当区域数大于 30 时(几乎所有事务都有中继事务)。 由于我们配置了 15 秒的区块生成间隔,原始交易在 90 秒(n=6,与比特币相同)后得到保护,这足以覆盖中继交易的确认延迟。

7.4 吞吐量和孤块率

在图12(不同块大小(上)和不同块创建间隔(下)的TPS和孤块率(# zone = 256))中,我们评估了不同块大小和块创建间隔下系统的TPS和孤块率。
在这里插入图片描述
在这些实验中,将区域的数量固定为256个,正如预期的那样,增加块大小或减少块创建间隔在我们的系统中产生了几乎线性的TPS,因为我们的系统对每个区域中本共识实例的实际配置是中立的。但是,较大的块大小或较小的块创建间隔会导致较高的孤块率,从而导致块的浪费。这种行为与现有的区块链系统匹配得很好。在典型的情况下,我们配置一个合理的块大小和一个块创建间隔,例如,32 KB和15秒,以满足高TPS和低孤块率。

8 相关工作

许多研究工作已投入到改进 PoW 系统上。 GHOST 协议 [42] 选择子树中包含最多块的块作为主链,而不是最长的分支,以防止在分叉处进行自私挖矿的攻击。 Bitcoin-NG [15] 在每个 epoch 中选择一个领导者,并允许领导者发布多个区块,从而提高吞吐量。 SPECTER [41] 和 PHANTOM [43] 通过将基于链的结构替换为基于有向无环图 (DAG) 的结构并将来自不同分支的块合并到分类帐中,从而提高了比特币的吞吐量。 SPECTER 提供 DAG 块之间的偏序,而 PHANTOM 可以保持全序。 Conflux [29] 是另一个基于 DAG 的协议。它通过引入父边和参考边并结合ghost进行主链选择,在DAG上构建一致的交易总顺序。它允许主链之外的块能够为整体吞吐量做出贡献。这些提议可以通过消除自私挖矿来增强比特币的安全性,并通过将来自不同分支的区块合并到主链来提高吞吐量。然而,如第 1 节所述,这些单链系统的性能与全节点的可用网络带宽有关。因此,它们无法扩展到数千个节点。此外,由于这些系统中需要复制和处理分叉块,因此不清楚全节点如何大规模解决和解决内存和存储的容量问题。

PoS 系统以大多数股权份额达成共识。 Ouroboros [22] 是一个具有增强持久性和活性的 PoS 系统。它使用抛硬币协议来产生领导者选举的随机性。然而,它无法避免有针对性的攻击 [18],假设大多数领导者在一个时期内是廉洁的。 Tendermint [26] 和 Casper the Friendly Finality Gadget [7] 采用拜占庭容错(BFT)协议来选择委员会,达成共识,并容忍多达三分之一的恶意节点。然而,这些提案中使用的实用 BFT (PBFT) 协议 [8, 40] 具有显着的通信成本,并且只能扩展到数十个计算节点。此外,在任何人都可以参与的公共区块链上,PBFT 存在安全问题。 PBFT 的免许可特性使区块链面临 Sybil 攻击 [13] 的风险,攻击者可以在其中创建任意数量的假名。而且,由于缺乏可公开验证和公正的随机性,一旦对手能够预测他们的身份,当选委员会就会面临被针对性攻击的风险。

最近的工作 [1] 讨论了 BFT 协议和区块链共识之间的关系,并重点介绍了如何为区块链优化 BFT。 Zyzzyva [25] 使用推测来简化 BFT 状态机复制,并且可以显着降低复制开销。 SBFT [19] 是区块链的可扩展、信任和去中心化的基础设施。它可以处理数百个活动副本并支持以太坊的智能合约。 HoneyBadgerBFT [35] 提出了一种原子广播协议来优化 BFT 的通信复杂度,使异步 BFT 能够支持数百个节点。 ByzCoin [24] 利用集体签名并优化基于 BFT 的区块链的交易承诺。 RandHound 和 RandHerd [45] 提供了公共可验证、不可预测和无偏见的随机性。 Algorand [18] 在异步轮次中增长区块链。在一轮中,每个节点计算一个可验证的随机函数来确定它是否是委员会成员。一旦验证者发送消息以通过投票证明其成员资格,Algorand 会立即替换参与者。它可以避免女巫攻击和针对性攻击。但是,据报道这些提议存在安全问题或性能问题。例如,Algorand 在可变随机函数 (VRF) 调用的随机性中容易出现偏差 [20],而 ByzCoin 可能无法就委员会选举达成一致,如混合共识系统 [38] 中所述。

许多分布式系统,例如 Google Spanner [9] 和 Slicer [2],使用分片协议进行横向扩展;而这些解决方案是中心化的,不能直接在去中心化的区块链系统中使用。 Elastico [32] 是一种去中心化的分片协议。在每个共识时期,参与者可以解决一个 PoW 难题以加入共识委员会。每个分片的委员会运行 PBFT 以就一组交易达成一致,并将该协议发送给最终委员会。最终委员会根据收到的协议生成最终值,并向网络广播。首先,Elastico 不确保跨分片的事务原子性。其次,为了限制运行PBFT的开销,它只支持少数委员会,导致失败概率很高[23]。第三,虽然每个委员会都可以在自己的分片中验证交易,但 Elastico 仍然将所有块广播到所有节点,并要求它们存储整个分类帐。这将导致全节点的容量问题不可避免。 OmniLedger[23] 是一个基于分片协议的分布式账本,试图解决 Elastico 中的问题。OmniLedger 使用 RandHoundm [45] 来保证领导人选举的抗偏差性和公共可验证性,并引入了两阶段原子提交协议 Atomix 来保证跨分片交易的原子性。它只需要验证器存储每个分片的参考点,而不是完整的交易历史,使全节点更具可持续性。以太坊社区还引入了信标链 [14] 来支持分片协议。信标链为选择每个分片上的验证者委员会提供分布式伪随机性。由于伪随机性随机性容易受到偏见的影响,基于分片协议的区块链不应假设可信的随机性信标。最近的一项研究 RapidChain [47] 进一步优化了这些分片协议。它对拜占庭式错误具有弹性,从高达 1/4 的比例(例如在 OmniLedger 中)到 1/3 的参与者比例。它还通过块流水线提高吞吐量,并确保新参与者加入网络的设置的稳健性。与这些系统相比,我们的工作提出了最终原子性,以确保跨区域事务的原子性,而无需锁定/解锁开销。最重要的是,分区到多个区域/分片的区块链系统暴露了一个严重的安全问题,这些问题在这些现有的提案中都没有解决。通过分区,诚实的大多数采矿权或股权份额或随机选择的委员会被分散到单独的区域/分片中。这显着减少了每个区域/分片上诚实多数的大小,从而显着降低了特定区域/分片上的攻击条。因此,我们引入了 Chu-ko-nu 挖矿来保证分区后的安全性,使攻击任何特定区域就像攻击整个网络一样困难。

综上所述,现有的针对单链和非分片解决方案的提案[42、41、43、15、29、24、18]受网络带宽限制,无法横向扩展; 而分片系统要么不支持完全分片 [32],要么可能会在分片后降低攻击门槛 [23, 47]。 据我们所知,Monoxide 是唯一一个可扩展的区块链系统,它实现了共识协议的完全分片以及可扩展性的资源使用,保留了 PoW 的去中心化保证,并保持了与比特币和以太坊相同的安全级别。

9 结论

作者提出了一个基于区块链机制的可扩展的去中心化共识系统。 在不削弱去中心化和安全性的情况下,我们的技术通过划分区块链系统所有关键组件的工作负载(包括交易广播、挖矿竞争、链存储、交易执行和状态表示)来提供线性扩展。 我们保留了区块链系统的简单性,并通过复制相等和异步区域来放大其容量,这些区域以最少的协调独立工作,并行。 此外,Chu-ko-nu 挖矿和最终原子性是我们系统提出的关键贡献,确保具有数千个独立区域的系统的效率和安全性。 在我们的实验中,证明Monoxide比比特币和以太坊提供 1,000 倍的吞吐量和 2,000 倍的容量。

猜你喜欢

转载自blog.csdn.net/qq_43331100/article/details/128887604