@@ -20,6 +20,7 @@ import (
2020 "github.com/ethereum-optimism/optimism/op-challenger/game/fault/trace/utils"
2121 "github.com/ethereum-optimism/optimism/op-challenger/game/fault/trace/vm"
2222 faultTypes "github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
23+ "github.com/ethereum-optimism/optimism/op-challenger/game/generic"
2324 "github.com/ethereum-optimism/optimism/op-challenger/game/scheduler"
2425 gameTypes "github.com/ethereum-optimism/optimism/op-challenger/game/types"
2526 "github.com/ethereum-optimism/optimism/op-challenger/metrics"
@@ -35,7 +36,7 @@ type RegisterTask struct {
3536 gameType gameTypes.GameType
3637 skipPrestateValidation bool
3738
38- syncValidator SyncValidator
39+ syncValidator generic. SyncValidator
3940
4041 getTopPrestateProvider func (ctx context.Context , prestateBlock uint64 ) (faultTypes.PrestateProvider , error )
4142 getBottomPrestateProvider func (ctx context.Context , prestateHash common.Hash ) (faultTypes.PrestateProvider , error )
@@ -51,11 +52,11 @@ type RegisterTask struct {
5152 poststateBlock uint64 ) (* trace.Accessor , error )
5253}
5354
54- func NewSuperCannonRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , rootProvider super.RootProvider , syncValidator SyncValidator ) * RegisterTask {
55+ func NewSuperCannonRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , rootProvider super.RootProvider , syncValidator generic. SyncValidator ) * RegisterTask {
5556 return newSuperCannonVMRegisterTaskWithConfig (gameType , cfg , m , serverExecutor , rootProvider , syncValidator , cfg .Cannon , cfg .CannonAbsolutePreStateBaseURL , cfg .CannonAbsolutePreState )
5657}
5758
58- func NewSuperCannonKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , rootProvider super.RootProvider , syncValidator SyncValidator ) * RegisterTask {
59+ func NewSuperCannonKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , rootProvider super.RootProvider , syncValidator generic. SyncValidator ) * RegisterTask {
5960 return newSuperCannonVMRegisterTaskWithConfig (gameType , cfg , m , serverExecutor , rootProvider , syncValidator , cfg .CannonKona , cfg .CannonKonaAbsolutePreStateBaseURL , cfg .CannonKonaAbsolutePreState )
6061}
6162
@@ -65,7 +66,7 @@ func newSuperCannonVMRegisterTaskWithConfig(
6566 m caching.Metrics ,
6667 serverExecutor vm.OracleServerExecutor ,
6768 rootProvider super.RootProvider ,
68- syncValidator SyncValidator ,
69+ syncValidator generic. SyncValidator ,
6970 vmCfg vm.Config ,
7071 preStateBaseURL * url.URL ,
7172 preState string ,
@@ -105,11 +106,11 @@ func newSuperCannonVMRegisterTaskWithConfig(
105106 }
106107}
107108
108- func NewCannonRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator SyncValidator ) * RegisterTask {
109+ func NewCannonRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator generic. SyncValidator ) * RegisterTask {
109110 return newCannonVMRegisterTaskWithConfig (gameType , cfg , m , serverExecutor , l2Client , rollupClient , syncValidator , cfg .Cannon , cfg .CannonAbsolutePreStateBaseURL , cfg .CannonAbsolutePreState )
110111}
111112
112- func NewCannonKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator SyncValidator ) * RegisterTask {
113+ func NewCannonKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator generic. SyncValidator ) * RegisterTask {
113114 return newCannonVMRegisterTaskWithConfig (gameType , cfg , m , serverExecutor , l2Client , rollupClient , syncValidator , cfg .CannonKona , cfg .CannonKonaAbsolutePreStateBaseURL , cfg .CannonKonaAbsolutePreState )
114115}
115116
@@ -120,7 +121,7 @@ func newCannonVMRegisterTaskWithConfig(
120121 serverExecutor vm.OracleServerExecutor ,
121122 l2Client utils.L2HeaderSource ,
122123 rollupClient outputs.OutputRollupClient ,
123- syncValidator SyncValidator ,
124+ syncValidator generic. SyncValidator ,
124125 vmCfg vm.Config ,
125126 preStateBaseURL * url.URL ,
126127 preState string ,
@@ -162,7 +163,7 @@ func newCannonVMRegisterTaskWithConfig(
162163 }
163164}
164165
165- func NewAsteriscRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator SyncValidator ) * RegisterTask {
166+ func NewAsteriscRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator generic. SyncValidator ) * RegisterTask {
166167 stateConverter := asterisc .NewStateConverter (cfg .Asterisc )
167168 return & RegisterTask {
168169 gameType : gameType ,
@@ -196,7 +197,7 @@ func NewAsteriscRegisterTask(gameType gameTypes.GameType, cfg *config.Config, m
196197 }
197198}
198199
199- func NewAsteriscKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator SyncValidator ) * RegisterTask {
200+ func NewAsteriscKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator generic. SyncValidator ) * RegisterTask {
200201 stateConverter := asterisc .NewStateConverter (cfg .Asterisc )
201202 return & RegisterTask {
202203 gameType : gameType ,
@@ -230,7 +231,7 @@ func NewAsteriscKonaRegisterTask(gameType gameTypes.GameType, cfg *config.Config
230231 }
231232}
232233
233- func NewSuperAsteriscKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , rootProvider super.RootProvider , syncValidator SyncValidator ) * RegisterTask {
234+ func NewSuperAsteriscKonaRegisterTask (gameType gameTypes.GameType , cfg * config.Config , m caching.Metrics , serverExecutor vm.OracleServerExecutor , rootProvider super.RootProvider , syncValidator generic. SyncValidator ) * RegisterTask {
234235 stateConverter := asterisc .NewStateConverter (cfg .AsteriscKona )
235236 return & RegisterTask {
236237 gameType : gameType ,
@@ -266,7 +267,7 @@ func NewSuperAsteriscKonaRegisterTask(gameType gameTypes.GameType, cfg *config.C
266267 }
267268}
268269
269- func NewAlphabetRegisterTask (gameType gameTypes.GameType , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator SyncValidator ) * RegisterTask {
270+ func NewAlphabetRegisterTask (gameType gameTypes.GameType , l2Client utils.L2HeaderSource , rollupClient outputs.OutputRollupClient , syncValidator generic. SyncValidator ) * RegisterTask {
270271 return & RegisterTask {
271272 gameType : gameType ,
272273 syncValidator : syncValidator ,
@@ -323,7 +324,7 @@ func (e *RegisterTask) Register(
323324 txSender TxSender ,
324325 gameFactory * contracts.DisputeGameFactoryContract ,
325326 caller * batching.MultiCaller ,
326- l1HeaderSource L1HeaderSource ,
327+ l1HeaderSource generic. L1HeaderSource ,
327328 selective bool ,
328329 claimants []common.Address ,
329330 responseDelay time.Duration ,
@@ -357,27 +358,32 @@ func (e *RegisterTask) Register(
357358 if err != nil {
358359 return nil , fmt .Errorf ("failed to load split depth: %w" , err )
359360 }
360- l1HeadID , err := loadL1Head (contract , ctx , l1HeaderSource )
361- if err != nil {
362- return nil , err
363- }
364361 prestateProvider , err := e .getTopPrestateProvider (ctx , prestateBlock )
365362 if err != nil {
366363 return nil , fmt .Errorf ("failed to create top prestate provider: %w" , err )
367364 }
368- creator := func (ctx context.Context , logger log.Logger , gameDepth faultTypes.Depth , dir string ) (faultTypes.TraceAccessor , error ) {
365+ creator := func (ctx context.Context , logger log.Logger , gameDepth faultTypes.Depth , l1HeadID eth. BlockID , dir string ) (faultTypes.TraceAccessor , error ) {
369366 accessor , err := e .newTraceAccessor (logger , m , prestateProvider , vmPrestateProvider , dir , l1HeadID , splitDepth , prestateBlock , poststateBlock )
370367 if err != nil {
371368 return nil , err
372369 }
373370 return accessor , nil
374371 }
375- var validators []Validator
372+ var validators []generic. PrestateValidator
376373 if ! e .skipPrestateValidation {
377374 validators = append (validators , NewPrestateValidator (e .gameType .String (), contract .GetAbsolutePrestateHash , vmPrestateProvider ))
378375 validators = append (validators , NewPrestateValidator ("output root" , contract .GetStartingRootHash , prestateProvider ))
379376 }
380- return NewGamePlayer (ctx , systemClock , l1Clock , logger , m , dir , game .Proxy , txSender , contract , e .syncValidator , validators , creator , l1HeaderSource , selective , claimants , responseDelay , responseDelayAfter )
377+ return generic .NewGenericGamePlayer (
378+ ctx ,
379+ logger ,
380+ game .Proxy ,
381+ contract ,
382+ e .syncValidator ,
383+ validators ,
384+ l1HeaderSource ,
385+ AgentCreator (systemClock , l1Clock , m , dir , txSender , contract , creator , selective , claimants , responseDelay , responseDelayAfter ),
386+ )
381387 }
382388 err := registerOracle (ctx , logger , oracles , gameFactory , e .gameType )
383389 if err != nil {
@@ -413,15 +419,3 @@ func registerOracle(ctx context.Context, logger log.Logger, oracles OracleRegist
413419 oracles .RegisterOracle (oracle )
414420 return nil
415421}
416-
417- func loadL1Head (contract contracts.FaultDisputeGameContract , ctx context.Context , l1HeaderSource L1HeaderSource ) (eth.BlockID , error ) {
418- l1Head , err := contract .GetL1Head (ctx )
419- if err != nil {
420- return eth.BlockID {}, fmt .Errorf ("failed to load L1 head: %w" , err )
421- }
422- l1Header , err := l1HeaderSource .HeaderByHash (ctx , l1Head )
423- if err != nil {
424- return eth.BlockID {}, fmt .Errorf ("failed to load L1 header: %w" , err )
425- }
426- return eth .HeaderBlockID (l1Header ), nil
427- }
0 commit comments