特别感谢Micah Zoltu、Toni Wahrstätter、Justin Traglia和pcaversaccio的讨论
增加L1 gas限制最常见的批评,除了对网络安全的担忧外,是它使运行完整节点变得更加困难。
尤其是在一个专注于解耦完整节点的路线图背景下,解决这个问题需要理解完整节点的目的。
历史上,人们认为完整节点是用于验证链;请参见这里了解如果普通用户无法验证可能发生的情况。如果这是唯一的问题,那么L1扩容就可以通过ZK-EVMs解锁:唯一的限制是保持区块构建和证明成本足够低,以便两者都能保持1-of-n抗审查并保持竞争性市场。
然而,现实中这并不是唯一的考虑。另一个主要的担忧是:拥有一个完整节点很有价值,因为你可以有一个本地RPC服务器,可以以无信任、抗审查和隐私友好的方式读取链。本文档将讨论对当前L1扩容路线图的调整,以实现这一目标。
为什么不以ZK-EVM + PIR实现无信任和隐私?
我上个月发布的隐私路线图专注于TEEs + ORAM作为短期补丁,以及PIR作为长期解决方案。这,加上Helios和ZK-EVM验证,将使任何用户连接到外部RPC并完全相信(i)他们获得的链是正确的,(ii)他们的数据隐私得到保护。因此,值得问这个问题:为什么要止步于此?这些先进的密码学解决方案是否不会使自托管节点成为过时的遗物?
对此,我可以给出几个回复:
- 完全无信任的密码学解决方案(即1服务器PIR)将会很昂贵。目前开销高得不切实际,即使经过许多效率改进,可能仍会保持高成本。
- 元数据隐私。哪个IP地址在什么时候发出请求,以及请求的模式本身就足以揭示关于用户的大量信息。
- 审查脆弱性:由少数RPC提供商主导的市场结构将面临强大的压力来取消平台或审查用户。许多RPC提供商已经排除了整个国家。
基于这些原因,继续确保更容易运行个人节点是有价值的。
短期重点
- 提高EIP-4444的全面推广,直到最终状态,每个节点仅存储约36天的数据。这大大减少了磁盘空间需求,这是阻止更多人运行节点的主要问题。之后,节点的磁盘空间需求将是(i)状态大小,(ii)状态Merkle分支,(iii)36天的历史。
- 构建分布式历史存储解决方案,每个节点可以存储超过截止日期的少量历史数据。使用擦除编码以最大化鲁棒性。这确保了"区块链永远存在"的特性,而不依赖于中心化提供商或给节点运营者带来沉重负担
- 调整gas定价,使存储更昂贵,执行更便宜。特别高优先级的是提高创建新状态的gas成本:(i) SSTORE用于新存储槽,(ii)合约代码创建,(iii)向尚未有余额或随机数的账户发送ETH。
中期重点:无状态验证
一旦我们启用无状态验证,就可以运行一个具有RPC功能的节点(即存储状态),而无需存储状态Merkle分支。这进一步将存储需求减少约2倍。
一种新型节点:部分无状态节点
这是一个新想法,对于在L1 gas限制增加10-100倍的情况下允许个人节点运行至关重要。
我们添加一种节点类型,它无状态地验证区块,并通过无状态验证或ZK-EVM验证整个链,并保持状态的一部分是最新的。只要所需数据在该状态子集内,节点就能响应RPC请求;其他请求将失败(或必须回退到外部托管的密码学解决方案;是否这样做应由用户选择)。
要保存的状态部分将取决于用户选择的配置。一些示例可能是:
- 除了已知为垃圾的合约外的所有状态
- 与所有外部拥有账户(EOA)和安全钱包(SCW)相关的状态,以及所有常用的ERC20和ERC721代币和应用
- 与过去两年内被访问的所有外部拥有账户和安全钱包相关的状态,一些常用的ERC20代币,以及有限的精选交换、DeFi和隐私应用
配置可以由链上合约管理:用户将使用--save_state_by_config 0x12345...67890运行他们的节点,该地址将以某种语言指定地址列表、存储槽或其他过滤的状态区域,节点将保存并保持最新。请注意,用户不需要保存Merkle分支;他们只需要保存原始值。
这种类型的节点将提供直接本地访问用户关心的状态的好处,以及对该状态访问的最大全隐私。




