迈向以太坊 L1 终局,Taiko 的多重证明路线图

Taiko 认为 ZK 中的多重证明可以为未来以太坊 L1 中的 SNARKed 节点多样性奠定基础。

撰文:Taiko
编译:Frank,Foresight News

不久前,我们分享了一篇题为《为什么 multi-prover 很重要》的详细文章,解释了多重证明(Multi-Proofs)的重要性,并将 SGX 作为多重证明的选择之一。

这篇文章的灵感来自于我们与 Vitalik 的 X Space 和他随后发表的博客文章,其中介绍了 Taiko 关于多重证明的总体路线图:它与以太坊终局的关系,我们的愿景是什么,以及我们将如何实现。

我们认为,ZK 中的 multi-proof 可以转化为使用 multi-SNARKs + multi-Client,即使用多种 ZK-SNARK 证明多种不同的以太坊节点,这将为未来以太坊 L1 中的 SNARKed 节点多样性奠定基础。

为了为多重证明提供一个非常简单的理由,我们应该提到两点:

  • 多重证明可以对冲节点实施和证明系统中的漏洞和风险,因此在出现漏洞的情况下,即使一个证明被破坏,其他证明也不太可能允许完全相同的漏洞被利用;

  • 以太坊的终局,是假设使用零知识证明(ZL)来验证 L1;

与以太坊的多节点实现类似,这种方法已经多次拯救了网络免于崩溃,证明了 L1 区块需要采用多重验证的方法。对于 ZK 和非 ZK 场景来说,这意味着需要使用多个节点和不同的证明系统。

Multi-Client 系统和 L1 终局

正如 Vitalik 在他的文章《What might an「enshrined ZK-EVM」look like?》中描述的那样,Multi-Client 系统有两种方法:「开放式」和「封闭式」。

  • 在一个封闭式的 Multi-Client 系统中,协议内已知一组固定的证明,并将其列入「白名单」以生成证明。而根据 Vitalik 的分类,所有 ZK L2 都是封闭式的,因为它们只接受自己实现的证明;

  • 在一个开放式的 Multi-Client 系统中,证明被放置在「区块之外」,并由各个节点分别进行验证,任一用户都可以使用任何他们想要的节点来验证区块;

如果用户需要验证某区块,在最简单的实现即直接运行相应的节点重新执行该区块,或者向已知的 Prover 请求有效性证明。如果收到了一定数量符合「白名单」标准的证明,则认为该区块合法。然而,如果没有符合「白名单」标准的零知识证明(ZKP),并且我们想避免重新执行,我们应该使用哪种零知识证明呢?

根据 Vitalik 的愿景,这是在协议之外通过进行社会(或加密经济)共识来解决这个问题:

在共识层上,我们添加了一个验证规则:只有当节点对区块中每个状态变化都看到了有效的证明时,才接受该区块。该证明必须是一个 ZK-SNARK 证明,用于证明 transaction_and_witness_blobs 的连接是 (Block, Witness) 对的序列化,并且基于 pre_state_root 和 Witness(i)执行区块是有效的,并且(ii)输出正确的 post_state_root。潜在地,节点可以选择等待多种类型的 M-of-N 证明。

想象一下,一个诚实的 Builder 拥有一种 type-1 的区块,他希望提供有效性;L2 层已经提供了几个选择,例如 Polygon、ZkSync 和 Scroll。

假设他们的 ZK-EVMs 已经发展到了 type-1,并且信誉良好且经过实战检验,然后 Builder 将从这些可用的证明系统中进行选择,而验证他的区块的人将运行相应的验证软件,最好是创建多种类型的证明,并通过多次验证。鉴于相同的 L1 链规范,如果有任何一个验证者不同意,区块验证就成为了一个共识问题,开放式的系统将通过共识来达成验证结果的一致性。

证明系统将通过说服用户信任它们而获得影响力,而不是通过说服协议治理过程。

根据 Vitalik 的说法,这意味着 ZKP 生态系统正在开放,以实现直接市场化。如果有激励措施,现有的 L2 实现可能会参与 L1 证明市场的竞争。

Taiko 在多重证明方面的可行性

在 Taiko 协议中,Proposer 必须找到一个 Prover 来提出一个区块,并且被指定的 Prover,将存入 TKO 作为保证金,以确保自己交付的证明没有问题。Taiko 协议并没有规定 Proposer 如何找到和补偿 Prover,所以他们甚至可以亲自见面,并用现金进行交易。

因此我们的供应链运作就像一个自由市场一样,Proposer 可以选择任何他们喜欢的 Prover。

除了经济优势之外,还有一些技术特性使得 Taiko 成为 Multi-Client 系统的理想选择:

  • Taiko 是一种 type-1 的 ZK-EVM ,具有两个好处:首先,在执行多样性方面,现有的 EVM 实现(如 Geth、Besu、Reth 等)可以直接应用于 L2;其次,为了测试基于 L1 设计的可行性,我们需要一个标准化的 ZK-EVM 来进行开放式 Multi-Client 验证,因为验证者需要根据相同的转换来达成共识并验证结果。在这种情况下,type-1 ZK-EVM 将是最合适的选择,因为它明确遵循以太坊规范。对于 Rollup 特定逻辑方面,Vitalik 也提到了如何通过预编译支持修改 ZK-EVM,并且利用这些预编译就足以支持 Taiko 的 BBR(Based Booster Rollup)设计;

  • Taiko 将数据可用性发布在以太坊上,而不像一些 L2 探索替代的数据可用性选项。只要数据被发布到 L1,Taiko 可以轻松适应 Vitalik 的实施提案,该提案介绍了 ZKEVMClaimTransaction 来覆盖状态转换、证明和数据可用性;

