@@ -12,6 +12,7 @@ import (
1212 "github.com/attestantio/go-eth2-client/spec/bellatrix"
1313 "github.com/attestantio/go-eth2-client/spec/capella"
1414 "github.com/attestantio/go-eth2-client/spec/deneb"
15+ "github.com/attestantio/go-eth2-client/spec/electra"
1516 "github.com/attestantio/go-eth2-client/spec/phase0"
1617 ssz "github.com/ferranbt/fastssz"
1718 boostSsz "github.com/flashbots/go-boost-utils/ssz"
5253 DenebForkVersionGoerli = "0x04001020"
5354 DenebForkVersionMainnet = "0x04000000"
5455
56+ ElectraForkVersionHolesky = "0x06017000"
57+ ElectraForkVersionSepolia = "0x90000074"
58+ ElectraForkVersionGoerli = "0x05001020"
59+ ElectraForkVersionMainnet = "0x05000000"
60+
5561 ForkVersionStringBellatrix = "bellatrix"
5662 ForkVersionStringCapella = "capella"
5763 ForkVersionStringDeneb = "deneb"
64+ ForkVersionStringElectra = "electra"
5865)
5966
6067type EthNetworkDetails struct {
@@ -64,11 +71,13 @@ type EthNetworkDetails struct {
6471 BellatrixForkVersionHex string
6572 CapellaForkVersionHex string
6673 DenebForkVersionHex string
74+ ElectraForkVersionHex string
6775
6876 DomainBuilder phase0.Domain
6977 DomainBeaconProposerBellatrix phase0.Domain
7078 DomainBeaconProposerCapella phase0.Domain
7179 DomainBeaconProposerDeneb phase0.Domain
80+ DomainBeaconProposerElectra phase0.Domain
7281}
7382
7483func NewEthNetworkDetails (networkName string ) (ret * EthNetworkDetails , err error ) {
@@ -77,10 +86,12 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error
7786 var bellatrixForkVersion string
7887 var capellaForkVersion string
7988 var denebForkVersion string
89+ var electraForkVersion string
8090 var domainBuilder phase0.Domain
8191 var domainBeaconProposerBellatrix phase0.Domain
8292 var domainBeaconProposerCapella phase0.Domain
8393 var domainBeaconProposerDeneb phase0.Domain
94+ var domainBeaconProposerElectra phase0.Domain
8495
8596 switch networkName {
8697 case EthNetworkHolesky :
@@ -89,30 +100,35 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error
89100 bellatrixForkVersion = BellatrixForkVersionHolesky
90101 capellaForkVersion = CapellaForkVersionHolesky
91102 denebForkVersion = DenebForkVersionHolesky
103+ electraForkVersion = ElectraForkVersionHolesky
92104 case EthNetworkSepolia :
93105 genesisForkVersion = GenesisForkVersionSepolia
94106 genesisValidatorsRoot = GenesisValidatorsRootSepolia
95107 bellatrixForkVersion = BellatrixForkVersionSepolia
96108 capellaForkVersion = CapellaForkVersionSepolia
97109 denebForkVersion = DenebForkVersionSepolia
110+ electraForkVersion = ElectraForkVersionSepolia
98111 case EthNetworkGoerli :
99112 genesisForkVersion = GenesisForkVersionGoerli
100113 genesisValidatorsRoot = GenesisValidatorsRootGoerli
101114 bellatrixForkVersion = BellatrixForkVersionGoerli
102115 capellaForkVersion = CapellaForkVersionGoerli
103116 denebForkVersion = DenebForkVersionGoerli
117+ electraForkVersion = ElectraForkVersionGoerli
104118 case EthNetworkMainnet :
105119 genesisForkVersion = GenesisForkVersionMainnet
106120 genesisValidatorsRoot = GenesisValidatorsRootMainnet
107121 bellatrixForkVersion = BellatrixForkVersionMainnet
108122 capellaForkVersion = CapellaForkVersionMainnet
109123 denebForkVersion = DenebForkVersionMainnet
124+ electraForkVersion = ElectraForkVersionMainnet
110125 case EthNetworkCustom :
111126 genesisForkVersion = os .Getenv ("GENESIS_FORK_VERSION" )
112127 genesisValidatorsRoot = os .Getenv ("GENESIS_VALIDATORS_ROOT" )
113128 bellatrixForkVersion = os .Getenv ("BELLATRIX_FORK_VERSION" )
114129 capellaForkVersion = os .Getenv ("CAPELLA_FORK_VERSION" )
115130 denebForkVersion = os .Getenv ("DENEB_FORK_VERSION" )
131+ electraForkVersion = os .Getenv ("ELECTRA_FORK_VERSION" )
116132 default :
117133 return nil , fmt .Errorf ("%w: %s" , ErrUnknownNetwork , networkName )
118134 }
@@ -137,44 +153,55 @@ func NewEthNetworkDetails(networkName string) (ret *EthNetworkDetails, err error
137153 return nil , err
138154 }
139155
156+ domainBeaconProposerElectra , err = ComputeDomain (boostSsz .DomainTypeBeaconProposer , electraForkVersion , genesisValidatorsRoot )
157+ if err != nil {
158+ return nil , err
159+ }
160+
140161 return & EthNetworkDetails {
141162 Name : networkName ,
142163 GenesisForkVersionHex : genesisForkVersion ,
143164 GenesisValidatorsRootHex : genesisValidatorsRoot ,
144165 BellatrixForkVersionHex : bellatrixForkVersion ,
145166 CapellaForkVersionHex : capellaForkVersion ,
146167 DenebForkVersionHex : denebForkVersion ,
168+ ElectraForkVersionHex : electraForkVersion ,
147169 DomainBuilder : domainBuilder ,
148170 DomainBeaconProposerBellatrix : domainBeaconProposerBellatrix ,
149171 DomainBeaconProposerCapella : domainBeaconProposerCapella ,
150172 DomainBeaconProposerDeneb : domainBeaconProposerDeneb ,
173+ DomainBeaconProposerElectra : domainBeaconProposerElectra ,
151174 }, nil
152175}
153176
154177func (e * EthNetworkDetails ) String () string {
155178 return fmt .Sprintf (
156179 `EthNetworkDetails{
157- Name: %s,
158- GenesisForkVersionHex: %s,
180+ Name: %s,
181+ GenesisForkVersionHex: %s,
159182 GenesisValidatorsRootHex: %s,
160- BellatrixForkVersionHex: %s,
161- CapellaForkVersionHex: %s,
183+ BellatrixForkVersionHex: %s,
184+ CapellaForkVersionHex: %s,
162185 DenebForkVersionHex: %s,
163- DomainBuilder: %x,
164- DomainBeaconProposerBellatrix: %x,
165- DomainBeaconProposerCapella: %x,
186+ ElectraForkVersionHex: %s,
187+ DomainBuilder: %x,
188+ DomainBeaconProposerBellatrix: %x,
189+ DomainBeaconProposerCapella: %x,
166190 DomainBeaconProposerDeneb: %x
191+ DomainBeaconProposerElectra: %x
167192}` ,
168193 e .Name ,
169194 e .GenesisForkVersionHex ,
170195 e .GenesisValidatorsRootHex ,
171196 e .BellatrixForkVersionHex ,
172197 e .CapellaForkVersionHex ,
173198 e .DenebForkVersionHex ,
199+ e .ElectraForkVersionHex ,
174200 e .DomainBuilder ,
175201 e .DomainBeaconProposerBellatrix ,
176202 e .DomainBeaconProposerCapella ,
177- e .DomainBeaconProposerDeneb )
203+ e .DomainBeaconProposerDeneb ,
204+ e .DomainBeaconProposerElectra )
178205}
179206
180207type PubkeyHex string
@@ -414,6 +441,9 @@ type BlockSubmissionInfo struct {
414441 Blobs []deneb.Blob
415442 BlobGasUsed uint64
416443 ExcessBlobGas uint64
444+ DepositRequests []* electra.DepositRequest
445+ WithdrawalRequests []* electra.WithdrawalRequest
446+ ConsolidationRequests []* electra.ConsolidationRequest
417447}
418448
419449/*
@@ -425,6 +455,8 @@ which is sufficient data to set the bid of the builder. The `Transactions`
425455and `Withdrawals` fields are required to construct the full SignedBeaconBlock
426456and are parsed asynchronously.
427457
458+ TODO(JWT): Does this need to be updated? It hasn't been updated for Deneb.
459+
428460Header only layout:
429461[000-236) = Message (236 bytes)
430462[236-240) = offset1 ( 4 bytes)
0 commit comments