EIP-5793: eth/68 - 在 tx 宣告中添加交易类型
将交易类型和交易大小添加到线路协议中的 tx 宣告消息中
Authors | Marius van der Wijden (@MariusVanDerWijden) |
---|---|
Created | 2022-10-18 |
Requires | EIP-2464, EIP-2481, EIP-4938 |
摘要
以太坊线路协议定义了用于在客户端之间交换数据的请求和响应消息。NewPooledTransactionHashes
消息宣告了节点中可用的交易。此 EIP 扩展了这个宣告消息,使得除了交易哈希之外,节点还发送交易类型及其大小(如 EIP-2718 中定义的那样)。
动机
NewPooledTransactionHashes
消息宣告交易哈希,允许对等方选择性地获取它尚未拥有的交易。
EIP-4844 为 blob 交易引入了一种新的交易类型。由于这些 blob 交易很大,因此天真地将它们广播到 sqrt(peers)
可能会显着增加带宽需求。将交易类型和大小添加到宣告消息将允许节点选择他们想要获取的交易,并允许他们根据过去的行为进行负载平衡或限制对等方。
添加的元数据字段还将启用未来的 - 无需升级的 - 协议调整,以防止某些交易类型(例如 blob 交易)或某些交易大小(例如 128KB+)被盲目地广播到许多对等方。仅强制执行宣告和按需检索将确保更可预测的网络行为,从而限制了交易传播 DoS 攻击的放大效应。
规范
修改 NewPooledTransactionHashes (0x08)
消息:
- (eth/67):
[hash_0: B_32, hash_1: B_32, ...]
- (eth/68):
[types: B, [size_0: P, size_1: P, ...], [hash_0: B_32, hash_1: B_32, ...]]
新的 types
元素指的是宣告的哈希的交易类型。请注意,交易类型被打包为“字节数组”而不是列表。
size_0
、size_1
等元素指的是宣告的哈希的交易大小。
原理
此更改将使 eth
协议在未来能够适应可能与所有节点无关的新交易类型。它可以让接收节点更好地控制从对等方获取的数据,并允许限制特定类型的下载。
types
消息元素是一个字节数组,因为此 EIP 的早期实现
错误地以这种方式实现了它。后来决定保持这种行为,以
最大限度地减少工作量。
向后兼容性
此 EIP 更改了 eth
协议,需要推出一个新版本 eth/68
。支持线路协议的多个版本是可能的。推出新版本不会立即中断较旧的客户端,因为它们可以继续使用协议版本 eth/67
。
此 EIP 不会更改 EVM 的共识规则,也不需要硬分叉。
安全考虑
无
版权
通过 CC0 放弃版权和相关权利。
Citation
Please cite this document as:
Marius van der Wijden (@MariusVanDerWijden), "EIP-5793: eth/68 - 在 tx 宣告中添加交易类型," Ethereum Improvement Proposals, no. 5793, October 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5793.