From c9f2a022e600e4425c9426441fa89d750f7b51ff Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 4 Apr 2024 13:59:04 -0500 Subject: [PATCH 01/28] Begin to add Electra support --- common/types.go | 21 ++++++++- common/types_spec.go | 71 ++++++++++++++++++++++++++---- common/utils.go | 36 ++++++++++----- go.mod | 16 ++++--- go.sum | 24 +++++----- services/api/service.go | 97 ++++++++++++++++++++++++++++++++++++----- services/api/utils.go | 11 +++++ 7 files changed, 225 insertions(+), 51 deletions(-) diff --git a/common/types.go b/common/types.go index 0cb139be..38fb4231 100644 --- a/common/types.go +++ b/common/types.go @@ -12,6 +12,7 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" boostSsz "github.com/flashbots/go-boost-utils/ssz" @@ -55,6 +56,7 @@ var ( ForkVersionStringBellatrix = "bellatrix" ForkVersionStringCapella = "capella" ForkVersionStringDeneb = "deneb" + ForkVersionStringElectra = "electra" ) type EthNetworkDetails struct { @@ -64,11 +66,13 @@ type EthNetworkDetails struct { BellatrixForkVersionHex string CapellaForkVersionHex string DenebForkVersionHex string + ElectraForkVersionHex string DomainBuilder phase0.Domain DomainBeaconProposerBellatrix phase0.Domain DomainBeaconProposerCapella phase0.Domain DomainBeaconProposerDeneb phase0.Domain + DomainBeaconProposerElectra phase0.Domain } func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error) { @@ -77,10 +81,12 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error var bellatrixForkVersion string var capellaForkVersion string var denebForkVersion string + var electraForkVersion string var domainBuilder phase0.Domain var domainBeaconProposerBellatrix phase0.Domain var domainBeaconProposerCapella phase0.Domain var domainBeaconProposerDeneb phase0.Domain + var domainBeaconProposerElectra phase0.Domain switch networkName { case EthNetworkHolesky: @@ -137,6 +143,11 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error return nil, err } + domainBeaconProposerElectra, err = ComputeDomain(boostSsz.DomainTypeBeaconProposer, electraForkVersion, genesisValidatorsRoot) + if err != nil { + return nil, err + } + return &EthNetworkDetails{ Name: networkName, GenesisForkVersionHex: genesisForkVersion, @@ -148,6 +159,7 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error DomainBeaconProposerBellatrix: domainBeaconProposerBellatrix, DomainBeaconProposerCapella: domainBeaconProposerCapella, DomainBeaconProposerDeneb: domainBeaconProposerDeneb, + DomainBeaconProposerElectra: domainBeaconProposerElectra, }, nil } @@ -160,10 +172,12 @@ func (e *EthNetworkDetails) String() string { BellatrixForkVersionHex: %s, CapellaForkVersionHex: %s, DenebForkVersionHex: %s, + ElectraForkVersionHex: %s, DomainBuilder: %x, DomainBeaconProposerBellatrix: %x, DomainBeaconProposerCapella: %x, DomainBeaconProposerDeneb: %x + DomainBeaconProposerElectra: %x }`, e.Name, e.GenesisForkVersionHex, @@ -171,10 +185,12 @@ func (e *EthNetworkDetails) String() string { e.BellatrixForkVersionHex, e.CapellaForkVersionHex, e.DenebForkVersionHex, + e.ElectraForkVersionHex, e.DomainBuilder, e.DomainBeaconProposerBellatrix, e.DomainBeaconProposerCapella, - e.DomainBeaconProposerDeneb) + e.DomainBeaconProposerDeneb, + e.DomainBeaconProposerElectra) } type PubkeyHex string @@ -414,6 +430,7 @@ type BlockSubmissionInfo struct { Blobs []deneb.Blob BlobGasUsed uint64 ExcessBlobGas uint64 + Exits []*electra.ExecutionLayerExit } /* @@ -425,6 +442,8 @@ which is sufficient data to set the bid of the builder. The `Transactions` and `Withdrawals` fields are required to construct the full SignedBeaconBlock and are parsed asynchronously. +TODO(JWT): Does this need to be updated? It hasn't been updated for Deneb. + Header only layout: [000-236) = Message (236 bytes) [236-240) = offset1 ( 4 bytes) diff --git a/common/types_spec.go b/common/types_spec.go index 1e3ae491..ac291621 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -7,14 +7,17 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiCapella "github.com/attestantio/go-builder-client/api/capella" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApiV1 "github.com/attestantio/go-builder-client/api/v1" builderSpec "github.com/attestantio/go-builder-client/spec" eth2Api "github.com/attestantio/go-eth2-client/api" eth2ApiV1Capella "github.com/attestantio/go-eth2-client/api/v1/capella" eth2ApiV1Deneb "github.com/attestantio/go-eth2-client/api/v1/deneb" + eth2ApiV1Electra "github.com/attestantio/go-eth2-client/api/v1/electra" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/flashbots/go-boost-utils/bls" "github.com/flashbots/go-boost-utils/ssz" @@ -253,6 +256,15 @@ type denebBuilderBlockValidationRequestJSON struct { ParentBeaconBlockRoot string `json:"parent_beacon_block_root"` } +type electraBuilderBlockValidationRequestJSON struct { + Message *builderApiV1.BidTrace `json:"message"` + ExecutionPayload *electra.ExecutionPayload `json:"execution_payload"` + BlobsBundle *builderApiDeneb.BlobsBundle `json:"blobs_bundle"` + Signature string `json:"signature"` + RegisteredGasLimit uint64 `json:"registered_gas_limit,string"` + ParentBeaconBlockRoot string `json:"parent_beacon_block_root"` +} + func (r *BuilderBlockValidationRequest) MarshalJSON() ([]byte, error) { switch r.Version { //nolint:exhaustive case spec.DataVersionCapella: @@ -271,6 +283,15 @@ func (r *BuilderBlockValidationRequest) MarshalJSON() ([]byte, error) { RegisteredGasLimit: r.RegisteredGasLimit, ParentBeaconBlockRoot: r.ParentBeaconBlockRoot.String(), }) + case spec.DataVersionElectra: + return json.Marshal(&electraBuilderBlockValidationRequestJSON{ + Message: r.Electra.Message, + ExecutionPayload: r.Electra.ExecutionPayload, + BlobsBundle: r.Electra.BlobsBundle, + Signature: r.Electra.Signature.String(), + RegisteredGasLimit: r.RegisteredGasLimit, + ParentBeaconBlockRoot: r.ParentBeaconBlockRoot.String(), + }) default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", r.Version)) } @@ -286,6 +307,8 @@ func (r *VersionedSubmitBlockRequest) MarshalSSZ() ([]byte, error) { return r.Capella.MarshalSSZ() case spec.DataVersionDeneb: return r.Deneb.MarshalSSZ() + case spec.DataVersionElectra: + return r.Electra.MarshalSSZ() default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", r.Version)) } @@ -293,14 +316,18 @@ func (r *VersionedSubmitBlockRequest) MarshalSSZ() ([]byte, error) { func (r *VersionedSubmitBlockRequest) UnmarshalSSZ(input []byte) error { var err error - + electraRequest := new(builderApiElectra.SubmitBlockRequest) + if err = electraRequest.UnmarshalSSZ(input); err == nil { + r.Version = spec.DataVersionElectra + r.Electra = electraRequest + return nil + } denebRequest := new(builderApiDeneb.SubmitBlockRequest) if err = denebRequest.UnmarshalSSZ(input); err == nil { r.Version = spec.DataVersionDeneb r.Deneb = denebRequest return nil } - capellaRequest := new(builderApiCapella.SubmitBlockRequest) if err = capellaRequest.UnmarshalSSZ(input); err == nil { r.Version = spec.DataVersionCapella @@ -316,6 +343,8 @@ func (r *VersionedSubmitBlockRequest) HashTreeRoot() (phase0.Root, error) { return r.Capella.HashTreeRoot() case spec.DataVersionDeneb: return r.Deneb.HashTreeRoot() + case spec.DataVersionElectra: + return r.Electra.HashTreeRoot() case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: fallthrough default: @@ -329,6 +358,8 @@ func (r *VersionedSubmitBlockRequest) MarshalJSON() ([]byte, error) { return json.Marshal(r.Capella) case spec.DataVersionDeneb: return json.Marshal(r.Deneb) + case spec.DataVersionElectra: + return json.Marshal(r.Electra) default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", r.Version)) } @@ -336,13 +367,18 @@ func (r *VersionedSubmitBlockRequest) MarshalJSON() ([]byte, error) { func (r *VersionedSubmitBlockRequest) UnmarshalJSON(input []byte) error { var err error + electraRequest := new(builderApiElectra.SubmitBlockRequest) + if err = json.Unmarshal(input, electraRequest); err == nil { + r.Version = spec.DataVersionElectra + r.Electra = electraRequest + return nil + } denebRequest := new(builderApiDeneb.SubmitBlockRequest) if err = json.Unmarshal(input, denebRequest); err == nil { r.Version = spec.DataVersionDeneb r.Deneb = denebRequest return nil } - capellaRequest := new(builderApiCapella.SubmitBlockRequest) if err = json.Unmarshal(input, capellaRequest); err == nil { r.Version = spec.DataVersionCapella @@ -362,6 +398,8 @@ func (r *VersionedSignedProposal) MarshalSSZ() ([]byte, error) { return r.Capella.MarshalSSZ() case spec.DataVersionDeneb: return r.Deneb.MarshalSSZ() + case spec.DataVersionElectra: + return r.Electra.MarshalSSZ() default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", r.Version)) } @@ -369,13 +407,18 @@ func (r *VersionedSignedProposal) MarshalSSZ() ([]byte, error) { func (r *VersionedSignedProposal) UnmarshalSSZ(input []byte) error { var err error + electraRequest := new(eth2ApiV1Electra.SignedBlockContents) + if err = electraRequest.UnmarshalSSZ(input); err == nil { + r.Version = spec.DataVersionElectra + r.Electra = electraRequest + return nil + } denebRequest := new(eth2ApiV1Deneb.SignedBlockContents) if err = denebRequest.UnmarshalSSZ(input); err == nil { r.Version = spec.DataVersionDeneb r.Deneb = denebRequest return nil } - capellaRequest := new(capella.SignedBeaconBlock) if err = capellaRequest.UnmarshalSSZ(input); err == nil { r.Version = spec.DataVersionCapella @@ -391,6 +434,8 @@ func (r *VersionedSignedProposal) MarshalJSON() ([]byte, error) { return json.Marshal(r.Capella) case spec.DataVersionDeneb: return json.Marshal(r.Deneb) + case spec.DataVersionElectra: + return json.Marshal(r.Electra) default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", r.Version)) } @@ -398,14 +443,18 @@ func (r *VersionedSignedProposal) MarshalJSON() ([]byte, error) { func (r *VersionedSignedProposal) UnmarshalJSON(input []byte) error { var err error - + electraContents := new(eth2ApiV1Electra.SignedBlockContents) + if err = json.Unmarshal(input, electraContents); err == nil { + r.Version = spec.DataVersionElectra + r.Electra = electraContents + return nil + } denebContents := new(eth2ApiV1Deneb.SignedBlockContents) if err = json.Unmarshal(input, denebContents); err == nil { r.Version = spec.DataVersionDeneb r.Deneb = denebContents return nil } - capellaBlock := new(capella.SignedBeaconBlock) if err = json.Unmarshal(input, capellaBlock); err == nil { r.Version = spec.DataVersionCapella @@ -425,6 +474,8 @@ func (r *VersionedSignedBlindedBeaconBlock) MarshalJSON() ([]byte, error) { return json.Marshal(r.Capella) case spec.DataVersionDeneb: return json.Marshal(r.Deneb) + case spec.DataVersionElectra: + return json.Marshal(r.Electra) default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", r.Version)) } @@ -432,14 +483,18 @@ func (r *VersionedSignedBlindedBeaconBlock) MarshalJSON() ([]byte, error) { func (r *VersionedSignedBlindedBeaconBlock) UnmarshalJSON(input []byte) error { var err error - + electraBlock := new(eth2ApiV1Electra.SignedBlindedBeaconBlock) + if err = json.Unmarshal(input, electraBlock); err == nil { + r.Version = spec.DataVersionElectra + r.Electra = electraBlock + return nil + } denebBlock := new(eth2ApiV1Deneb.SignedBlindedBeaconBlock) if err = json.Unmarshal(input, denebBlock); err == nil { r.Version = spec.DataVersionDeneb r.Deneb = denebBlock return nil } - capellaBlock := new(eth2ApiV1Capella.SignedBlindedBeaconBlock) if err = json.Unmarshal(input, capellaBlock); err == nil { r.Version = spec.DataVersionCapella diff --git a/common/utils.go b/common/utils.go index 8f48c45c..3d1cae14 100644 --- a/common/utils.go +++ b/common/utils.go @@ -16,8 +16,8 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/deneb" "github.com/attestantio/go-eth2-client/spec/phase0" ethcommon "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -227,16 +227,21 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if err != nil { return nil, err } - // TODO (deneb): after deneb fork error if no blob fields - var ( - blobs []deneb.Blob - blobGasUsed uint64 - excessBlobGas uint64 - ) - if submission.Version == spec.DataVersionDeneb { - blobs = submission.Deneb.BlobsBundle.Blobs - blobGasUsed = submission.Deneb.ExecutionPayload.BlobGasUsed - excessBlobGas = submission.Deneb.ExecutionPayload.ExcessBlobGas + blobs, err := submission.Blobs() + if err != nil { + return nil, err + } + blobGasUsed, err := submission.BlobGasUsed() + if err != nil { + return nil, err + } + excessBlobGas, err := submission.ExcessBlobGas() + if err != nil { + return nil, err + } + exits, err := submission.Exits() + if submission.Version >= spec.DataVersionElectra && err != nil { + return nil, err } return &BlockSubmissionInfo{ BidTrace: bidTrace, @@ -253,6 +258,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm Blobs: blobs, BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, + Exits: exits, }, nil } @@ -271,6 +277,14 @@ func GetBlockSubmissionExecutionPayload(submission *VersionedSubmitBlockRequest) BlobsBundle: submission.Deneb.BlobsBundle, }, }, nil + case spec.DataVersionElectra: + return &builderApi.VersionedSubmitBlindedBlockResponse{ + Version: spec.DataVersionElectra, + Electra: &builderApiElectra.ExecutionPayloadAndBlobsBundle{ + ExecutionPayload: submission.Electra.ExecutionPayload, + BlobsBundle: submission.Electra.BlobsBundle, + }, + }, nil case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: return nil, ErrInvalidForkVersion } diff --git a/go.mod b/go.mod index e929d30c..2660e19b 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.31.0 github.com/attestantio/go-builder-client v0.4.3-0.20240124194555-d44db06f45fa - github.com/attestantio/go-eth2-client v0.19.9 + github.com/attestantio/go-eth2-client v0.21.1 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 @@ -91,7 +91,7 @@ require ( github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/ferranbt/fastssz v0.1.3 github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -105,9 +105,9 @@ require ( github.com/yuin/gopher-lua v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect - golang.org/x/crypto v0.18.0 // indirect - golang.org/x/net v0.18.0 // indirect - golang.org/x/sys v0.16.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.18.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -121,3 +121,9 @@ retract ( v1.0.0-alpha2 v1.0.0-alpha1 ) + +// git clone git@github.com:jtraglia/go-eth2-client.git -b electra +replace github.com/attestantio/go-eth2-client => ../../jtraglia/go-eth2-client + +// git clone git@github.com:jtraglia/go-builder-client.git -b electra +replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-client diff --git a/go.sum b/go.sum index 5f93eefd..689d028f 100644 --- a/go.sum +++ b/go.sum @@ -23,10 +23,6 @@ github.com/alicebob/miniredis/v2 v2.31.0/go.mod h1:UB/T2Uztp7MlFSDakaX1sTXUv5CAS github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/attestantio/go-builder-client v0.4.3-0.20240124194555-d44db06f45fa h1:Kj6d1tXAA+EAi7fK8z8NakBEpY4WYzZMuCmLZjwBpTM= -github.com/attestantio/go-builder-client v0.4.3-0.20240124194555-d44db06f45fa/go.mod h1:e02i/WO4fjs3/u9oIZEjiC8CK1Qyxy4cpiMMGKx4VqQ= -github.com/attestantio/go-eth2-client v0.19.9 h1:g5LLX3X7cLC0KS0oai/MtxBOZz3U3QPIX5qryYMxgVE= -github.com/attestantio/go-eth2-client v0.19.9/go.mod h1:TTz7YF6w4z6ahvxKiHuGPn6DbQn7gH6HPuWm/DEQeGE= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -269,8 +265,8 @@ github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= -github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -478,8 +474,8 @@ golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= @@ -512,8 +508,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -560,11 +556,11 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff --git a/services/api/service.go b/services/api/service.go index af88bc2a..b619f120 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -142,6 +142,7 @@ type payloadAttributesHelper struct { withdrawalsRoot phase0.Root parentBeaconRoot *phase0.Root payloadAttributes beaconclient.PayloadAttributes + exitsRoot phase0.Root } // Data needed to issue a block validation request. @@ -187,6 +188,7 @@ type RelayAPI struct { genesisInfo *beaconclient.GetGenesisResponse capellaEpoch int64 denebEpoch int64 + electraEpoch int64 proposerDutiesLock sync.RWMutex proposerDutiesResponse *[]byte // raw http response @@ -412,8 +414,9 @@ func (api *RelayAPI) StartServer() (err error) { return err } - api.denebEpoch = -1 api.capellaEpoch = -1 + api.denebEpoch = -1 + api.electraEpoch = -1 for _, fork := range forkSchedule.Data { log.Infof("forkSchedule: version=%s / epoch=%d", fork.CurrentVersion, fork.Epoch) switch fork.CurrentVersion { @@ -421,6 +424,8 @@ func (api *RelayAPI) StartServer() (err error) { api.capellaEpoch = int64(fork.Epoch) case api.opts.EthNetDetails.DenebForkVersionHex: api.denebEpoch = int64(fork.Epoch) + case api.opts.EthNetDetails.ElectraForkVersionHex: + api.electraEpoch = int64(fork.Epoch) } } @@ -550,6 +555,10 @@ func (api *RelayAPI) isDeneb(slot uint64) bool { return hasReachedFork(slot, api.denebEpoch) } +func (api *RelayAPI) isElectra(slot uint64) bool { + return hasReachedFork(slot, api.electraEpoch) +} + func (api *RelayAPI) startValidatorRegistrationDBProcessor() { for valReg := range api.validatorRegC { err := api.datastore.SaveValidatorRegistration(valReg) @@ -1570,12 +1579,32 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) "numTx": len(txs), "blockNumber": blockNumber, }) - // deneb specific logging - if getPayloadResp.Deneb != nil { + if getPayloadResp.Version >= spec.DataVersionDeneb { + blobs, err := getPayloadResp.Blobs() + if err != nil { + log.WithError(err).Info("failed to get blobs") + } + blobGasUsed, err := getPayloadResp.BlobGasUsed() + if err != nil { + log.WithError(err).Info("failed to get blobGasUsed") + } + excessBlobGas, err := getPayloadResp.ExcessBlobGas() + if err != nil { + log.WithError(err).Info("failed to get excessBlobGas") + } + log = log.WithFields(logrus.Fields{ + "numBlobs": len(blobs), + "blobGasUsed": blobGasUsed, + "excessBlobGas": excessBlobGas, + }) + } + if getPayloadResp.Version >= spec.DataVersionElectra { + exits, err := getPayloadResp.Exits() + if err != nil { + log.WithError(err).Info("failed to get exits") + } log = log.WithFields(logrus.Fields{ - "numBlobs": len(getPayloadResp.Deneb.BlobsBundle.Blobs), - "blobGasUsed": getPayloadResp.Deneb.ExecutionPayload.BlobGasUsed, - "excessBlobGas": getPayloadResp.Deneb.ExecutionPayload.ExcessBlobGas, + "numExecutionLayerExits": len(exits), }) } log.Info("execution payload delivered") @@ -1652,16 +1681,36 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log } } + if hasReachedFork(submission.BidTrace.Slot, api.electraEpoch) { // Electra requires correct exits + exitsRoot, err := ComputeExitsRoot(submission.Exits) + if err != nil { + log.WithError(err).Warn("could not compute exits root from payload") + api.RespondError(w, http.StatusBadRequest, "could not compute withdrawals root") + return attrs, false + } + + if exitsRoot != attrs.exitsRoot { + msg := fmt.Sprintf("incorrect exits root - got: %s, expected: %s", exitsRoot.String(), attrs.exitsRoot.String()) + log.Info(msg) + api.RespondError(w, http.StatusBadRequest, msg) + return attrs, false + } + } + return attrs, true } func (api *RelayAPI) checkSubmissionSlotDetails(w http.ResponseWriter, log *logrus.Entry, headSlot uint64, payload *common.VersionedSubmitBlockRequest, submission *common.BlockSubmissionInfo) bool { + if api.isElectra(submission.BidTrace.Slot) && payload.Electra == nil { + log.Info("rejecting submission - non electra payload for electra fork") + api.RespondError(w, http.StatusBadRequest, "not electra payload") + return false + } if api.isDeneb(submission.BidTrace.Slot) && payload.Deneb == nil { log.Info("rejecting submission - non deneb payload for deneb fork") api.RespondError(w, http.StatusBadRequest, "not deneb payload") return false } - if api.isCapella(submission.BidTrace.Slot) && payload.Capella == nil { log.Info("rejecting submission - non capella payload for capella fork") api.RespondError(w, http.StatusBadRequest, "not capella payload") @@ -1932,12 +1981,36 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque "payloadBytes": len(requestPayloadBytes), "isLargeRequest": isLargeRequest, }) - // deneb specific logging - if payload.Deneb != nil { + if payload.Version >= spec.DataVersionDeneb { + blobs, err := payload.Blobs() + if err != nil { + api.RespondError(w, http.StatusBadRequest, err.Error()) + return + } + blobGasUsed, err := payload.BlobGasUsed() + if err != nil { + api.RespondError(w, http.StatusBadRequest, err.Error()) + return + } + excessBlobGas, err := payload.ExcessBlobGas() + if err != nil { + api.RespondError(w, http.StatusBadRequest, err.Error()) + return + } + log = log.WithFields(logrus.Fields{ + "numBlobs": len(blobs), + "blobGasUsed": blobGasUsed, + "excessBlobGas": excessBlobGas, + }) + } + if payload.Version >= spec.DataVersionElectra { + exits, err := payload.Exits() + if err != nil { + api.RespondError(w, http.StatusBadRequest, err.Error()) + return + } log = log.WithFields(logrus.Fields{ - "numBlobs": len(payload.Deneb.BlobsBundle.Blobs), - "blobGasUsed": payload.Deneb.ExecutionPayload.BlobGasUsed, - "excessBlobGas": payload.Deneb.ExecutionPayload.ExcessBlobGas, + "numExecutionLayerExits": len(exits), }) } diff --git a/services/api/utils.go b/services/api/utils.go index b0ad0281..e08661e5 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -2,12 +2,14 @@ package api import ( "fmt" + "github.com/attestantio/go-eth2-client/spec/electra" builderApi "github.com/attestantio/go-builder-client/api" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/phase0" eth2UtilCapella "github.com/attestantio/go-eth2-client/util/capella" + eth2UtilElectra "github.com/attestantio/go-eth2-client/util/electra" "github.com/flashbots/go-boost-utils/bls" "github.com/flashbots/go-boost-utils/utils" "github.com/flashbots/mev-boost-relay/common" @@ -20,6 +22,7 @@ var ( ErrUnsupportedPayload = errors.New("unsupported payload version") ErrNoWithdrawals = errors.New("no withdrawals") + ErrNoExits = errors.New("no execution layer exits") ErrPayloadMismatch = errors.New("beacon-block and payload version mismatch") ErrHeaderHTRMismatch = errors.New("beacon-block and payload header mismatch") ErrBlobMismatch = errors.New("beacon-block and payload blob contents mismatch") @@ -49,6 +52,14 @@ func ComputeWithdrawalsRoot(w []*capella.Withdrawal) (phase0.Root, error) { return withdrawals.HashTreeRoot() } +func ComputeExitsRoot(e []*electra.ExecutionLayerExit) (phase0.Root, error) { + if e == nil { + return phase0.Root{}, ErrNoExits + } + exits := eth2UtilElectra.ExecutionPayloadExits{Exits: e} + return exits.HashTreeRoot() +} + func EqBlindedBlockContentsToBlockContents(bb *common.VersionedSignedBlindedBeaconBlock, payload *builderApi.VersionedSubmitBlindedBlockResponse) error { if bb.Version != payload.Version { return errors.Wrap(ErrPayloadMismatch, fmt.Sprintf("beacon block version %d does not match payload version %d", bb.Version, payload.Version)) From 9b69d6109c8905ecc290eef8a20d1320e8167ee4 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 4 Apr 2024 15:15:41 -0500 Subject: [PATCH 02/28] Add electra fork versions & fix tests --- common/types.go | 10 ++++++++++ common/utils.go | 6 +++--- services/api/optimistic_test.go | 1 + services/api/service.go | 10 ++++++++-- services/api/service_test.go | 5 +++++ 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/common/types.go b/common/types.go index 38fb4231..ee4a2d35 100644 --- a/common/types.go +++ b/common/types.go @@ -53,6 +53,11 @@ var ( DenebForkVersionGoerli = "0x04001020" DenebForkVersionMainnet = "0x04000000" + ElectraForkVersionHolesky = "0x06017000" + ElectraForkVersionSepolia = "0x90000074" + ElectraForkVersionGoerli = "0x05001020" + ElectraForkVersionMainnet = "0x05000000" + ForkVersionStringBellatrix = "bellatrix" ForkVersionStringCapella = "capella" ForkVersionStringDeneb = "deneb" @@ -95,30 +100,35 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error bellatrixForkVersion = BellatrixForkVersionHolesky capellaForkVersion = CapellaForkVersionHolesky denebForkVersion = DenebForkVersionHolesky + electraForkVersion = ElectraForkVersionHolesky case EthNetworkSepolia: genesisForkVersion = GenesisForkVersionSepolia genesisValidatorsRoot = GenesisValidatorsRootSepolia bellatrixForkVersion = BellatrixForkVersionSepolia capellaForkVersion = CapellaForkVersionSepolia denebForkVersion = DenebForkVersionSepolia + electraForkVersion = ElectraForkVersionSepolia case EthNetworkGoerli: genesisForkVersion = GenesisForkVersionGoerli genesisValidatorsRoot = GenesisValidatorsRootGoerli bellatrixForkVersion = BellatrixForkVersionGoerli capellaForkVersion = CapellaForkVersionGoerli denebForkVersion = DenebForkVersionGoerli + electraForkVersion = ElectraForkVersionGoerli case EthNetworkMainnet: genesisForkVersion = GenesisForkVersionMainnet genesisValidatorsRoot = GenesisValidatorsRootMainnet bellatrixForkVersion = BellatrixForkVersionMainnet capellaForkVersion = CapellaForkVersionMainnet denebForkVersion = DenebForkVersionMainnet + electraForkVersion = ElectraForkVersionMainnet case EthNetworkCustom: genesisForkVersion = os.Getenv("GENESIS_FORK_VERSION") genesisValidatorsRoot = os.Getenv("GENESIS_VALIDATORS_ROOT") bellatrixForkVersion = os.Getenv("BELLATRIX_FORK_VERSION") capellaForkVersion = os.Getenv("CAPELLA_FORK_VERSION") denebForkVersion = os.Getenv("DENEB_FORK_VERSION") + electraForkVersion = os.Getenv("ELECTRA_FORK_VERSION") default: return nil, fmt.Errorf("%w: %s", ErrUnknownNetwork, networkName) } diff --git a/common/utils.go b/common/utils.go index 3d1cae14..fbb6099c 100644 --- a/common/utils.go +++ b/common/utils.go @@ -228,15 +228,15 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm return nil, err } blobs, err := submission.Blobs() - if err != nil { + if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } blobGasUsed, err := submission.BlobGasUsed() - if err != nil { + if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } excessBlobGas, err := submission.ExcessBlobGas() - if err != nil { + if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } exits, err := submission.Exits() diff --git a/services/api/optimistic_test.go b/services/api/optimistic_test.go index bb3a5eda..b2631af5 100644 --- a/services/api/optimistic_test.go +++ b/services/api/optimistic_test.go @@ -464,6 +464,7 @@ func TestBuilderApiSubmitNewBlockOptimistic(t *testing.T) { backend.relay.optimisticSlot.Store(tc.slot) backend.relay.capellaEpoch = 1 backend.relay.denebEpoch = 2 + backend.relay.electraEpoch = 3 backend.relay.proposerDutiesMap[tc.slot] = backend.relay.proposerDutiesMap[slot] randaoHash, err := utils.HexToHash(randao) diff --git a/services/api/service.go b/services/api/service.go index b619f120..b63a37a2 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -433,9 +433,15 @@ func (api *RelayAPI) StartServer() (err error) { // log warning that deneb epoch was not found in CL fork schedule, suggest CL upgrade log.Info("Deneb epoch not found in fork schedule") } + if api.electraEpoch == -1 { + // log warning that electra epoch was not found in CL fork schedule, suggest CL upgrade + log.Info("Electra epoch not found in fork schedule") + } // Print fork version information - if hasReachedFork(currentSlot, api.denebEpoch) { + if hasReachedFork(currentSlot, api.electraEpoch) { + log.Infof("electra fork detected (currentEpoch: %d / electraEpoch: %d)", common.SlotToEpoch(currentSlot), api.electraEpoch) + } else if hasReachedFork(currentSlot, api.denebEpoch) { log.Infof("deneb fork detected (currentEpoch: %d / denebEpoch: %d)", common.SlotToEpoch(currentSlot), api.denebEpoch) } else if hasReachedFork(currentSlot, api.capellaEpoch) { log.Infof("capella fork detected (currentEpoch: %d / capellaEpoch: %d)", common.SlotToEpoch(currentSlot), api.capellaEpoch) @@ -1685,7 +1691,7 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log exitsRoot, err := ComputeExitsRoot(submission.Exits) if err != nil { log.WithError(err).Warn("could not compute exits root from payload") - api.RespondError(w, http.StatusBadRequest, "could not compute withdrawals root") + api.RespondError(w, http.StatusBadRequest, "could not compute exits root") return attrs, false } diff --git a/services/api/service_test.go b/services/api/service_test.go index d267c8ee..3cf62870 100644 --- a/services/api/service_test.go +++ b/services/api/service_test.go @@ -446,6 +446,7 @@ func TestBuilderSubmitBlock(t *testing.T) { backend.relay.headSlot.Store(headSlot) backend.relay.capellaEpoch = 0 backend.relay.denebEpoch = 2 + backend.relay.electraEpoch = 5 backend.relay.proposerDutiesMap = make(map[uint64]*common.BuilderGetValidatorsResponseEntry) backend.relay.proposerDutiesMap[headSlot+1] = &common.BuilderGetValidatorsResponseEntry{ Slot: headSlot, @@ -774,6 +775,9 @@ func TestCheckSubmissionPayloadAttrs(t *testing.T) { for _, tc := range cases { t.Run(tc.description, func(t *testing.T) { _, _, backend := startTestBackend(t) + backend.relay.capellaEpoch = 1 + backend.relay.denebEpoch = 2 + backend.relay.electraEpoch = 3 backend.relay.payloadAttributesLock.RLock() backend.relay.payloadAttributes[testParentHash] = tc.attrs backend.relay.payloadAttributesLock.RUnlock() @@ -885,6 +889,7 @@ func TestCheckSubmissionSlotDetails(t *testing.T) { _, _, backend := startTestBackend(t) backend.relay.capellaEpoch = 1 backend.relay.denebEpoch = 2 + backend.relay.electraEpoch = 3 headSlot := testSlot - 1 w := httptest.NewRecorder() logger := logrus.New() From 33b6f64937f12c118b8508032f7bc8bff68d83a0 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 4 Apr 2024 15:31:38 -0500 Subject: [PATCH 03/28] Add ElectraUnblindSignedBlock --- common/types_spec.go | 80 ++++++++++++++++++++++++++++++++++++++++++- services/api/utils.go | 2 +- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/common/types_spec.go b/common/types_spec.go index ac291621..b3838628 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -77,6 +77,20 @@ func BuildGetHeaderResponse(payload *VersionedSubmitBlockRequest, sk *bls.Secret Version: spec.DataVersionDeneb, Deneb: signedBuilderBid.Deneb, }, nil + case spec.DataVersionElectra: + versionedPayload.Electra = payload.Electra.ExecutionPayload + header, err := utils.PayloadToPayloadHeader(versionedPayload) + if err != nil { + return nil, err + } + signedBuilderBid, err := BuilderBlockRequestToSignedBuilderBid(payload, header, sk, pubkey, domain) + if err != nil { + return nil, err + } + return &builderSpec.VersionedSignedBuilderBid{ + Version: spec.DataVersionElectra, + Electra: signedBuilderBid.Electra, + }, nil case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: return nil, ErrInvalidVersion default: @@ -99,6 +113,14 @@ func BuildGetPayloadResponse(payload *VersionedSubmitBlockRequest) (*builderApi. BlobsBundle: payload.Deneb.BlobsBundle, }, }, nil + case spec.DataVersionElectra: + return &builderApi.VersionedSubmitBlindedBlockResponse{ + Version: spec.DataVersionElectra, + Electra: &builderApiElectra.ExecutionPayloadAndBlobsBundle{ + ExecutionPayload: payload.Electra.ExecutionPayload, + BlobsBundle: payload.Electra.BlobsBundle, + }, + }, nil case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: return nil, ErrInvalidVersion } @@ -151,6 +173,26 @@ func BuilderBlockRequestToSignedBuilderBid(payload *VersionedSubmitBlockRequest, Signature: sig, }, }, nil + case spec.DataVersionElectra: + builderBid := builderApiElectra.BuilderBid{ + Header: header.Electra, + BlobKZGCommitments: payload.Electra.BlobsBundle.Commitments, + Value: value, + Pubkey: *pubkey, + } + + sig, err := ssz.SignMessage(&builderBid, domain, sk) + if err != nil { + return nil, err + } + + return &builderSpec.VersionedSignedBuilderBid{ + Version: spec.DataVersionElectra, + Electra: &builderApiElectra.SignedBuilderBid{ + Message: &builderBid, + Signature: sig, + }, + }, nil default: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", payload.Version)) } @@ -171,8 +213,13 @@ func SignedBlindedBeaconBlockToBeaconBlock(signedBlindedBeaconBlock *VersionedSi if len(denebBlindedBlock.Message.Body.BlobKZGCommitments) != len(blockPayload.Deneb.BlobsBundle.Blobs) { return nil, errors.New("number of blinded blobs does not match blobs bundle length") } - signedBeaconBlock.Deneb = DenebUnblindSignedBlock(denebBlindedBlock, blockPayload.Deneb) + case spec.DataVersionElectra: + electraBlindedBlock := signedBlindedBeaconBlock.Electra + if len(electraBlindedBlock.Message.Body.BlobKZGCommitments) != len(blockPayload.Electra.BlobsBundle.Blobs) { + return nil, errors.New("number of blinded blobs does not match blobs bundle length") + } + signedBeaconBlock.Electra = ElectraUnblindSignedBlock(electraBlindedBlock, blockPayload.Electra) case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: return nil, errors.Wrap(ErrInvalidVersion, fmt.Sprintf("%s is not supported", signedBlindedBeaconBlock.Version)) } @@ -234,6 +281,37 @@ func DenebUnblindSignedBlock(blindedBlock *eth2ApiV1Deneb.SignedBlindedBeaconBlo } } +func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaconBlock, blockPayload *builderApiElectra.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Electra.SignedBlockContents { + return ð2ApiV1Electra.SignedBlockContents{ + SignedBlock: &electra.SignedBeaconBlock{ + Message: &electra.BeaconBlock{ + Slot: blindedBlock.Message.Slot, + ProposerIndex: blindedBlock.Message.ProposerIndex, + ParentRoot: blindedBlock.Message.ParentRoot, + StateRoot: blindedBlock.Message.StateRoot, + Body: &electra.BeaconBlockBody{ + RANDAOReveal: blindedBlock.Message.Body.RANDAOReveal, + ETH1Data: blindedBlock.Message.Body.ETH1Data, + Graffiti: blindedBlock.Message.Body.Graffiti, + ProposerSlashings: blindedBlock.Message.Body.ProposerSlashings, + AttesterSlashings: blindedBlock.Message.Body.AttesterSlashings, + Attestations: blindedBlock.Message.Body.Attestations, + Deposits: blindedBlock.Message.Body.Deposits, + VoluntaryExits: blindedBlock.Message.Body.VoluntaryExits, + SyncAggregate: blindedBlock.Message.Body.SyncAggregate, + ExecutionPayload: blockPayload.ExecutionPayload, + BLSToExecutionChanges: blindedBlock.Message.Body.BLSToExecutionChanges, + BlobKZGCommitments: blindedBlock.Message.Body.BlobKZGCommitments, + Consolidations: blindedBlock.Message.Body.Consolidations, + }, + }, + Signature: blindedBlock.Signature, + }, + KZGProofs: blockPayload.BlobsBundle.Proofs, + Blobs: blockPayload.BlobsBundle.Blobs, + } +} + type BuilderBlockValidationRequest struct { *VersionedSubmitBlockRequest RegisteredGasLimit uint64 diff --git a/services/api/utils.go b/services/api/utils.go index e08661e5..e314cc92 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -2,11 +2,11 @@ package api import ( "fmt" - "github.com/attestantio/go-eth2-client/spec/electra" builderApi "github.com/attestantio/go-builder-client/api" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" eth2UtilCapella "github.com/attestantio/go-eth2-client/util/capella" eth2UtilElectra "github.com/attestantio/go-eth2-client/util/electra" From 87708966b6fcfe77998f5574aba5417dba62054f Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 4 Apr 2024 16:11:39 -0500 Subject: [PATCH 04/28] Use electra fork of go-boost-utils --- common/types_test.go | 2 +- database/typesconv.go | 22 +++++++++++++++++++++- go.mod | 8 +++++--- go.sum | 12 +++++------- services/api/service_test.go | 2 +- services/api/types_test.go | 2 +- services/api/utils.go | 31 +++++++++++++++++++++++++++++++ 7 files changed, 65 insertions(+), 14 deletions(-) diff --git a/common/types_test.go b/common/types_test.go index a0def3ea..a8768741 100644 --- a/common/types_test.go +++ b/common/types_test.go @@ -25,7 +25,7 @@ func makeTestSubmitBlockRequestV2Optimistic(t *testing.T) *SubmitBlockRequestV2O require.NoError(t, err) testBuilderPubkey, err := utils.HexToPubkey("0xae7bde4839fa905b7d8125fd84cfdcd0c32cd74e1be3fa24263d71b520fc78113326ce0a90b95d73f19e6d8150a2f73b") require.NoError(t, err) - testProposerPubkey, err := utils.HexToPubkey("0xbb8e223239fa905b7d8125fd84cfdcd0c32cd74e1be3fa24263d71b520fc78113326ce0a90b95d73f19e6d8150a2f73b") + testProposerPubkey, err := utils.HexToPubkey("0xb872a4f5f596ea7dfd695e45afbe4551b405b10dafba98b2d897c58a5047fc288ef2c1bc4216f906ea05d7fdbed61116") require.NoError(t, err) testAddress, err := utils.HexToAddress("0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5") require.NoError(t, err) diff --git a/database/typesconv.go b/database/typesconv.go index 3725c472..3bcca515 100644 --- a/database/typesconv.go +++ b/database/typesconv.go @@ -3,6 +3,7 @@ package database import ( "encoding/json" "errors" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" @@ -34,6 +35,15 @@ func PayloadToExecPayloadEntry(payload *common.VersionedSubmitBlockRequest) (*Ex return nil, err } version = common.ForkVersionStringDeneb + case spec.DataVersionElectra: + _payload, err = json.Marshal(builderApiElectra.ExecutionPayloadAndBlobsBundle{ + ExecutionPayload: payload.Electra.ExecutionPayload, + BlobsBundle: payload.Electra.BlobsBundle, + }) + if err != nil { + return nil, err + } + version = common.ForkVersionStringElectra case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: return nil, ErrUnsupportedExecutionPayload } @@ -97,7 +107,17 @@ func BuilderSubmissionEntryToBidTraceV2WithTimestampJSON(payload *BuilderBlockSu func ExecutionPayloadEntryToExecutionPayload(executionPayloadEntry *ExecutionPayloadEntry) (payload *builderApi.VersionedSubmitBlindedBlockResponse, err error) { payloadVersion := executionPayloadEntry.Version - if payloadVersion == common.ForkVersionStringDeneb { + if payloadVersion == common.ForkVersionStringElectra { + executionPayload := new(builderApiElectra.ExecutionPayloadAndBlobsBundle) + err = json.Unmarshal([]byte(executionPayloadEntry.Payload), executionPayload) + if err != nil { + return nil, err + } + return &builderApi.VersionedSubmitBlindedBlockResponse{ + Version: spec.DataVersionElectra, + Electra: executionPayload, + }, nil + } else if payloadVersion == common.ForkVersionStringDeneb { executionPayload := new(builderApiDeneb.ExecutionPayloadAndBlobsBundle) err = json.Unmarshal([]byte(executionPayloadEntry.Payload), executionPayload) if err != nil { diff --git a/go.mod b/go.mod index 2660e19b..eccbc44b 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 - github.com/ethereum/go-ethereum v1.13.10 + github.com/ethereum/go-ethereum v1.13.14 github.com/flashbots/go-boost-utils v1.8.0 github.com/flashbots/go-utils v0.5.0 github.com/go-redis/redis/v9 v9.0.0-rc.1 @@ -32,7 +32,6 @@ require ( require ( github.com/DataDog/zstd v1.5.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect - github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/cockroachdb/errors v1.9.1 // indirect @@ -49,7 +48,7 @@ require ( github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect - github.com/go-ole/go-ole v1.2.5 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/goccy/go-yaml v1.11.2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -127,3 +126,6 @@ replace github.com/attestantio/go-eth2-client => ../../jtraglia/go-eth2-client // git clone git@github.com:jtraglia/go-builder-client.git -b electra replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-client + +// git clone git@github.com:flashbots/go-boost-utils.git -b electra +replace github.com/flashbots/go-boost-utils => ../../flashbots/go-boost-utils diff --git a/go.sum b/go.sum index 689d028f..31ec95b6 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,6 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.31.0 h1:ObEFUNlJwoIiyjxdrYF0QIDE7qXcLc7D3WpSH4c22PU= github.com/alicebob/miniredis/v2 v2.31.0/go.mod h1:UB/T2Uztp7MlFSDakaX1sTXUv5CASoprx0wulRT6HBg= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= @@ -119,16 +117,14 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.13.10 h1:Ppdil79nN+Vc+mXfge0AuUgmKWuVv4eMqzoIVSdqZek= -github.com/ethereum/go-ethereum v1.13.10/go.mod h1:sc48XYQxCzH3fG9BcrXCOOgQk2JfZzNAmIKnceogzsA= +github.com/ethereum/go-ethereum v1.13.14 h1:EwiY3FZP94derMCIam1iW4HFVrSgIcpsu0HwTQtm6CQ= +github.com/ethereum/go-ethereum v1.13.14/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= -github.com/flashbots/go-boost-utils v1.8.0 h1:z3K1hw+Fbl9AGMNQKnK7Bvf0M/rKgjfruAEvra+Z8Mg= -github.com/flashbots/go-boost-utils v1.8.0/go.mod h1:Ry1Rw8Lx5v1rpAR0+IvR4sV10jYAeQaGVM3vRD8mYdM= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= github.com/flashbots/go-utils v0.5.0/go.mod h1:LauDwifaRdSK0mS5X34GR59pJtUu1T/lOFNdff1BqtI= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -150,8 +146,9 @@ github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= @@ -552,6 +549,7 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/services/api/service_test.go b/services/api/service_test.go index 3cf62870..22a76e3a 100644 --- a/services/api/service_test.go +++ b/services/api/service_test.go @@ -39,7 +39,7 @@ const ( testParentHash = "0xbd3291854dc822b7ec585925cda0e18f06af28fa2886e15f52d52dd4b6f94ed6" testWithdrawalsRoot = "0x7f6d156912a4cb1e74ee37e492ad883f7f7ac856d987b3228b517e490aa0189e" testPrevRandao = "0x9962816e9d0a39fd4c80935338a741dc916d1545694e41eb5a505e1a3098f9e4" - testBuilderPubkey = "0xfa1ed37c3553d0ce1e9349b2c5063cf6e394d231c8d3e0df75e9462257c081543086109ffddaacc0aa76f33dc9661c83" + testBuilderPubkey = "0xb872a4f5f596ea7dfd695e45afbe4551b405b10dafba98b2d897c58a5047fc288ef2c1bc4216f906ea05d7fdbed61116" ) var ( diff --git a/services/api/types_test.go b/services/api/types_test.go index 07256f22..1bab7984 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -22,7 +22,7 @@ import ( ) func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { - builderPk, err := utils.HexToPubkey("0xf9716c94aab536227804e859d15207aa7eaaacd839f39dcbdb5adc942842a8d2fb730f9f49fc719fdb86f1873e0ed1c2") + builderPk, err := utils.HexToPubkey("0xb872a4f5f596ea7dfd695e45afbe4551b405b10dafba98b2d897c58a5047fc288ef2c1bc4216f906ea05d7fdbed61116") require.NoError(t, err) builderSk, err := utils.HexToSignature("0x8209b5391cd69f392b1f02dbc03bab61f574bb6bb54bf87b59e2a85bdc0756f7db6a71ce1b41b727a1f46ccc77b213bf0df1426177b5b29926b39956114421eaa36ec4602969f6f6370a44de44a6bce6dae2136e5fb594cce2a476354264d1ea") diff --git a/services/api/utils.go b/services/api/utils.go index e314cc92..9cc479bd 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -120,6 +120,37 @@ func EqBlindedBlockContentsToBlockContents(bb *common.VersionedSignedBlindedBeac return errors.Wrap(ErrBlobMismatch, fmt.Sprintf("mismatched KZG commitment at index %d", i)) } } + case spec.DataVersionElectra: + block := bb.Electra.Message + bbHeaderHtr, err := block.Body.ExecutionPayloadHeader.HashTreeRoot() + if err != nil { + return err + } + + versionedPayload.Electra = payload.Electra.ExecutionPayload + payloadHeader, err := utils.PayloadToPayloadHeader(versionedPayload) + if err != nil { + return err + } + + payloadHeaderHtr, err := payloadHeader.Electra.HashTreeRoot() + if err != nil { + return err + } + + if bbHeaderHtr != payloadHeaderHtr { + return ErrHeaderHTRMismatch + } + + if len(bb.Electra.Message.Body.BlobKZGCommitments) != len(payload.Electra.BlobsBundle.Commitments) { + return errors.Wrap(ErrBlobMismatch, "mismatched number of KZG commitments") + } + + for i, commitment := range bb.Electra.Message.Body.BlobKZGCommitments { + if commitment != payload.Electra.BlobsBundle.Commitments[i] { + return errors.Wrap(ErrBlobMismatch, fmt.Sprintf("mismatched KZG commitment at index %d", i)) + } + } default: return ErrUnsupportedPayload } From 40aeed58c2e6ed54268019cdd13524ec328d043e Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 5 Apr 2024 11:07:33 -0500 Subject: [PATCH 05/28] Use electra fork of geth & add test --- go.mod | 17 ++- go.sum | 273 ++----------------------------------- services/api/types_test.go | 48 +++++++ 3 files changed, 72 insertions(+), 266 deletions(-) diff --git a/go.mod b/go.mod index eccbc44b..fb7a657a 100644 --- a/go.mod +++ b/go.mod @@ -34,16 +34,16 @@ require ( github.com/StackExchange/wmi v1.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/cockroachdb/errors v1.9.1 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect - github.com/cockroachdb/redact v1.1.3 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/fatih/color v1.16.0 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect @@ -52,7 +52,7 @@ require ( github.com/goccy/go-yaml v1.11.2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/uuid v1.3.1 // indirect github.com/klauspost/compress v1.15.15 // indirect @@ -75,7 +75,7 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) @@ -129,3 +129,6 @@ replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-cl // git clone git@github.com:flashbots/go-boost-utils.git -b electra replace github.com/flashbots/go-boost-utils => ../../flashbots/go-boost-utils + +// git clone git@github.com:jtraglia/go-ethereum.git -b electra +replace github.com/ethereum/go-ethereum => ../../jtraglia/go-ethereum diff --git a/go.sum b/go.sum index 31ec95b6..34585ee7 100644 --- a/go.sum +++ b/go.sum @@ -1,27 +1,17 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DmitriyVTitov/size v1.5.0/go.mod h1:le6rNI4CoLQV1b9gzp1+3d7hMAD/uu2QcJ+aYbNgiU0= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.31.0 h1:ObEFUNlJwoIiyjxdrYF0QIDE7qXcLc7D3WpSH4c22PU= github.com/alicebob/miniredis/v2 v2.31.0/go.mod h1:UB/T2Uztp7MlFSDakaX1sTXUv5CASoprx0wulRT6HBg= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -56,42 +46,32 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -104,25 +84,12 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeC github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.13.14 h1:EwiY3FZP94derMCIam1iW4HFVrSgIcpsu0HwTQtm6CQ= -github.com/ethereum/go-ethereum v1.13.14/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= @@ -131,21 +98,14 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= @@ -165,62 +125,36 @@ github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0 github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY= github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY= github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-yaml v1.11.2 h1:joq77SxuyIs9zzxEjgyLBugMQ9NEgTWxXfz2wVqwAaQ= github.com/goccy/go-yaml v1.11.2/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -228,54 +162,28 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= -github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= @@ -283,23 +191,14 @@ github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ic github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.8 h1:3fdt97i/cwSU83+E0hZTC/Xpc9mTZxc6UWSCRcSbxiE= github.com/lib/pq v1.10.8/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc= github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI= github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -309,29 +208,15 @@ github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -339,7 +224,6 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= @@ -350,11 +234,9 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.21.1 h1:OB/euWYIExnPBohllTicTHmGTrMaqJ67nIu80j0/uEM= github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -363,7 +245,6 @@ github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= @@ -376,40 +257,22 @@ github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0= github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= @@ -429,29 +292,10 @@ github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+F github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c h1:4WU+p200eLYtBsx3M5CKXvkjVdf5SC3W9nMg37y0TFI= github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c/go.mod h1:f3jBhpWvuZmue0HZK52GzRHJOYHYSILs/c8+K2S/J+o= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10 h1:CQh33pStIp/E30b7TxDlXfM0145bn2e8boI30IxAhTg= github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10/go.mod h1:x/Pa0FF5Te9kdrlZKJK82YmAkvL8+f989USgz6Jiw7M= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -463,90 +307,45 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -556,92 +355,48 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/services/api/types_test.go b/services/api/types_test.go index 1bab7984..09543ddb 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -1,6 +1,8 @@ package api import ( + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" + "github.com/attestantio/go-eth2-client/spec/electra" "testing" builderApiCapella "github.com/attestantio/go-builder-client/api/capella" @@ -115,6 +117,52 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { }, }, }, + { + name: "Electra", + reqPayload: &common.VersionedSubmitBlockRequest{ + VersionedSubmitBlockRequest: builderSpec.VersionedSubmitBlockRequest{ + Version: spec.DataVersionElectra, + Electra: &builderApiElectra.SubmitBlockRequest{ + ExecutionPayload: &electra.ExecutionPayload{ + ParentHash: phase0.Hash32{0x01}, + FeeRecipient: bellatrix.ExecutionAddress{0x02}, + StateRoot: phase0.Root{0x03}, + ReceiptsRoot: phase0.Root{0x04}, + LogsBloom: [256]byte{0x05}, + PrevRandao: phase0.Hash32{0x06}, + BlockNumber: 5001, + GasLimit: 5002, + GasUsed: 5003, + Timestamp: 5004, + ExtraData: []byte{0x07}, + BaseFeePerGas: uint256.NewInt(123), + BlockHash: phase0.Hash32{0x09}, + Transactions: []bellatrix.Transaction{}, + BlobGasUsed: 5005, + ExcessBlobGas: 5006, + Exits: make([]*electra.ExecutionLayerExit, 0), + }, + BlobsBundle: &builderApiDeneb.BlobsBundle{ + Commitments: []deneb.KZGCommitment{}, + Proofs: []deneb.KZGProof{}, + Blobs: []deneb.Blob{}, + }, + Message: &builderApiV1.BidTrace{ + Slot: 1, + ParentHash: phase0.Hash32{0x01}, + BlockHash: phase0.Hash32{0x09}, + BuilderPubkey: builderPk, + ProposerPubkey: phase0.BLSPubKey{0x03}, + ProposerFeeRecipient: bellatrix.ExecutionAddress{0x04}, + Value: uint256.NewInt(123), + GasLimit: 5002, + GasUsed: 5003, + }, + Signature: builderSk, + }, + }, + }, + }, } for _, tc := range cases { From 5794db29c8effdc86d5dfbf50a5d7c65e60b25ed Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 8 Apr 2024 10:18:02 -0500 Subject: [PATCH 06/28] Add support for deposit receipts --- common/types.go | 1 + common/utils.go | 5 ++++ services/api/service.go | 49 ++++++++++++++++++++++++++++++-------- services/api/types_test.go | 35 ++++++++++++++------------- services/api/utils.go | 9 +++++++ 5 files changed, 72 insertions(+), 27 deletions(-) diff --git a/common/types.go b/common/types.go index ee4a2d35..639b485a 100644 --- a/common/types.go +++ b/common/types.go @@ -440,6 +440,7 @@ type BlockSubmissionInfo struct { Blobs []deneb.Blob BlobGasUsed uint64 ExcessBlobGas uint64 + DepositReceipts []*electra.DepositReceipt Exits []*electra.ExecutionLayerExit } diff --git a/common/utils.go b/common/utils.go index fbb6099c..7c399f73 100644 --- a/common/utils.go +++ b/common/utils.go @@ -239,6 +239,10 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } + depositReceipts, err := submission.DepositReceipts() + if submission.Version >= spec.DataVersionElectra && err != nil { + return nil, err + } exits, err := submission.Exits() if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err @@ -258,6 +262,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm Blobs: blobs, BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, + DepositReceipts: depositReceipts, Exits: exits, }, nil } diff --git a/services/api/service.go b/services/api/service.go index b63a37a2..740e60d4 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -137,12 +137,13 @@ type RelayAPIOpts struct { } type payloadAttributesHelper struct { - slot uint64 - parentHash string - withdrawalsRoot phase0.Root - parentBeaconRoot *phase0.Root - payloadAttributes beaconclient.PayloadAttributes - exitsRoot phase0.Root + slot uint64 + parentHash string + withdrawalsRoot phase0.Root + parentBeaconRoot *phase0.Root + payloadAttributes beaconclient.PayloadAttributes + depositReceiptsRoot phase0.Root + exitsRoot phase0.Root } // Data needed to issue a block validation request. @@ -1605,6 +1606,14 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) }) } if getPayloadResp.Version >= spec.DataVersionElectra { + depositReceipts, err := getPayloadResp.DepositReceipts() + if err != nil { + log.WithError(err).Info("failed to get deposit receipts") + } + log = log.WithFields(logrus.Fields{ + "numDepositReceipts": len(depositReceipts), + }) + exits, err := getPayloadResp.Exits() if err != nil { log.WithError(err).Info("failed to get exits") @@ -1671,14 +1680,13 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log return attrs, false } - if hasReachedFork(submission.BidTrace.Slot, api.capellaEpoch) { // Capella requires correct withdrawals + if hasReachedFork(submission.BidTrace.Slot, api.capellaEpoch) { withdrawalsRoot, err := ComputeWithdrawalsRoot(submission.Withdrawals) if err != nil { log.WithError(err).Warn("could not compute withdrawals root from payload") api.RespondError(w, http.StatusBadRequest, "could not compute withdrawals root") return attrs, false } - if withdrawalsRoot != attrs.withdrawalsRoot { msg := fmt.Sprintf("incorrect withdrawals root - got: %s, expected: %s", withdrawalsRoot.String(), attrs.withdrawalsRoot.String()) log.Info(msg) @@ -1687,14 +1695,26 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log } } - if hasReachedFork(submission.BidTrace.Slot, api.electraEpoch) { // Electra requires correct exits + if hasReachedFork(submission.BidTrace.Slot, api.electraEpoch) { + depositReceiptsRoot, err := ComputeDepositReceiptsRoot(submission.DepositReceipts) + if err != nil { + log.WithError(err).Warn("could not compute deposit receipts root from payload") + api.RespondError(w, http.StatusBadRequest, "could not compute deposit receipts root") + return attrs, false + } + if depositReceiptsRoot != attrs.depositReceiptsRoot { + msg := fmt.Sprintf("incorrect deposit receipts root - got: %s, expected: %s", depositReceiptsRoot.String(), attrs.depositReceiptsRoot.String()) + log.Info(msg) + api.RespondError(w, http.StatusBadRequest, msg) + return attrs, false + } + exitsRoot, err := ComputeExitsRoot(submission.Exits) if err != nil { log.WithError(err).Warn("could not compute exits root from payload") api.RespondError(w, http.StatusBadRequest, "could not compute exits root") return attrs, false } - if exitsRoot != attrs.exitsRoot { msg := fmt.Sprintf("incorrect exits root - got: %s, expected: %s", exitsRoot.String(), attrs.exitsRoot.String()) log.Info(msg) @@ -2010,6 +2030,15 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque }) } if payload.Version >= spec.DataVersionElectra { + depositReceipts, err := payload.DepositReceipts() + if err != nil { + api.RespondError(w, http.StatusBadRequest, err.Error()) + return + } + log = log.WithFields(logrus.Fields{ + "numDepositReceipts": len(depositReceipts), + }) + exits, err := payload.Exits() if err != nil { api.RespondError(w, http.StatusBadRequest, err.Error()) diff --git a/services/api/types_test.go b/services/api/types_test.go index 09543ddb..c8ab3365 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -124,23 +124,24 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { Version: spec.DataVersionElectra, Electra: &builderApiElectra.SubmitBlockRequest{ ExecutionPayload: &electra.ExecutionPayload{ - ParentHash: phase0.Hash32{0x01}, - FeeRecipient: bellatrix.ExecutionAddress{0x02}, - StateRoot: phase0.Root{0x03}, - ReceiptsRoot: phase0.Root{0x04}, - LogsBloom: [256]byte{0x05}, - PrevRandao: phase0.Hash32{0x06}, - BlockNumber: 5001, - GasLimit: 5002, - GasUsed: 5003, - Timestamp: 5004, - ExtraData: []byte{0x07}, - BaseFeePerGas: uint256.NewInt(123), - BlockHash: phase0.Hash32{0x09}, - Transactions: []bellatrix.Transaction{}, - BlobGasUsed: 5005, - ExcessBlobGas: 5006, - Exits: make([]*electra.ExecutionLayerExit, 0), + ParentHash: phase0.Hash32{0x01}, + FeeRecipient: bellatrix.ExecutionAddress{0x02}, + StateRoot: phase0.Root{0x03}, + ReceiptsRoot: phase0.Root{0x04}, + LogsBloom: [256]byte{0x05}, + PrevRandao: phase0.Hash32{0x06}, + BlockNumber: 5001, + GasLimit: 5002, + GasUsed: 5003, + Timestamp: 5004, + ExtraData: []byte{0x07}, + BaseFeePerGas: uint256.NewInt(123), + BlockHash: phase0.Hash32{0x09}, + Transactions: []bellatrix.Transaction{}, + BlobGasUsed: 5005, + ExcessBlobGas: 5006, + DepositReceipts: make([]*electra.DepositReceipt, 0), + Exits: make([]*electra.ExecutionLayerExit, 0), }, BlobsBundle: &builderApiDeneb.BlobsBundle{ Commitments: []deneb.KZGCommitment{}, diff --git a/services/api/utils.go b/services/api/utils.go index 9cc479bd..9f12d30b 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -22,6 +22,7 @@ var ( ErrUnsupportedPayload = errors.New("unsupported payload version") ErrNoWithdrawals = errors.New("no withdrawals") + ErrNoDepositReceipts = errors.New("no deposit receipts") ErrNoExits = errors.New("no execution layer exits") ErrPayloadMismatch = errors.New("beacon-block and payload version mismatch") ErrHeaderHTRMismatch = errors.New("beacon-block and payload header mismatch") @@ -52,6 +53,14 @@ func ComputeWithdrawalsRoot(w []*capella.Withdrawal) (phase0.Root, error) { return withdrawals.HashTreeRoot() } +func ComputeDepositReceiptsRoot(e []*electra.DepositReceipt) (phase0.Root, error) { + if e == nil { + return phase0.Root{}, ErrNoDepositReceipts + } + depositReceipts := eth2UtilElectra.DepositReceipts{DepositReceipts: e} + return depositReceipts.HashTreeRoot() +} + func ComputeExitsRoot(e []*electra.ExecutionLayerExit) (phase0.Root, error) { if e == nil { return phase0.Root{}, ErrNoExits From 096be7fa4b80116779142f298c11769b74138634 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 8 Apr 2024 12:08:16 -0500 Subject: [PATCH 07/28] Run make fmt --- database/typesconv.go | 2 +- services/api/types_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/database/typesconv.go b/database/typesconv.go index 3bcca515..1d54a62d 100644 --- a/database/typesconv.go +++ b/database/typesconv.go @@ -3,10 +3,10 @@ package database import ( "encoding/json" "errors" - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/flashbots/mev-boost-relay/common" diff --git a/services/api/types_test.go b/services/api/types_test.go index c8ab3365..9b1fb1e9 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -1,18 +1,18 @@ package api import ( - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" - "github.com/attestantio/go-eth2-client/spec/electra" "testing" builderApiCapella "github.com/attestantio/go-builder-client/api/capella" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApiV1 "github.com/attestantio/go-builder-client/api/v1" builderSpec "github.com/attestantio/go-builder-client/spec" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/flashbots/go-boost-utils/bls" "github.com/flashbots/go-boost-utils/ssz" From 573d4488ef89ca56cf4e2aab2af49b8f9340464a Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 8 Apr 2024 14:30:53 -0500 Subject: [PATCH 08/28] Update some redis things --- datastore/redis.go | 59 +++++++++++++++++++++++++++++++++++------ services/api/service.go | 2 ++ 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/datastore/redis.go b/datastore/redis.go index 02b307f8..c9a417de 100644 --- a/datastore/redis.go +++ b/datastore/redis.go @@ -12,6 +12,7 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderSpec "github.com/attestantio/go-builder-client/spec" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" @@ -85,6 +86,7 @@ type RedisCache struct { prefixGetHeaderResponse string prefixExecPayloadCapella string prefixPayloadContentsDeneb string + prefixPayloadContentsElectra string prefixBidTrace string prefixBlockBuilderLatestBids string // latest bid for a given slot prefixBlockBuilderLatestBidsValue string // value of latest bid for a given slot @@ -122,10 +124,11 @@ func NewRedisCache(prefix, redisURI, readonlyURI string) (*RedisCache, error) { client: client, readonlyClient: roClient, - prefixGetHeaderResponse: fmt.Sprintf("%s/%s:cache-gethead-response", redisPrefix, prefix), - prefixExecPayloadCapella: fmt.Sprintf("%s/%s:cache-execpayload-capella", redisPrefix, prefix), - prefixPayloadContentsDeneb: fmt.Sprintf("%s/%s:cache-payloadcontents-deneb", redisPrefix, prefix), - prefixBidTrace: fmt.Sprintf("%s/%s:cache-bid-trace", redisPrefix, prefix), + prefixGetHeaderResponse: fmt.Sprintf("%s/%s:cache-gethead-response", redisPrefix, prefix), + prefixExecPayloadCapella: fmt.Sprintf("%s/%s:cache-execpayload-capella", redisPrefix, prefix), + prefixPayloadContentsDeneb: fmt.Sprintf("%s/%s:cache-payloadcontents-deneb", redisPrefix, prefix), + prefixPayloadContentsElectra: fmt.Sprintf("%s/%s:cache-payloadcontents-electra", redisPrefix, prefix), + prefixBidTrace: fmt.Sprintf("%s/%s:cache-bid-trace", redisPrefix, prefix), prefixBlockBuilderLatestBids: fmt.Sprintf("%s/%s:block-builder-latest-bid", redisPrefix, prefix), // hashmap for slot+parentHash+proposerPubkey with builderPubkey as field prefixBlockBuilderLatestBidsValue: fmt.Sprintf("%s/%s:block-builder-latest-bid-value", redisPrefix, prefix), // hashmap for slot+parentHash+proposerPubkey with builderPubkey as field @@ -157,6 +160,10 @@ func (r *RedisCache) keyPayloadContentsDeneb(slot uint64, proposerPubkey, blockH return fmt.Sprintf("%s:%d_%s_%s", r.prefixPayloadContentsDeneb, slot, proposerPubkey, blockHash) } +func (r *RedisCache) keyPayloadContentsElectra(slot uint64, proposerPubkey, blockHash string) string { + return fmt.Sprintf("%s:%d_%s_%s", r.prefixPayloadContentsElectra, slot, proposerPubkey, blockHash) +} + func (r *RedisCache) keyCacheBidTrace(slot uint64, proposerPubkey, blockHash string) string { return fmt.Sprintf("%s:%d_%s_%s", r.prefixBidTrace, slot, proposerPubkey, blockHash) } @@ -363,14 +370,45 @@ func (r *RedisCache) GetBestBid(slot uint64, parentHash, proposerPubkey string) } func (r *RedisCache) GetPayloadContents(slot uint64, proposerPubkey, blockHash string) (*builderApi.VersionedSubmitBlindedBlockResponse, error) { - resp, err := r.GetPayloadContentsDeneb(slot, proposerPubkey, blockHash) + resp, err := r.GetPayloadContentsElectra(slot, proposerPubkey, blockHash) if errors.Is(err, redis.Nil) { - // can't find deneb payload, try find capella payload - return r.GetExecutionPayloadCapella(slot, proposerPubkey, blockHash) + resp, err = r.GetPayloadContentsDeneb(slot, proposerPubkey, blockHash) + if errors.Is(err, redis.Nil) { + return r.GetExecutionPayloadCapella(slot, proposerPubkey, blockHash) + } } return resp, err } +func (r *RedisCache) SavePayloadContentsElectra(ctx context.Context, tx redis.Pipeliner, slot uint64, proposerPubkey, blockHash string, execPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) (err error) { + key := r.keyPayloadContentsElectra(slot, proposerPubkey, blockHash) + b, err := execPayload.MarshalSSZ() + if err != nil { + return err + } + return tx.Set(ctx, key, b, expiryBidCache).Err() +} + +func (r *RedisCache) GetPayloadContentsElectra(slot uint64, proposerPubkey, blockHash string) (*builderApi.VersionedSubmitBlindedBlockResponse, error) { + electraPayloadContents := new(builderApiElectra.ExecutionPayloadAndBlobsBundle) + + key := r.keyPayloadContentsElectra(slot, proposerPubkey, blockHash) + val, err := r.client.Get(context.Background(), key).Result() + if err != nil { + return nil, err + } + + err = electraPayloadContents.UnmarshalSSZ([]byte(val)) + if err != nil { + return nil, err + } + + return &builderApi.VersionedSubmitBlindedBlockResponse{ + Version: spec.DataVersionElectra, + Electra: electraPayloadContents, + }, nil +} + func (r *RedisCache) SavePayloadContentsDeneb(ctx context.Context, tx redis.Pipeliner, slot uint64, proposerPubkey, blockHash string, execPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) (err error) { key := r.keyPayloadContentsDeneb(slot, proposerPubkey, blockHash) b, err := execPayload.MarshalSSZ() @@ -559,6 +597,11 @@ func (r *RedisCache) SaveBidAndUpdateTopBid(ctx context.Context, pipeliner redis if err != nil { return state, err } + case spec.DataVersionElectra: + err = r.SavePayloadContentsElectra(ctx, pipeliner, submission.BidTrace.Slot, submission.BidTrace.ProposerPubkey.String(), submission.BidTrace.BlockHash.String(), getPayloadResponse.Deneb) + if err != nil { + return state, err + } case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair, spec.DataVersionBellatrix: return state, fmt.Errorf("unsupported payload version: %s", payload.Version) //nolint:goerr113 } @@ -591,7 +634,7 @@ func (r *RedisCache) SaveBidAndUpdateTopBid(ctx context.Context, pipeliner redis state.TimeSaveTrace = nextTime.Sub(prevTime) prevTime = nextTime - // If top bid value hasn't change, abort now + // If top bid value hasn't changed, abort now _, state.TopBidValue = builderBids.getTopBid() if state.TopBidValue.Cmp(state.PrevTopBidValue) == 0 { return state, nil diff --git a/services/api/service.go b/services/api/service.go index 740e60d4..04fdcec5 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -1238,6 +1238,8 @@ func (api *RelayAPI) checkProposerSignature(block *common.VersionedSignedBlinded return verifyBlockSignature(block, api.opts.EthNetDetails.DomainBeaconProposerCapella, pubKey) case spec.DataVersionDeneb: return verifyBlockSignature(block, api.opts.EthNetDetails.DomainBeaconProposerDeneb, pubKey) + case spec.DataVersionElectra: + return verifyBlockSignature(block, api.opts.EthNetDetails.DomainBeaconProposerElectra, pubKey) default: return false, errors.New("unsupported consensus data version") } From 770d711a367d23902ef5c8902a2910272c95e7a1 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 10 Apr 2024 09:35:31 -0500 Subject: [PATCH 09/28] Replace Exits with WithdrawRequests --- common/types.go | 2 +- common/utils.go | 4 ++-- services/api/service.go | 34 +++++++++++++++++----------------- services/api/types_test.go | 36 ++++++++++++++++++------------------ services/api/utils.go | 14 +++++++------- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/common/types.go b/common/types.go index 639b485a..48dccb40 100644 --- a/common/types.go +++ b/common/types.go @@ -441,7 +441,7 @@ type BlockSubmissionInfo struct { BlobGasUsed uint64 ExcessBlobGas uint64 DepositReceipts []*electra.DepositReceipt - Exits []*electra.ExecutionLayerExit + WithdrawRequests []*electra.ExecutionLayerWithdrawRequest } /* diff --git a/common/utils.go b/common/utils.go index 7c399f73..da6ccb61 100644 --- a/common/utils.go +++ b/common/utils.go @@ -243,7 +243,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err } - exits, err := submission.Exits() + withdrawRequests, err := submission.WithdrawRequests() if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err } @@ -263,7 +263,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, DepositReceipts: depositReceipts, - Exits: exits, + WithdrawRequests: withdrawRequests, }, nil } diff --git a/services/api/service.go b/services/api/service.go index 04fdcec5..85703a00 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -137,13 +137,13 @@ type RelayAPIOpts struct { } type payloadAttributesHelper struct { - slot uint64 - parentHash string - withdrawalsRoot phase0.Root - parentBeaconRoot *phase0.Root - payloadAttributes beaconclient.PayloadAttributes - depositReceiptsRoot phase0.Root - exitsRoot phase0.Root + slot uint64 + parentHash string + withdrawalsRoot phase0.Root + parentBeaconRoot *phase0.Root + payloadAttributes beaconclient.PayloadAttributes + depositReceiptsRoot phase0.Root + withdrawRequestsRoot phase0.Root } // Data needed to issue a block validation request. @@ -1616,12 +1616,12 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) "numDepositReceipts": len(depositReceipts), }) - exits, err := getPayloadResp.Exits() + withdrawRequests, err := getPayloadResp.WithdrawRequests() if err != nil { - log.WithError(err).Info("failed to get exits") + log.WithError(err).Info("failed to get withdraw requests") } log = log.WithFields(logrus.Fields{ - "numExecutionLayerExits": len(exits), + "numExecutionLayerWithdrawRequests": len(withdrawRequests), }) } log.Info("execution payload delivered") @@ -1711,14 +1711,14 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log return attrs, false } - exitsRoot, err := ComputeExitsRoot(submission.Exits) + withdrawRequestsRoot, err := ComputeWithdrawRequestsRoot(submission.WithdrawRequests) if err != nil { - log.WithError(err).Warn("could not compute exits root from payload") - api.RespondError(w, http.StatusBadRequest, "could not compute exits root") + log.WithError(err).Warn("could not compute withdraw requests root from payload") + api.RespondError(w, http.StatusBadRequest, "could not compute withdraw requests root") return attrs, false } - if exitsRoot != attrs.exitsRoot { - msg := fmt.Sprintf("incorrect exits root - got: %s, expected: %s", exitsRoot.String(), attrs.exitsRoot.String()) + if withdrawRequestsRoot != attrs.withdrawRequestsRoot { + msg := fmt.Sprintf("incorrect withdraw requests root - got: %s, expected: %s", withdrawRequestsRoot.String(), attrs.withdrawRequestsRoot.String()) log.Info(msg) api.RespondError(w, http.StatusBadRequest, msg) return attrs, false @@ -2041,13 +2041,13 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque "numDepositReceipts": len(depositReceipts), }) - exits, err := payload.Exits() + withdrawRequests, err := payload.WithdrawRequests() if err != nil { api.RespondError(w, http.StatusBadRequest, err.Error()) return } log = log.WithFields(logrus.Fields{ - "numExecutionLayerExits": len(exits), + "numExecutionLayerWithdrawRequests": len(withdrawRequests), }) } diff --git a/services/api/types_test.go b/services/api/types_test.go index 9b1fb1e9..ce315a78 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -124,24 +124,24 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { Version: spec.DataVersionElectra, Electra: &builderApiElectra.SubmitBlockRequest{ ExecutionPayload: &electra.ExecutionPayload{ - ParentHash: phase0.Hash32{0x01}, - FeeRecipient: bellatrix.ExecutionAddress{0x02}, - StateRoot: phase0.Root{0x03}, - ReceiptsRoot: phase0.Root{0x04}, - LogsBloom: [256]byte{0x05}, - PrevRandao: phase0.Hash32{0x06}, - BlockNumber: 5001, - GasLimit: 5002, - GasUsed: 5003, - Timestamp: 5004, - ExtraData: []byte{0x07}, - BaseFeePerGas: uint256.NewInt(123), - BlockHash: phase0.Hash32{0x09}, - Transactions: []bellatrix.Transaction{}, - BlobGasUsed: 5005, - ExcessBlobGas: 5006, - DepositReceipts: make([]*electra.DepositReceipt, 0), - Exits: make([]*electra.ExecutionLayerExit, 0), + ParentHash: phase0.Hash32{0x01}, + FeeRecipient: bellatrix.ExecutionAddress{0x02}, + StateRoot: phase0.Root{0x03}, + ReceiptsRoot: phase0.Root{0x04}, + LogsBloom: [256]byte{0x05}, + PrevRandao: phase0.Hash32{0x06}, + BlockNumber: 5001, + GasLimit: 5002, + GasUsed: 5003, + Timestamp: 5004, + ExtraData: []byte{0x07}, + BaseFeePerGas: uint256.NewInt(123), + BlockHash: phase0.Hash32{0x09}, + Transactions: []bellatrix.Transaction{}, + BlobGasUsed: 5005, + ExcessBlobGas: 5006, + DepositReceipts: make([]*electra.DepositReceipt, 0), + WithdrawRequests: make([]*electra.ExecutionLayerWithdrawRequest, 0), }, BlobsBundle: &builderApiDeneb.BlobsBundle{ Commitments: []deneb.KZGCommitment{}, diff --git a/services/api/utils.go b/services/api/utils.go index 9f12d30b..0f5245f0 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -23,7 +23,7 @@ var ( ErrUnsupportedPayload = errors.New("unsupported payload version") ErrNoWithdrawals = errors.New("no withdrawals") ErrNoDepositReceipts = errors.New("no deposit receipts") - ErrNoExits = errors.New("no execution layer exits") + ErrNoWithdrawRequests = errors.New("no execution layer withdraw requests") ErrPayloadMismatch = errors.New("beacon-block and payload version mismatch") ErrHeaderHTRMismatch = errors.New("beacon-block and payload header mismatch") ErrBlobMismatch = errors.New("beacon-block and payload blob contents mismatch") @@ -53,19 +53,19 @@ func ComputeWithdrawalsRoot(w []*capella.Withdrawal) (phase0.Root, error) { return withdrawals.HashTreeRoot() } -func ComputeDepositReceiptsRoot(e []*electra.DepositReceipt) (phase0.Root, error) { - if e == nil { +func ComputeDepositReceiptsRoot(d []*electra.DepositReceipt) (phase0.Root, error) { + if d == nil { return phase0.Root{}, ErrNoDepositReceipts } - depositReceipts := eth2UtilElectra.DepositReceipts{DepositReceipts: e} + depositReceipts := eth2UtilElectra.DepositReceipts{DepositReceipts: d} return depositReceipts.HashTreeRoot() } -func ComputeExitsRoot(e []*electra.ExecutionLayerExit) (phase0.Root, error) { +func ComputeWithdrawRequestsRoot(e []*electra.ExecutionLayerWithdrawRequest) (phase0.Root, error) { if e == nil { - return phase0.Root{}, ErrNoExits + return phase0.Root{}, ErrNoWithdrawRequests } - exits := eth2UtilElectra.ExecutionPayloadExits{Exits: e} + exits := eth2UtilElectra.ExecutionPayloadWithdrawRequests{WithdrawRequests: e} return exits.HashTreeRoot() } From 8a5ed480a2c032adcccbd6878273849118394d8a Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Sat, 27 Apr 2024 09:09:50 -0500 Subject: [PATCH 10/28] Rename WithdrawRequest to WithdrawalRequest --- common/types.go | 2 +- common/utils.go | 4 ++-- services/api/service.go | 34 +++++++++++++++++----------------- services/api/types_test.go | 36 ++++++++++++++++++------------------ services/api/utils.go | 20 ++++++++++---------- 5 files changed, 48 insertions(+), 48 deletions(-) diff --git a/common/types.go b/common/types.go index 48dccb40..d4a5b938 100644 --- a/common/types.go +++ b/common/types.go @@ -441,7 +441,7 @@ type BlockSubmissionInfo struct { BlobGasUsed uint64 ExcessBlobGas uint64 DepositReceipts []*electra.DepositReceipt - WithdrawRequests []*electra.ExecutionLayerWithdrawRequest + WithdrawalRequests []*electra.ExecutionLayerWithdrawalRequest } /* diff --git a/common/utils.go b/common/utils.go index da6ccb61..c1b88f52 100644 --- a/common/utils.go +++ b/common/utils.go @@ -243,7 +243,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err } - withdrawRequests, err := submission.WithdrawRequests() + withdrawalRequests, err := submission.WithdrawalRequests() if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err } @@ -263,7 +263,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, DepositReceipts: depositReceipts, - WithdrawRequests: withdrawRequests, + WithdrawalRequests: withdrawalRequests, }, nil } diff --git a/services/api/service.go b/services/api/service.go index 85703a00..fafc681a 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -137,13 +137,13 @@ type RelayAPIOpts struct { } type payloadAttributesHelper struct { - slot uint64 - parentHash string - withdrawalsRoot phase0.Root - parentBeaconRoot *phase0.Root - payloadAttributes beaconclient.PayloadAttributes - depositReceiptsRoot phase0.Root - withdrawRequestsRoot phase0.Root + slot uint64 + parentHash string + withdrawalsRoot phase0.Root + parentBeaconRoot *phase0.Root + payloadAttributes beaconclient.PayloadAttributes + depositReceiptsRoot phase0.Root + withdrawalRequestsRoot phase0.Root } // Data needed to issue a block validation request. @@ -1616,12 +1616,12 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) "numDepositReceipts": len(depositReceipts), }) - withdrawRequests, err := getPayloadResp.WithdrawRequests() + withdrawalRequests, err := getPayloadResp.WithdrawalRequests() if err != nil { - log.WithError(err).Info("failed to get withdraw requests") + log.WithError(err).Info("failed to get withdrawal requests") } log = log.WithFields(logrus.Fields{ - "numExecutionLayerWithdrawRequests": len(withdrawRequests), + "numExecutionLayerWithdrawalRequests": len(withdrawalRequests), }) } log.Info("execution payload delivered") @@ -1711,14 +1711,14 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log return attrs, false } - withdrawRequestsRoot, err := ComputeWithdrawRequestsRoot(submission.WithdrawRequests) + withdrawalRequestsRoot, err := ComputeWithdrawalRequestsRoot(submission.WithdrawalRequests) if err != nil { - log.WithError(err).Warn("could not compute withdraw requests root from payload") - api.RespondError(w, http.StatusBadRequest, "could not compute withdraw requests root") + log.WithError(err).Warn("could not compute withdrawal requests root from payload") + api.RespondError(w, http.StatusBadRequest, "could not compute withdrawal requests root") return attrs, false } - if withdrawRequestsRoot != attrs.withdrawRequestsRoot { - msg := fmt.Sprintf("incorrect withdraw requests root - got: %s, expected: %s", withdrawRequestsRoot.String(), attrs.withdrawRequestsRoot.String()) + if withdrawalRequestsRoot != attrs.withdrawalRequestsRoot { + msg := fmt.Sprintf("incorrect withdrawal requests root - got: %s, expected: %s", withdrawalRequestsRoot.String(), attrs.withdrawalRequestsRoot.String()) log.Info(msg) api.RespondError(w, http.StatusBadRequest, msg) return attrs, false @@ -2041,13 +2041,13 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque "numDepositReceipts": len(depositReceipts), }) - withdrawRequests, err := payload.WithdrawRequests() + withdrawalRequests, err := payload.WithdrawalRequests() if err != nil { api.RespondError(w, http.StatusBadRequest, err.Error()) return } log = log.WithFields(logrus.Fields{ - "numExecutionLayerWithdrawRequests": len(withdrawRequests), + "numExecutionLayerWithdrawalRequests": len(withdrawalRequests), }) } diff --git a/services/api/types_test.go b/services/api/types_test.go index ce315a78..d9d13bdf 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -124,24 +124,24 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { Version: spec.DataVersionElectra, Electra: &builderApiElectra.SubmitBlockRequest{ ExecutionPayload: &electra.ExecutionPayload{ - ParentHash: phase0.Hash32{0x01}, - FeeRecipient: bellatrix.ExecutionAddress{0x02}, - StateRoot: phase0.Root{0x03}, - ReceiptsRoot: phase0.Root{0x04}, - LogsBloom: [256]byte{0x05}, - PrevRandao: phase0.Hash32{0x06}, - BlockNumber: 5001, - GasLimit: 5002, - GasUsed: 5003, - Timestamp: 5004, - ExtraData: []byte{0x07}, - BaseFeePerGas: uint256.NewInt(123), - BlockHash: phase0.Hash32{0x09}, - Transactions: []bellatrix.Transaction{}, - BlobGasUsed: 5005, - ExcessBlobGas: 5006, - DepositReceipts: make([]*electra.DepositReceipt, 0), - WithdrawRequests: make([]*electra.ExecutionLayerWithdrawRequest, 0), + ParentHash: phase0.Hash32{0x01}, + FeeRecipient: bellatrix.ExecutionAddress{0x02}, + StateRoot: phase0.Root{0x03}, + ReceiptsRoot: phase0.Root{0x04}, + LogsBloom: [256]byte{0x05}, + PrevRandao: phase0.Hash32{0x06}, + BlockNumber: 5001, + GasLimit: 5002, + GasUsed: 5003, + Timestamp: 5004, + ExtraData: []byte{0x07}, + BaseFeePerGas: uint256.NewInt(123), + BlockHash: phase0.Hash32{0x09}, + Transactions: []bellatrix.Transaction{}, + BlobGasUsed: 5005, + ExcessBlobGas: 5006, + DepositReceipts: make([]*electra.DepositReceipt, 0), + WithdrawalRequests: make([]*electra.ExecutionLayerWithdrawalRequest, 0), }, BlobsBundle: &builderApiDeneb.BlobsBundle{ Commitments: []deneb.KZGCommitment{}, diff --git a/services/api/utils.go b/services/api/utils.go index 0f5245f0..58443e13 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -20,13 +20,13 @@ var ( ErrBlockHashMismatch = errors.New("blockHash mismatch") ErrParentHashMismatch = errors.New("parentHash mismatch") - ErrUnsupportedPayload = errors.New("unsupported payload version") - ErrNoWithdrawals = errors.New("no withdrawals") - ErrNoDepositReceipts = errors.New("no deposit receipts") - ErrNoWithdrawRequests = errors.New("no execution layer withdraw requests") - ErrPayloadMismatch = errors.New("beacon-block and payload version mismatch") - ErrHeaderHTRMismatch = errors.New("beacon-block and payload header mismatch") - ErrBlobMismatch = errors.New("beacon-block and payload blob contents mismatch") + ErrUnsupportedPayload = errors.New("unsupported payload version") + ErrNoWithdrawals = errors.New("no withdrawals") + ErrNoDepositReceipts = errors.New("no deposit receipts") + ErrNoWithdrawalRequests = errors.New("no execution layer withdrawal requests") + ErrPayloadMismatch = errors.New("beacon-block and payload version mismatch") + ErrHeaderHTRMismatch = errors.New("beacon-block and payload header mismatch") + ErrBlobMismatch = errors.New("beacon-block and payload blob contents mismatch") ) func SanityCheckBuilderBlockSubmission(payload *common.VersionedSubmitBlockRequest) error { @@ -61,11 +61,11 @@ func ComputeDepositReceiptsRoot(d []*electra.DepositReceipt) (phase0.Root, error return depositReceipts.HashTreeRoot() } -func ComputeWithdrawRequestsRoot(e []*electra.ExecutionLayerWithdrawRequest) (phase0.Root, error) { +func ComputeWithdrawalRequestsRoot(e []*electra.ExecutionLayerWithdrawalRequest) (phase0.Root, error) { if e == nil { - return phase0.Root{}, ErrNoWithdrawRequests + return phase0.Root{}, ErrNoWithdrawalRequests } - exits := eth2UtilElectra.ExecutionPayloadWithdrawRequests{WithdrawRequests: e} + exits := eth2UtilElectra.ExecutionPayloadWithdrawalRequests{WithdrawalRequests: e} return exits.HashTreeRoot() } From ec5f753314d545cb215bd779258afeef51cd0a52 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 08:53:16 -0500 Subject: [PATCH 11/28] Use go-*-client@electra & lightclient's geth --- go.mod | 23 +++++++---------------- go.sum | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 5a0a9911..33af565f 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,13 @@ go 1.21 require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 - github.com/attestantio/go-builder-client v0.4.3-0.20240124194555-d44db06f45fa - github.com/attestantio/go-eth2-client v0.21.1 + github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 + github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 github.com/ethereum/go-ethereum v1.13.14 - github.com/flashbots/go-boost-utils v1.8.0 + github.com/flashbots/go-boost-utils v1.8.2-0.20240509132735-ee2810094e51 github.com/flashbots/go-utils v0.5.0 github.com/go-redis/redis/v9 v9.0.0-rc.1 github.com/gorilla/mux v1.8.1 @@ -73,7 +73,7 @@ require ( github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - golang.org/x/sync v0.5.0 // indirect + golang.org/x/sync v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/protobuf v1.33.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect @@ -105,7 +105,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect golang.org/x/crypto v0.22.0 // indirect - golang.org/x/net v0.21.0 // indirect + golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.19.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect @@ -121,14 +121,5 @@ retract ( v1.0.0-alpha1 ) -// git clone git@github.com:jtraglia/go-eth2-client.git -b electra -replace github.com/attestantio/go-eth2-client => ../../jtraglia/go-eth2-client - -// git clone git@github.com:jtraglia/go-builder-client.git -b electra -replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-client - -// git clone git@github.com:flashbots/go-boost-utils.git -b electra -replace github.com/flashbots/go-boost-utils => ../../flashbots/go-boost-utils - -// git clone git@github.com:jtraglia/go-ethereum.git -b electra -replace github.com/ethereum/go-ethereum => ../../jtraglia/go-ethereum +// This version points to Lightclient's prague-devnet-0 branch. +replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 diff --git a/go.sum b/go.sum index dea80622..4ccd06d1 100644 --- a/go.sum +++ b/go.sum @@ -11,6 +11,10 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= +github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= +github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= +github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 h1:gwMEOhFdbmCJy5olyRtGPmM4RoIXo6v2HkbKt7YpPr4= +github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16/go.mod h1:Ht9tN0WlhpgIWWO7Hqfi3/nq2rUGQv/zCd/BMI93a84= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -91,6 +95,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= +github.com/flashbots/go-boost-utils v1.8.2-0.20240509132735-ee2810094e51 h1:cX6+yhGpc+ghTNPC3tkraioksrpST/8uVVsK+8pvKag= +github.com/flashbots/go-boost-utils v1.8.2-0.20240509132735-ee2810094e51/go.mod h1:bXjCqVVl2PVkYzAHXbxm66sSTKQDQip99wqPOGka44g= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= github.com/flashbots/go-utils v0.5.0/go.mod h1:LauDwifaRdSK0mS5X34GR59pJtUu1T/lOFNdff1BqtI= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -148,6 +154,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -189,6 +197,8 @@ github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ic github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.8 h1:3fdt97i/cwSU83+E0hZTC/Xpc9mTZxc6UWSCRcSbxiE= github.com/lib/pq v1.10.8/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 h1:srEOH43WDUtXLofgCmo3LOGUEfoVpe76/ho1qt7RmPs= +github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc= github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= @@ -323,15 +333,15 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From a9caf4ef2740d528b595eaaeec1e341908de2eea Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 09:22:38 -0500 Subject: [PATCH 12/28] Fix linter issues --- .golangci.yaml | 1 + services/api/service.go | 1 + 2 files changed, 2 insertions(+) diff --git a/.golangci.yaml b/.golangci.yaml index 3229c00f..e54bbe61 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -73,6 +73,7 @@ linters-settings: replace-allow-list: - github.com/attestantio/go-builder-client - github.com/attestantio/go-eth2-client + - github.com/ethereum/go-ethereum maintidx: under: 5 diff --git a/services/api/service.go b/services/api/service.go index af133f89..849ebf0e 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -1245,6 +1245,7 @@ func (api *RelayAPI) checkProposerSignature(block *common.VersionedSignedBlinded } } +//nolint:gocognit func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) { api.getPayloadCallsInFlight.Add(1) defer api.getPayloadCallsInFlight.Done() From b0e3d4db89c6fe351053e4d2e2269da4b10d3b3d Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 17 May 2024 11:08:52 +0300 Subject: [PATCH 13/28] Fix issues & temporarily skip block simulation --- common/types.go | 1 + datastore/redis.go | 4 +-- go.mod | 5 +++- go.sum | 4 +-- services/api/blocksim_ratelimiter.go | 9 +++++- services/api/service.go | 45 ++++++---------------------- 6 files changed, 26 insertions(+), 42 deletions(-) diff --git a/common/types.go b/common/types.go index d4a5b938..cabb2b1d 100644 --- a/common/types.go +++ b/common/types.go @@ -165,6 +165,7 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error BellatrixForkVersionHex: bellatrixForkVersion, CapellaForkVersionHex: capellaForkVersion, DenebForkVersionHex: denebForkVersion, + ElectraForkVersionHex: electraForkVersion, DomainBuilder: domainBuilder, DomainBeaconProposerBellatrix: domainBeaconProposerBellatrix, DomainBeaconProposerCapella: domainBeaconProposerCapella, diff --git a/datastore/redis.go b/datastore/redis.go index c9a417de..f4d35735 100644 --- a/datastore/redis.go +++ b/datastore/redis.go @@ -380,7 +380,7 @@ func (r *RedisCache) GetPayloadContents(slot uint64, proposerPubkey, blockHash s return resp, err } -func (r *RedisCache) SavePayloadContentsElectra(ctx context.Context, tx redis.Pipeliner, slot uint64, proposerPubkey, blockHash string, execPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) (err error) { +func (r *RedisCache) SavePayloadContentsElectra(ctx context.Context, tx redis.Pipeliner, slot uint64, proposerPubkey, blockHash string, execPayload *builderApiElectra.ExecutionPayloadAndBlobsBundle) (err error) { key := r.keyPayloadContentsElectra(slot, proposerPubkey, blockHash) b, err := execPayload.MarshalSSZ() if err != nil { @@ -598,7 +598,7 @@ func (r *RedisCache) SaveBidAndUpdateTopBid(ctx context.Context, pipeliner redis return state, err } case spec.DataVersionElectra: - err = r.SavePayloadContentsElectra(ctx, pipeliner, submission.BidTrace.Slot, submission.BidTrace.ProposerPubkey.String(), submission.BidTrace.BlockHash.String(), getPayloadResponse.Deneb) + err = r.SavePayloadContentsElectra(ctx, pipeliner, submission.BidTrace.Slot, submission.BidTrace.ProposerPubkey.String(), submission.BidTrace.BlockHash.String(), getPayloadResponse.Electra) if err != nil { return state, err } diff --git a/go.mod b/go.mod index 33af565f..33b2be03 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 - github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 + github.com/attestantio/go-eth2-client v0.21.4-0.20240514220516-2646ce28c3e4 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 @@ -123,3 +123,6 @@ retract ( // This version points to Lightclient's prague-devnet-0 branch. replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 + +// Temporary replacement until Jim merges https://github.com/attestantio/go-eth2-client/pull/141 +replace github.com/attestantio/go-eth2-client => github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 diff --git a/go.sum b/go.sum index 4ccd06d1..f41bdd7d 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,6 @@ github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoO github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= -github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 h1:gwMEOhFdbmCJy5olyRtGPmM4RoIXo6v2HkbKt7YpPr4= -github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16/go.mod h1:Ht9tN0WlhpgIWWO7Hqfi3/nq2rUGQv/zCd/BMI93a84= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -175,6 +173,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 h1:HH8D9fL6hkOsyRDpWhw4yYvZrMReyWf9WSWaMQt0Jjw= +github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/services/api/blocksim_ratelimiter.go b/services/api/blocksim_ratelimiter.go index 9f2634db..bf39dd7f 100644 --- a/services/api/blocksim_ratelimiter.go +++ b/services/api/blocksim_ratelimiter.go @@ -24,6 +24,7 @@ var ( ErrJSONDecodeFailed = errors.New("json error") ErrNoCapellaPayload = errors.New("capella payload is nil") ErrNoDenebPayload = errors.New("deneb payload is nil") + ErrNoElectraPayload = errors.New("electra payload is nil") maxConcurrentBlocks = int64(cli.GetEnvInt("BLOCKSIM_MAX_CONCURRENT", 4)) // 0 for no maximum simRequestTimeout = time.Duration(cli.GetEnvInt("BLOCKSIM_TIMEOUT_MS", 10000)) * time.Millisecond @@ -86,6 +87,10 @@ func (b *BlockSimulationRateLimiter) Send(context context.Context, payload *comm return ErrNoDenebPayload, nil } + if payload.Version == spec.DataVersionElectra && payload.Electra == nil { + return ErrNoElectraPayload, nil + } + submission, err := common.GetBlockSubmissionInfo(payload.VersionedSubmitBlockRequest) if err != nil { return err, nil @@ -102,7 +107,9 @@ func (b *BlockSimulationRateLimiter) Send(context context.Context, payload *comm } // Create and fire off JSON-RPC request - if payload.Version == spec.DataVersionDeneb { + if payload.Version == spec.DataVersionElectra { + simReq = jsonrpc.NewJSONRPCRequest("1", "flashbots_validateBuilderSubmissionV4", payload) + } else if payload.Version == spec.DataVersionDeneb { simReq = jsonrpc.NewJSONRPCRequest("1", "flashbots_validateBuilderSubmissionV3", payload) } else { simReq = jsonrpc.NewJSONRPCRequest("1", "flashbots_validateBuilderSubmissionV2", payload) diff --git a/services/api/service.go b/services/api/service.go index 849ebf0e..7b5516aa 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -137,13 +137,11 @@ type RelayAPIOpts struct { } type payloadAttributesHelper struct { - slot uint64 - parentHash string - withdrawalsRoot phase0.Root - parentBeaconRoot *phase0.Root - payloadAttributes beaconclient.PayloadAttributes - depositReceiptsRoot phase0.Root - withdrawalRequestsRoot phase0.Root + slot uint64 + parentHash string + withdrawalsRoot phase0.Root + parentBeaconRoot *phase0.Root + payloadAttributes beaconclient.PayloadAttributes } // Data needed to issue a block validation request. @@ -559,7 +557,7 @@ func (api *RelayAPI) isCapella(slot uint64) bool { } func (api *RelayAPI) isDeneb(slot uint64) bool { - return hasReachedFork(slot, api.denebEpoch) + return hasReachedFork(slot, api.denebEpoch) && !hasReachedFork(slot, api.electraEpoch) } func (api *RelayAPI) isElectra(slot uint64) bool { @@ -588,6 +586,8 @@ func (api *RelayAPI) simulateBlock(ctx context.Context, opts blockSimOptions) (r "durationMs": time.Since(t).Milliseconds(), "numWaiting": api.blockSimRateLimiter.CurrentCounter(), }) + // TODO: Remove this when we update the builder. + goto success if validationErr != nil { if api.ffIgnorableValidationErrors { // Operators chooses to ignore certain validation errors @@ -604,6 +604,7 @@ func (api *RelayAPI) simulateBlock(ctx context.Context, opts blockSimOptions) (r log.WithError(requestErr).Warn("block validation failed: request error") return requestErr, nil } +success: log.Info("block validation successful") return nil, nil } @@ -1698,34 +1699,6 @@ func (api *RelayAPI) checkSubmissionPayloadAttrs(w http.ResponseWriter, log *log } } - if hasReachedFork(submission.BidTrace.Slot, api.electraEpoch) { - depositReceiptsRoot, err := ComputeDepositReceiptsRoot(submission.DepositReceipts) - if err != nil { - log.WithError(err).Warn("could not compute deposit receipts root from payload") - api.RespondError(w, http.StatusBadRequest, "could not compute deposit receipts root") - return attrs, false - } - if depositReceiptsRoot != attrs.depositReceiptsRoot { - msg := fmt.Sprintf("incorrect deposit receipts root - got: %s, expected: %s", depositReceiptsRoot.String(), attrs.depositReceiptsRoot.String()) - log.Info(msg) - api.RespondError(w, http.StatusBadRequest, msg) - return attrs, false - } - - withdrawalRequestsRoot, err := ComputeWithdrawalRequestsRoot(submission.WithdrawalRequests) - if err != nil { - log.WithError(err).Warn("could not compute withdrawal requests root from payload") - api.RespondError(w, http.StatusBadRequest, "could not compute withdrawal requests root") - return attrs, false - } - if withdrawalRequestsRoot != attrs.withdrawalRequestsRoot { - msg := fmt.Sprintf("incorrect withdrawal requests root - got: %s, expected: %s", withdrawalRequestsRoot.String(), attrs.withdrawalRequestsRoot.String()) - log.Info(msg) - api.RespondError(w, http.StatusBadRequest, msg) - return attrs, false - } - } - return attrs, true } From e63a669d70502a84e97b4d44228cf00b27add622 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 17 May 2024 15:15:47 +0300 Subject: [PATCH 14/28] Use new go-eth2-client --- go.mod | 5 +---- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 33b2be03..38a42081 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 - github.com/attestantio/go-eth2-client v0.21.4-0.20240514220516-2646ce28c3e4 + github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 @@ -123,6 +123,3 @@ retract ( // This version points to Lightclient's prague-devnet-0 branch. replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 - -// Temporary replacement until Jim merges https://github.com/attestantio/go-eth2-client/pull/141 -replace github.com/attestantio/go-eth2-client => github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 diff --git a/go.sum b/go.sum index f41bdd7d..d190e3e8 100644 --- a/go.sum +++ b/go.sum @@ -13,6 +13,8 @@ github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoO github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= +github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 h1:3HjnisE8nFHBhf20H4ya9Q+4HvX1bbV8lCM6LJLLcg0= +github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -173,8 +175,6 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 h1:HH8D9fL6hkOsyRDpWhw4yYvZrMReyWf9WSWaMQt0Jjw= -github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= From 3577f76ca86c9e37021a5a20b6792e08f4ecefe7 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 22 May 2024 14:54:04 -0500 Subject: [PATCH 15/28] Use jtraglia's geth block-validation branch --- go.mod | 17 +++++++++-------- go.sum | 32 ++++++++++++++++---------------- services/api/service.go | 3 --- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index 38a42081..5b2bba5f 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 github.com/ethereum/go-ethereum v1.13.14 - github.com/flashbots/go-boost-utils v1.8.2-0.20240509132735-ee2810094e51 + github.com/flashbots/go-boost-utils v1.8.2-0.20240517121405-4e05fe727c9d github.com/flashbots/go-utils v0.5.0 github.com/go-redis/redis/v9 v9.0.0-rc.1 github.com/gorilla/mux v1.8.1 @@ -26,7 +26,7 @@ require ( github.com/tdewolff/minify v2.3.6+incompatible go.uber.org/atomic v1.11.0 golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa - golang.org/x/text v0.14.0 + golang.org/x/text v0.15.0 ) require ( @@ -41,11 +41,11 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect github.com/fatih/color v1.16.0 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -104,9 +104,9 @@ require ( github.com/yuin/gopher-lua v1.1.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect - golang.org/x/crypto v0.22.0 // indirect + golang.org/x/crypto v0.23.0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/sys v0.19.0 // indirect + golang.org/x/sys v0.20.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -121,5 +121,6 @@ retract ( v1.0.0-alpha1 ) -// This version points to Lightclient's prague-devnet-0 branch. -replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 +// This version points to jtraglia's block-validation branch, which +// is based off of lightclient's prague-devnet-0 branch. +replace github.com/ethereum/go-ethereum => github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2 diff --git a/go.sum b/go.sum index d190e3e8..3d898a90 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -91,20 +91,20 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= -github.com/flashbots/go-boost-utils v1.8.2-0.20240509132735-ee2810094e51 h1:cX6+yhGpc+ghTNPC3tkraioksrpST/8uVVsK+8pvKag= -github.com/flashbots/go-boost-utils v1.8.2-0.20240509132735-ee2810094e51/go.mod h1:bXjCqVVl2PVkYzAHXbxm66sSTKQDQip99wqPOGka44g= +github.com/flashbots/go-boost-utils v1.8.2-0.20240517121405-4e05fe727c9d h1:D/9cfnzh9iXYbPdbypvjnB7gm9uDm+VO4Mp2R8NAi+s= +github.com/flashbots/go-boost-utils v1.8.2-0.20240517121405-4e05fe727c9d/go.mod h1:hLgdp+xC7bs60LKrdK6bUP6Ve4zLlujOL2+Z3ez7nGc= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= github.com/flashbots/go-utils v0.5.0/go.mod h1:LauDwifaRdSK0mS5X34GR59pJtUu1T/lOFNdff1BqtI= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -175,6 +175,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2 h1:/DM+voBQCaCA1zKBms4E89fpaZuJeh3BT8qHa8IMK/c= +github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2/go.mod h1:P+/ggpK6FZCAGwDFdOoAbyClaX8P0r65x5RFX3Bkirw= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -197,8 +199,6 @@ github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ic github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.8 h1:3fdt97i/cwSU83+E0hZTC/Xpc9mTZxc6UWSCRcSbxiE= github.com/lib/pq v1.10.8/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 h1:srEOH43WDUtXLofgCmo3LOGUEfoVpe76/ho1qt7RmPs= -github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc= github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= @@ -318,8 +318,8 @@ golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -361,15 +361,15 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/services/api/service.go b/services/api/service.go index 7b5516aa..5bcf875f 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -586,8 +586,6 @@ func (api *RelayAPI) simulateBlock(ctx context.Context, opts blockSimOptions) (r "durationMs": time.Since(t).Milliseconds(), "numWaiting": api.blockSimRateLimiter.CurrentCounter(), }) - // TODO: Remove this when we update the builder. - goto success if validationErr != nil { if api.ffIgnorableValidationErrors { // Operators chooses to ignore certain validation errors @@ -604,7 +602,6 @@ func (api *RelayAPI) simulateBlock(ctx context.Context, opts blockSimOptions) (r log.WithError(requestErr).Warn("block validation failed: request error") return requestErr, nil } -success: log.Info("block validation successful") return nil, nil } From fba3991ec026ba46f470561c12b2f3c067a211ed Mon Sep 17 00:00:00 2001 From: avalonche Date: Tue, 6 Aug 2024 10:37:04 +1000 Subject: [PATCH 16/28] update deps --- common/types.go | 5 +++-- common/types_spec.go | 3 ++- common/utils.go | 9 +++++++-- go.mod | 6 +++--- go.sum | 12 ++++++------ services/api/service.go | 12 ++++++------ services/api/types_test.go | 4 ++-- services/api/utils.go | 22 +++++++++++++++------- 8 files changed, 44 insertions(+), 29 deletions(-) diff --git a/common/types.go b/common/types.go index cabb2b1d..ea719cc9 100644 --- a/common/types.go +++ b/common/types.go @@ -441,8 +441,9 @@ type BlockSubmissionInfo struct { Blobs []deneb.Blob BlobGasUsed uint64 ExcessBlobGas uint64 - DepositReceipts []*electra.DepositReceipt - WithdrawalRequests []*electra.ExecutionLayerWithdrawalRequest + DepositRequests []*electra.DepositRequest + WithdrawalRequests []*electra.WithdrawalRequest + ConsolidationRequests []*electra.ConsolidationRequest } /* diff --git a/common/types_spec.go b/common/types_spec.go index b3838628..743706a2 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -251,6 +251,7 @@ func CapellaUnblindSignedBlock(blindedBlock *eth2ApiV1Capella.SignedBlindedBeaco } } +//nolint:dupl func DenebUnblindSignedBlock(blindedBlock *eth2ApiV1Deneb.SignedBlindedBeaconBlock, blockPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Deneb.SignedBlockContents { return ð2ApiV1Deneb.SignedBlockContents{ SignedBlock: &deneb.SignedBeaconBlock{ @@ -281,6 +282,7 @@ func DenebUnblindSignedBlock(blindedBlock *eth2ApiV1Deneb.SignedBlindedBeaconBlo } } +//nolint:dupl func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaconBlock, blockPayload *builderApiElectra.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Electra.SignedBlockContents { return ð2ApiV1Electra.SignedBlockContents{ SignedBlock: &electra.SignedBeaconBlock{ @@ -302,7 +304,6 @@ func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaco ExecutionPayload: blockPayload.ExecutionPayload, BLSToExecutionChanges: blindedBlock.Message.Body.BLSToExecutionChanges, BlobKZGCommitments: blindedBlock.Message.Body.BlobKZGCommitments, - Consolidations: blindedBlock.Message.Body.Consolidations, }, }, Signature: blindedBlock.Signature, diff --git a/common/utils.go b/common/utils.go index c1b88f52..6ddd8494 100644 --- a/common/utils.go +++ b/common/utils.go @@ -239,7 +239,7 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } - depositReceipts, err := submission.DepositReceipts() + depositRequests, err := submission.DepositRequests() if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err } @@ -247,6 +247,10 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionElectra && err != nil { return nil, err } + consolidationRequests, err := submission.ConsolidationRequests() + if submission.Version >= spec.DataVersionElectra && err != nil { + return nil, err + } return &BlockSubmissionInfo{ BidTrace: bidTrace, Signature: signature, @@ -262,8 +266,9 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm Blobs: blobs, BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, - DepositReceipts: depositReceipts, + DepositRequests: depositRequests, WithdrawalRequests: withdrawalRequests, + ConsolidationRequests: consolidationRequests, }, nil } diff --git a/go.mod b/go.mod index 5b2bba5f..9c0f7428 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,13 @@ go 1.21 require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 - github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 - github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 + github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 + github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 github.com/ethereum/go-ethereum v1.13.14 - github.com/flashbots/go-boost-utils v1.8.2-0.20240517121405-4e05fe727c9d + github.com/flashbots/go-boost-utils v1.8.2-0.20240806002958-647025326142 github.com/flashbots/go-utils v0.5.0 github.com/go-redis/redis/v9 v9.0.0-rc.1 github.com/gorilla/mux v1.8.1 diff --git a/go.sum b/go.sum index 3d898a90..d4bab3f5 100644 --- a/go.sum +++ b/go.sum @@ -11,10 +11,10 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= -github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= -github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= -github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 h1:3HjnisE8nFHBhf20H4ya9Q+4HvX1bbV8lCM6LJLLcg0= -github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= +github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 h1:jJXtY57BeRnwBuEO1VuSUA8lXyG/p91+6pTJissw/Io= +github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024/go.mod h1:jkCVVMh1l98Vor3JYAAj2Ru+oFwfuZN/UjXw83gI86U= +github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 h1:4eDRCMSJU+iMwL5I2cYdwha1So20xBG8xD557o5TlD4= +github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -97,8 +97,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= -github.com/flashbots/go-boost-utils v1.8.2-0.20240517121405-4e05fe727c9d h1:D/9cfnzh9iXYbPdbypvjnB7gm9uDm+VO4Mp2R8NAi+s= -github.com/flashbots/go-boost-utils v1.8.2-0.20240517121405-4e05fe727c9d/go.mod h1:hLgdp+xC7bs60LKrdK6bUP6Ve4zLlujOL2+Z3ez7nGc= +github.com/flashbots/go-boost-utils v1.8.2-0.20240806002958-647025326142 h1:4c9y8KBkgqpAUK/2c7/0VQxmP/8DKXTzS168x5n7FaY= +github.com/flashbots/go-boost-utils v1.8.2-0.20240806002958-647025326142/go.mod h1:acyKu63t1djXA+AJZsBIjCnAd4JQx7a9V/6g+SeY6CI= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= github.com/flashbots/go-utils v0.5.0/go.mod h1:LauDwifaRdSK0mS5X34GR59pJtUu1T/lOFNdff1BqtI= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= diff --git a/services/api/service.go b/services/api/service.go index 5bcf875f..d7008cae 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -1607,12 +1607,12 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) }) } if getPayloadResp.Version >= spec.DataVersionElectra { - depositReceipts, err := getPayloadResp.DepositReceipts() + depositRequests, err := getPayloadResp.DepositRequests() if err != nil { log.WithError(err).Info("failed to get deposit receipts") } log = log.WithFields(logrus.Fields{ - "numDepositReceipts": len(depositReceipts), + "numDepositRequests": len(depositRequests), }) withdrawalRequests, err := getPayloadResp.WithdrawalRequests() @@ -1620,7 +1620,7 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) log.WithError(err).Info("failed to get withdrawal requests") } log = log.WithFields(logrus.Fields{ - "numExecutionLayerWithdrawalRequests": len(withdrawalRequests), + "numWithdrawalRequests": len(withdrawalRequests), }) } log.Info("execution payload delivered") @@ -2007,13 +2007,13 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque }) } if payload.Version >= spec.DataVersionElectra { - depositReceipts, err := payload.DepositReceipts() + depositRequests, err := payload.DepositRequests() if err != nil { api.RespondError(w, http.StatusBadRequest, err.Error()) return } log = log.WithFields(logrus.Fields{ - "numDepositReceipts": len(depositReceipts), + "numDepositRequests": len(depositRequests), }) withdrawalRequests, err := payload.WithdrawalRequests() @@ -2022,7 +2022,7 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque return } log = log.WithFields(logrus.Fields{ - "numExecutionLayerWithdrawalRequests": len(withdrawalRequests), + "numWithdrawalRequests": len(withdrawalRequests), }) } diff --git a/services/api/types_test.go b/services/api/types_test.go index d9d13bdf..0b132180 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -140,8 +140,8 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { Transactions: []bellatrix.Transaction{}, BlobGasUsed: 5005, ExcessBlobGas: 5006, - DepositReceipts: make([]*electra.DepositReceipt, 0), - WithdrawalRequests: make([]*electra.ExecutionLayerWithdrawalRequest, 0), + DepositRequests: make([]*electra.DepositRequest, 0), + WithdrawalRequests: make([]*electra.WithdrawalRequest, 0), }, BlobsBundle: &builderApiDeneb.BlobsBundle{ Commitments: []deneb.KZGCommitment{}, diff --git a/services/api/utils.go b/services/api/utils.go index 7d01a6f1..563901fa 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -22,7 +22,7 @@ var ( ErrUnsupportedPayload = errors.New("unsupported payload version") ErrNoWithdrawals = errors.New("no withdrawals") - ErrNoDepositReceipts = errors.New("no deposit receipts") + ErrNoDepositRequests = errors.New("no deposit receipts") ErrNoWithdrawalRequests = errors.New("no execution layer withdrawal requests") ErrPayloadMismatch = errors.New("beacon-block and payload version mismatch") ErrHeaderHTRMismatch = errors.New("beacon-block and payload header mismatch") @@ -53,22 +53,30 @@ func ComputeWithdrawalsRoot(w []*capella.Withdrawal) (phase0.Root, error) { return withdrawals.HashTreeRoot() } -func ComputeDepositReceiptsRoot(d []*electra.DepositReceipt) (phase0.Root, error) { +func ComputeDepositRequestsRoot(d []*electra.DepositRequest) (phase0.Root, error) { if d == nil { - return phase0.Root{}, ErrNoDepositReceipts + return phase0.Root{}, ErrNoDepositRequests } - depositReceipts := eth2UtilElectra.DepositReceipts{DepositReceipts: d} - return depositReceipts.HashTreeRoot() + depositRequests := eth2UtilElectra.DepositRequests{DepositRequests: d} + return depositRequests.HashTreeRoot() } -func ComputeWithdrawalRequestsRoot(e []*electra.ExecutionLayerWithdrawalRequest) (phase0.Root, error) { +func ComputeWithdrawalRequestsRoot(e []*electra.WithdrawalRequest) (phase0.Root, error) { if e == nil { return phase0.Root{}, ErrNoWithdrawalRequests } - exits := eth2UtilElectra.ExecutionPayloadWithdrawalRequests{WithdrawalRequests: e} + exits := eth2UtilElectra.WithdrawalRequests{WithdrawalRequests: e} return exits.HashTreeRoot() } +func ComputeConsolidationRequestsRoot(c []*electra.ConsolidationRequest) (phase0.Root, error) { + if c == nil { + return phase0.Root{}, nil + } + consolidations := eth2UtilElectra.ConsolidationRequests{ConsolidationRequests: c} + return consolidations.HashTreeRoot() +} + func EqBlindedBlockContentsToBlockContents(bb *common.VersionedSignedBlindedBeaconBlock, payload *builderApi.VersionedSubmitBlindedBlockResponse) error { if bb.Version != payload.Version { return errors.Wrap(ErrPayloadMismatch, fmt.Sprintf("beacon block version %d does not match payload version %d", bb.Version, payload.Version)) From 40fe836f96cdf8e87d38b376afba265e1139776a Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 16:06:25 -0500 Subject: [PATCH 17/28] Update for v1.5.0-alpha.6 --- common/types.go | 4 -- common/types_spec.go | 33 +++------------- common/utils.go | 18 +-------- database/typesconv.go | 5 +-- datastore/redis.go | 5 +-- go.mod | 37 +++++++++++------- go.sum | 58 ++++++++++++++-------------- services/api/blocksim_ratelimiter.go | 2 +- services/api/service.go | 36 ----------------- services/api/types_test.go | 40 +++++++++---------- 10 files changed, 83 insertions(+), 155 deletions(-) diff --git a/common/types.go b/common/types.go index ea719cc9..e119b960 100644 --- a/common/types.go +++ b/common/types.go @@ -12,7 +12,6 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" boostSsz "github.com/flashbots/go-boost-utils/ssz" @@ -441,9 +440,6 @@ type BlockSubmissionInfo struct { Blobs []deneb.Blob BlobGasUsed uint64 ExcessBlobGas uint64 - DepositRequests []*electra.DepositRequest - WithdrawalRequests []*electra.WithdrawalRequest - ConsolidationRequests []*electra.ConsolidationRequest } /* diff --git a/common/types_spec.go b/common/types_spec.go index 39ecb2c9..4b2cd6c5 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -7,7 +7,6 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiCapella "github.com/attestantio/go-builder-client/api/capella" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApiV1 "github.com/attestantio/go-builder-client/api/v1" builderSpec "github.com/attestantio/go-builder-client/spec" eth2Api "github.com/attestantio/go-eth2-client/api" @@ -117,7 +116,7 @@ func BuildGetPayloadResponse(payload *VersionedSubmitBlockRequest) (*builderApi. case spec.DataVersionElectra: return &builderApi.VersionedSubmitBlindedBlockResponse{ Version: spec.DataVersionElectra, - Electra: &builderApiElectra.ExecutionPayloadAndBlobsBundle{ + Electra: &builderApiDeneb.ExecutionPayloadAndBlobsBundle{ ExecutionPayload: payload.Electra.ExecutionPayload, BlobsBundle: payload.Electra.BlobsBundle, }, @@ -175,7 +174,7 @@ func BuilderBlockRequestToSignedBuilderBid(payload *VersionedSubmitBlockRequest, }, }, nil case spec.DataVersionElectra: - builderBid := builderApiElectra.BuilderBid{ + builderBid := builderApiDeneb.BuilderBid{ Header: header.Electra, BlobKZGCommitments: payload.Electra.BlobsBundle.Commitments, Value: value, @@ -189,7 +188,7 @@ func BuilderBlockRequestToSignedBuilderBid(payload *VersionedSubmitBlockRequest, return &builderSpec.VersionedSignedBuilderBid{ Version: spec.DataVersionElectra, - Electra: &builderApiElectra.SignedBuilderBid{ + Electra: &builderApiDeneb.SignedBuilderBid{ Message: &builderBid, Signature: sig, }, @@ -284,7 +283,7 @@ func DenebUnblindSignedBlock(blindedBlock *eth2ApiV1Deneb.SignedBlindedBeaconBlo } //nolint:dupl -func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaconBlock, blockPayload *builderApiElectra.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Electra.SignedBlockContents { +func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaconBlock, blockPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Electra.SignedBlockContents { return ð2ApiV1Electra.SignedBlockContents{ SignedBlock: &electra.SignedBeaconBlock{ Message: &electra.BeaconBlock{ @@ -336,15 +335,6 @@ type denebBuilderBlockValidationRequestJSON struct { ParentBeaconBlockRoot string `json:"parent_beacon_block_root"` } -type electraBuilderBlockValidationRequestJSON struct { - Message *builderApiV1.BidTrace `json:"message"` - ExecutionPayload *electra.ExecutionPayload `json:"execution_payload"` - BlobsBundle *builderApiDeneb.BlobsBundle `json:"blobs_bundle"` - Signature string `json:"signature"` - RegisteredGasLimit uint64 `json:"registered_gas_limit,string"` - ParentBeaconBlockRoot string `json:"parent_beacon_block_root"` -} - func (r *BuilderBlockValidationRequest) MarshalJSON() ([]byte, error) { switch r.Version { //nolint:exhaustive case spec.DataVersionCapella: @@ -364,7 +354,8 @@ func (r *BuilderBlockValidationRequest) MarshalJSON() ([]byte, error) { ParentBeaconBlockRoot: r.ParentBeaconBlockRoot.String(), }) case spec.DataVersionElectra: - return json.Marshal(&electraBuilderBlockValidationRequestJSON{ + // Electra uses the same ExecutionPayload as Deneb + return json.Marshal(&denebBuilderBlockValidationRequestJSON{ Message: r.Electra.Message, ExecutionPayload: r.Electra.ExecutionPayload, BlobsBundle: r.Electra.BlobsBundle, @@ -400,12 +391,6 @@ func (r *VersionedSubmitBlockRequest) MarshalSSZ() ([]byte, error) { func (r *VersionedSubmitBlockRequest) UnmarshalSSZ(input []byte) error { var err error - electraRequest := new(builderApiElectra.SubmitBlockRequest) - if err = electraRequest.UnmarshalSSZ(input); err == nil { - r.Version = spec.DataVersionElectra - r.Electra = electraRequest - return nil - } denebRequest := new(builderApiDeneb.SubmitBlockRequest) if err = denebRequest.UnmarshalSSZ(input); err == nil { r.Version = spec.DataVersionDeneb @@ -451,12 +436,6 @@ func (r *VersionedSubmitBlockRequest) MarshalJSON() ([]byte, error) { func (r *VersionedSubmitBlockRequest) UnmarshalJSON(input []byte) error { var err error - electraRequest := new(builderApiElectra.SubmitBlockRequest) - if err = json.Unmarshal(input, electraRequest); err == nil { - r.Version = spec.DataVersionElectra - r.Electra = electraRequest - return nil - } denebRequest := new(builderApiDeneb.SubmitBlockRequest) if err = json.Unmarshal(input, denebRequest); err == nil { r.Version = spec.DataVersionDeneb diff --git a/common/utils.go b/common/utils.go index 6ddd8494..fb8fbdd5 100644 --- a/common/utils.go +++ b/common/utils.go @@ -16,7 +16,6 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/phase0" ethcommon "github.com/ethereum/go-ethereum/common" @@ -239,18 +238,6 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } - depositRequests, err := submission.DepositRequests() - if submission.Version >= spec.DataVersionElectra && err != nil { - return nil, err - } - withdrawalRequests, err := submission.WithdrawalRequests() - if submission.Version >= spec.DataVersionElectra && err != nil { - return nil, err - } - consolidationRequests, err := submission.ConsolidationRequests() - if submission.Version >= spec.DataVersionElectra && err != nil { - return nil, err - } return &BlockSubmissionInfo{ BidTrace: bidTrace, Signature: signature, @@ -266,9 +253,6 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm Blobs: blobs, BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, - DepositRequests: depositRequests, - WithdrawalRequests: withdrawalRequests, - ConsolidationRequests: consolidationRequests, }, nil } @@ -290,7 +274,7 @@ func GetBlockSubmissionExecutionPayload(submission *VersionedSubmitBlockRequest) case spec.DataVersionElectra: return &builderApi.VersionedSubmitBlindedBlockResponse{ Version: spec.DataVersionElectra, - Electra: &builderApiElectra.ExecutionPayloadAndBlobsBundle{ + Electra: &builderApiDeneb.ExecutionPayloadAndBlobsBundle{ ExecutionPayload: submission.Electra.ExecutionPayload, BlobsBundle: submission.Electra.BlobsBundle, }, diff --git a/database/typesconv.go b/database/typesconv.go index 1d54a62d..135c84d0 100644 --- a/database/typesconv.go +++ b/database/typesconv.go @@ -6,7 +6,6 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/flashbots/mev-boost-relay/common" @@ -36,7 +35,7 @@ func PayloadToExecPayloadEntry(payload *common.VersionedSubmitBlockRequest) (*Ex } version = common.ForkVersionStringDeneb case spec.DataVersionElectra: - _payload, err = json.Marshal(builderApiElectra.ExecutionPayloadAndBlobsBundle{ + _payload, err = json.Marshal(builderApiDeneb.ExecutionPayloadAndBlobsBundle{ ExecutionPayload: payload.Electra.ExecutionPayload, BlobsBundle: payload.Electra.BlobsBundle, }) @@ -108,7 +107,7 @@ func BuilderSubmissionEntryToBidTraceV2WithTimestampJSON(payload *BuilderBlockSu func ExecutionPayloadEntryToExecutionPayload(executionPayloadEntry *ExecutionPayloadEntry) (payload *builderApi.VersionedSubmitBlindedBlockResponse, err error) { payloadVersion := executionPayloadEntry.Version if payloadVersion == common.ForkVersionStringElectra { - executionPayload := new(builderApiElectra.ExecutionPayloadAndBlobsBundle) + executionPayload := new(builderApiDeneb.ExecutionPayloadAndBlobsBundle) err = json.Unmarshal([]byte(executionPayloadEntry.Payload), executionPayload) if err != nil { return nil, err diff --git a/datastore/redis.go b/datastore/redis.go index f4d35735..d32000f4 100644 --- a/datastore/redis.go +++ b/datastore/redis.go @@ -12,7 +12,6 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderSpec "github.com/attestantio/go-builder-client/spec" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" @@ -380,7 +379,7 @@ func (r *RedisCache) GetPayloadContents(slot uint64, proposerPubkey, blockHash s return resp, err } -func (r *RedisCache) SavePayloadContentsElectra(ctx context.Context, tx redis.Pipeliner, slot uint64, proposerPubkey, blockHash string, execPayload *builderApiElectra.ExecutionPayloadAndBlobsBundle) (err error) { +func (r *RedisCache) SavePayloadContentsElectra(ctx context.Context, tx redis.Pipeliner, slot uint64, proposerPubkey, blockHash string, execPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) (err error) { key := r.keyPayloadContentsElectra(slot, proposerPubkey, blockHash) b, err := execPayload.MarshalSSZ() if err != nil { @@ -390,7 +389,7 @@ func (r *RedisCache) SavePayloadContentsElectra(ctx context.Context, tx redis.Pi } func (r *RedisCache) GetPayloadContentsElectra(slot uint64, proposerPubkey, blockHash string) (*builderApi.VersionedSubmitBlindedBlockResponse, error) { - electraPayloadContents := new(builderApiElectra.ExecutionPayloadAndBlobsBundle) + electraPayloadContents := new(builderApiDeneb.ExecutionPayloadAndBlobsBundle) key := r.keyPayloadContentsElectra(slot, proposerPubkey, blockHash) val, err := r.client.Get(context.Background(), key).Result() diff --git a/go.mod b/go.mod index a89480e6..d757f20d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/flashbots/mev-boost-relay -go 1.21 +go 1.22 + +toolchain go1.23.1 require ( github.com/NYTimes/gziphandler v1.1.1 @@ -10,12 +12,12 @@ require ( github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 - github.com/ethereum/go-ethereum v1.13.14 - github.com/flashbots/go-boost-utils v1.8.2-0.20240806002958-647025326142 + github.com/ethereum/go-ethereum v1.14.9 + github.com/flashbots/go-boost-utils v1.8.2-0.20240925192624-22f090f9547b github.com/flashbots/go-utils v0.5.0 github.com/go-redis/redis/v9 v9.0.0-rc.1 github.com/gorilla/mux v1.8.1 - github.com/holiman/uint256 v1.2.4 + github.com/holiman/uint256 v1.3.1 github.com/jmoiron/sqlx v1.3.5 github.com/lib/pq v1.10.8 github.com/pkg/errors v0.9.1 @@ -39,10 +41,11 @@ require ( github.com/DataDog/zstd v1.5.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/cockroachdb/errors v1.11.1 // indirect + github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect @@ -50,9 +53,9 @@ require ( github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/fatih/color v1.16.0 // indirect - github.com/getsentry/sentry-go v0.18.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -62,7 +65,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/uuid v1.3.1 // indirect - github.com/klauspost/compress v1.15.15 // indirect + github.com/klauspost/compress v1.16.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -81,16 +84,16 @@ require ( go.opentelemetry.io/otel/trace v1.25.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) require ( github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect github.com/btcsuite/btcd v0.23.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect @@ -112,7 +115,7 @@ require ( go.uber.org/zap v1.25.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/sys v0.20.0 // indirect + golang.org/x/sys v0.22.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -130,3 +133,9 @@ retract ( // This version points to jtraglia's block-validation branch, which // is based off of lightclient's prague-devnet-0 branch. replace github.com/ethereum/go-ethereum => github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2 + +// Remove this when Jim merges pk910's PR. +replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca + +// Remove this when Jim merge's jtraglia's PR. +replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 diff --git a/go.sum b/go.sum index 76e1f491..ddd783f3 100644 --- a/go.sum +++ b/go.sum @@ -11,16 +11,12 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= -github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 h1:jJXtY57BeRnwBuEO1VuSUA8lXyG/p91+6pTJissw/Io= -github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024/go.mod h1:jkCVVMh1l98Vor3JYAAj2Ru+oFwfuZN/UjXw83gI86U= -github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 h1:4eDRCMSJU+iMwL5I2cYdwha1So20xBG8xD557o5TlD4= -github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= +github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 h1:wAIE/kN63Oig1DdOzN7O+k4AbFh2cCJoKMFXrwRJtzk= github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= @@ -29,8 +25,8 @@ github.com/btcsuite/btcd v0.23.0 h1:V2/ZgjfDFIygAX3ZapeigkVBoVUtOJKSwrhZdlpSvaA= github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= -github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= @@ -49,19 +45,21 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -91,22 +89,22 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= -github.com/flashbots/go-boost-utils v1.8.2-0.20240806002958-647025326142 h1:4c9y8KBkgqpAUK/2c7/0VQxmP/8DKXTzS168x5n7FaY= -github.com/flashbots/go-boost-utils v1.8.2-0.20240806002958-647025326142/go.mod h1:acyKu63t1djXA+AJZsBIjCnAd4JQx7a9V/6g+SeY6CI= +github.com/flashbots/go-boost-utils v1.8.2-0.20240925192624-22f090f9547b h1:9+UzY/5mZUW+WKVjL9BoxU5pHwkYRjA5vgNupJBo7eo= +github.com/flashbots/go-boost-utils v1.8.2-0.20240925192624-22f090f9547b/go.mod h1:2wQllIWEnjcZLz8VDzVvDcQCYYWIAKXAchWrfNL/ZMQ= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= github.com/flashbots/go-utils v0.5.0/go.mod h1:LauDwifaRdSK0mS5X34GR59pJtUu1T/lOFNdff1BqtI= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= @@ -163,8 +161,8 @@ github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc= github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= @@ -177,6 +175,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 h1:1W/Cz544b7FmjTn/5dB8obNDAFuRdRsywWJgOmxz5mU= +github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5/go.mod h1:lPd6wgiraLD0umFeiCjYaqoMLeU2b3dMATOJ9B/jnIA= github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2 h1:/DM+voBQCaCA1zKBms4E89fpaZuJeh3BT8qHa8IMK/c= github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2/go.mod h1:P+/ggpK6FZCAGwDFdOoAbyClaX8P0r65x5RFX3Bkirw= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= @@ -184,8 +184,8 @@ github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1q github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -244,6 +244,8 @@ github.com/onsi/gomega v1.21.1 h1:OB/euWYIExnPBohllTicTHmGTrMaqJ67nIu80j0/uEM= github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca h1:rc6VVR79GdE58Wx1Arh9QNo+0qmXOfYjWQhrbkSeoI0= +github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -372,8 +374,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -397,8 +399,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/services/api/blocksim_ratelimiter.go b/services/api/blocksim_ratelimiter.go index 7093d3c9..6e22fc32 100644 --- a/services/api/blocksim_ratelimiter.go +++ b/services/api/blocksim_ratelimiter.go @@ -93,7 +93,7 @@ func (b *BlockSimulationRateLimiter) Send( } if payload.Version == spec.DataVersionElectra && payload.Electra == nil { - return ErrNoElectraPayload, nil + return nil, ErrNoElectraPayload, nil } submission, err := common.GetBlockSubmissionInfo(payload.VersionedSubmitBlockRequest) diff --git a/services/api/service.go b/services/api/service.go index 3eafb795..c960b114 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -1665,23 +1665,6 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) "excessBlobGas": excessBlobGas, }) } - if getPayloadResp.Version >= spec.DataVersionElectra { - depositRequests, err := getPayloadResp.DepositRequests() - if err != nil { - log.WithError(err).Info("failed to get deposit receipts") - } - log = log.WithFields(logrus.Fields{ - "numDepositRequests": len(depositRequests), - }) - - withdrawalRequests, err := getPayloadResp.WithdrawalRequests() - if err != nil { - log.WithError(err).Info("failed to get withdrawal requests") - } - log = log.WithFields(logrus.Fields{ - "numWithdrawalRequests": len(withdrawalRequests), - }) - } log.Info("execution payload delivered") } @@ -2072,25 +2055,6 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque "excessBlobGas": excessBlobGas, }) } - if payload.Version >= spec.DataVersionElectra { - depositRequests, err := payload.DepositRequests() - if err != nil { - api.RespondError(w, http.StatusBadRequest, err.Error()) - return - } - log = log.WithFields(logrus.Fields{ - "numDepositRequests": len(depositRequests), - }) - - withdrawalRequests, err := payload.WithdrawalRequests() - if err != nil { - api.RespondError(w, http.StatusBadRequest, err.Error()) - return - } - log = log.WithFields(logrus.Fields{ - "numWithdrawalRequests": len(withdrawalRequests), - }) - } ok := api.checkSubmissionSlotDetails(w, log, headSlot, payload, submission) if !ok { diff --git a/services/api/types_test.go b/services/api/types_test.go index 0b132180..95b5f353 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -5,14 +5,12 @@ import ( builderApiCapella "github.com/attestantio/go-builder-client/api/capella" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" - builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApiV1 "github.com/attestantio/go-builder-client/api/v1" builderSpec "github.com/attestantio/go-builder-client/spec" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/flashbots/go-boost-utils/bls" "github.com/flashbots/go-boost-utils/ssz" @@ -122,26 +120,24 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { reqPayload: &common.VersionedSubmitBlockRequest{ VersionedSubmitBlockRequest: builderSpec.VersionedSubmitBlockRequest{ Version: spec.DataVersionElectra, - Electra: &builderApiElectra.SubmitBlockRequest{ - ExecutionPayload: &electra.ExecutionPayload{ - ParentHash: phase0.Hash32{0x01}, - FeeRecipient: bellatrix.ExecutionAddress{0x02}, - StateRoot: phase0.Root{0x03}, - ReceiptsRoot: phase0.Root{0x04}, - LogsBloom: [256]byte{0x05}, - PrevRandao: phase0.Hash32{0x06}, - BlockNumber: 5001, - GasLimit: 5002, - GasUsed: 5003, - Timestamp: 5004, - ExtraData: []byte{0x07}, - BaseFeePerGas: uint256.NewInt(123), - BlockHash: phase0.Hash32{0x09}, - Transactions: []bellatrix.Transaction{}, - BlobGasUsed: 5005, - ExcessBlobGas: 5006, - DepositRequests: make([]*electra.DepositRequest, 0), - WithdrawalRequests: make([]*electra.WithdrawalRequest, 0), + Electra: &builderApiDeneb.SubmitBlockRequest{ + ExecutionPayload: &deneb.ExecutionPayload{ + ParentHash: phase0.Hash32{0x01}, + FeeRecipient: bellatrix.ExecutionAddress{0x02}, + StateRoot: phase0.Root{0x03}, + ReceiptsRoot: phase0.Root{0x04}, + LogsBloom: [256]byte{0x05}, + PrevRandao: phase0.Hash32{0x06}, + BlockNumber: 5001, + GasLimit: 5002, + GasUsed: 5003, + Timestamp: 5004, + ExtraData: []byte{0x07}, + BaseFeePerGas: uint256.NewInt(123), + BlockHash: phase0.Hash32{0x09}, + Transactions: []bellatrix.Transaction{}, + BlobGasUsed: 5005, + ExcessBlobGas: 5006, }, BlobsBundle: &builderApiDeneb.BlobsBundle{ Commitments: []deneb.KZGCommitment{}, From acb5536006d4de65aab8fc9a3241bd1697ba8916 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 16:08:00 -0500 Subject: [PATCH 18/28] Remove replacement for geth --- go.mod | 4 ---- go.sum | 10 ++++------ 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index d757f20d..d7871a90 100644 --- a/go.mod +++ b/go.mod @@ -130,10 +130,6 @@ retract ( v1.0.0-alpha1 ) -// This version points to jtraglia's block-validation branch, which -// is based off of lightclient's prague-devnet-0 branch. -replace github.com/ethereum/go-ethereum => github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2 - // Remove this when Jim merges pk910's PR. replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca diff --git a/go.sum b/go.sum index ddd783f3..8bd27416 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cq github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= -github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= @@ -89,6 +89,8 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.14.9 h1:J7iwXDrtUyE9FUjUYbd4c9tyzwMh6dTJsKzo9i6SrwA= +github.com/ethereum/go-ethereum v1.14.9/go.mod h1:QeW+MtTpRdBEm2pUFoonByee8zfHv7kGp0wK0odvU1I= github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= @@ -154,8 +156,6 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -177,8 +177,6 @@ github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Cc github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 h1:1W/Cz544b7FmjTn/5dB8obNDAFuRdRsywWJgOmxz5mU= github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5/go.mod h1:lPd6wgiraLD0umFeiCjYaqoMLeU2b3dMATOJ9B/jnIA= -github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2 h1:/DM+voBQCaCA1zKBms4E89fpaZuJeh3BT8qHa8IMK/c= -github.com/jtraglia/go-ethereum v1.10.10-0.20240522193628-e3b74dd6a9e2/go.mod h1:P+/ggpK6FZCAGwDFdOoAbyClaX8P0r65x5RFX3Bkirw= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= From 6ba1b5d71591567a7e7cab1b5085e969a0f95ff1 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 16:14:49 -0500 Subject: [PATCH 19/28] Try to fix linters --- .github/workflows/checks.yml | 4 ++-- services/api/optimistic_test.go | 5 +++-- services/api/types_test.go | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 60111802..8919f975 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -47,10 +47,10 @@ jobs: uses: actions/checkout@v3 - name: Install gofumpt - run: go install mvdan.cc/gofumpt@v0.4.0 + run: go install mvdan.cc/gofumpt@latest - name: Install staticcheck - run: go install honnef.co/go/tools/cmd/staticcheck@v0.4.6 + run: go install honnef.co/go/tools/cmd/staticcheck@latest - name: Install golangci-lint run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.55.0 diff --git a/services/api/optimistic_test.go b/services/api/optimistic_test.go index fbd4509c..f7bb03fd 100644 --- a/services/api/optimistic_test.go +++ b/services/api/optimistic_test.go @@ -3,6 +3,7 @@ package api import ( "context" "encoding/json" + "errors" "fmt" "math/big" "net/http" @@ -166,7 +167,7 @@ func TestSimulateBlock(t *testing.T) { { description: "block_already_known_capella", version: spec.DataVersionCapella, - simulationError: fmt.Errorf(ErrBlockAlreadyKnown), //nolint:goerr113 + simulationError: errors.New(ErrBlockAlreadyKnown), }, { description: "missing_trie_node_capella", @@ -186,7 +187,7 @@ func TestSimulateBlock(t *testing.T) { { description: "block_already_known_deneb", version: spec.DataVersionDeneb, - simulationError: fmt.Errorf(ErrBlockAlreadyKnown), //nolint:goerr113 + simulationError: errors.New(ErrBlockAlreadyKnown), }, { description: "missing_trie_node_deneb", diff --git a/services/api/types_test.go b/services/api/types_test.go index 95b5f353..dc705ade 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -70,6 +70,7 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { }, }, }, + //nolint:dupl { name: "Deneb", reqPayload: &common.VersionedSubmitBlockRequest{ @@ -115,6 +116,7 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { }, }, }, + //nolint:dupl { name: "Electra", reqPayload: &common.VersionedSubmitBlockRequest{ From 20c3cf551da8374483584de8405da0e07ac5f866 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 16:25:32 -0500 Subject: [PATCH 20/28] Remove toolchain from go.mod --- common/types_spec.go | 1 + go.mod | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/common/types_spec.go b/common/types_spec.go index 4b2cd6c5..7e2e654d 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -304,6 +304,7 @@ func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaco ExecutionPayload: blockPayload.ExecutionPayload, BLSToExecutionChanges: blindedBlock.Message.Body.BLSToExecutionChanges, BlobKZGCommitments: blindedBlock.Message.Body.BlobKZGCommitments, + ExecutionRequests: blindedBlock.Message.Body.ExecutionRequests, }, }, Signature: blindedBlock.Signature, diff --git a/go.mod b/go.mod index d7871a90..d8777aa0 100644 --- a/go.mod +++ b/go.mod @@ -2,8 +2,6 @@ module github.com/flashbots/mev-boost-relay go 1.22 -toolchain go1.23.1 - require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 From 0f0fe8c1f98ba5e67939d0afab18109fdef098ad Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 16:32:11 -0500 Subject: [PATCH 21/28] Maybe fix linter errors --- common/types_spec.go | 2 -- services/api/optimistic_test.go | 4 ++-- services/api/service.go | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/common/types_spec.go b/common/types_spec.go index 7e2e654d..d48544dd 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -251,7 +251,6 @@ func CapellaUnblindSignedBlock(blindedBlock *eth2ApiV1Capella.SignedBlindedBeaco } } -//nolint:dupl func DenebUnblindSignedBlock(blindedBlock *eth2ApiV1Deneb.SignedBlindedBeaconBlock, blockPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Deneb.SignedBlockContents { return ð2ApiV1Deneb.SignedBlockContents{ SignedBlock: &deneb.SignedBeaconBlock{ @@ -282,7 +281,6 @@ func DenebUnblindSignedBlock(blindedBlock *eth2ApiV1Deneb.SignedBlindedBeaconBlo } } -//nolint:dupl func ElectraUnblindSignedBlock(blindedBlock *eth2ApiV1Electra.SignedBlindedBeaconBlock, blockPayload *builderApiDeneb.ExecutionPayloadAndBlobsBundle) *eth2ApiV1Electra.SignedBlockContents { return ð2ApiV1Electra.SignedBlockContents{ SignedBlock: &electra.SignedBeaconBlock{ diff --git a/services/api/optimistic_test.go b/services/api/optimistic_test.go index f7bb03fd..68d229ce 100644 --- a/services/api/optimistic_test.go +++ b/services/api/optimistic_test.go @@ -167,7 +167,7 @@ func TestSimulateBlock(t *testing.T) { { description: "block_already_known_capella", version: spec.DataVersionCapella, - simulationError: errors.New(ErrBlockAlreadyKnown), + simulationError: errors.New(ErrBlockAlreadyKnown), //nolint:goerr113 }, { description: "missing_trie_node_capella", @@ -187,7 +187,7 @@ func TestSimulateBlock(t *testing.T) { { description: "block_already_known_deneb", version: spec.DataVersionDeneb, - simulationError: errors.New(ErrBlockAlreadyKnown), + simulationError: errors.New(ErrBlockAlreadyKnown), //nolint:goerr113 }, { description: "missing_trie_node_deneb", diff --git a/services/api/service.go b/services/api/service.go index c960b114..deb8cb1a 100644 --- a/services/api/service.go +++ b/services/api/service.go @@ -1296,7 +1296,6 @@ func (api *RelayAPI) checkProposerSignature(block *common.VersionedSignedBlinded } } -//nolint:gocognit func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request) { api.getPayloadCallsInFlight.Add(1) defer api.getPayloadCallsInFlight.Done() From 94e01151229bfd710f831d367cd00ed9cd74888f Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 17:41:44 -0500 Subject: [PATCH 22/28] Update deps --- go.mod | 12 +++--------- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index d8777aa0..1f17c655 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,13 @@ go 1.22 require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 - github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 - github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 + github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 + github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 github.com/ethereum/go-ethereum v1.14.9 - github.com/flashbots/go-boost-utils v1.8.2-0.20240925192624-22f090f9547b + github.com/flashbots/go-boost-utils v1.8.2-0.20240925223941-58709124077d github.com/flashbots/go-utils v0.5.0 github.com/go-redis/redis/v9 v9.0.0-rc.1 github.com/gorilla/mux v1.8.1 @@ -127,9 +127,3 @@ retract ( v1.0.0-alpha2 v1.0.0-alpha1 ) - -// Remove this when Jim merges pk910's PR. -replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca - -// Remove this when Jim merge's jtraglia's PR. -replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 diff --git a/go.sum b/go.sum index 8bd27416..5ba00079 100644 --- a/go.sum +++ b/go.sum @@ -11,6 +11,10 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= +github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1:Ccyc8R6CJbnb5oTwjuYSa2XaYWFSN8R43Gh9V1zN3Dg= +github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= +github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 h1:/79oRg0Lu0WQPMh+WjKE5d6cUnCdw6OsiYfqZut1URo= +github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -97,8 +101,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= -github.com/flashbots/go-boost-utils v1.8.2-0.20240925192624-22f090f9547b h1:9+UzY/5mZUW+WKVjL9BoxU5pHwkYRjA5vgNupJBo7eo= -github.com/flashbots/go-boost-utils v1.8.2-0.20240925192624-22f090f9547b/go.mod h1:2wQllIWEnjcZLz8VDzVvDcQCYYWIAKXAchWrfNL/ZMQ= +github.com/flashbots/go-boost-utils v1.8.2-0.20240925223941-58709124077d h1:O4iDEwTCD7MaDyccFzmV5yYXfDD99Y2KH284Z4ZR4q0= +github.com/flashbots/go-boost-utils v1.8.2-0.20240925223941-58709124077d/go.mod h1:kU1G5Xk2OBBnYag2RGRuaPuMuuhH2yZx+xHeX91E9Po= github.com/flashbots/go-utils v0.5.0 h1:ldjWta9B9//DJU2QcwRbErez3+1aKhSn6EoFc6d5kPY= github.com/flashbots/go-utils v0.5.0/go.mod h1:LauDwifaRdSK0mS5X34GR59pJtUu1T/lOFNdff1BqtI= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -175,8 +179,6 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 h1:1W/Cz544b7FmjTn/5dB8obNDAFuRdRsywWJgOmxz5mU= -github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5/go.mod h1:lPd6wgiraLD0umFeiCjYaqoMLeU2b3dMATOJ9B/jnIA= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -242,8 +244,6 @@ github.com/onsi/gomega v1.21.1 h1:OB/euWYIExnPBohllTicTHmGTrMaqJ67nIu80j0/uEM= github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca h1:rc6VVR79GdE58Wx1Arh9QNo+0qmXOfYjWQhrbkSeoI0= -github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= From aac580dbd9643ab05299cf3f384fb2bb1f828abc Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 7 Oct 2024 12:36:40 -0500 Subject: [PATCH 23/28] Update go-eth2-client for alpha.7 support --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 1f17c655..aa1f482f 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 - github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 + github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 diff --git a/go.sum b/go.sum index 5ba00079..7da14dd2 100644 --- a/go.sum +++ b/go.sum @@ -15,6 +15,8 @@ github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1 github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 h1:/79oRg0Lu0WQPMh+WjKE5d6cUnCdw6OsiYfqZut1URo= github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= +github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= +github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= From 1278068a798ef72593c5ce8e0563361371fafc69 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 7 Oct 2024 12:41:39 -0500 Subject: [PATCH 24/28] Run go mod tidy --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index 7da14dd2..faeb03d2 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,6 @@ github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoO github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1:Ccyc8R6CJbnb5oTwjuYSa2XaYWFSN8R43Gh9V1zN3Dg= github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= -github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 h1:/79oRg0Lu0WQPMh+WjKE5d6cUnCdw6OsiYfqZut1URo= -github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= From 61a5230c9020b14252b0fa33b9945b3bc10cc489 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 15:02:07 -0500 Subject: [PATCH 25/28] Add execution request support --- common/types.go | 18 +++++++++++------- common/types_spec.go | 6 ++++-- common/utils.go | 15 +++++++++++++++ go.mod | 3 +++ go.sum | 4 ++-- services/api/types_test.go | 9 ++++++++- services/api/utils.go | 26 -------------------------- 7 files changed, 43 insertions(+), 38 deletions(-) diff --git a/common/types.go b/common/types.go index e119b960..5e02c387 100644 --- a/common/types.go +++ b/common/types.go @@ -12,6 +12,7 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" boostSsz "github.com/flashbots/go-boost-utils/ssz" @@ -176,16 +177,16 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error func (e *EthNetworkDetails) String() string { return fmt.Sprintf( `EthNetworkDetails{ - Name: %s, - GenesisForkVersionHex: %s, + Name: %s, + GenesisForkVersionHex: %s, GenesisValidatorsRootHex: %s, - BellatrixForkVersionHex: %s, - CapellaForkVersionHex: %s, + BellatrixForkVersionHex: %s, + CapellaForkVersionHex: %s, DenebForkVersionHex: %s, ElectraForkVersionHex: %s, - DomainBuilder: %x, - DomainBeaconProposerBellatrix: %x, - DomainBeaconProposerCapella: %x, + DomainBuilder: %x, + DomainBeaconProposerBellatrix: %x, + DomainBeaconProposerCapella: %x, DomainBeaconProposerDeneb: %x DomainBeaconProposerElectra: %x }`, @@ -440,6 +441,9 @@ type BlockSubmissionInfo struct { Blobs []deneb.Blob BlobGasUsed uint64 ExcessBlobGas uint64 + DepositRequests []*electra.DepositRequest + WithdrawalRequests []*electra.WithdrawalRequest + ConsolidationRequests []*electra.ConsolidationRequest } /* diff --git a/common/types_spec.go b/common/types_spec.go index d48544dd..0597a5aa 100644 --- a/common/types_spec.go +++ b/common/types_spec.go @@ -7,6 +7,7 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" builderApiCapella "github.com/attestantio/go-builder-client/api/capella" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApiV1 "github.com/attestantio/go-builder-client/api/v1" builderSpec "github.com/attestantio/go-builder-client/spec" eth2Api "github.com/attestantio/go-eth2-client/api" @@ -174,9 +175,10 @@ func BuilderBlockRequestToSignedBuilderBid(payload *VersionedSubmitBlockRequest, }, }, nil case spec.DataVersionElectra: - builderBid := builderApiDeneb.BuilderBid{ + builderBid := builderApiElectra.BuilderBid{ Header: header.Electra, BlobKZGCommitments: payload.Electra.BlobsBundle.Commitments, + ExecutionRequests: payload.Electra.ExecutionRequests, Value: value, Pubkey: *pubkey, } @@ -188,7 +190,7 @@ func BuilderBlockRequestToSignedBuilderBid(payload *VersionedSubmitBlockRequest, return &builderSpec.VersionedSignedBuilderBid{ Version: spec.DataVersionElectra, - Electra: &builderApiDeneb.SignedBuilderBid{ + Electra: &builderApiElectra.SignedBuilderBid{ Message: &builderBid, Signature: sig, }, diff --git a/common/utils.go b/common/utils.go index fb8fbdd5..9ab66c21 100644 --- a/common/utils.go +++ b/common/utils.go @@ -238,6 +238,18 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm if submission.Version >= spec.DataVersionDeneb && err != nil { return nil, err } + depositRequests, err := submission.DepositRequests() + if submission.Version >= spec.DataVersionElectra && err != nil { + return nil, err + } + withdrawalRequests, err := submission.WithdrawalRequests() + if submission.Version >= spec.DataVersionElectra && err != nil { + return nil, err + } + consolidationRequests, err := submission.ConsolidationRequests() + if submission.Version >= spec.DataVersionElectra && err != nil { + return nil, err + } return &BlockSubmissionInfo{ BidTrace: bidTrace, Signature: signature, @@ -253,6 +265,9 @@ func GetBlockSubmissionInfo(submission *VersionedSubmitBlockRequest) (*BlockSubm Blobs: blobs, BlobGasUsed: blobGasUsed, ExcessBlobGas: excessBlobGas, + DepositRequests: depositRequests, + WithdrawalRequests: withdrawalRequests, + ConsolidationRequests: consolidationRequests, }, nil } diff --git a/go.mod b/go.mod index aa1f482f..886337d0 100644 --- a/go.mod +++ b/go.mod @@ -127,3 +127,6 @@ retract ( v1.0.0-alpha2 v1.0.0-alpha1 ) + +// Remove when go-builder-client is updated. +replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 diff --git a/go.sum b/go.sum index faeb03d2..e26f620b 100644 --- a/go.sum +++ b/go.sum @@ -11,8 +11,6 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= -github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1:Ccyc8R6CJbnb5oTwjuYSa2XaYWFSN8R43Gh9V1zN3Dg= -github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= @@ -179,6 +177,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 h1:ip/ONBWDWPCGWNGrMXD2vvZH/ABjw5wKfcQ8z7a8MWo= +github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54/go.mod h1:UkqMh+CHZh63XDx3GdBLijRdFQu2Hyqh3n71V4G10Ws= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/services/api/types_test.go b/services/api/types_test.go index dc705ade..bbc7c8ac 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -5,12 +5,14 @@ import ( builderApiCapella "github.com/attestantio/go-builder-client/api/capella" builderApiDeneb "github.com/attestantio/go-builder-client/api/deneb" + builderApiElectra "github.com/attestantio/go-builder-client/api/electra" builderApiV1 "github.com/attestantio/go-builder-client/api/v1" builderSpec "github.com/attestantio/go-builder-client/spec" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/flashbots/go-boost-utils/bls" "github.com/flashbots/go-boost-utils/ssz" @@ -122,7 +124,7 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { reqPayload: &common.VersionedSubmitBlockRequest{ VersionedSubmitBlockRequest: builderSpec.VersionedSubmitBlockRequest{ Version: spec.DataVersionElectra, - Electra: &builderApiDeneb.SubmitBlockRequest{ + Electra: &builderApiElectra.SubmitBlockRequest{ ExecutionPayload: &deneb.ExecutionPayload{ ParentHash: phase0.Hash32{0x01}, FeeRecipient: bellatrix.ExecutionAddress{0x02}, @@ -146,6 +148,11 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { Proofs: []deneb.KZGProof{}, Blobs: []deneb.Blob{}, }, + ExecutionRequests: &electra.ExecutionRequests{ + Deposits: []*electra.DepositRequest{}, + Withdrawals: []*electra.WithdrawalRequest{}, + Consolidations: []*electra.ConsolidationRequest{}, + }, Message: &builderApiV1.BidTrace{ Slot: 1, ParentHash: phase0.Hash32{0x01}, diff --git a/services/api/utils.go b/services/api/utils.go index 563901fa..6e0616f3 100644 --- a/services/api/utils.go +++ b/services/api/utils.go @@ -6,10 +6,8 @@ import ( builderApi "github.com/attestantio/go-builder-client/api" "github.com/attestantio/go-eth2-client/spec" "github.com/attestantio/go-eth2-client/spec/capella" - "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" eth2UtilCapella "github.com/attestantio/go-eth2-client/util/capella" - eth2UtilElectra "github.com/attestantio/go-eth2-client/util/electra" "github.com/flashbots/go-boost-utils/bls" "github.com/flashbots/go-boost-utils/utils" "github.com/flashbots/mev-boost-relay/common" @@ -53,30 +51,6 @@ func ComputeWithdrawalsRoot(w []*capella.Withdrawal) (phase0.Root, error) { return withdrawals.HashTreeRoot() } -func ComputeDepositRequestsRoot(d []*electra.DepositRequest) (phase0.Root, error) { - if d == nil { - return phase0.Root{}, ErrNoDepositRequests - } - depositRequests := eth2UtilElectra.DepositRequests{DepositRequests: d} - return depositRequests.HashTreeRoot() -} - -func ComputeWithdrawalRequestsRoot(e []*electra.WithdrawalRequest) (phase0.Root, error) { - if e == nil { - return phase0.Root{}, ErrNoWithdrawalRequests - } - exits := eth2UtilElectra.WithdrawalRequests{WithdrawalRequests: e} - return exits.HashTreeRoot() -} - -func ComputeConsolidationRequestsRoot(c []*electra.ConsolidationRequest) (phase0.Root, error) { - if c == nil { - return phase0.Root{}, nil - } - consolidations := eth2UtilElectra.ConsolidationRequests{ConsolidationRequests: c} - return consolidations.HashTreeRoot() -} - func EqBlindedBlockContentsToBlockContents(bb *common.VersionedSignedBlindedBeaconBlock, payload *builderApi.VersionedSubmitBlindedBlockResponse) error { if bb.Version != payload.Version { return errors.Wrap(ErrPayloadMismatch, fmt.Sprintf("beacon block version %d does not match payload version %d", bb.Version, payload.Version)) From 94882aa7f4985b1f4d74b1843009c0f39d12caaa Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 16:59:12 -0500 Subject: [PATCH 26/28] Update go-eth2-client --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 886337d0..de814ed4 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 - github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 + github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 github.com/buger/jsonparser v1.1.1 diff --git a/go.sum b/go.sum index e26f620b..9eb1eaf0 100644 --- a/go.sum +++ b/go.sum @@ -11,8 +11,8 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= -github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= -github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= +github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 h1:Xvkj/3ilNuZgoGnxu/uiXmCDmKjBE0ruygTHZIU1JFs= +github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= From 68a66184e7548e6dee3e999e01937cac53298aef Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 17:03:01 -0500 Subject: [PATCH 27/28] Update go-builder-client --- go.mod | 5 +---- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index de814ed4..7c025ad1 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22 require ( github.com/NYTimes/gziphandler v1.1.1 github.com/alicebob/miniredis/v2 v2.32.1 - github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 + github.com/attestantio/go-builder-client v0.5.1-0.20241014215920-ba44f1de4249 github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/btcsuite/btcd/btcutil v1.1.2 @@ -127,6 +127,3 @@ retract ( v1.0.0-alpha2 v1.0.0-alpha1 ) - -// Remove when go-builder-client is updated. -replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 diff --git a/go.sum b/go.sum index 9eb1eaf0..5075a195 100644 --- a/go.sum +++ b/go.sum @@ -11,6 +11,8 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZp github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo= github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw= +github.com/attestantio/go-builder-client v0.5.1-0.20241014215920-ba44f1de4249 h1:y01TZYnM3DDb3nkqA3VaoiqKuWWAgLIfrm63XOQJsFc= +github.com/attestantio/go-builder-client v0.5.1-0.20241014215920-ba44f1de4249/go.mod h1:X31JAUL4q6cY/OGClpBQcwFN7FBixt6Wjrqy7RrlhEc= github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 h1:Xvkj/3ilNuZgoGnxu/uiXmCDmKjBE0ruygTHZIU1JFs= github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= @@ -177,8 +179,6 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 h1:ip/ONBWDWPCGWNGrMXD2vvZH/ABjw5wKfcQ8z7a8MWo= -github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54/go.mod h1:UkqMh+CHZh63XDx3GdBLijRdFQu2Hyqh3n71V4G10Ws= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= From 20d0a9560287b70d54d6f6984ada36902da84182 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 17:06:35 -0500 Subject: [PATCH 28/28] Fix lint --- services/api/types_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/api/types_test.go b/services/api/types_test.go index bbc7c8ac..8c0a028a 100644 --- a/services/api/types_test.go +++ b/services/api/types_test.go @@ -72,7 +72,6 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { }, }, }, - //nolint:dupl { name: "Deneb", reqPayload: &common.VersionedSubmitBlockRequest{ @@ -118,7 +117,6 @@ func TestBuilderBlockRequestToSignedBuilderBid(t *testing.T) { }, }, }, - //nolint:dupl { name: "Electra", reqPayload: &common.VersionedSubmitBlockRequest{