@@ -1461,15 +1461,10 @@ func (api *RelayAPI) innerHandleGetPayload(w http.ResponseWriter, req *http.Requ
14611461 return
14621462 }
14631463
1464- if api .isFulu (uint64 (slot )) && payload .Fulu == nil {
1465- log .Warn ("Not a fulu payload." )
1466- api .RespondError (w , http .StatusBadRequest , "Non-Fulu payload detected and rejected. You need to update mev-boost!" )
1467- return
1468- }
1469-
1470- if api .isElectra (uint64 (slot )) && payload .Electra == nil {
1471- log .Warn ("Not an electra payload." )
1472- api .RespondError (w , http .StatusBadRequest , "Non-Electra payload detected and rejected. You need to update mev-boost!" )
1464+ err = api .checkPayloadAndHeaderVersion (payload , uint64 (slot ), proposerEthConsensusVersion )
1465+ if err != nil {
1466+ log .WithError (err ).Warn ("error checking payload and header version" )
1467+ api .RespondError (w , http .StatusBadRequest , fmt .Sprintf ("error checking payload and header version: %s" , err .Error ()))
14731468 return
14741469 }
14751470
@@ -1821,6 +1816,51 @@ func (api *RelayAPI) innerHandleGetPayload(w http.ResponseWriter, req *http.Requ
18211816 log .Info ("execution payload delivered" )
18221817}
18231818
1819+ func (api * RelayAPI ) checkPayloadAndHeaderVersion (payload * common.VersionedSignedBlindedBeaconBlock , slot uint64 , proposerEthConsensusVersion string ) error {
1820+ switch api .getForkFromSlot (slot ) {
1821+ case spec .DataVersionFulu :
1822+ if proposerEthConsensusVersion != common .EthConsensusVersionFulu {
1823+ return errors .Errorf ("Fulu payload with wrong consensus version. Expected: %s, Got: %s" , common .EthConsensusVersionFulu , proposerEthConsensusVersion )
1824+ }
1825+ if payload .Fulu == nil {
1826+ return errors .New ("Non-Fulu payload detected and rejected. You need to update mev-boost!" )
1827+ }
1828+
1829+ case spec .DataVersionElectra :
1830+ if proposerEthConsensusVersion != common .EthConsensusVersionElectra {
1831+ return errors .Errorf ("Electra payload with wrong consensus version. Expected: %s, Got: %s" , common .EthConsensusVersionElectra , proposerEthConsensusVersion )
1832+ }
1833+ if payload .Electra == nil {
1834+ return errors .New ("Non-Electra payload detected and rejected. You need to update mev-boost!" )
1835+ }
1836+
1837+ case spec .DataVersionDeneb :
1838+ if proposerEthConsensusVersion != common .EthConsensusVersionDeneb {
1839+ return errors .Errorf ("Deneb payload with wrong consensus version. Expected: %s, Got: %s" , common .EthConsensusVersionDeneb , proposerEthConsensusVersion )
1840+ }
1841+ if payload .Deneb == nil {
1842+ return errors .New ("Non-Deneb payload detected and rejected. You need to update mev-boost!" )
1843+ }
1844+
1845+ case spec .DataVersionCapella :
1846+ if proposerEthConsensusVersion != common .EthConsensusVersionCapella {
1847+ return errors .Errorf ("Capella payload with wrong consensus version. Expected: %s, Got: %s" , common .EthConsensusVersionCapella , proposerEthConsensusVersion )
1848+ }
1849+ if payload .Capella == nil {
1850+ return errors .New ("Non-Capella payload detected and rejected. You need to update mev-boost!" )
1851+ }
1852+
1853+ case spec .DataVersionBellatrix :
1854+ if proposerEthConsensusVersion != common .EthConsensusVersionBellatrix {
1855+ return errors .Errorf ("Bellatrix payload with wrong consensus version. Expected: %s, Got: %s" , common .EthConsensusVersionBellatrix , proposerEthConsensusVersion )
1856+ }
1857+ if payload .Bellatrix == nil {
1858+ return errors .New ("Non-Bellatrix payload detected and rejected. You need to update mev-boost!" )
1859+ }
1860+ }
1861+ return nil
1862+ }
1863+
18241864// respondGetPayloadSSZ responds to the proposer in SSZ
18251865func (api * RelayAPI ) respondGetPayloadSSZ (w http.ResponseWriter , result * builderApi.VersionedSubmitBlindedBlockResponse ) {
18261866 // Serialize the response
0 commit comments