以太坊重要扩容方案: Optimistic Rollup 现状报告(中)

为了使 Layer 2 智能合约计算保持无需信任,必须有一个备用方案,即以某种形式在 Layer 1执行这种计算。

作者:Daniel Goldman(丹尼尔·戈德曼)自由软件工程师、技术顾问、作家译者:Emma、Snow Lu校对:Samuel

完整的 EVM: Layer 2虚拟机

为了使 Layer 2 智能合约计算保持无需信任,必须有一个备用方案,即以某种形式在 Layer 1执行这种计算。由此可见,ORU 支持完整的 EVM,Layer 2 需要自己的虚拟机,该虚拟机可在 EVM 基本层中执行,为此高性能的创建实现并非易事。简而言之,EVM 的设计初衷并非旨在自身运行。 您可以从 EIP 中了解到其中的一些挑战,它也讨论了修改 EVM 以直接合并此功能的可能性,以及 Kelvin Fitcher 在 Plamsa 中对这一问题的概述。

因此,所有五个完整的 EVM 项目都为 Layer 2 执行创建了自己的 EVM 修正版本。为了确保欺诈证明的可靠性和可预测性,VMs 的执行必须是确定性的;即,在证明时必须能够准确再现最初发现欺诈的情况。 因此,非确定性操作必须完全修改或删除,例如,检查区块高度,难度和时间戳。同样,用于合约创建或销毁的操作码也需要删除,因为这种逻辑是特殊的。因此,在部署到 ORU 链之前,ORU 上 Layer 1 的合约可能需要对 Solidity 代码进行一些小的修改。

欺诈证明

所有完整的 EVM ORUs 在如何促进欺诈证明方面都具有一些基本的共性:定期排序并提交 ORU 链的状态,计算操作的哈希值也是如此,包括执行状态转换。(在所有实践中,生成和验证state-root的提交责任都落在了运营商身上,而不是用户身上)。欺诈证明在某种程度上使用了这些数据来表明,所提交的步骤实际上并未正确地将初始状态转换为最终状态。

完整的 EVM 实践中主要区别在于它们处理这些欺诈证明的交互程度。 ORU 本质上必须包含足够的呼叫数据,这样可以立刻发现欺诈行为,并最终得到主链的共识。但是,执行此欺诈证明的过程因构造而异。

在单轮(有时,会被令人困惑地称之为“非交互式”)欺诈证明方案中,欺诈总是可以在单笔交易中证明,也可以在单方的多笔交易中证明。这样做的好处是可以立即“解决争议”,没有麻烦的载体,因此不需要欺诈证明人的保证金,而且操作简单。在多轮欺诈证明中,欺诈是显而易见的,但是欺诈证明者和区块生产者之间需要几个交互步骤。这样做的好处是 Gas 成本更低(在某些情况下更低),链上数据成本也可能更低。

单轮欺诈证明

Nutberry,Optimism 和 Celer 的 ORU 都支持单轮欺诈证明。这就要求每笔交易都必须提交到序列化的后状态根(post-state root)。在 Optimism 的模型中,Celer 也直接受到影响,如果检测到欺诈,欺诈证明者会发布交易的初始状态和最终状态的时间(slot),并让主链完全执行交易。(此流程与用于验证以太坊区块的无状态客户 stateless client 模型非常相似)。理想情况下,交易只需要最少的状态时间(slot)即可证明欺诈。但是原则上,交易可能需要读取大量状态数据。如果欺诈证明需要大量数据和/或计算,很难将其放在主链区块上,那么 Optimism 可将证明拆分为多个交易(请注意,这些交易仍由欺诈证明者提交。因此,从某种意义上来说,此额外步骤不符合“交互”的条件。)

Nutberry 的方法与此类似,但使用“门控计算(gated computing)”模型执行合约。智能合约被修补以包含检查点(checkpoint)。 在此模型中,交易会提交多个更细化的中间状态根,可能需要更多数据,但在较小的数据块中执行欺诈证明。

多轮欺诈证明

