科普|如何设计乐观汇总以实现可持续的扩展和去中心化?

阅读本文时,您一定听说过乐观汇总。这是一个很有前途的新容量扩展解决方案,已在2019年DevCon上引发了激烈的讨论。有许多文章解释了该技术的工作原理,但没有人解释其背后的原因。这导致许多团队尝试以自己的方式实施乐观汇总。这种单独的开发模型通常不利于整个加密货币经济系统的安全。

本文着重于公众所忽视的问题:解释为什么乐观汇总可以安全且可持续的方式扩展,同时又保持去中心化的性质。

什么是乐观汇总?

我在2019年6月编写了第一个乐观汇总最低可行规范,该规范为我与Mikerah共同撰写的较早的论文《构建可扩展的去中心化支付系统》提供了特定的参数化高级规范。该规范旨在实现区块链发展史上的第一条无信任和可扩展的无信任侧链。

-我说“汇总”不可食用。-乐观汇总的工作原理如下:任何人都可以未经许可提交侧链区块,并将整个区块视为待验证(即,默克尔化)。 )呼叫数据(calldata)已发布到链中并支付了押金。一个新的侧链块只能链接到侧链的末端并通过链上合约进行跟踪(从最简化的角度来看,该合约就像是运行侧链的轻客户端,存储了侧链块标头的哈希值)。长时间(这是一个系统参数,但需要足够长,例如一到两周)后,将确定侧链块,然后退还押金。从侧链提取资金并返回主链的操作将在侧链上启动。仅需要提供确定的侧链嵌段的非交互包含证明。如果侧链块无效且尚未完成,只需将其提交给我并解释:为什么您要这样设计Optimistic Rollup?

事实表明,乐观汇总与先前的扩张计划之间存在一些细微的差异,这使得前者成为最有希望的短期至中期扩张计划,并使其成为历史。本节说明了这些重要差异背后的原因。

合并共识

乐观汇总的最显着特征之一是合并共识。合并共识是一种可以在链上进行验证的共识协议(除了真正的块验证之外,它还通过隐式错误证明来完成)。但是什么是去中心化共识协议?

去中心化共识协议包括以下独立功能:

以上功能确保了区块链的经济安全:操纵历史是有代价的。 (注意:为简单起见,我在这里忽略了一些事实,例如,一些去中心化的共识协议是无领导者的)。

在乐观汇总方案中,侧链不会分叉,因此不需要分叉选择规则。块的有效性是在链外计算的,其不正确性可以在链上用错误证明来证明。领导选举和抵抗女巫袭击的其余问题需要解决。

我提出的规范提出了一种“先到先得”的机制,即在任何高度上,都将采用扩展侧链长度的第一笔交易。领导人选举是隐性的,直到后来才会出现,反巫攻击是通过主链实现的(即交易费用和区块大小/汽油上限)。为什么这么简单的领导人选举规则有效?因为以太坊区块链已经提供了安全性。仅当以下三种情况发生时,才能将侧链上的一个区块转换为孤立区块:1)该区块无效; 2)该块的祖先块无效; 3)以太坊区块链已经重组。因此,有效区块也具有与以太坊相同的确定性和安全性因此,我们不需要复杂的领导者选举算法或昂贵的反女巫攻击来确保安全。侧链无需支付额外费用即可获得安全性,因此我们可以大大简化系统参数的设置。

但是,如果我们需要一种能够提前了解领导者的解决方案,那么我们该如何转变呢?一种建议是,您可以在链上运行PoS + RANDAO进行领导人选举。在这种情况下,无需包含其他令牌,否则将产生负面影响。如比特币白皮书中所述:

如果贪婪的攻击者的CPU能力大于所有诚实节点的总和,则他可以选择发起一次双重攻击或生成新令牌。他值得发现,遵守规则最符合他的利益,因为与破坏整个系统和伪造个人资产相比,遵守规则可使他获得比其他矿工加起来更多的区块奖励。

正如中本聪(中本聪)所说,原生令牌的全部目的是激励“诚实多数”以保护整个系统。乐观汇总中没有所谓的“诚实多数”,也没有独立于主链的安全概念,因此完全没有必要包含原生令牌,与之相比,它没有任何帮助仅使用Ether。比较不便。

应该注意的是,只要它是完全在链上运行的领导者选举机制,就可以使用它,而不仅限于我在本文中建议的那些。例如,销毁证明就是其中之一。

尽管乐观汇总与诸如延迟状态执行和影子链之类的提议有很多相似之处,但是关键的区别是合并共识的概念。乐观汇总共识协议完全在链上的智能合约中运行;因此,它不会影响主链的共识规则,也不需要其支持。相反,延迟状态执行和影子链实现是链上的自动状态转换,需要主链共识协议以及该协议中的奖惩机制明确支持。

可持续扩张

现在,我们了解了乐观汇总如何通过合并共识及其背后的原因来实现免许可证,它如何实现可持续扩展?

