RISC Zero:将 ZK 带入OP Stack

Marsbit
媒体专栏
热度: 8419

本文解释RISC Zero的提案:构建一个系统,引入ZK安全性和扩展到Optimism。

原文标题:RISC Zero is bringing ZK to the OP Stack

原文作者:TIM CARSTENS & STEVEN LI

原文来源:risczero

编译:Kate, Marsbit

在RISC Zero,我们致力于在zkVM和Bonsai之上构建创新的开源解决方案。OP Stack零知识证明RFP是这项任务中令人兴奋的一步,因为我们将零知识证明引入了OP Stack。通过我们的提案,我们的目标是构建一个系统,引入ZK安全性和扩展到Optimism,同时确保与现有的OP Stack兼容。这将实现长期的可升级性和可扩展性,为OP Stack的ZK未来奠定基础。

介绍

今年早些时候,Optimism基金会宣布了一项基金会使命,将零知识证明的力量应用于OP Stack。正如使命所说,

为OP链实施零知识证明(ZKP)是在L2和L1之间以及OP链之间实现安全、低延迟的跨链通信的先决条件。一个支持良好的指令集架构(ISA)的ZKP可以证明Optimism故障证明程序,作为一个可以证明任何基于OP Stack的区块链的系统的基础。

当使命被宣布时,我们立即知道我们想参加:

• 当我们去年年初发布zkVM时,我们是第一个提供基于通用ISA (RISC-V)的开源ZK证明器和验证器的。当其他系统专注于定制电路语言和定制架构时,我们专注于通用的、行业标准的架构,正是因为我们想让ZK更容易进入现有的软件生态系统。使命正是这样要求的,我们怎么能说不呢?

• 我们已经在调查构建Zeth的可能性(我们的Type 0”zkEVM)。由于Optimism EVM兼容性以及revm和Alloy等核心库的灵活性,我们乐观地认为我们可以轻松扩展Zeth以支持OP Stack。

因此,我们提交了一份提案来做到这一点:扩展Zeth以支持OP模块,并提供与OP排序器集成所需的附加工具。不久之后,我们的提案被接受了。今天,我们想解释一下我们的提案,以及为什么我们很高兴能在OP Stack中工作。

故障证明,重新审视

Optimism是一个高度可扩展的以太坊L2,由OP Stack提供支持。作为L2,它与以太坊具有内置的互操作性:在以太坊(或Optimism)上运行的智能合约可以向运行在Optimism上的智能合约发送和接收消息。Ethereum)。除此之外,这种互操作性使得在链之间移动(“桥接”)代币变得容易。

这种集成意味着Optimism必须定期在以太坊上发布有关OP区块的数据。安全性由故障证明提供:

在Optimism Rollup中,状态承诺被发布到L1 (OP主网的以太坊),而没有任何直接证据证明这些承诺的有效性。相反,这些承诺在一段时间内(称为“挑战窗口”)被视为悬而未决。如果提议的状态承诺在挑战窗口期间(目前设置为7天)没有受到质疑,那么它被认为是最终的。一旦承诺被认为是最终的,以太坊上的智能合约就可以安全地接受基于该承诺的OP主网状态的提款证明。

虽然故障证明是一种有效的机制,但它有一个主要的缺点:挑战窗口。挑战窗口的目的是确保人们有足够的时间来识别和挑战链上的恶作剧,缺点是可能需要几天的时间来检测并质疑恶作剧,这反过来又增加了在以太坊和Optimism上运行的智能合约之间的取款和交互的延迟和复杂性。

ZK证明来解决这一点

减少(甚至消除)挑战窗口的一种方法是用ZK证明取代争议协议。传统的故障证明要求各方参与交互协议来查明故障,而ZK证明可以一劳永逸地证明给定区块是有效的。

在这里,有效性意味着三件事:

