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 节点多样性奠定基础。
为了为多重证明提供一个非常简单的理由,我们应该提到两点:
与以太坊的多节点实现类似,这种方法已经多次拯救了网络免于崩溃,证明了 L1 区块需要采用多重验证的方法。对于 ZK 和非 ZK 场景来说,这意味着需要使用多个节点和不同的证明系统。
正如 Vitalik 在他的文章《What might an「enshrined ZK-EVM」look like?》中描述的那样,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 协议中,Proposer 必须找到一个 Prover 来提出一个区块,并且被指定的 Prover,将存入 TKO 作为保证金,以确保自己交付的证明没有问题。Taiko 协议并没有规定 Proposer 如何找到和补偿 Prover,所以他们甚至可以亲自见面,并用现金进行交易。
因此我们的供应链运作就像一个自由市场一样,Proposer 可以选择任何他们喜欢的 Prover。
除了经济优势之外,还有一些技术特性使得 Taiko 成为 Multi-Client 系统的理想选择:
Taiko 在多个证明系统上运作,现有的测试网络已经支持 PSE 的 ZK-EVM、SGX 和 Reth。基础设施被配置为适应多个执行节点和证明系统,这将在最后一节中讨论。建立在这个基础设施之上,Taiko 在零知识证明方面将围绕模块化编译展开。
在零知识证明(ZKP)的背景下,考虑到 Multi-Client,Taiko 利用现代编译器获得通用组件,如 Risc-V 或 WASM。然后将这些指令转换为各种证明系统(AIR 或 PIL)的算术化表示,并最终使用不同的 SNARKs 对算术化执行轨迹进行编码。
简而言之,这个流程是在一个 multi-proof 系统中最可行的方法,因为它充分利用了两方面的优势。在节点编译过程中,现代编译器给我们带来以下好处:
SNARKs 编译是 Taiko 未来发展重点。请注意,在 PLONK 和 R1CS 等算术化方法与 Halo2、eSTARK 或 Supernova 等后端进行编码时,并不限制于单一 ZK 协议;而整体式 ZK-VM/EVM 则针对特定 ZKP 进行后端实现。随着越来越多项目采用彼此组件以提高性能,整体技术栈可能会变得模块化。
由于 ZKP 研究领域发展迅速,在灵活性方面比直接实施最新结果更重要。为了保持灵活性,在 Powdr Labs 和 Risc Zero 等项目上合作开展交叉编译流水线工作,并尽可能实现模块化。
对于技术精通读者来说,请参考以下具体好处:
在合作努力下,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 的 multi-proof 范式至关重要。
ZK 有效性证明的来源是节点的状态日志(Execution Trace)和存储证明 (Storage Proofs),这些用于构建见证数据(witnesses)和公共输入。需要注意的是,witnesses 是特定于证明的,而公共输入则与协议相关。拥有强大的基础设施来处理 witnesses 生成非常重要。因此,我们使用一个轻量级主机从 Multi-Client 进行状态日志,并将其转换成多种 witness 提供给相应的证明系统。
在证明端,该设计支持模块化和整体式堆栈,同时我们从目标节点(当前为 Geth)中提取相同的公共输入。
在未来,如果状态日志格式兼容的话,Geth 作为 Taiko 节点可以被另一个节点替代。此外,运行在证明系统上(目前是 Reth)的轻节点也可以被编译成可接受汇编语言的任何实现所替代。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。