在撰写本文时,未压缩的以太坊状态(用户余额和合约存储)的大小约为45GB。与历史数据(例如事务和块)不同,状态不能删除-状态必须由完整的节点完全保留,以验证(即执行)新块中的新事务。更糟糕的是,为了验证事务,需要对状态进行多次随机访问,因此状态需要存储在RAM中(大多数消费类硬件无法满足)或快速NVMe固态驱动器。国家增长是以太坊遇到的最大扩展瓶颈。

当然,我们可以为州的大小设置硬上限,这样您就不必担心州增长的问题。真正的解决方案是实施状态租赁机制,并继续向该州的用户收费。但是,在以太坊上部署这种机制比预期的要困难得多,并且已经无限期地推迟了(编者注:对于中文翻译,请参见文章末尾的“关于国家租金和无状态以太坊”的超链接)。

通过减缓状态增长率可以非常实际地解决此问题。 zk汇总所促进的是将侧链交易数据作为调用数据发布到主链,然后使用有效性证明或错误证明来确保数据的正确性。事实证明,存储历史数据的成本比存储状态的成本低得多(降低了几个数量级)。以后,主链可用于确保数据可用性,跟踪汇总链的块头,处理存款和提款以及验证有效性证明/错误证明,所有这些都不需要大量的使用状态。通过减缓国家发展,产能扩张可以实现长期可持续性。 Vitalik之前写过一篇不错的文章,总结了如何将链上数据可用性应用于zk汇总和乐观汇总。

应当指出,尽管已经指出影子链完全等效于乐观汇总,但这显然是错误的。

现在,我的想法是创建一个完整的“影子链”,将计算移出链外,但将在生成100个块后提交状态转换到主链的承诺。 oracle可以将新块添加到链的末尾,其中每个块都包含事务列表以及由这些事务触发的状态转换 [[k1, v1], [k2, v2 ] …]清单。生成一个区块后,将有多达100个区块的挑战期。如果在此期间没有挑战,则状态转换将自动应用于主链。

除了没有明确定义之外,影子链将自动在链上执行状态转换,并且不会促进状态增长。除非用户付费,否则乐观汇总不会执行任何状态转换。

非交互式FTW

对于乐观汇总,非交互式错误证明非常重要。为什么?

非交互式错误证明如此重要的原因是为了避免Plasma Cash的缺点之一,即无效历史记录的交互式退出挑战机制。这种交互式的多步骤挑战机制导致Plasma Cash对链拥塞攻击的抵抗力低。所谓的链拥塞攻击是指攻击者向主链发送大量“退出”交易,以窃取等离子合约中的所有资金(但是,等离子现金比等离子M更能抵抗这些攻击(矿石)VP)。仅非交互式错误证明可用于将任意数量的无效乐观汇总块(在单侧链上)转换为孤立块,从而使系统更能抵抗链拥塞攻击。注意:由于乐观汇总使用了错误的证明,因此,如果主链没有审查阻力,则仍然存在资金被盗的风险。

在乐观汇总中,提款也以非交互方式进行处理:首先,在侧链上启动提款,然后为已在主链上最终确定的区块生成非交互包含证明。然后使用该证明来完成提款。但是,这要求侧链是无许可证的,因此需要的是合并共识,而不是类似于Plasma的运营商。

与交互式验证游戏相比,非交互式错误证明具有更多优势。交互式验证游戏需要更长的时间。鉴于乐观的汇总不会产生分叉,攻击者可以生成无效的块并​​使用验证游戏使侧链停止,从而对系统发起DoS攻击。使用非交互式错误证明,可以立即确认欺诈(但是,必须注意的是,错误证明的证明范围比交互式验证游戏的范围要窄-关于此限制是否确实影响了区块链的应用)巨大的影响,尚待讨论)。

交易延迟

乐观汇总不会减少事务延迟。每个侧链区块都需要提交给主链,因此区块生成时间不会少于主链。除了使用完全承诺的状态通道外,没有其他安全且不受信任的方法可以减少此延迟。

但是,您不必等到侧链块完成后再接受其交易。由于乐观汇总不会产生派生,因此必须最终确认成功在链上列出的有效块,并且可以获得该块的所有数据(因为所有有效块都已发布在链上),并且用户可以执行客户端验证并立即接受该区块内的交易。

乍一看,延迟提款似乎是一个问题,但事实并非如此。通常,用户无需等待其提款完成。实际上,较长的挑战期主要是为了确保通常不使用的加密的经济安全性。立即提款的一种简单方法是与主链或另一条链上的流动性提供者(或想要在此汇总链中进行存款的其他用户)进行原子交换。 [see “Fast withdrawals” in the link : Liquidity Provider “section]。

-乐观汇总可让您无需支付汽油费即可进行即时交易 –

数据可用性挑战

我的最初论文提出了三种解决数据可用性问题的方法:

  1. 始终将所有数据发布到链中
  2. 利用数据可用性挑战并仅在必要时将数据发布到链中
  3. 利用数据可用性证明