证明者需要与欺诈证明者之间进行多个步骤的交互才能决定多轮欺诈证明是否属实。按照 ORU 的定义,关键是要发布足够的数据,让任何一个诚实的参与者或观察者都可以从一开始就确定哪一方在说真话,从而预测了质疑期的结果。

在 Interstate One 的例子中,交易包含状态根,且发布时提交 Merkle 根至对应执行的步骤,而不是提交至步骤本身。 从某种意义上说,这种提交是一种二级“optimistic”的假设。 只有验证者提出问题时,操作员才会将 EVM 消息栈(stack)张贴在呼叫数据中,验证者可以使用该信息简要证明欺诈。 在最坏的情况下,此过程总共进行3轮,并且要求呼叫数据与所涉及的交易中的步骤数量成线性关系(与单轮欺诈证明相比,在所有情况下都需要线性数据)。

在互动性增强方面最先进的是 Offchain Labs 的 Arbitrum Rollup,可以最大程度地减少链上的足迹。 使用 Arbitrum,只有区块,而非交易,需要提交状态根。 与 Interstate 一样,这些也包括了提交哈希值的计算。 如果双方提出了相互矛盾的主张,则他们将进入争端;在该争端中,他们会交互式地找出无效执行的单个计算步骤(如果欺诈,原则上必须至少存在一个无效步骤)。

他们通过在栈(stack)中进行有效的二进制搜索直到欺诈已隔离:即,欺诈证明者通过栈(stack),在中途的一个点请求状态哈希,然后将栈(stack)二等分并重复已知无效的一半。 此过程将不断重复,直到只剩下一个无效的操作,然后在链上执行该操作。 因此,在最坏的情况下,此过程需要(n)个日志步骤(其中n是操作数),并且需要最少的 Layer 1 计算。

这种方法的一个令人惊讶的特性是,尽管争议正在进行,但无需暂停系统的其余部分。用户和区块生产者可以继续照常进行交易。可以将“争议”视为可能性树中的分枝。诚实的用户可以验证且确定哪一方是诚实的,并在此基础上继续发展,了解争端最终将以何种方式解决。因此,争议的持续时间不会让系统的其余部分延迟。有关更多信息,请参见 How Arbitrum Rollup Works。

应用特定的 Rollups

ORU 项目支持更受限制的功能,同时寻求围绕更特定的案例进行优化:通证支付、去中心化交易、私人支付和大规模迁移。这四个协议都各不相同,也将分别进行探讨。

Fuel (“区块链上的比特币”)

Fuel 正在实施以支付为中心的、基于UTXO的ORU侧链,其数据模型类似于比特币。 这种设计需要平衡智能合约的一些功能,以利于实现简便性以及更便宜的验证和欺诈证明。 实际上,关于 Fuel 与完整 EVM ORU 的权衡,许多想法与比特币与和以太坊的权衡相似。

与比特币一样,Fuel 链的状态被隐式定义为所有未花费的交易输出的集合;不需要状态根序列化。 支持简洁欺诈证明的模型与Greg Maxwell在2014年Greg Maxwell in 2014 最初为比特币提出的模型相似(并在2019年由John Adler单独再次发现); 交易与比特币交易非常相似,但是包含一个额外的数据区,用于指定每个输入的处理位置。 有了这个数据区,就可以在一个回合中用一个或两个包含证明(inclusion proofs)来证明所有欺诈案件(双重支付攻击,虚假投入等)。 除了低成本的欺诈证明之外,UTXO模型还有望实现更高性能的验证-更好的状态访问模式和并行空间(与同步完成的验证EVM执行相比)。

Fuel 将使用一种模型来支持 ERC20 和 ERC721 传输,该模型可以反映比特币彩色硬币提案(colored coins proposal for Bitcoin)。 它还支持某些特殊的交易类型,包括 HTLCs 的原子互换。 该计划最终支持一种更强大的无状态谓语脚本语言,其功能类似于比特币脚本。 

ANON 的 ZK-Optimistic-Rollup(“区块链上的 ZCash”)

