diff --git a/op-challenger/game/fault/register.go b/op-challenger/game/fault/register.go index de1247b608e82..d52725dd62720 100644 --- a/op-challenger/game/fault/register.go +++ b/op-challenger/game/fault/register.go @@ -244,7 +244,11 @@ func registerAsterisc( } prestateProvider := outputs.NewPrestateProvider(rollupClient, prestateBlock) creator := func(ctx context.Context, logger log.Logger, gameDepth faultTypes.Depth, dir string) (faultTypes.TraceAccessor, error) { - accessor, err := outputs.NewOutputAsteriscTraceAccessor(logger, m, cfg, l2Client, prestateProvider, rollupClient, dir, l1HeadID, splitDepth, prestateBlock, poststateBlock) + asteriscPrestate, err := prestateSource.PrestatePath(requiredPrestatehash) + if err != nil { + return nil, fmt.Errorf("failed to get asterisc prestate: %w", err) + } + accessor, err := outputs.NewOutputAsteriscTraceAccessor(logger, m, cfg, l2Client, prestateProvider, asteriscPrestate, rollupClient, dir, l1HeadID, splitDepth, prestateBlock, poststateBlock) if err != nil { return nil, err } diff --git a/op-challenger/game/fault/trace/asterisc/executor.go b/op-challenger/game/fault/trace/asterisc/executor.go index 4bfe3737a8958..b84d5e444568a 100644 --- a/op-challenger/game/fault/trace/asterisc/executor.go +++ b/op-challenger/game/fault/trace/asterisc/executor.go @@ -34,7 +34,7 @@ type Executor struct { cmdExecutor utils.CmdExecutor } -func NewExecutor(logger log.Logger, m AsteriscMetricer, cfg *config.Config, inputs utils.LocalGameInputs) *Executor { +func NewExecutor(logger log.Logger, m AsteriscMetricer, cfg *config.Config, prestate string, inputs utils.LocalGameInputs) *Executor { return &Executor{ logger: logger, metrics: m, @@ -47,7 +47,7 @@ func NewExecutor(logger log.Logger, m AsteriscMetricer, cfg *config.Config, inpu network: cfg.AsteriscNetwork, rollupConfig: cfg.AsteriscRollupConfigPath, l2Genesis: cfg.AsteriscL2GenesisPath, - absolutePreState: cfg.AsteriscAbsolutePreState, + absolutePreState: prestate, snapshotFreq: cfg.AsteriscSnapshotFreq, infoFreq: cfg.AsteriscInfoFreq, selectSnapshot: utils.FindStartingSnapshot, diff --git a/op-challenger/game/fault/trace/asterisc/executor_test.go b/op-challenger/game/fault/trace/asterisc/executor_test.go index 93e6a68fde8cd..7ce44f3043751 100644 --- a/op-challenger/game/fault/trace/asterisc/executor_test.go +++ b/op-challenger/game/fault/trace/asterisc/executor_test.go @@ -22,7 +22,7 @@ func TestGenerateProof(t *testing.T) { dir := filepath.Join(tempDir, "gameDir") cfg := config.NewConfig(common.Address{0xbb}, "http://localhost:8888", "http://localhost:9000", "http://localhost:9096", "http://localhost:9095", tempDir, config.TraceTypeAsterisc) cfg.L2Rpc = "http://localhost:9999" - cfg.AsteriscAbsolutePreState = "pre.json" + prestate := "pre.json" cfg.AsteriscBin = "./bin/asterisc" cfg.AsteriscServer = "./bin/op-program" cfg.AsteriscSnapshotFreq = 500 @@ -37,7 +37,7 @@ func TestGenerateProof(t *testing.T) { } captureExec := func(t *testing.T, cfg config.Config, proofAt uint64) (string, string, map[string]string) { m := &asteriscDurationMetrics{} - executor := NewExecutor(testlog.Logger(t, log.LevelInfo), m, &cfg, inputs) + executor := NewExecutor(testlog.Logger(t, log.LevelInfo), m, &cfg, prestate, inputs) executor.selectSnapshot = func(logger log.Logger, dir string, absolutePreState string, i uint64) (string, error) { return input, nil } diff --git a/op-challenger/game/fault/trace/asterisc/provider.go b/op-challenger/game/fault/trace/asterisc/provider.go index 40fd1720abd3a..cc64ff6547194 100644 --- a/op-challenger/game/fault/trace/asterisc/provider.go +++ b/op-challenger/game/fault/trace/asterisc/provider.go @@ -43,12 +43,12 @@ type AsteriscTraceProvider struct { lastStep uint64 } -func NewTraceProvider(logger log.Logger, m AsteriscMetricer, cfg *config.Config, prestateProvider types.PrestateProvider, localInputs utils.LocalGameInputs, dir string, gameDepth types.Depth) *AsteriscTraceProvider { +func NewTraceProvider(logger log.Logger, m AsteriscMetricer, cfg *config.Config, prestateProvider types.PrestateProvider, asteriscPrestate string, localInputs utils.LocalGameInputs, dir string, gameDepth types.Depth) *AsteriscTraceProvider { return &AsteriscTraceProvider{ logger: logger, dir: dir, - prestate: cfg.AsteriscAbsolutePreState, - generator: NewExecutor(logger, m, cfg, localInputs), + prestate: asteriscPrestate, + generator: NewExecutor(logger, m, cfg, asteriscPrestate, localInputs), gameDepth: gameDepth, preimageLoader: utils.NewPreimageLoader(kvstore.NewDiskKV(utils.PreimageDir(dir)).Get), PrestateProvider: prestateProvider, @@ -185,7 +185,7 @@ func NewTraceProviderForTest(logger log.Logger, m AsteriscMetricer, cfg *config. logger: logger, dir: dir, prestate: cfg.AsteriscAbsolutePreState, - generator: NewExecutor(logger, m, cfg, localInputs), + generator: NewExecutor(logger, m, cfg, cfg.AsteriscNetwork, localInputs), gameDepth: gameDepth, preimageLoader: utils.NewPreimageLoader(kvstore.NewDiskKV(utils.PreimageDir(dir)).Get), } diff --git a/op-challenger/game/fault/trace/outputs/output_asterisc.go b/op-challenger/game/fault/trace/outputs/output_asterisc.go index 45aa94a794692..a6bbf39e7288f 100644 --- a/op-challenger/game/fault/trace/outputs/output_asterisc.go +++ b/op-challenger/game/fault/trace/outputs/output_asterisc.go @@ -24,6 +24,7 @@ func NewOutputAsteriscTraceAccessor( cfg *config.Config, l2Client utils.L2HeaderSource, prestateProvider types.PrestateProvider, + asteriscPrestate string, rollupClient OutputRollupClient, dir string, l1Head eth.BlockID, @@ -39,7 +40,7 @@ func NewOutputAsteriscTraceAccessor( if err != nil { return nil, fmt.Errorf("failed to fetch asterisc local inputs: %w", err) } - provider := asterisc.NewTraceProvider(logger, m, cfg, prestateProvider, localInputs, subdir, depth) + provider := asterisc.NewTraceProvider(logger, m, cfg, prestateProvider, asteriscPrestate, localInputs, subdir, depth) return provider, nil }