跳转到主要内容
Change page

波特尔网络

以太坊是一个由运行以太坊客户端软件的计算机组成的网络。这些计算机中的每一台都被称为“节点”。客户端软件允许节点在以太坊网络上发送和接收数据,并根据以太坊协议规则验证数据。节点在其磁盘存储中保留大量历史数据,并在从网络上的其他节点接收到称为区块的新信息包时将其添加进去。这对于始终检查节点是否具有与网络其余部分一致的信息是必要的。这意味着运行节点可能要求大量的磁盘空间。一些节点操作也可能要求大量的 RAM。

为了解决这个磁盘存储问题,人们开发了“轻节点”,它们向全节点请求信息,而不是自己存储所有信息。然而,这意味着轻节点没有独立验证信息,而是信任另一个节点。这也意味着全节点被要求承担额外的工作来为这些轻节点提供服务。

波特尔网络是以太坊的一种新网络设计,旨在通过在整个网络中以小块形式共享必要的数据,解决“轻”节点的数据可用性问题,而无需信任全节点或给全节点带来额外压力。

更多关于节点和客户端的信息

为什么我们需要波特尔网络

以太坊节点存储它们自己的以太坊区块链的完整或部分副本。这个本地副本用于验证交易并确保节点遵循正确的链。这种本地存储的数据允许节点独立验证传入的数据是否有效和正确,而无需信任任何其他实体。

区块链的本地副本以及相关的状态和收据数据占用了节点硬盘上的大量空间。例如,建议使用 2TB 硬盘来运行与共识客户端配对的 Geth (opens in a new tab) 节点。使用快照同步(snap sync)时,仅存储相对较新的一组区块的链数据,Geth 通常占用约 650GB 的磁盘空间,但以每周约 14GB 的速度增长(你可以定期将节点修剪回 650GB)。

这意味着运行节点可能会很昂贵,因为必须为以太坊分配大量的磁盘空间。以太坊路线图上有几个解决此问题的方案,包括历史数据过期状态过期无状态。然而,这些方案可能还需要几年时间才能实现。还有一些轻节点,它们不保存自己的链数据副本,而是向全节点请求所需的数据。然而,这意味着轻节点必须信任全节点提供诚实的数据,同时也给必须提供轻节点所需数据的全节点带来了压力。

波特尔网络旨在为轻节点提供一种获取数据的替代方法,该方法不要求信任全节点,也不会显著增加全节点必须完成的工作。实现这一目标的方法是引入一种让以太坊节点在整个网络中共享数据的新方式。

波特尔网络是如何工作的?

以太坊节点有严格的协议来定义它们之间如何通信。执行客户端使用一组称为 devp2p 的子协议进行通信,而共识客户端使用称为 libp2p 的不同子协议栈。这些协议定义了可以在节点之间传递的数据类型。

devP2P and libP2P

节点还可以通过 JSON-RPC API 提供特定数据,这是应用程序和钱包与以太坊节点兑换信息的方式。然而,这些都不是为轻客户端提供数据的理想协议。

轻客户端目前无法通过 devp2p 或 libp2p 请求特定的链数据片段,因为这些协议仅设计用于实现链同步以及区块和交易的广播。轻客户端不想下载这些信息,因为这会使它们不再“轻”。

JSON-RPC API 也不是轻客户端数据请求的理想选择,因为它依赖于连接到可以提供数据的特定全节点或中心化 RPC 提供商。这意味着轻客户端必须信任该特定节点/提供商是诚实的,并且全节点可能必须处理来自许多轻客户端的大量请求,从而增加了它们的带宽要求。

波特尔网络的意义在于重新思考整个设计,专门为轻量化而构建,摆脱现有以太坊客户端的设计限制。

波特尔网络的核心思想是汲取当前网络堆栈的精华,通过使用 DHT (opens in a new tab)(分布式哈希表,类似于 Bittorrent)的轻量级 devp2p 风格的点对点去中心化网络,来提供轻客户端所需的信息,例如历史数据和当前链头的标识。

其理念是将以太坊全部历史数据的一小部分以及一些特定的节点职责添加到每个节点。然后,通过寻找存储所请求特定数据的节点并从中检索数据来满足请求。

这颠覆了轻节点寻找单个节点并要求其过滤和提供大量数据的常规模式;相反,它们快速过滤一个庞大的节点网络,其中每个节点只处理少量数据。

其目标是允许一个由轻量级波特尔客户端组成的去中心化网络能够:

  • 跟踪链头
  • 同步近期和历史链数据
  • 检索状态数据
  • 广播交易
  • 使用 EVM 执行交易

这种网络设计的好处是:

  • 减少对中心化提供商的依赖
  • 减少互联网带宽使用
  • 最小化或零同步
  • 资源受限的设备(<1 GB RAM,<100 MB 磁盘空间,1 个 CPU)也可访问

下表显示了波特尔网络可以提供的现有客户端的功能,使用户能够在资源非常有限的设备上访问这些功能。

波特尔网络

信标轻客户端状态网络交易广播历史数据网络规范交易指数
信标链轻客户端账户和合约存储轻量级内存池区块头TxHash > 哈希,指数
协议数据区块体
收据

默认的客户端多样性

波特尔网络开发人员还做出了一个设计选择,即从第一天起就构建四个独立的波特尔网络客户端。

波特尔网络客户端包括:

拥有多个独立的客户端实现增强了以太坊网络的弹性和去中心化。

如果一个客户端遇到问题或漏洞,其他客户端可以继续平稳运行,从而防止单点故障。此外,多样化的客户端实现促进了创新和竞争,推动了改进并降低了生态系统内的单一文化风险。

延伸阅读

页面最后更新: 2026年4月9日