-
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
Add payload attestation helper functions #14258
Add payload attestation helper functions #14258
Conversation
2972723
to
b299d38
Compare
get_payload_attesting_indices
and get_indexed_payload_attestation
@@ -41,3 +41,9 @@ message PayloadAttestationMessage { | |||
PayloadAttestationData data = 2; | |||
bytes signature = 3 [(ethereum.eth.ext.ssz_size) = "96"]; | |||
} | |||
|
|||
message IndexedPayloadAttestation { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IndexedPayloadAttestation
doesn't have to be a protobuf; it can be a native Go type. We only define something as a protobuf when we need SSZ functionality, like hash tree roots, but IndexedPayloadAttestation
doesn't require consensus.
domain, err := signing.Domain( | ||
state.Fork(), | ||
slots.ToEpoch(state.Slot()), | ||
params.BeaconConfig().DomainBeaconAttester, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the wrong domain
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, thank you
7e64ff5
to
473ef04
Compare
Hi @jihoonsong, there's only one function pending for helpers |
473ef04
to
8c5ba98
Compare
This PR is for those three functions as described. |
// Create 10 committees. Total 40960 validators. | ||
committeeCount := uint64(10) | ||
validatorCount := committeeCount * params.BeaconConfig().TargetCommitteeSize * uint64(params.BeaconConfig().SlotsPerEpoch) | ||
validators := make([]*ethpb.Validator, validatorCount) | ||
_, secretKeys, err := util.DeterministicDepositsAndKeys(validatorCount) | ||
require.NoError(t, err) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need this number of validators to test the Indexed payload attestation? This takes a long time ~30s on my laptop which is lengthy fo ra unit test
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a really good point! Modified it to create 350 validators. Can be reduced further if needed.
44ba1f7
to
fb8c836
Compare
fb8c836
to
55959c5
Compare
return nil, errPreEPBSState | ||
} | ||
|
||
ptc, err := GetPayloadTimelinessCommittee(context.Background(), state, slot) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should not be in the background, get a context here and pass it along
@@ -0,0 +1,32 @@ | |||
package eth |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be in the consensus-types
package and not in the proto directory
55959c5
to
13ad607
Compare
|
||
// Verify aggregate signature. | ||
publicKeys := make([]bls.PublicKey, len(indices)) | ||
validators := state.Validators() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is too expensive, please get the read only validator for each index without copying them all
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for pointing it out, modified it.
|
||
// Verify aggregate signature. | ||
publicKeys := make([]bls.PublicKey, len(indices)) | ||
validators := state.ValidatorsReadOnly() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This still allocates about a million pointers when you can have a maximum of 512 signatures in the attestation.
83a9a69
to
c2b7587
Compare
c2b7587
to
2ad81c7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add protos for ePBS except state * Add ePBS beacon state proto * ePBS configuration constants * Helper for Payload Attestation Signing (#13901) * Add ePBS stuff to consensus-types: block * Add testing utility methods to return randomly populated ePBS objects * Add ePBS to state (#13926) * Implement get_ptc This implements a helper to get the ptc committee from a state. It uses the cached beacon committees if possible It also implements a helper to compute the largest power of two of a uint64 and a helper to test for nil payload attestation messages * Add EPBS slashing params * Add ePBS to db (#13971) * Add ePBS to db * Fix GetPayloadTimelinessCommittee to return correct PTC size (#14012) * Change gwei math to primitives package for ePBS state * use Keymanager() in validator client * Add PTC assignment support for Duty endpoint (#14032) * Enable validator client to submit payload attestation message (#14064) * Remove inclusion list from epbs (#14188) * Modify `get_ptc` function to follow the Python spec (#14256) * Modify `get_ptc` function to follow the Python spec * Assign PTC members from the beginning of beacon committee array * Add `remove_flag` and its unit test (#14260) * Add `remove_flag` and its unit test * Add a test case trying to remove a flag that is not set * Ensure epbs state getters & setters check versions (#14276) * Ensure EPBS state getters and setters check versions * Rename to LatestExecutionPayloadHeaderEPBS * Add minimal beacon state * Use slot for latest message in forkchoice (#14279) * Add payload attestation helper functions (#14258) * Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators * Use BeaconCommittees helper to get the ptc (#14286) * Allow nodes with and without payload in forkchoice (#14288) * Allow nodes with and without payload in forkchoice This PR takes care of adding nodes to forkchoice that may or may not have a corresponding payload. The rationale is as follows - The node structure is kept almost the same as today. - A zero payload hash is considered as if the node was empty (except for the tree root) - When inserting a node we check what the right parent node would be depending on whether the parent had a payload or not. - For pre-epbs forks all nodes are full, no logic changes except a new steps to gather the parent hash that is needed for block insertion. This PR had to change some core consensus types and interfaces. - It removed the ROBlockEPBS interface and added the corresponding ePBS fields to the ReadOnlyBeaconBlockBody - It moved the setters and getters to epbs dedicated files. It also added a checker for `IsParentFull` on forkchoice that simply checks for the parent hash of the parent node. * review * Read only payload attestation message with Verifier (#14222) * Read only payload attestation message with verifier * Payload attestation tests (#14242) * Payload attestation in verification package * Feedback #1 --------- Co-authored-by: Md Amaan <[email protected]> * Broadcast signed execution payload header to peer (#14300) * Add `execution_payload` and `payload_attestation_message` topics (#14304) * Add `execution_payload` and `payload_attestation_message` topics * Set `SourcePubkey` to 48 bytes long * Add randomly populated `PayloadAttestationMessage` object * Add tests for `execution_payload` and `payload_attestation_message` topics * Indexed paylaod attestation test (#14299) * test-added * nil check fix * randomized inputs * hardcoded inputs * suggestions applied * minor-typo fixed * deleted * Process Execution Payload Envelope in Chain Service (#14295) Adds the processing of execution payload envelope Corrects the protos for attestations and slashings in Electra versions Adds generators of full blocks for Electra * Implement OnPayloadAttestationMessage; add setters and required fields * Update ptcVote from byte to primitives; update functions * Update fields in struct * fix lint error: unnecessary conversion * fix lint error: unnecessary conversion * organize code; move ptcVote to node from store * add check to avoid computation if the payload boost is already applied * cleanup * update code to loop over bitfield * fix deepsource errors * use preset value instead of .len() * Payload Attestation Sync package changes (#13989) * Payload Attestation Sync package changes * With verifier * change idx back to uint64 * subscribe to topic * add back error --------- Co-authored-by: terence tsao <[email protected]> * change the name of the function; Add comprehensive comments * Add comprehensive unit tests for updateVotes function * fix unused var * fix nits * only updateBoosts onDemand * handle potential equivocation * Add protos for ePBS except state * Add ePBS beacon state proto * ePBS configuration constants * Helper for Payload Attestation Signing (#13901) * Add ePBS stuff to consensus-types: block * Add testing utility methods to return randomly populated ePBS objects * Add ePBS to state (#13926) * Implement get_ptc This implements a helper to get the ptc committee from a state. It uses the cached beacon committees if possible It also implements a helper to compute the largest power of two of a uint64 and a helper to test for nil payload attestation messages * Add EPBS slashing params * Add ePBS to db (#13971) * Add ePBS to db * Fix GetPayloadTimelinessCommittee to return correct PTC size (#14012) * Change gwei math to primitives package for ePBS state * use Keymanager() in validator client * Add PTC assignment support for Duty endpoint (#14032) * Enable validator client to submit payload attestation message (#14064) * Remove inclusion list from epbs (#14188) * Modify `get_ptc` function to follow the Python spec (#14256) * Modify `get_ptc` function to follow the Python spec * Assign PTC members from the beginning of beacon committee array * Add `remove_flag` and its unit test (#14260) * Add `remove_flag` and its unit test * Add a test case trying to remove a flag that is not set * Ensure epbs state getters & setters check versions (#14276) * Ensure EPBS state getters and setters check versions * Rename to LatestExecutionPayloadHeaderEPBS * Add minimal beacon state * Use slot for latest message in forkchoice (#14279) * Add payload attestation helper functions (#14258) * Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators * Use BeaconCommittees helper to get the ptc (#14286) * Allow nodes with and without payload in forkchoice (#14288) * Allow nodes with and without payload in forkchoice This PR takes care of adding nodes to forkchoice that may or may not have a corresponding payload. The rationale is as follows - The node structure is kept almost the same as today. - A zero payload hash is considered as if the node was empty (except for the tree root) - When inserting a node we check what the right parent node would be depending on whether the parent had a payload or not. - For pre-epbs forks all nodes are full, no logic changes except a new steps to gather the parent hash that is needed for block insertion. This PR had to change some core consensus types and interfaces. - It removed the ROBlockEPBS interface and added the corresponding ePBS fields to the ReadOnlyBeaconBlockBody - It moved the setters and getters to epbs dedicated files. It also added a checker for `IsParentFull` on forkchoice that simply checks for the parent hash of the parent node. * review * Read only payload attestation message with Verifier (#14222) * Read only payload attestation message with verifier * Payload attestation tests (#14242) * Payload attestation in verification package * Feedback #1 --------- Co-authored-by: Md Amaan <[email protected]> * Broadcast signed execution payload header to peer (#14300) * Add `execution_payload` and `payload_attestation_message` topics (#14304) * Add `execution_payload` and `payload_attestation_message` topics * Set `SourcePubkey` to 48 bytes long * Add randomly populated `PayloadAttestationMessage` object * Add tests for `execution_payload` and `payload_attestation_message` topics * Indexed paylaod attestation test (#14299) * test-added * nil check fix * randomized inputs * hardcoded inputs * suggestions applied * minor-typo fixed * deleted * Process Execution Payload Envelope in Chain Service (#14295) Adds the processing of execution payload envelope Corrects the protos for attestations and slashings in Electra versions Adds generators of full blocks for Electra * Payload Attestation Sync package changes (#13989) * Payload Attestation Sync package changes * With verifier * change idx back to uint64 * subscribe to topic * add back error --------- Co-authored-by: terence tsao <[email protected]> * Add getter for payload attestation cache (#14328) * Add getter for payload attestation cache * Check against status * Feedback #1 * Initialize payload att message verfier in sync (#14323) * Enable validator client to sign execution header (#14333) * Enable validator client to sign execution header * Update proto/prysm/v1alpha1/validator-client/keymanager.proto --------- Co-authored-by: Potuz <[email protected]> * Process withdrawal (#14297) * process_withdrawal_fn and isParentfull test * suggestions applied * minor change * removed * lint * lint fix * removed Latestheader * test added with nil error * tests passing * IsParentNode Test added * lint * fix test * updated godoc * fix in godoc * comment removed * fixed braces * removed var * removed var * Update beacon-chain/core/blocks/withdrawals.go * Update beacon-chain/core/blocks/withdrawals_test.go * gazelle * test added and removed previous changes in Testprocesswithdrawal * added check for nil state * decrease chromatic complexity --------- Co-authored-by: Potuz <[email protected]> Co-authored-by: Potuz <[email protected]> * Update tests * undo changes * UpdateVote independent of timing; updatePayloadboosts if the block is early * fix deep source * remove timinng checks; move to onDemand payloadBoosts; update testCases for the changes * update errors and returns; update test cases for the changes * fix deep source errors * reduce cyclomatic complexity * gazelle fix * remove a comment Co-authored-by: Potuz <[email protected]> * fix duplication in beacon-chain config * fix config tests * fix number of config params --------- Co-authored-by: Potuz <[email protected]> Co-authored-by: terence <[email protected]> Co-authored-by: JihoonSong <[email protected]> Co-authored-by: Md Amaan <[email protected]> Co-authored-by: Potuz <[email protected]>
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add protos for ePBS except state * Add ePBS beacon state proto * ePBS configuration constants * Helper for Payload Attestation Signing (#13901) * Add ePBS stuff to consensus-types: block * Add testing utility methods to return randomly populated ePBS objects * Add ePBS to state (#13926) * Implement get_ptc This implements a helper to get the ptc committee from a state. It uses the cached beacon committees if possible It also implements a helper to compute the largest power of two of a uint64 and a helper to test for nil payload attestation messages * Add EPBS slashing params * Add ePBS to db (#13971) * Add ePBS to db * Fix GetPayloadTimelinessCommittee to return correct PTC size (#14012) * Change gwei math to primitives package for ePBS state * use Keymanager() in validator client * Add PTC assignment support for Duty endpoint (#14032) * Enable validator client to submit payload attestation message (#14064) * Remove inclusion list from epbs (#14188) * Modify `get_ptc` function to follow the Python spec (#14256) * Modify `get_ptc` function to follow the Python spec * Assign PTC members from the beginning of beacon committee array * Add `remove_flag` and its unit test (#14260) * Add `remove_flag` and its unit test * Add a test case trying to remove a flag that is not set * Ensure epbs state getters & setters check versions (#14276) * Ensure EPBS state getters and setters check versions * Rename to LatestExecutionPayloadHeaderEPBS * Add minimal beacon state * Use slot for latest message in forkchoice (#14279) * Add payload attestation helper functions (#14258) * Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators * Use BeaconCommittees helper to get the ptc (#14286) * Allow nodes with and without payload in forkchoice (#14288) * Allow nodes with and without payload in forkchoice This PR takes care of adding nodes to forkchoice that may or may not have a corresponding payload. The rationale is as follows - The node structure is kept almost the same as today. - A zero payload hash is considered as if the node was empty (except for the tree root) - When inserting a node we check what the right parent node would be depending on whether the parent had a payload or not. - For pre-epbs forks all nodes are full, no logic changes except a new steps to gather the parent hash that is needed for block insertion. This PR had to change some core consensus types and interfaces. - It removed the ROBlockEPBS interface and added the corresponding ePBS fields to the ReadOnlyBeaconBlockBody - It moved the setters and getters to epbs dedicated files. It also added a checker for `IsParentFull` on forkchoice that simply checks for the parent hash of the parent node. * review * Read only payload attestation message with Verifier (#14222) * Read only payload attestation message with verifier * Payload attestation tests (#14242) * Payload attestation in verification package * Feedback #1 --------- Co-authored-by: Md Amaan <[email protected]> * Broadcast signed execution payload header to peer (#14300) * Add `execution_payload` and `payload_attestation_message` topics (#14304) * Add `execution_payload` and `payload_attestation_message` topics * Set `SourcePubkey` to 48 bytes long * Add randomly populated `PayloadAttestationMessage` object * Add tests for `execution_payload` and `payload_attestation_message` topics * Indexed paylaod attestation test (#14299) * test-added * nil check fix * randomized inputs * hardcoded inputs * suggestions applied * minor-typo fixed * deleted * Process Execution Payload Envelope in Chain Service (#14295) Adds the processing of execution payload envelope Corrects the protos for attestations and slashings in Electra versions Adds generators of full blocks for Electra * Implement OnPayloadAttestationMessage; add setters and required fields * Update ptcVote from byte to primitives; update functions * Update fields in struct * fix lint error: unnecessary conversion * fix lint error: unnecessary conversion * organize code; move ptcVote to node from store * add check to avoid computation if the payload boost is already applied * cleanup * update code to loop over bitfield * fix deepsource errors * use preset value instead of .len() * Payload Attestation Sync package changes (#13989) * Payload Attestation Sync package changes * With verifier * change idx back to uint64 * subscribe to topic * add back error --------- Co-authored-by: terence tsao <[email protected]> * change the name of the function; Add comprehensive comments * Add comprehensive unit tests for updateVotes function * fix unused var * fix nits * only updateBoosts onDemand * handle potential equivocation * Add protos for ePBS except state * Add ePBS beacon state proto * ePBS configuration constants * Helper for Payload Attestation Signing (#13901) * Add ePBS stuff to consensus-types: block * Add testing utility methods to return randomly populated ePBS objects * Add ePBS to state (#13926) * Implement get_ptc This implements a helper to get the ptc committee from a state. It uses the cached beacon committees if possible It also implements a helper to compute the largest power of two of a uint64 and a helper to test for nil payload attestation messages * Add EPBS slashing params * Add ePBS to db (#13971) * Add ePBS to db * Fix GetPayloadTimelinessCommittee to return correct PTC size (#14012) * Change gwei math to primitives package for ePBS state * use Keymanager() in validator client * Add PTC assignment support for Duty endpoint (#14032) * Enable validator client to submit payload attestation message (#14064) * Remove inclusion list from epbs (#14188) * Modify `get_ptc` function to follow the Python spec (#14256) * Modify `get_ptc` function to follow the Python spec * Assign PTC members from the beginning of beacon committee array * Add `remove_flag` and its unit test (#14260) * Add `remove_flag` and its unit test * Add a test case trying to remove a flag that is not set * Ensure epbs state getters & setters check versions (#14276) * Ensure EPBS state getters and setters check versions * Rename to LatestExecutionPayloadHeaderEPBS * Add minimal beacon state * Use slot for latest message in forkchoice (#14279) * Add payload attestation helper functions (#14258) * Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators * Use BeaconCommittees helper to get the ptc (#14286) * Allow nodes with and without payload in forkchoice (#14288) * Allow nodes with and without payload in forkchoice This PR takes care of adding nodes to forkchoice that may or may not have a corresponding payload. The rationale is as follows - The node structure is kept almost the same as today. - A zero payload hash is considered as if the node was empty (except for the tree root) - When inserting a node we check what the right parent node would be depending on whether the parent had a payload or not. - For pre-epbs forks all nodes are full, no logic changes except a new steps to gather the parent hash that is needed for block insertion. This PR had to change some core consensus types and interfaces. - It removed the ROBlockEPBS interface and added the corresponding ePBS fields to the ReadOnlyBeaconBlockBody - It moved the setters and getters to epbs dedicated files. It also added a checker for `IsParentFull` on forkchoice that simply checks for the parent hash of the parent node. * review * Read only payload attestation message with Verifier (#14222) * Read only payload attestation message with verifier * Payload attestation tests (#14242) * Payload attestation in verification package * Feedback #1 --------- Co-authored-by: Md Amaan <[email protected]> * Broadcast signed execution payload header to peer (#14300) * Add `execution_payload` and `payload_attestation_message` topics (#14304) * Add `execution_payload` and `payload_attestation_message` topics * Set `SourcePubkey` to 48 bytes long * Add randomly populated `PayloadAttestationMessage` object * Add tests for `execution_payload` and `payload_attestation_message` topics * Indexed paylaod attestation test (#14299) * test-added * nil check fix * randomized inputs * hardcoded inputs * suggestions applied * minor-typo fixed * deleted * Process Execution Payload Envelope in Chain Service (#14295) Adds the processing of execution payload envelope Corrects the protos for attestations and slashings in Electra versions Adds generators of full blocks for Electra * Payload Attestation Sync package changes (#13989) * Payload Attestation Sync package changes * With verifier * change idx back to uint64 * subscribe to topic * add back error --------- Co-authored-by: terence tsao <[email protected]> * Add getter for payload attestation cache (#14328) * Add getter for payload attestation cache * Check against status * Feedback #1 * Initialize payload att message verfier in sync (#14323) * Enable validator client to sign execution header (#14333) * Enable validator client to sign execution header * Update proto/prysm/v1alpha1/validator-client/keymanager.proto --------- Co-authored-by: Potuz <[email protected]> * Process withdrawal (#14297) * process_withdrawal_fn and isParentfull test * suggestions applied * minor change * removed * lint * lint fix * removed Latestheader * test added with nil error * tests passing * IsParentNode Test added * lint * fix test * updated godoc * fix in godoc * comment removed * fixed braces * removed var * removed var * Update beacon-chain/core/blocks/withdrawals.go * Update beacon-chain/core/blocks/withdrawals_test.go * gazelle * test added and removed previous changes in Testprocesswithdrawal * added check for nil state * decrease chromatic complexity --------- Co-authored-by: Potuz <[email protected]> Co-authored-by: Potuz <[email protected]> * Update tests * undo changes * UpdateVote independent of timing; updatePayloadboosts if the block is early * fix deep source * remove timinng checks; move to onDemand payloadBoosts; update testCases for the changes * update errors and returns; update test cases for the changes * fix deep source errors * reduce cyclomatic complexity * gazelle fix * remove a comment Co-authored-by: Potuz <[email protected]> * fix duplication in beacon-chain config * fix config tests * fix number of config params --------- Co-authored-by: Potuz <[email protected]> Co-authored-by: terence <[email protected]> Co-authored-by: JihoonSong <[email protected]> Co-authored-by: Md Amaan <[email protected]> Co-authored-by: Potuz <[email protected]>
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
* Add `IndexedPayloadAttestation` container * Add `GetPayloadAttestingIndices` and its unit test * Add `GetIndexedPayloadAttestation` and its unit test * Add `is_valid_indexed_payload_attestation` and its unit test * Create a smaller set of validators for faster unit test * Pass context to `GetPayloadTimelinessCommittee` * Iterate `ValidatorsReadOnly` instead of copying all validators
What type of PR is this?
This PR adds three payload attestation helper functions and their unit tests:
get_payload_attesting_indices
,get_indexed_payload_attestation
, andis_valid_indexed_payload_attestation
.