EIP-7668: 移除布隆过滤器
从执行块中移除布隆过滤器
Authors | Vitalik Buterin (@vbuterin) |
---|---|
Created | 2024-03-31 |
Discussion Link | https://ethereum-magicians.org/t/eip-7653-remove-bloom-filters/19447 |
摘要
要求执行块中的布隆过滤器(包括顶层和收据对象中)为空。
动机
最初引入日志是为了让应用程序能够记录关于链上事件的信息,去中心化应用程序(dapps)可以轻松查询这些信息。通过使用布隆过滤器,dapps 可以快速浏览历史记录,识别出包含与其应用程序相关的日志的少量区块,然后快速识别出哪些单独的交易包含它们需要的日志。
但在实践中,这种机制太慢了。几乎所有访问历史记录的 dapps 最终都不是通过对以太坊节点的 RPC 调用(甚至是远程托管的节点),而是通过中心化的链外服务来实现的。
本 EIP 提议承认这一现实,并从协议中移除布隆过滤器。需要历史查询的应用程序将被鼓励开发和使用去中心化的协议,这些协议使用例如 ZK-SNARKs 和增量可验证计算来创建可证明的日志索引。
规范
现在要求执行块的日志布隆为空(即 0 字节长)。现在要求交易收据的日志布隆为空(即 0 字节长)。
理由
这是一种对客户端处理布隆的需求进行最小化破坏的方式。未来的 EIP 可以在以后通过完全删除此字段以及其他已弃用的字段来进行清理。
LOG 的 Gas 成本没有降低,因为虽然不再需要考虑污染布隆过滤器的外部性,但由于 ZK-SNARK EVM 实现的需求,哈希的成本增加了。
向后兼容性
依赖布隆过滤器来读取事件的应用程序将停止工作。今天很少有应用程序依赖此功能,因为在当前的 Gas 限制下,误报率非常高,并且在漫长的历史查询中处理日志的速度非常慢,特别是对于轻客户端(此功能的主要目的是使他们受益)。
安全考虑
由于没有引入或降低任何新功能的成本,因此不会引起安全问题。
版权
在 CC0 下放弃版权和相关权利。
Citation
Please cite this document as:
Vitalik Buterin (@vbuterin), "EIP-7668: 移除布隆过滤器 [DRAFT]," Ethereum Improvement Proposals, no. 7668, March 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7668.