-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Section-Bloom Control Optimization #6335
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@bladehan1 |
@bladehan1 > Recommended: Solution 2 (New independent config) For the solution2, if the user enabled jsonrpc API, but disabled the new added setting Beside, what's the default value of And maybe there also exists some other scenarios we need to talk about. But overall, I think adding a separate setting |
Data priority will be the default storage section-bloom, supporting eth_getLogs query, but compared to resource priority, the additional storage is about 1.7G per year. |
@bladehan1 Since the additional storage is about 1.7G per year. How about we just enable section-bloom and delete the configuration option. |
@waynercheung |
I think it's reasonable to set storage.writeSectionBloom's default value to true.Compared to the additional 1.7GB of resources required per year, users being unable to retrieve data when querying eth_getLogs is much worse. |
The 1.7GB annual storage increase poses minimal impact for light nodes (current baseline: ~60GB) – and is effectively negligible for full nodes. This justifies default enablement. |
Background
The current storage of
section-bloom
data is strongly coupled with the JSON-RPC interface toggle (node.jsonrpc.httpFullNodeEnable
), leading to the following issues:section-bloom
data generated during the disabled period cannot be recovered, causing permanent failures ineth_getLogs
queries.Data Status (as of 2025-05-29, Mainnet Block Height 72.6 million):
Annual growth: ~10 million new blocks, max theoretical increase: 2.4 GB;
Factoring in 25.4% compression, actual storage growth: ~1.79 GB/year.
Rationale
Why should this feature exist?
What are the use cases?
section-bloom
data for future analysis even when the JSON-RPC interface is disabled.storage.writeSectionBloom=false
) to save storage.eth_getLogs
results, unaffected by temporary configuration changes.Specification
Candidate Solutions Comparison
section-bloom
data unconditionallystorage.writeSectionBloom
(data toggle)eth_getFilterChanges
andeth_getLogs
eth_getFilterChanges
Missing historical data requires full sync recoverystorage.writeSectionBloom
+ legacy controleth_getFilterChanges
Test Specification
section-bloom
writes haltedeth_getLogs
returns existing dataeth_getFilterChanges
returns no datasection-bloom
writes haltedeth_getLogs
returns existing dataeth_getFilterChanges
returns dataScope Of Impact
BlockProcessor
)SectionBloomStore
)EthApi
)eth_getLogs
eth_getFilterLogs
eth_getFilterChanges
Implementation
Approach
Recommended: Solution 2 (New independent config), with steps:
Code Decoupling
Separate data write logic from interface control
Documentation Updates
Are you willing to implement this feature?
Yes. Willing to lead development.
Questions for community discussion:
storage.writeSectionBloom
default totrue
(data priority) orfalse
(resource priority)?The text was updated successfully, but these errors were encountered: