-
Notifications
You must be signed in to change notification settings - Fork 1k
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
EIP-7549: attestation pool #14121
Merged
Merged
EIP-7549: attestation pool #14121
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
james-prysm
requested review from
potuz and
prestonvanloon
and removed request for
rauljordan
June 21, 2024 21:33
prestonvanloon
approved these changes
Jun 24, 2024
github-merge-queue
bot
removed this pull request from the merge queue due to failed status checks
Jun 24, 2024
github-merge-queue
bot
removed this pull request from the merge queue due to no response for status checks
Jun 25, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
Feature
What does this PR do? Why is it needed?
This PR produces necessary changes to the attestation pool in order to extend it to Electra.
Currently attestations are keyed in the pool using
[32]byte
, which is an HTR of anAttestation
/AttestationData
or a result of callinghash.Proto
on one of these two types. For all practical purposes, both HTR andhash.Proto
are interchangeable. In fact, this PR abandonshash.Proto
and uses HTR everywhere for uniformity.We want to separate Phase0 and Electra attestations so that we don't mix them together in operations. An obvious solution is to key by version on top of the hash. We create an
Id
type and use it as the key in all attestation maps.This is sufficient for hashing full attestations, but not for attestation data (at least not without some additional work). In Electra committee index is stored in a new
CommitteeBits
field and the committee index of attestation data is always0
. This means that two Electra attestations with a different committee index but the same (slot, beacon block root, source, target) tuple will have equal attestation data. To fix this, we make a copy of Electra attestation data in theNewId
constructor function, set its committee index to the value fromCommitteeBits
and hash that copy.Other than changes to how we key attestations, this PR extends the pool with two new functions:
AggregatedAttestationsBySlotIndexElectra
UnaggregatedAttestationsBySlotIndexElectra