Skip to content
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

Save LC Bootstrap DB Space Optimization #14775

Merged

Conversation

Inspector-Butters
Copy link
Contributor

What type of PR is this?
Feature

What does this PR do? Why is it needed?
This PR adds an optimization mechanism to the process of saving the LightClientBootstraps. It does this by storing the unique SyncCommittees in a separate bucket, and encoding the hash of the sync committee objects into the bootstrap objects while writing to DB.
This results in saving around 20x space for storing these objects. quick calculation:
previously in one period: 8192 blocks * 25KB per bootstrap = 205MB
now in one period: 8192 * 1.2KB per bootstrap + 24KB per period (syncCommittee) = 10MB

Which issues(s) does this PR fix?
Additionally, part of #12991

Other notes for review
Encoding the hash of the sync committee objects was chosen over the period number to not burden the kv package with the assumptions of the chain. If for any reason the sync committee changes mid period, this still works as expected.

@@ -35,9 +37,35 @@ func (s *Store) SaveLightClientBootstrap(ctx context.Context, blockRoot []byte,
_, span := trace.StartSpan(ctx, "BeaconDB.SaveLightClientBootstrap")
defer span.End()

bootstrapCopy, err := light_client.NewWrappedBootstrap(proto.Clone(bootstrap.Proto()))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are saving only the proto object, there is no need for light_client.NewWrappedBootstrap, you can set the sync committee to an empty one on the proto object directly.

rkapka
rkapka previously approved these changes Jan 9, 2025
@rkapka rkapka added this pull request to the merge queue Jan 9, 2025
Merged via the queue into prysmaticlabs:develop with commit e99df5e Jan 9, 2025
15 checks passed
@Inspector-Butters Inspector-Butters deleted the bootstrap-db-optimization branch January 28, 2025 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants