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

Payload Attestation Sync package changes #13989

Merged
merged 5 commits into from
Aug 8, 2024
Merged

Conversation

potuz
Copy link
Contributor

@potuz potuz commented May 12, 2024

This PR introduces the minimal changes needed to process payload attestation messages over the wire.

  • It includes the validator and the handler for the sync package
  • It includes a cache that keeps the aggregated PTC attestation as they come over the wire.
  • It does not include any wirings to libp2p (no topics are created and the handler and validator are not called yet)
  • It does not include tests in the sync package

The design of the cache is such that a single root is tracked, this is because PTC attestations over the wire are only useful for the current slot. Any attempt to add to the cache a new root removes the previous cache.

@potuz potuz requested a review from a team as a code owner May 12, 2024 11:51
@potuz potuz requested review from nalepae, rauljordan and james-prysm and removed request for a team May 12, 2024 11:51
Comment on lines 93 to 105
ptc, err := helpers.GetPayloadTimelinessCommittee(ctx, st, a.Data.Slot)
if err != nil {
return err
}
idx := slice.Index(ptc, a.ValidatorIndex)
if idx == -1 {
return errInvalidValidatorIndex
}
Copy link
Member

Choose a reason for hiding this comment

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

Why do we need to check if the validator belongs in a PTC again if this was already done in InPayloadTimelinessCommittee and in validatePayloadAttestation

Copy link
Contributor Author

Choose a reason for hiding this comment

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

because we need the index in the PTC, not the validator index.

beacon-chain/sync/payload_attestations.go Outdated Show resolved Hide resolved
beacon-chain/cache/payload_attestation.go Show resolved Hide resolved
beacon-chain/cache/payload_attestation.go Show resolved Hide resolved
Comment on lines 102 to 105
agg.AggregationBits.SetBitAt(idx, true)
sig, err := aggregateSigFromMessage(agg, att)
if err != nil {
return err
}
agg.Signature = sig
Copy link
Member

Choose a reason for hiding this comment

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

I know you assume that the signature is already verified, but a safer ordering might be the following, so you don't set it until everything passes. I don't see any downside here.

	sig, err := aggregateSigFromMessage(agg, att)
	if err != nil {
		return err
	}
	agg.Signature = sig
        agg.AggregationBits.SetBitAt(idx, true)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't understand, why is this safer? aggregateSigFromMessage does not check either.

Copy link
Member

Choose a reason for hiding this comment

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

My point is if aggregateSigFromMessage returns an error then AggregationBits is already set

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah but your code then will have a bug since you need to aggregate the incoming bit too.

beacon-chain/sync/payload_attestations.go Show resolved Hide resolved
@potuz potuz requested a review from prestonvanloon as a code owner May 14, 2024 11:24
@potuz potuz force-pushed the payload_attestation_sync branch from c66a6c9 to 918287f Compare May 14, 2024 11:25
@potuz potuz force-pushed the payload_attestation_sync branch 2 times, most recently from 936684a to 215ba50 Compare May 16, 2024 06:46
@potuz potuz force-pushed the payload_attestation_sync branch 3 times, most recently from d196aed to ed8f8ca Compare May 17, 2024 09:20
@potuz potuz force-pushed the epbs branch 2 times, most recently from 6a92bf8 to dfeeb86 Compare May 21, 2024 22:43
@potuz potuz force-pushed the payload_attestation_sync branch from ed8f8ca to f1c3e9b Compare May 22, 2024 14:01
@potuz potuz force-pushed the epbs branch 3 times, most recently from a97480c to 966e322 Compare May 24, 2024 19:14
@potuz potuz force-pushed the epbs branch 3 times, most recently from ef2ac39 to 996852c Compare July 10, 2024 11:56
@potuz potuz force-pushed the epbs branch 2 times, most recently from e2e05b5 to c299823 Compare July 15, 2024 20:49
@potuz potuz force-pushed the epbs branch 3 times, most recently from 8caca18 to ae49842 Compare August 6, 2024 16:51
@potuz potuz force-pushed the payload_attestation_sync branch from 1573c38 to 4478527 Compare August 7, 2024 12:40
@potuz potuz merged commit 02d34c0 into epbs Aug 8, 2024
15 of 16 checks passed
@potuz potuz deleted the payload_attestation_sync branch August 8, 2024 13:53
potuz added a commit that referenced this pull request Aug 13, 2024
* 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>
potuz added a commit that referenced this pull request Aug 14, 2024
* 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>
potuz added a commit that referenced this pull request Aug 14, 2024
* 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>
potuz added a commit that referenced this pull request Aug 27, 2024
* 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>
potuz added a commit that referenced this pull request Aug 29, 2024
* 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>
potuz added a commit that referenced this pull request Aug 29, 2024
* 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>
potuz added a commit that referenced this pull request Sep 13, 2024
* 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>
potuz added a commit that referenced this pull request Sep 18, 2024
* 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>
potuz added a commit that referenced this pull request Sep 26, 2024
* 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>
potuz added a commit that referenced this pull request Oct 7, 2024
* 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>
potuz added a commit that referenced this pull request Oct 14, 2024
* 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>
potuz added a commit that referenced this pull request Oct 16, 2024
* 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>
potuz added a commit that referenced this pull request Oct 22, 2024
* 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>
potuz added a commit that referenced this pull request Oct 28, 2024
* 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>
potuz added a commit that referenced this pull request Nov 1, 2024
* 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>
potuz added a commit that referenced this pull request Nov 4, 2024
* 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>
terencechain added a commit that referenced this pull request Dec 3, 2024
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ePBS EIP-7732
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants