无状态验证提供了一种解决方案,允许节点在不存储完整状态的情况下验证区块。具体来说,每个区块附带一个见证,包括两个关键元素:区块访问的状态中具体位置的值(如代码、余额、存储)及这些值正确性的加密证明。要真正实现无状态验证,需要对以太坊当前的状态树结构进行更改。这一问题的根源在于 MPT 的两个弱点:其一是 MPT 是一个十六叉树,每个节点有 16 个子节点,这意味着在一个大小为 N 的树中,一个证明的大小平均为 120 * log2 (N) 字节,大约是 3840 字节(以一个有 2³² 项的树为例)。相比之下,如果使用二叉树,一个证明的大小将仅为 32 * log2 (N) 字节,大约 1024 字节。其二是账户代码未被 Merkelize(即没有被纳入 Merkle 树),这意味着要证明对账户代码的任何访问,都需要提供整个代码,代码的最大大小为 24000 字节。通过计算最坏的情况,一个区块可能需要验证的状态数据会产生巨大的数据量,这些数据量很难在一个时间槽内下载完毕。要缓解这个问题,有两个领先的解决方案:Verkle 树 和 STARKed 二叉哈希树。 目前,用于以太坊虚拟机(EVM)的有效性证明在两个方面还不够完善:安全性和证明生成时间。要实现安全的有效性证明,需要确保 SNARK(简洁非交互性知识论证)确实验证了 EVM 的计算,并且不存在任何漏洞。提升安全性的两种主要技术是多重证明器和形式验证。多重证明器意味着由多个独立编写的有效性证明实现来验证区块,类似于多客户端的做法,当足够多的这些实现验证通过时,客户端才接受一个区块。形式验证则使用诸如 Lean4 等数学定理证明工具,来证明有效性证明只接受符合底层 EVM 规范的正确执行(例如 EVM K 语义或以太坊执行层规范 EELS)。对于证明生成时间的要求是,任何以太坊区块的证明应能在 4 秒以内 生成。然而,当前的技术距离这一目标还有差距,尽管相比两年前已经取得了显著进展。要达到这个目标,我们需要在以下三个方向上取得进展:并行化、证明系统优化 及 EVM Gas 成本的变化。 现实情况下,距离以太坊共识的有效性证明实现还有数年时间。这大致与我们实现单槽终局性(single slot finality)、Orbit、签名算法的更改以及对激进哈希函数(如 Poseidon)的安全性分析所需的时间线相同。因此,最合理的做法是在处理这些其他问题时,同时考虑 STARK 友好性。主要的权衡可能在于操作顺序之间的选择,既可以采用一种更渐进的方式来逐步改革以太坊共识层,也可以选择一种更激进的多项变化同时进行的方式。对于 EVM 来说,渐进的方法是合理的,因为它可以将对向后兼容性的干扰最小化。而对于共识层来说,向后兼容性的问题较小,因此在重新思考信标链的结构细节以优化 SNARK 友好性方面,采取更整体的方式可能带来更多好处。【原文为英文】\n原文链接