以太坊储存路线图:挑战与机遇

作者:深潮来源:加密信息网讯2024-04-18

以太坊的储存需求不断增长,带来了巨大挑战,本文爬梳问题背后的原因,并提出解决方案、未来展望。本文源自 EthStorage 所著文章,由深潮整理、编译及撰稿。

背景

2023 年 10 月 22 日,著名的 Go-Ethereum(Geth)开发负责人 Péter Szilágyi 在 Twitter 上表达了他的深切担忧。他指出,虽然 Geth 客户端保留了所有历史资料,但 Nethermind 和 Besu 等其他以太坊客户端可以配置删除某些历史以太坊资料(例如历史区块和块头)。这使得所有客户端的行为不一致,并对 Geth 不公平。这引发了围绕以太坊路线图中以太坊储存问题的激烈讨论和辩论。

储存的挑战

为什么 Nethermind 和 Besu 选择停止储存历史资料?这一决定背后的问题是什么?从我们的角度来看,有两个主要原因:

  • 以太坊客户端的储存要求变得越来越高。
  • 储存以太坊历史资料没有任何协议内的激励或惩罚。

第一个原因源于执行以太坊客户端不断上升的储存需求。为了深入了解具体需求,下面的饼图展示了截至 2023 年 12 月 13 日第 18,779,761 块时一个新 Geth 节点的储存分布情况。

如图所示:

  • 总储存大小:925.39 GB
  • 历史资料(区块 / 交易收据):约 628.69 GB
  • Merkle Patricia Trie (MPT) 中的状态资料:约 269.74 GB

第二个原因是缺乏储存历史区块的协议内激励或惩罚。虽然该协议要求节点储存所有历史资料,但却未能提供任何机制来鼓励储存或惩罚违规的行为。节点储存和共享历史资料变得纯粹出于利他主义,客户端执行者可以自由地删除或修改所有历史资料,而不会受到任何惩罚。相比之下,Validator 节点必须在本地维护并更新完整的状态,以防止因提议 / 投票支援无效区块而导致的 Slash。

因此,当储存成本成为节点的重大负担时,一些节点运营商选择删除历史资料就不足为奇。在没有历史资料的情况下,节点客户端可以显著降低储存成本,将其从大约 1TB 减少到 300GB 左右。

随著即将到来的以太坊资料可用性(DA)升级,储存挑战将会加剧。全面扩容以太坊 DA 的道路始于 DenCun 升级中的 EIP-4844,它引入了一个固定大小的二进位制大物件 (BLOB) ,和一个被称为 blobGasPrice 的独立费用模型。每个 BLOB 设定为 128KB,EIP-4844 允许每个区块最多包含 6 个 BLOB。为了对资料吞吐量进行扩容,以太坊计划采用 1D Reed-Solomon 程式码,最初允许每个区块有 32 个 BLOB,并在完全扩容时达到每个区块 256 个 BLOB。

如果以太坊 DA 以全容量执行(每个块 256 个 BLOB),以太坊 DA 网路预计一年将接收大约 80TB 的 DA 资料,该数位远远超出大多数节点的储存能力。

以太坊储存路线图及其后果

不断上升的储存成本引起了以太坊生态研究人员的关注。为了解决这个问题并确保所有客户端的一致性,研究人员正在制定一些提案来明确删除历史的储存。两个主要提案是:

  1. EIP-4444:限制执行客户端中的历史资料:该提案允许客户端删除超过一年的历史区块。假设平均区块大小为 100K,历史块资料上限约为 250GB(100K * (3600 * 24 * 365) / 12,假设区块时间 = 12 秒)。
  2. EIP-4844:分片 BLOB 交易:EIP-4844 丢弃超过 18 天的 BLOB。 与 EIP-4444 相比,这是一种更激进的方法,将历史 BLOB 大小限制在 100GB 左右((18 * 3600 * 24) * 128K * 6 / 12,假设区块时间 = 12 秒)。

删除所有客户端的历史资料会产生什么后果? 主要的一个问题是新节点无法通过「full sync」模式来同步到最新状态,「full sync」是一种将交易从创世区块执行到最新区块的同步。相应地,我们必须采取「snap sync」或「state sync」来直接同步来自以太坊节点的最新状态。这种方法已在 Geth 中实现,并作为默认同步执行。

同样地,这个后果也适用于所有 L2,即 L2 的新节点无法通过重放 L2 创世到最新的 L2 区块,来完全同步以太坊 L2 创世的最新状态。此外,由于 L1 节点不维护 L2 状态,L2 的「snap sync」方法无法从 L1 中派生出最新的 L2 状态,这违反了继承以太坊安全保证的重要 L2 假设。预计的解决方案将依赖 Infura / Etherscan / L2 专案本身等第三方服务来储存历史 L2 资料或状态副本。这是通过协议外、间接激励实现的中心化的解决方案。

我们要探讨的核心问题是:

  • 我们能否在储存和访问方面找到更好的去中心化解决方案?
  • 是否有可能通过直接激励机制的、与以太坊一致的(例如,在 L1 合约之上)的解决方案?
  • 在这一切的基础上,我们是否可以为以太坊储存路线提供一种完全去中心化的、协议内直接激励的解决方案?

解决方案 1:以太坊 Portal 网路

以太坊 Portal 网路是一个轻量级、去中心化的访问网路,用于连线到以太坊协议。它提供例如 eth_call,eth_getBlockByNumber 等以太坊 JSON-RPC 介面,它将 JSON-RPC 请求转换为对分散式 hash 表(DHT) 的 P2P 请求,类似于 IPFS 网路。与允许储存任何资料型别且容易受到垃圾资料影响的 IPFS 不同,Portal P2P 网路专门托管以太坊资料,如历史区块头和区块交易资料。这是通过 Portal 网路内建的轻客户端验证技术来实现的。

