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

*: integrating go-eth2-client@v0.21.1 #2986

Merged
merged 40 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
a3b8849
integrating go-eth2-client@v0.21.0 wip
pinebit Mar 22, 2024
ba4de18
removed unused code
pinebit Mar 22, 2024
a876a1c
corrected fetcher implementation
pinebit Mar 22, 2024
b91f271
fixed sigadd_test.go
pinebit Mar 22, 2024
ac9d461
fixed eth2wrap_test.go
pinebit Mar 22, 2024
d47e595
improved bcast_test.go
pinebit Mar 22, 2024
1a71ee2
fixed test and vmock
pinebit Mar 22, 2024
bd9fab3
dutydb to not serve builder duty
pinebit Mar 22, 2024
9bfc53c
removed leftovers
pinebit Mar 22, 2024
b69b6c7
unsinged data json serialization
pinebit Mar 25, 2024
a37e3bf
fixed ssz serialization
pinebit Mar 25, 2024
8c3cfaf
Deprecated DutyBuilderProposal usage
pinebit Mar 26, 2024
3f14735
Fixed linter issues
pinebit Mar 26, 2024
6b3958c
Fixed linter issues
pinebit Mar 26, 2024
ec098ae
Updated architecture.md
pinebit Mar 26, 2024
1d6ceee
Merge branch 'main' into pinebit/integrating-v3
pinebit Mar 26, 2024
db9906c
Added mockery and lazy_test.go
pinebit Mar 26, 2024
6574da9
Merge branch 'main' into pinebit/integrating-v3
pinebit Mar 26, 2024
7e85112
codecov to ignore mocks
pinebit Mar 26, 2024
27e8e1d
fixing flakey test
pinebit Mar 26, 2024
dd28585
improved test coverage for signeddata_test.go
pinebit Mar 26, 2024
ec9dd8c
bumped go-eth2-client to v0.21.1
pinebit Mar 27, 2024
2eb8ae7
added signed and unsigned data tests
pinebit Mar 27, 2024
f1b930b
workaround for ssz
pinebit Mar 27, 2024
2aa75ee
workaround for ssz
pinebit Mar 27, 2024
d587e0a
disabled integration tests with teku
pinebit Mar 27, 2024
721e528
ssz respecting blinded flag
pinebit Mar 27, 2024
4f2c374
improved test coverage
pinebit Mar 27, 2024
f67ae28
improved test coverage
pinebit Mar 27, 2024
a68ea76
improved test coverage
pinebit Mar 27, 2024
1de2c5d
improved test coverage
pinebit Mar 28, 2024
41b7755
improved test coverage
pinebit Mar 28, 2024
8e01adb
improved test coverage and updated docs
pinebit Mar 29, 2024
df5f70c
Addressed PR feedback
pinebit Apr 3, 2024
da588bf
Fixed spec compatibility issues
pinebit Apr 4, 2024
4cb7a83
Code refactoring
pinebit Apr 4, 2024
03cbf9a
Tracker: changed error level back to warning
pinebit Apr 4, 2024
fd10c0e
Merge branch 'main' into pinebit/integrating-v3
pinebit Apr 9, 2024
ae2ed1f
Merge branch 'main' into pinebit/integrating-v3
pinebit Apr 12, 2024
61eda91
Merge branch 'main' into pinebit/integrating-v3
pinebit May 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 14 additions & 46 deletions core/validatorapi/eth2types.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,7 @@ import (
"strconv"

eth2v1 "github.com/attestantio/go-eth2-client/api/v1"
eth2bellatrix "github.com/attestantio/go-eth2-client/api/v1/bellatrix"
eth2capella "github.com/attestantio/go-eth2-client/api/v1/capella"
eth2deneb "github.com/attestantio/go-eth2-client/api/v1/deneb"
"github.com/attestantio/go-eth2-client/spec/altair"
"github.com/attestantio/go-eth2-client/spec/bellatrix"
"github.com/attestantio/go-eth2-client/spec/capella"
eth2p0 "github.com/attestantio/go-eth2-client/spec/phase0"

"github.com/obolnetwork/charon/app/errors"
Expand Down Expand Up @@ -78,52 +73,24 @@ type proposerDutiesResponse struct {
ExecutionOptimistic bool `json:"execution_optimistic"`
}

type proposeBlockResponsePhase0 struct {
Version string `json:"version"`
Data *eth2p0.BeaconBlock `json:"data"`
}

type proposeBlockResponseAltair struct {
Version string `json:"version"`
Data *altair.BeaconBlock `json:"data"`
}

type proposeBlockResponseBellatrix struct {
Version string `json:"version"`
Data *bellatrix.BeaconBlock `json:"data"`
}

type proposeBlindedBlockResponseBellatrix struct {
Version string `json:"version"`
Data *eth2bellatrix.BlindedBeaconBlock `json:"data"`
}

type proposeBlindedBlockResponseCapella struct {
Version string `json:"version"`
Data *eth2capella.BlindedBeaconBlock `json:"data"`
}

type proposeBlindedBlockResponseDeneb struct {
Version string `json:"version"`
Data *eth2deneb.BlindedBeaconBlock `json:"data"`
}

type proposeBlockResponseCapella struct {
Version string `json:"version"`
Data *capella.BeaconBlock `json:"data"`
}

type proposeBlockResponseDeneb struct {
Version string `json:"version"`
Data *eth2deneb.BlockContents `json:"data"`
type proposeBlockV3Response struct {
ExecutionPayloadBlinded bool `json:"execution_payload_blinded"`
ExecutionPayloadValue string `json:"execution_payload_value"`
ConsensusBlockValue string `json:"consensus_block_value"`
Version string `json:"version"`
Data any `json:"data"`
}

type validatorsResponse struct {
Data []v1Validator `json:"data"`
ExecutionOptimistic bool `json:"execution_optimistic"`
Finalized bool `json:"finalized"`
Data []v1Validator `json:"data"`
}

type validatorResponse struct {
Data v1Validator `json:"data"`
ExecutionOptimistic bool `json:"execution_optimistic"`
Finalized bool `json:"finalized"`
Data v1Validator `json:"data"`
}

type aggregateBeaconCommitteeSelectionsJSON struct {
Expand Down Expand Up @@ -157,7 +124,8 @@ func (v v1Validator) MarshalJSON() ([]byte, error) {
// syncCommitteeDutiesResponse defines the response to the getSyncCommitteeDuties endpoint.
// See: https://ethereum.github.io/beacon-APIs/#/ValidatorRequiredApi/getSyncCommitteeDuties.
type syncCommitteeDutiesResponse struct {
Data []*eth2v1.SyncCommitteeDuty `json:"data"`
ExecutionOptimistic bool `json:"execution_optimistic"`
Data []*eth2v1.SyncCommitteeDuty `json:"data"`
}

// syncCommitteeContributionResponse defines the response to the syncCommitteeContribution endpoint.
Expand Down
139 changes: 65 additions & 74 deletions core/validatorapi/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -639,12 +639,7 @@

proposal := eth2Resp.Data

var proposedBlock any
if eth2Resp.Data.Blinded {
proposedBlock, err = createProposeBlindedBlockResponse(proposal)
} else {
proposedBlock, err = createProposeBlockResponse(proposal)
}
proposedBlock, err := createProposeBlockResponse(proposal)
if err != nil {
return nil, nil, err
}
Expand Down Expand Up @@ -682,92 +677,88 @@
return slot, randao, graffiti, err
}

// createProposeBlockResponse constructs proposeBlockResponse object for given block.
func createProposeBlockResponse(block *eth2api.VersionedProposal) (any, error) {
switch block.Version {
// createProposeBlockResponse constructs proposeBlockV3Response object for given block.
func createProposeBlockResponse(proposal *eth2api.VersionedProposal) (any, error) {
var (
version string
blockData any
)

switch proposal.Version {
case eth2spec.DataVersionPhase0:
if block.Phase0 == nil {
if proposal.Blinded {
return 0, errors.New("invalid blinded block")
gsora marked this conversation as resolved.
Show resolved Hide resolved
}
if proposal.Phase0 == nil {
return 0, errors.New("no phase0 block")
}

return proposeBlockResponsePhase0{
Version: eth2spec.DataVersionPhase0.String(),
Data: block.Phase0,
}, nil
version = eth2spec.DataVersionPhase0.String()
blockData = proposal.Phase0
case eth2spec.DataVersionAltair:
if block.Altair == nil {
if proposal.Blinded {
return 0, errors.New("invalid blinded block")
}

Check warning on line 701 in core/validatorapi/router.go

View check run for this annotation

Codecov / codecov/patch

core/validatorapi/router.go#L700-L701

Added lines #L700 - L701 were not covered by tests
if proposal.Altair == nil {
return 0, errors.New("no altair block")
}

return proposeBlockResponseAltair{
Version: eth2spec.DataVersionAltair.String(),
Data: block.Altair,
}, nil
version = eth2spec.DataVersionAltair.String()
blockData = proposal.Altair
case eth2spec.DataVersionBellatrix:
if block.Bellatrix == nil {
return 0, errors.New("no bellatrix block")
version = eth2spec.DataVersionBellatrix.String()
if proposal.Blinded {
if proposal.BellatrixBlinded == nil {
return 0, errors.New("no bellatrix blinded block")
}
blockData = proposal.BellatrixBlinded
} else {
if proposal.Bellatrix == nil {
return 0, errors.New("no bellatrix block")
}
blockData = proposal.Bellatrix
}

return proposeBlockResponseBellatrix{
Version: eth2spec.DataVersionBellatrix.String(),
Data: block.Bellatrix,
}, nil
case eth2spec.DataVersionCapella:
if block.Capella == nil {
return 0, errors.New("no capella block")
version = eth2spec.DataVersionCapella.String()
if proposal.Blinded {
if proposal.CapellaBlinded == nil {
return 0, errors.New("no capella blinded block")
}
blockData = proposal.CapellaBlinded
} else {
if proposal.Capella == nil {
return 0, errors.New("no capella block")
}
blockData = proposal.Capella
}

return proposeBlockResponseCapella{
Version: eth2spec.DataVersionCapella.String(),
Data: block.Capella,
}, nil
case eth2spec.DataVersionDeneb:
if block.Deneb == nil {
return 0, errors.New("no deneb block")
version = eth2spec.DataVersionDeneb.String()
if proposal.Blinded {
if proposal.DenebBlinded == nil {
return 0, errors.New("no deneb blinded block")
}
blockData = proposal.DenebBlinded
} else {
if proposal.Deneb == nil {
return 0, errors.New("no deneb block")
}
blockData = proposal.Deneb
}

return proposeBlockResponseDeneb{
Version: eth2spec.DataVersionDeneb.String(),
Data: block.Deneb,
}, nil
default:
return 0, errors.New("invalid block")
}
}

// createProposeBlindedBlockResponse constructs proposeBlindedBlockResponse object for given block.
func createProposeBlindedBlockResponse(block *eth2api.VersionedProposal) (any, error) {
switch block.Version {
case eth2spec.DataVersionBellatrix:
if block.BellatrixBlinded == nil {
return nil, errors.New("no bellatrix blinded block")
if proposal.Blinded {
return 0, errors.New("invalid blinded block")

Check warning on line 749 in core/validatorapi/router.go

View check run for this annotation

Codecov / codecov/patch

core/validatorapi/router.go#L749

Added line #L749 was not covered by tests
}

return proposeBlindedBlockResponseBellatrix{
Version: eth2spec.DataVersionBellatrix.String(),
Data: block.BellatrixBlinded,
}, nil
case eth2spec.DataVersionCapella:
if block.CapellaBlinded == nil {
return nil, errors.New("no capella blinded block")
}

return proposeBlindedBlockResponseCapella{
Version: eth2spec.DataVersionCapella.String(),
Data: block.CapellaBlinded,
}, nil
case eth2spec.DataVersionDeneb:
if block.DenebBlinded == nil {
return nil, errors.New("no deneb blinded block")
}

return proposeBlindedBlockResponseDeneb{
Version: eth2spec.DataVersionDeneb.String(),
Data: block.DenebBlinded,
}, nil
default:
return nil, errors.New("invalid blinded block")
return 0, errors.New("invalid block")
}

return proposeBlockV3Response{
Version: version,
Data: blockData,
ExecutionPayloadBlinded: proposal.Blinded,
ExecutionPayloadValue: proposal.ExecutionValue.String(),
ConsensusBlockValue: proposal.ConsensusValue.String(),
}, nil
}

func submitProposal(p eth2client.ProposalSubmitter) handlerFunc {
Expand Down
Loading
Loading