Alert Source Discuss
🚧 Stagnant Standards Track: Core

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.