1. 该区块必须在语义上有效,也就是说,新的状态根(和其他块数据)是将一系列有效交易应用于父区块的结果。这正是Zeth为以太坊所做的事情。

2. 父区块与链的历史一致(即,是正确的“父区块”)。

3. 该区块必须使用Optimism排序器给出的交易序列来构造。

一旦在L1上验证了一个证明,就没有争议的余地了:这个区块是正确的。这意味着挑战窗口可以从几天缩短到几分钟(生成证明所需的时间)。鉴于近年来ZK验证技术的进步速度,有可能有一天挑战窗口可能会被完全消除。

在以太坊上证明Optimism

当前版本的Optimism以两种重要方式使用以太坊:

1. Optimism排序器将其状态发布到以太坊。这意味着任何能够访问以太坊历史的人都可以重建用于生成Optimism区块的“官方”交易序列。

2. Optimism链也将其状态发布到以太坊。

理论上,步骤(2)是不必要的,因为任何访问排序器的人都可以重建链的状态。但在实践中,这种重构过于昂贵,而且对大多数用例来说不可行。因此,链的状态可以很方便地定期直接发布到以太坊,从而节省其他人重建状态的工作(和成本)。

当然,需要一种机制来确保(2)中的状态与(1)中的状态一致。从历史上看,这是通过故障证明完成的。但是对于ZK,它可以通过链上证明验证来完成。

为此,我们提出了一个包含3个基本部分的解决方案:

1. 一种证明给定区块是通过将给定的交易序列应用于给定的“父”区块而生成的方法。

2. 一种证明给定的交易序列来自Optimism排序器的方法。这可以通过直接从以太坊读取排序器的状态,解析数据,并提交其中保存的交易序列来完成。

3. 一种将(1)和(2)“Rollup”成一个证明的方法。

(当然,Optimism区块的生成频率高于以太坊区块,因此我们还需要能够将Optimism区块证明的序列(或“epoch”)“rollup”成单个证明。)

为了安全起见,最终证明必须提交其所有链上输入(特别是排序器的状态,以及以太坊报告的最新Optimism区块)。这些数据都保存在以太坊上,所以本质上,它足以记录在读取这些数据时使用了哪些以太坊区块。

当这样的证明被提交给以太坊进行验证时,链上合约必须验证该证明是正确的,以及输入是有效的(即,相关区块包含在以太坊的历史记录中)。正确地做到这一点需要小心,例如,证明必须从所有相关块中读取数据,这样才能完全解析排序器状态,并且不会跳过任何交易。有了正确的平等检查和Merkle包容性,这是可以做到的。重要的是,由于所有输入都保存在以太坊上,因此可以从以太坊智能合约中验证输入是否正确。

一个简单的项目,得益于良好的基础

正如我们最近与Zeth的合作所证明的那样,从我们的zkVM中读取和验证以太坊数据很容易。像Alloy这样的流行库提供了从JSON-RPC读取和验证以太坊数据所需的所有类型和函数,而像revm这样的包可以很容易地生成与EVM兼容的区块。

Rust/以太坊生态系统的成熟,加上Zeth和zkVM的多功能性,使得为L2构建ZK证明系统变得容易。我们很高兴能以乐观的态度展示这一点,并期待在未来的帖子中分享我们的进展。

展望未来

通过ZK,我们能够推进整个OP Stack,缩短提现周期,提高网络安全性,并提高整个超级链的互操作性。这是Rollup和模块化生态系统的未来,是ZK Proofs和Optimistic Rollup的协同结合,将两个世界的优点结合在一起。

我们的提案和技术设计可以在这里找到:

https://github.com/ethereum-optimism/ecosystem-contributions/issues/61#issuecomment-1611869982

Zeth 是我们面向 OP 的 ZK 解决方案的基础,可以在这里找到:

https://www.risczero.com/news/zeth-release

定期的进度更新将在Optimism Github和RISC Zero博客上公布。

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。
关键字:OptimismZK