另一个独特的 ORU 项目是 ANON 的 ZK-Optistic-Rollup,它支持E RC-20 和 ERC-721 支付交易,并具有与 ZCash 隐私地址相同的隐私保证。该设计与 ZCash 本身有很多共同点;资金索赔采用 UTXO 式的“签发”形式;支付产生的新签发和创建的“废止通知(nullifier)”,记录该签发是用于防止未来重复支出。交易也包括 ZK-SNARK,可证明其满足所有有效性条件,且没有向观察者实际透露任何细节。

为了维护简洁的欺诈证明,ZK-ORU 拥有 ZCash 中没有的功能:废止通知存储在 Sparse Merkle 树中,并随每个新的 ORU 块进行更新。这样可以轻松证明成员资格(已提交的)和非成员资格(未提交的)。与所有其他 ORU 一样,计算被乐观地延迟了,包括 SNARKS 本身的验证。所有的欺诈情况,包括无效的 SNARK,只需一步就能证明。

注意,生成 SNARK 的重任落在用户身上;ANON 预计一个客户会花费10-30秒生成 SNARK。

(还要注意,尽管名称和组成部分相似,但 ZK-Optimistic-Rollup 实际上与 ZK-Rollup 有所不同,后者不一定提供隐私保护,不使用欺诈证明,并且使用运营商生成的 SNARK 证明其有效性。欢迎使用加密货币。)

WCL 的 ORU Hub

该 ORU 操作旨在成为 rollup 链之间的批交易标准,是让用户自愿将其资金迁移到升级合约的一种手段。

该操作本身是一条简单的,仅基于帐户支付的链,与 Fuel 一样,它提供廉价的欺诈证明和数据验证。这种构造的主要目的是建立一种标准架构,以便能够直接在不同链之间进行转移,即,不必从一条链中取出款后再重新存到到另一条链上。这可以通过支持批量存款和建立单向链间的交叉连接实现。 只要目的链上的验证者发现出发链上的欺诈行为,就可以将付款视为最终付款,而不会产生任何额外的延迟。这与围绕 ETH 2.0 交叉分片通信的研究 ETH 2.0 cross shard communication 逻辑相类似。

虽然主要的计划用例是可升级性,但此机制潜在的其他用例是在单独的、不同的、实时 rollup 链之间迁移,我们需要对此进行更多研究。关于 rollup 链间迁移的精确协议,以及需要确认的规范链,更多详细信息尚未公开,日后会在此处附上链接。

IDEX 2.0

IDEX 的独特之处在于,他们将 ORU 作为已经投入生产的项目的最佳扩容版本,IDEX 合约当前已在主网运行,IDEX 合约使用的状态模块(state)比任何以太坊其他应用程序都要多。

IDEX 2.0 的 rollup 链支持登记订单式去中心化交易功能,并且围绕此特定用例构建而成。 该链负责执行订单,维护用户余额,允许设置发生其他功能,例如更高级的订单类型,自动交易引擎等。

IDEX 的 ORU 中的验证者必须有 IDEX 通证。验证者提交收据证明已发布的区块,并根据他们在有效区块上的签名和有效欺诈证明的签发而受到奖励和/或惩罚(如果他们选择接受全部的“风险”验证)。奖励是使用一部分的交易费用和自己的通证支付的(加密经济学模型的分析不在本文范围内;有关更多信息,请参阅 IDEX 2.0白皮书 DEX 2.0 whitepaper)。

在协议中,区块生产者仅上传区块的 Merkle 根作为初始投入,仅在质疑时将区块内容发布到呼叫数据中。由于无法在链上保证 rollup 区块数据的可用性,因此,这并不完全符合上述 “Optimistic Rollup” 的定义; 实际上,他们将其称为 “优化的 Optimizied Rollup”。 一旦发布呼叫数据后,就可以通过一两个附加步骤来证明欺诈行为。下面将讨论此方法对信任/安全的影响。

第三部分内容将于近日推出。

声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文