Portal 网路的一个重要特性是其轻量级执行设计以及与资源受限装置的相容性。它可以执行在具有几兆储存空间和低记忆体的节点之上,从而促进去中心化。即使是手机或 Raspberry Pi 装置也有可能加入网路并有为以太坊资料的可用性做出贡献。

Portal 网路的开发与以太坊客户端多样性理念相一致,客户端采用 Rust、JavaScript 和 Nim 编写。信标网路和历史网路已可供使用,而状态网路正在积极开发中。值得注意的是,Portal 网路并不为资料储存提供直接激励——网路中的所有节点都是利他的方式执行的。

解决方案 2:EthStorage 网路

EthStorage 网路是一个去中心化的激励储存网路,专门用于储存 EIP-4844 BLOB,并获得 ESP 专案的资助。

  • 最小信任:与需要中心化资料桥的现有解决方案不同,EthStorage 依赖于以太坊的共识和无需许可的 EthStorage 储存节点的 1/m 信任模型。 储存 BLOB 的过程是这样的:使用者签署一个携带 BLOB 的交易,呼叫储存合约的 put(key, blob_idx) 方法。然后,储存合约将记录 BLOB hash在链上。之后储存提供商将直接从以太坊 DA 网路下载并储存 BLOB,从而绕过资料桥问题。
  • 储存成本与激励相一致:当呼叫 put() 方法时,交易必须传送储存费(通过 msg.value)并存入合约中。在成功链下储存节点提交并验证储存证明后,这个储存费用将随著时间的推移逐渐分配给储存节点。与现有的向出快者 (proposer) 支付一次性储存费的以太坊储存费模型相比,随著时间的推移支付的储存费遵循贴现现金流模型——假设随著时间的推移,储存成本将相对于 ETH 价格而降低。EthStorage 引入的这一重大创新使得费用和储存节点的储存贡献保持一致。
  • 储存证明:储存证明是受到资料可用性抽样的启发,而 EthStorage 中的取样是针对一段时间内的储存的 BLOB。为了有效地验证链上取样,EthStorage 充分利用了智慧合约和最新的 SNARK 技术发展。
  • 无许可操作:EthStorage 中的任何储存节点只要储存资料并定期在链上提交储存证明,都可以获得报酬。

从模组化区块链的角度来看,EthStorage 充当以太坊储存 L2,但它收取的是储存费而不是交易费。通过在链上索引 BLOB hash,EthStorage 是一个以太坊模组化储存层,提升储存可扩展套件性及降低成本(目标约为 1000 倍)。

在开发方面,EthStorage 已经与以太坊 Sepolia 测试网上的 EIP-4844 整合。我们已对 EthStorage 和以太坊 Sepolia 测试网进行压力测试,包括将大约数百 GB 的 BLOB 写入 EthStorage。超过 100 名社群参与者加入网路并成功证明了他们的本地储存。

EthStorage 网路的主要优势在于在以太坊之上提供去中心化的直接激励——就我们目前的知识而言,这是一项开创性的功能。然而,该网路的局限性在于它是专门为固定大小的 BLOB 而设计的。

展望未来

尽管以太坊储存还未受到主要关注,但其在以太坊生态系统中具有重要意义。随著以太坊网路的快速增长,以太坊资料的储存和可访问性成为关键挑战。Portal 网路和 EthStorage 网路还处于早期阶段,还有很多重要的长期的发展方向需要关注:

  • 去中心化低延迟访问的以太坊状态资料网路。以去中心化且可验证的方式访问以太坊状态是一项关键但具有挑战性的任务。使用传统的 DHT 网路模型,查询帐户资讯通常需要对储存在不同 P2P 节点中的内部 trie 节点进行多次查询。这往往会导致相当长时间的延迟。如何利用状态树的结构来加速访问是关键所在。以太坊 Portal 网路即将推出的状态网路,正是旨在解决这个问题。
  • Portal 网路与 EthStorage 网路的整合:Portal 网路可以无缝扩展套件以支援 BLOB 资料。EthStorage 团队已部分实现了这个功能。下一步进展,是将这些网路统一起来,提供一个去中心化 JSON-RPC 网路,能够通过合约来对 BLOBs 可程式设计访问。通过将合约中的应用逻辑与 EthStorage 提供的规模化 BLOB 储存相结合,我们可以在以太坊上启用新的 dApps,例如动态的去中心化网站(例如去中心化的 Twitter/YouTube/Wikipedia 等)。
  • 浏览器的去中心化访问:与访问 IPFS 网路中的资料的 ipfs:// 协议类似,web3 行业需要一个以太坊原生访问协议的来支援浏览器直接访问,以释放以太坊丰富资料的巨大潜力。这些资料涵盖了广泛的领域,从代币所有权和帐户余额到 NFT 影象和动态去中心化网站,所有这些都得益于智慧合约和未来以太坊储存的功能所实现。在这个领域,ERC-4804/6860 定义的 web3:// 协议目前正在积极开发和推广,以实现这一目标。
  • 动态大小资料的高阶储存证明:除了固定 BLOB 之外,探索高阶储存证明对于解决动态大小资料(例如历史区块甚至状态物件等)也势在必行。开发复杂的演算法可以增强储存解决方案的适应性。

在我们的追求中,我们希望通过这些努力,共同为以太坊路线图做出贡献,为未来以太坊生态系统的去中心化储存解决方案奠定基础。