@@ -91,7 +91,7 @@ type CLMocker struct {
9191 HeaderHistory map [uint64 ]* types.Header
9292
9393 // Payload ID History
94- PayloadIDHistory map [api.PayloadID ]interface {}
94+ payloadIDHistory map [ string ] map [api.PayloadID ]interface {}
9595
9696 // PoS Chain History Information
9797 PrevRandaoHistory map [uint64 ]common.Hash
@@ -146,7 +146,7 @@ func NewCLMocker(t *hivesim.T, genesis *core.Genesis, forkConfig *config.ForkCon
146146 PayloadProductionClientDelay : DefaultPayloadProductionClientDelay ,
147147 BlockTimestampIncrement : DefaultBlockTimestampIncrement ,
148148
149- PayloadIDHistory : make (map [api.PayloadID ]interface {}),
149+ payloadIDHistory : make (map [ string ] map [api.PayloadID ]interface {}),
150150 LatestHeader : nil ,
151151 FirstPoSBlockNumber : nil ,
152152 LatestHeadNumber : nil ,
@@ -442,14 +442,21 @@ func (cl *CLMocker) GeneratePayloadAttributes() {
442442 cl .PrevRandaoHistory [cl .LatestHeader .Number .Uint64 ()+ 1 ] = nextPrevRandao
443443}
444444
445- func (cl * CLMocker ) AddPayloadID (newPayloadID * api.PayloadID ) error {
445+ func (cl * CLMocker ) AddPayloadID (ec client. EngineClient , newPayloadID * api.PayloadID ) error {
446446 if newPayloadID == nil {
447447 return errors .New ("nil payload ID" )
448448 }
449- if _ , ok := cl .PayloadIDHistory [* newPayloadID ]; ok {
449+ // Get map for given client
450+ if _ , ok := cl .payloadIDHistory [ec .ID ()]; ! ok {
451+ cl .payloadIDHistory [ec .ID ()] = make (map [api.PayloadID ]interface {})
452+ }
453+ // Check if payload ID has been used before
454+ if _ , ok := cl .payloadIDHistory [ec .ID ()][* newPayloadID ]; ok {
450455 return fmt .Errorf ("reused payload ID: %v" , * newPayloadID )
451456 }
452- cl .PayloadIDHistory [* newPayloadID ] = nil
457+ // Add payload ID to history
458+ cl .payloadIDHistory [ec .ID ()][* newPayloadID ] = nil
459+ fmt .Printf ("CLMocker: Added payload ID %v for client %v\n " , * newPayloadID , ec .ID ())
453460 return nil
454461}
455462
@@ -467,7 +474,7 @@ func (cl *CLMocker) RequestNextPayload() {
467474 if resp .PayloadStatus .LatestValidHash == nil || * resp .PayloadStatus .LatestValidHash != cl .LatestForkchoice .HeadBlockHash {
468475 cl .Fatalf ("CLMocker: Unexpected forkchoiceUpdated LatestValidHash Response from Payload builder: %v != %v" , resp .PayloadStatus .LatestValidHash , cl .LatestForkchoice .HeadBlockHash )
469476 }
470- if err = cl .AddPayloadID (resp .PayloadID ); err != nil {
477+ if err = cl .AddPayloadID (cl . NextBlockProducer , resp .PayloadID ); err != nil {
471478 cl .Fatalf ("CLMocker: Payload ID failure: %v" , err )
472479 }
473480 cl .NextPayloadID = resp .PayloadID
0 commit comments