@@ -30,6 +30,7 @@ import (
3030 engineerrors "github.com/berachain/beacon-kit/engine-primitives/errors"
3131 "github.com/berachain/beacon-kit/errors"
3232 "github.com/berachain/beacon-kit/payload/builder"
33+ "github.com/berachain/beacon-kit/primitives/crypto"
3334 "github.com/berachain/beacon-kit/primitives/math"
3435 statedb "github.com/berachain/beacon-kit/state-transition/core/state"
3536)
@@ -79,10 +80,11 @@ func (s *Service) forceSyncUponProcess(
7980func (s * Service ) forceSyncUponFinalize (
8081 ctx context.Context ,
8182 beaconBlock * ctypes.BeaconBlock ,
83+ parentProposerPubkey * crypto.BLSPubkey ,
8284) error {
8385 // NewPayload call first to load payload into EL client.
8486 executionPayload := beaconBlock .GetBody ().GetExecutionPayload ()
85- payloadReq , err := ctypes .BuildNewPayloadRequestFromFork (beaconBlock )
87+ payloadReq , err := ctypes .BuildNewPayloadRequestFromFork (beaconBlock , parentProposerPubkey )
8688 if err != nil {
8789 return err
8890 }
@@ -178,6 +180,11 @@ func (s *Service) preFetchBuildData(st *statedb.StateDB, currentTime math.U64) (
178180 return nil , err
179181 }
180182
183+ parentProposerPubkey , err := st .ParentProposerPubkey (nextPayloadTimestamp )
184+ if err != nil {
185+ return nil , fmt .Errorf ("failed retrieving previous proposer public key: %w" , err )
186+ }
187+
181188 return & builder.RequestPayloadData {
182189 Slot : blkSlot ,
183190 Timestamp : nextPayloadTimestamp ,
@@ -191,6 +198,8 @@ func (s *Service) preFetchBuildData(st *statedb.StateDB, currentTime math.U64) (
191198 // Assumuming consensus guarantees single slot finality, the parent
192199 // of the latest block we verified must be final already.
193200 FinalEth1BlockHash : lph .GetParentHash (),
201+
202+ ParentProposerPubkey : parentProposerPubkey ,
194203 }, nil
195204}
196205
0 commit comments