EIP-7542: eth/70 - available-blocks-extended 协议
在握手中添加更多关于可用区块范围的信息,并添加消息类型来请求区块范围并发送它们
Authors | Ahmad Bitar (@smartprogrammer93) <smartprogrammer@windowslive.com> |
---|---|
Created | 2023-10-21 |
Discussion Link | https://ethereum-magicians.org/t/eip-eth-70-available-blocks-extended-protocol-handshake/16188 |
Requires | EIP-7642 |
摘要
本 EIP 的目的是引入一种方法,允许以太坊节点通信其可用的区块范围。通过了解节点可以服务的区块范围,对等节点可以在选择从谁请求区块或连接到谁时做出更明智的决定,尤其是在寻找特定区块范围时。这可以带来更有效的网络行为。
本 EIP 建议扩展以太坊线协议(eth
)握手,引入一个新版本 eth/70
,其中将包含关于节点可以服务的区块范围的信息。此外,它通过两种新的消息类型扩展了协议,以便在请求时共享更新的区块范围。
动机
在 EIP-4444 的第一阶段,一些节点仍然需要服务于链的历史数据,而另一些节点可能对开始修剪它感兴趣。目前,节点需要连接到对等节点并请求特定的区块,以确定对等节点是否具有所请求的数据。这可能效率低下,导致不必要的数据请求,并浪费带宽和时间。因此,此更改使仍然希望从网络检索历史数据的节点能够有效地执行此操作。
作为奖励,此更改通过允许节点确定对等节点(可能仍在同步过程中)是否具有必要的可用区块来提高同步效率,从而避免不必要的区块请求和潜在的空响应。
规范
- 在
eth/70
处公布一个新的eth
协议功能(版本)。- 旧的
eth/69
协议应保持并行运行,直到eth/70
被实现者充分采用。
- 旧的
- 修改
eth/70
的Status (0x00)
消息,在forkid
之后添加一个额外的blockRange
字段:- 当前
eth/69
的数据包:[version: P, networkid: P, blockhash: B_32, genesis: B_32, forkid]
- 新的
eth/70
数据包:[version: P, networkid: P, blockhash: B_32, genesis: B_32, forkid blockRange]
, 其中blockRange
是[startBlock: uint64, endBlock: uint64]
。
- 当前
- 引入两种新的消息类型:
RequestBlockRange (0x0b)
- 来自节点的消息,用于请求对等节点的当前区块范围。SendBlockRange (0x0c): [startBlock: uint64, endBlock: uint64]
- 对RequestBlockRange
的响应,通知请求节点对等节点当前的可用区块范围。
使用 eth/70
连接后,节点应交换 Status
消息。之后,他们可以使用 RequestBlockRange
和 SendBlockRange
消息来随时了解对等节点区块范围的变化。
节点必须保持连接,无论对等节点的可用区块范围如何,但有一个例外,如果节点的对等节点插槽已满,并且缺少与具有必要区块范围的对等节点的连接,则它可能会断开连接以寻找此类对等节点。
理由
在 eth
握手中包含可用的区块范围可以立即了解对等节点的功能。这可以带来更有效的网络连接,因为节点可以根据它们需要的数据来确定连接的优先级。
引入新的消息类型是为了允许节点从其他节点请求更新的可用区块范围,因为该范围可能会因节点同步或修剪区块而发生变化。
维持与没有所需范围的对等节点的连接可确保网络弹性,而例外情况则有助于在对等节点容量已满的情况下实现有效的区块同步。
向后兼容性
此 EIP 以向后不兼容的方式扩展了 eth
协议握手,并建议引入一个新版本 eth/70
。但是,devp2p
允许同一线协议的多个版本同时运行。因此,尚未更新的节点可以继续使用旧版本,如 eth/69
、eth/68
或 eth/67
。
此 EIP 不影响共识引擎,也不需要硬分叉。
测试用例
测试将包括确保节点可以正确地通信和理解握手期间的区块范围信息。此外,它将包括确保节点可以在请求时正确地请求和共享更新的区块范围。
安全考虑
在实施替代历史区块存储解决方案之前,此更改不是历史区块存储和服务的标准化。
版权
在 CC0 下放弃版权及相关权利。
Citation
Please cite this document as:
Ahmad Bitar (@smartprogrammer93) <smartprogrammer@windowslive.com>, "EIP-7542: eth/70 - available-blocks-extended 协议 [DRAFT]," Ethereum Improvement Proposals, no. 7542, October 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7542.