数据可用性挑战似乎是一个相对简单且可靠的解决方案。不幸的是,如果攻击者负责挑战成本,他们将蒙受损失;如果攻击者负责挑战费用,则整个系统将始终在链上发布所有数据。因此,在设计规范时,乐观汇总的选择是始终释放链上的所有数据并以有效且低成本的方式实现。但是后来,在乐观汇总中使用数据可用性证明变得可行。

进一步改善

我已经根据最低规格的初始版本编写了性能改进建议,并在下面进行了总结。请注意,重点是基于UTXO的付款,而不是一般的智能合约执行。

以太坊1.0上的多线程数据可用性-数据验证(即哈希)和其他预处理步骤是纯函数,因为它们根本不涉及任何状态。因此,这些步骤可以并行执行。以这种方式使用以太坊将大大减少状态的使用和增长。如果使用四核计算机,则数据可用性吞吐量可以提高三倍。我的计划是通过多个EIP实现此目标,第一个是EIP-2242:交易Postdata。

不需要序列化中间状态的UTXO链紧凑型错误证明-以太坊智能合约的通用错误证明价格昂贵。在UTXO数据模型中,每个UTXO最多可以创建和使用一次,并且每个事务都完全描述了状态转换。块生产者可以将元数据添加到每个输入,说明此输入是由特定输出生成的。如果这样的陈述是错误的,则可以以非交互方式证明该错误。我在另一篇文章中重新分析了BIP-141中提到的错误证明机制。

使用默克尔累加器(无状态查询客户端)的无状态查询并行事务验证-状态查询非常昂贵。无状态客户通过消除使用状态来降低成本。但是我们可以使它变得更简单:只需省去状态查询即可。 “见证数据”不会立即过期,并且其有效性将持续几个区块。这些“见证数据”必须根据最新块的状态转换进行比较,可以在UTXO数据模型中进行无状态计算。

链上非交互式数据可用性的证明-如果数据从头到尾链接在一起,将带来巨大的成本,并且还将导致乐观的汇总,仅实现线性扩展(例如Plasma的完全脱链)技术将存在这个问题,并且等离子现金的检查站机制也是线性的。我们可以通过FFI函数(例如,通过预编译)表达共识节点执行可用性检查的能力,并且无需分片即可获得二次可伸缩性。这是通过停止来实现无信任的双向桥侧链。使用错误证明的双向桥侧链必须始终在线,这可能给用户带来不便。尽管the望塔不适用于Plasma Cash,但可以应用于乐观汇总。但是,我们可以做得更好:我们可以在运行一段时间后完全停止侧链,然后为用户提供更长的窗口期(长达数月),以便用户可以提交虚假证明来确定有效区域Piece。用户必须在线的窗口时间段是已知的并且受限制。窗口期结束前不允许提款。如果用户想提早提款,他们可以与流动性提供者进行原子交换。

团队建设乐观汇总

自几个月前编写了《 Optimistic Rollup Minimization Specification》的第​​一版以来,我很高兴发现许多开发团队已开始构建Optimistic Rollup实现,这些实现经历了许多曲折。以下是我们目前看到的建立乐观汇总的开发团队的不完整列表(无特定顺序)。

Fuel -UTXO数据模型侧重于稳定币支付。它可以用于任何ERC-20令牌或ETH转移,或用于原子交换。将来也可以用于“断言”脚本编写。该模型将在长期的公共测试网上启动(编者注:Fuel现在对公共测试网开放)。

Plasma Group-OVM(Optimistic Virtue Machine)环境中的通用EVM智能合约,宣布与Uniswap合作开发Devcon 5。

Arbitrum-使用交互式验证游戏机制的通用智能合约。否则,新的Arbitrum汇总设计与乐观汇总大致相同。

州际网络-使用虚假证明的通用EVM型智能合约。

SKALE-使用BLS签名聚合的最佳汇总。

NutBerry-一种类似于EVM的通用智能合约,使用交互式验证游戏机制。

IDEX-为IDEX交易所构建“最佳优化汇总”。

结论

随着各种乐观汇总实施项目的启动,以太坊将在明年发生巨大变化,其吞吐量将大大提高,并且在数据可用性方面将实现可持续的容量扩展。

在本文中,我没有将乐观汇总与zk汇总(该概念最初称为roll_up,由Barry Whitehat提出,然后由Vitalik改进为zk汇总)进行比较。如果您有兴趣,可以阅读Alex Gluchowski撰写的这篇文章(编者注:有关中文翻译,请参见文章结尾的超链接“ Optimistic Rollup vs. ZK Rollup:Check out”)。

感谢Mikerah Quintyne-Collins,James Prestwich,Robert Drost和Joseph Chow进行了评测。

(完)

原始链接:https://medium.com/@adlerjohn/the-why-s-of-optimistic-rollup-7c6a22cbb61a作者:John Adler翻译和校对:敏敏与一把剑

来源:以太坊爱好者,原标题为“科学|为什么要进行乐观汇总设计”? 》

资讯来源:由0x资讯编译自BLOCKING,版权归作者Block所有,未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