Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ePBS] implement
UpdateVotesOnPayloadAttestation
(#14308)
* 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 <114795592+Redidacove@users.noreply.github.com> * 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 <terence@prysmaticlabs.com> * 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 <114795592+Redidacove@users.noreply.github.com> * 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 <terence@prysmaticlabs.com> * 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 <potuz@prysmaticlabs.com> * 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 <potuz@potuz.net> Co-authored-by: Potuz <potuz@prysmaticlabs.com> * 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 <potuz@potuz.net> * fix duplication in beacon-chain config * fix config tests * fix number of config params --------- Co-authored-by: Potuz <potuz@prysmaticlabs.com> Co-authored-by: terence <terence@prysmaticlabs.com> Co-authored-by: JihoonSong <jihoonsong@users.noreply.github.com> Co-authored-by: Md Amaan <114795592+Redidacove@users.noreply.github.com> Co-authored-by: Potuz <potuz@potuz.net>
- Loading branch information