Alert Source Discuss
🚧 Stagnant Standards Track: Core

EIP-6873: 原像保留

执行客户端必须保留前导分叉和 Verge 之间访问的地址和插槽的原像,直到 Verge 本身。

Authors Guillaume Ballet (@gballet)
Created 2023-04-14
Discussion Link https://ethereum-magicians.org/t/eip-6873-preimage-retention-in-the-fork-preceding-the-verge/15830

摘要

强制网络上的每个节点从前导分叉到 Verge 之间的时段收集原像,以防每个节点负责自己的转换。

规范

本文档中的关键词 “MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“NOT RECOMMENDED”,“MAY” 和 “OPTIONAL” 应按照 RFC 2119 和 RFC 8174 中的描述进行解释。

T_p 为前导分叉的时间戳,T_v 为 Verge 的时间戳。

  • EL 客户端必须保存它们在 T_pT_v 之间生成的所有区块的执行过程中,生成的每个地址和插槽哈希的原像

  • EL 客户端可以开始存储此时间范围之外的原像

  • 给定在 T_pT_v 之间生成的哈希,EL 客户端应该能够证明它们在其数据库中具有该哈希的原像

  • EL 客户端应该能够从公开可用的数据存储中下载在 T_v 之前生成的地址和插槽哈希的原像

理由

切换到 Verkle 树需要对所有树密钥进行完整的重新哈希。大多数执行客户端存储所有哈希的密钥,没有其原像,在发布时,这在主网上占用 70GB。为了使每个人都可以使用这些原像,每个用户都可以使用以下操作过程:

  • 启用原像保留的情况下重新启动完全同步
  • 以下载文件形式下载原像

第二种选择在实践中是唯一可接受的选择,因为完全同步要求同步机器离线几天,因此不应同时强加给整个网络。但是,文件下载会带来数据过时的问题,因为随着链的进行和访问新的地址,立即需要将新的原像添加到列表中。更新原像文件是不够的,因为下载超过 70GB 的数据需要超过一个插槽的时间。

为了保证在 Verkle 转换时间附近及时提供所有原像,因此每个节点负责更新前导分叉和 Verge 之间的原像列表。

向后兼容性

没有发现向后兼容性问题。

参考实现

所有客户端都已经实现了原像保留,至少作为一个选项。

安全注意事项

需要讨论。

版权

CC0 下放弃版权和相关权利。

Citation

Please cite this document as:

Guillaume Ballet (@gballet), "EIP-6873: 原像保留 [DRAFT]," Ethereum Improvement Proposals, no. 6873, April 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6873.