Taiko 在多个证明系统上运作,现有的测试网络已经支持 PSE 的 ZK-EVM、SGX 和 Reth。基础设施被配置为适应多个执行节点和证明系统,这将在最后一节中讨论。建立在这个基础设施之上,Taiko 在零知识证明方面将围绕模块化编译展开。

一个模块化和开放性的路线图

模块化

在零知识证明(ZKP)的背景下,考虑到 Multi-Client,Taiko 利用现代编译器获得通用组件,如 Risc-V 或 WASM。然后将这些指令转换为各种证明系统(AIR 或 PIL)的算术化表示,并最终使用不同的 SNARKs 对算术化执行轨迹进行编码。

简而言之,这个流程是在一个 multi-proof 系统中最可行的方法,因为它充分利用了两方面的优势。在节点编译过程中,现代编译器给我们带来以下好处:

  • 节点升级与证明无关,因为无需为最新 EIPs 或硬分叉实施电路,只需要保持源代码更新即可;

  • 可以从像 LLVM 这样的工具链中免费获得代码优化;

  • 交叉编译产生更多多样性;以上述示例为例,Taiko 有 Geth 或 Reth 编译成 RICS-V 或 WASM 指令集,已经具备四套证明;

SNARKs 编译是 Taiko 未来发展重点。请注意,在 PLONK 和 R1CS 等算术化方法与 Halo2、eSTARK 或 Supernova 等后端进行编码时,并不限制于单一 ZK 协议;而整体式 ZK-VM/EVM 则针对特定 ZKP 进行后端实现。随着越来越多项目采用彼此组件以提高性能,整体技术栈可能会变得模块化。

由于 ZKP 研究领域发展迅速,在灵活性方面比直接实施最新结果更重要。为了保持灵活性,在 Powdr Labs 和 Risc Zero 等项目上合作开展交叉编译流水线工作,并尽可能实现模块化。

对于技术精通读者来说,请参考以下具体好处:

  • 我们可以通过优化编译器以针对不同后端目标进行优化,例如偏爱「高度门控」(high-degree gates)或使用更多查找参数;

  • 像 Keccak 和 Poseidon 哈希函数这样的加速电路可以作为库来实现;

  • 我们可以逐步将 ZK 功能(如 LogUp)添加到语言中,并启用相应的后端支持;

  • 集成新的 ZK 后端框架以变得更加快速,在一些研究导向的 ZK 项目中,只有概念验证是以代码形式开发的,这使得它们在生产环境中使用起来具有挑战性。通过让编译器承担重要工作,我们可以轻松地应用早期阶段的框架;

  • 现有的后端电路,例如使用 Halo2 编写的 PSE ZK-EVM 组件,仍然可以通过直接调用进行重复使用;

在合作努力下,Taiko 已经在开发过程中集成了 Risc Zero 的 zeth 和 ZK-VM,并为其开发了一个额外的 SGX 后端。Taiko 工程师还将把 Powdr 集成到多证明系统中、开发 PIL 语言和库、优化编译、增加更多后端,并进行一般低级别加速处理。在硬件层面上,Taiko 的零知识加速层(ZAL)旨在标准化证明系统(Halo2、Arkworks、Risc Zero、Polygon 等)与加速库(CPU、GPU、FPGA 等)之间的协作关系。

开放性

节点、证明系统和集成后端越多,开放性就越好,因此 Taiko 努力将整个社区聚集在一起,Taiko 团队与其他项目有着悠久的合作历史,例如,在 ZK-EVM 和 Risc Zero 上与 PSE 合作。

现在通过构建更模块化的 ZK 堆栈,Taiko 可以有效地对 API 进行抽象,以实现更好的普及和集成。Taiko 将作为一个平台,在生产中运送证明系统,并在链上进行实战测试。Taiko 真诚邀请所有项目加入,共同打造更好的零知识技术。

Taiko Stack

一个可扩展、灵活的基础设施对于 Taiko 的 multi-proof 范式至关重要。

ZK 有效性证明的来源是节点的状态日志(Execution Trace)和存储证明 (Storage Proofs),这些用于构建见证数据(witnesses)和公共输入。需要注意的是,witnesses 是特定于证明的,而公共输入则与协议相关。拥有强大的基础设施来处理 witnesses 生成非常重要。因此,我们使用一个轻量级主机从 Multi-Client 进行状态日志,并将其转换成多种 witness 提供给相应的证明系统。

在证明端,该设计支持模块化和整体式堆栈,同时我们从目标节点(当前为 Geth)中提取相同的公共输入。

在未来,如果状态日志格式兼容的话,Geth 作为 Taiko 节点可以被另一个节点替代。此外,运行在证明系统上(目前是 Reth)的轻节点也可以被编译成可接受汇编语言的任何实现所替代。

关键要点

  • Taiko 相信多重证明=Multi-Client + 多 SNARKs(以及像 SGX 这样的 TEE);

  • Taiko 协议非常适合 Multi-Client 系统,因为它有一个开放的 multi-proof 供应链,具有 type-1 执行,在 L1 上发布数据可用性;

  • Taiko 设想了一个具有模块化和开放性的 multi-proof 架构,与 Powdr Labs 合作利用节点和 ZKP 的交叉编译,并与 Risc Zero 合作,在他们的 ZK-VM 和 TEEs 上实现 Taiko 的执行,Taiko 还将继续努力与 PSE 改进 ZK-EVM 项目;

  • Taiko 的灵活基础设施包括模块化和单片式 ZKP 堆栈;

Subscribe to Foresight News
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.