Skip to content
42 changes: 21 additions & 21 deletions op-challenger/cmd/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ func TestAsteriscRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--asterisc-bin", "--asterisc-bin=./asterisc"))
require.Equal(t, "./asterisc", cfg.AsteriscBin)
require.Equal(t, "./asterisc", cfg.Asterisc.VmBin)
})
})

Expand All @@ -292,7 +292,7 @@ func TestAsteriscRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--asterisc-server", "--asterisc-server=./op-program"))
require.Equal(t, "./op-program", cfg.AsteriscServer)
require.Equal(t, "./op-program", cfg.Asterisc.Server)
})
})

Expand Down Expand Up @@ -349,12 +349,12 @@ func TestAsteriscRequiredArgs(t *testing.T) {
t.Run(fmt.Sprintf("TestAsteriscSnapshotFreq-%v", traceType), func(t *testing.T) {
t.Run("UsesDefault", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType))
require.Equal(t, config.DefaultAsteriscSnapshotFreq, cfg.AsteriscSnapshotFreq)
require.Equal(t, config.DefaultAsteriscSnapshotFreq, cfg.Asterisc.SnapshotFreq)
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType, "--asterisc-snapshot-freq=1234"))
require.Equal(t, uint(1234), cfg.AsteriscSnapshotFreq)
require.Equal(t, uint(1234), cfg.Asterisc.SnapshotFreq)
})

t.Run("Invalid", func(t *testing.T) {
Expand All @@ -366,12 +366,12 @@ func TestAsteriscRequiredArgs(t *testing.T) {
t.Run(fmt.Sprintf("TestAsteriscInfoFreq-%v", traceType), func(t *testing.T) {
t.Run("UsesDefault", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType))
require.Equal(t, config.DefaultAsteriscInfoFreq, cfg.AsteriscInfoFreq)
require.Equal(t, config.DefaultAsteriscInfoFreq, cfg.Asterisc.InfoFreq)
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType, "--asterisc-info-freq=1234"))
require.Equal(t, uint(1234), cfg.AsteriscInfoFreq)
require.Equal(t, uint(1234), cfg.Asterisc.InfoFreq)
})

t.Run("Invalid", func(t *testing.T) {
Expand Down Expand Up @@ -432,7 +432,7 @@ func TestAsteriscRequiredArgs(t *testing.T) {
delete(args, "--game-factory-address")
args["--network"] = "op-sepolia"
cfg := configForArgs(t, toArgList(args))
require.Equal(t, "op-sepolia", cfg.AsteriscNetwork)
require.Equal(t, "op-sepolia", cfg.Asterisc.Network)
})

t.Run("MustNotSpecifyNetworkAndAsteriscNetwork", func(t *testing.T) {
Expand All @@ -442,7 +442,7 @@ func TestAsteriscRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--asterisc-network", "--asterisc-network", testNetwork))
require.Equal(t, testNetwork, cfg.AsteriscNetwork)
require.Equal(t, testNetwork, cfg.Asterisc.Network)
})
})

Expand All @@ -453,7 +453,7 @@ func TestAsteriscRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--asterisc-network", "--asterisc-rollup-config=rollup.json", "--asterisc-l2-genesis=genesis.json"))
require.Equal(t, "rollup.json", cfg.AsteriscRollupConfigPath)
require.Equal(t, "rollup.json", cfg.Asterisc.RollupConfigPath)
})
})

Expand All @@ -464,7 +464,7 @@ func TestAsteriscRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--asterisc-network", "--asterisc-rollup-config=rollup.json", "--asterisc-l2-genesis=genesis.json"))
require.Equal(t, "genesis.json", cfg.AsteriscL2GenesisPath)
require.Equal(t, "genesis.json", cfg.Asterisc.L2GenesisPath)
})
})
}
Expand Down Expand Up @@ -502,7 +502,7 @@ func TestCannonRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--cannon-bin", "--cannon-bin=./cannon"))
require.Equal(t, "./cannon", cfg.CannonBin)
require.Equal(t, "./cannon", cfg.Cannon.VmBin)
})
})

Expand All @@ -517,7 +517,7 @@ func TestCannonRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--cannon-server", "--cannon-server=./op-program"))
require.Equal(t, "./op-program", cfg.CannonServer)
require.Equal(t, "./op-program", cfg.Cannon.Server)
})
})

Expand Down Expand Up @@ -570,12 +570,12 @@ func TestCannonRequiredArgs(t *testing.T) {
t.Run(fmt.Sprintf("TestCannonSnapshotFreq-%v", traceType), func(t *testing.T) {
t.Run("UsesDefault", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType))
require.Equal(t, config.DefaultCannonSnapshotFreq, cfg.CannonSnapshotFreq)
require.Equal(t, config.DefaultCannonSnapshotFreq, cfg.Cannon.SnapshotFreq)
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType, "--cannon-snapshot-freq=1234"))
require.Equal(t, uint(1234), cfg.CannonSnapshotFreq)
require.Equal(t, uint(1234), cfg.Cannon.SnapshotFreq)
})

t.Run("Invalid", func(t *testing.T) {
Expand All @@ -587,12 +587,12 @@ func TestCannonRequiredArgs(t *testing.T) {
t.Run(fmt.Sprintf("TestCannonInfoFreq-%v", traceType), func(t *testing.T) {
t.Run("UsesDefault", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType))
require.Equal(t, config.DefaultCannonInfoFreq, cfg.CannonInfoFreq)
require.Equal(t, config.DefaultCannonInfoFreq, cfg.Cannon.InfoFreq)
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType, "--cannon-info-freq=1234"))
require.Equal(t, uint(1234), cfg.CannonInfoFreq)
require.Equal(t, uint(1234), cfg.Cannon.InfoFreq)
})

t.Run("Invalid", func(t *testing.T) {
Expand Down Expand Up @@ -653,7 +653,7 @@ func TestCannonRequiredArgs(t *testing.T) {
delete(args, "--game-factory-address")
args["--network"] = "op-sepolia"
cfg := configForArgs(t, toArgList(args))
require.Equal(t, "op-sepolia", cfg.CannonNetwork)
require.Equal(t, "op-sepolia", cfg.Cannon.Network)
})

t.Run("MustNotSpecifyNetworkAndCannonNetwork", func(t *testing.T) {
Expand All @@ -663,7 +663,7 @@ func TestCannonRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--cannon-network", "--cannon-network", testNetwork))
require.Equal(t, testNetwork, cfg.CannonNetwork)
require.Equal(t, testNetwork, cfg.Cannon.Network)
})
})

Expand All @@ -674,7 +674,7 @@ func TestCannonRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--cannon-network", "--cannon-rollup-config=rollup.json", "--cannon-l2-genesis=genesis.json"))
require.Equal(t, "rollup.json", cfg.CannonRollupConfigPath)
require.Equal(t, "rollup.json", cfg.Cannon.RollupConfigPath)
})
})

Expand All @@ -685,7 +685,7 @@ func TestCannonRequiredArgs(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--cannon-network", "--cannon-rollup-config=rollup.json", "--cannon-l2-genesis=genesis.json"))
require.Equal(t, "genesis.json", cfg.CannonL2GenesisPath)
require.Equal(t, "genesis.json", cfg.Cannon.L2GenesisPath)
})
})
}
Expand Down Expand Up @@ -729,7 +729,7 @@ func TestGameWindow(t *testing.T) {

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(config.TraceTypeAlphabet, "--game-window=1m"))
require.Equal(t, time.Duration(time.Minute), cfg.GameWindow)
require.Equal(t, time.Minute, cfg.GameWindow)
})

t.Run("ParsesDefault", func(t *testing.T) {
Expand Down
86 changes: 43 additions & 43 deletions op-challenger/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import (
"slices"
"time"

"github.com/ethereum/go-ethereum/common"

"github.com/ethereum-optimism/optimism/op-challenger/game/fault/trace/vm"
"github.com/ethereum-optimism/optimism/op-node/chaincfg"
opmetrics "github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/oppprof"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
"github.com/ethereum/go-ethereum/common"
)

var (
Expand Down Expand Up @@ -129,26 +129,14 @@ type Config struct {
L2Rpc string // L2 RPC Url

// Specific to the cannon trace provider
CannonBin string // Path to the cannon executable to run when generating trace data
CannonServer string // Path to the op-program executable that provides the pre-image oracle server
Cannon vm.Config
CannonAbsolutePreState string // File to load the absolute pre-state for Cannon traces from
CannonAbsolutePreStateBaseURL *url.URL // Base URL to retrieve absolute pre-states for Cannon traces from
CannonNetwork string
CannonRollupConfigPath string
CannonL2GenesisPath string
CannonSnapshotFreq uint // Frequency of snapshots to create when executing cannon (in VM instructions)
CannonInfoFreq uint // Frequency of cannon progress log messages (in VM instructions)

// Specific to the asterisc trace provider
AsteriscBin string // Path to the asterisc executable to run when generating trace data
AsteriscServer string // Path to the op-program executable that provides the pre-image oracle server
Asterisc vm.Config
AsteriscAbsolutePreState string // File to load the absolute pre-state for Asterisc traces from
AsteriscAbsolutePreStateBaseURL *url.URL // Base URL to retrieve absolute pre-states for Asterisc traces from
AsteriscNetwork string
AsteriscRollupConfigPath string
AsteriscL2GenesisPath string
AsteriscSnapshotFreq uint // Frequency of snapshots to create when executing asterisc (in VM instructions)
AsteriscInfoFreq uint // Frequency of asterisc progress log messages (in VM instructions)

MaxPendingTx uint64 // Maximum number of pending transactions (0 == no limit)

Expand Down Expand Up @@ -185,11 +173,23 @@ func NewConfig(

Datadir: datadir,

CannonSnapshotFreq: DefaultCannonSnapshotFreq,
CannonInfoFreq: DefaultCannonInfoFreq,
AsteriscSnapshotFreq: DefaultAsteriscSnapshotFreq,
AsteriscInfoFreq: DefaultAsteriscInfoFreq,
GameWindow: DefaultGameWindow,
Cannon: vm.Config{
VmType: TraceTypeCannon.String(),
L1: l1EthRpc,
L1Beacon: l1BeaconApi,
L2: l2EthRpc,
SnapshotFreq: DefaultCannonSnapshotFreq,
InfoFreq: DefaultCannonInfoFreq,
},
Asterisc: vm.Config{
VmType: TraceTypeAsterisc.String(),
L1: l1EthRpc,
L1Beacon: l1BeaconApi,
L2: l2EthRpc,
SnapshotFreq: DefaultAsteriscSnapshotFreq,
InfoFreq: DefaultAsteriscInfoFreq,
},
GameWindow: DefaultGameWindow,
}
}

Expand Down Expand Up @@ -223,28 +223,28 @@ func (c Config) Check() error {
return ErrMaxConcurrencyZero
}
if c.TraceTypeEnabled(TraceTypeCannon) || c.TraceTypeEnabled(TraceTypePermissioned) {
if c.CannonBin == "" {
if c.Cannon.VmBin == "" {
return ErrMissingCannonBin
}
if c.CannonServer == "" {
if c.Cannon.Server == "" {
return ErrMissingCannonServer
}
if c.CannonNetwork == "" {
if c.CannonRollupConfigPath == "" {
if c.Cannon.Network == "" {
if c.Cannon.RollupConfigPath == "" {
return ErrMissingCannonRollupConfig
}
if c.CannonL2GenesisPath == "" {
if c.Cannon.L2GenesisPath == "" {
return ErrMissingCannonL2Genesis
}
} else {
if c.CannonRollupConfigPath != "" {
if c.Cannon.RollupConfigPath != "" {
return ErrCannonNetworkAndRollupConfig
}
if c.CannonL2GenesisPath != "" {
if c.Cannon.L2GenesisPath != "" {
return ErrCannonNetworkAndL2Genesis
}
if ch := chaincfg.ChainByName(c.CannonNetwork); ch == nil {
return fmt.Errorf("%w: %v", ErrCannonNetworkUnknown, c.CannonNetwork)
if ch := chaincfg.ChainByName(c.Cannon.Network); ch == nil {
return fmt.Errorf("%w: %v", ErrCannonNetworkUnknown, c.Cannon.Network)
}
}
if c.CannonAbsolutePreState == "" && c.CannonAbsolutePreStateBaseURL == nil {
Expand All @@ -253,36 +253,36 @@ func (c Config) Check() error {
if c.CannonAbsolutePreState != "" && c.CannonAbsolutePreStateBaseURL != nil {
return ErrCannonAbsolutePreStateAndBaseURL
}
if c.CannonSnapshotFreq == 0 {
if c.Cannon.SnapshotFreq == 0 {
return ErrMissingCannonSnapshotFreq
}
if c.CannonInfoFreq == 0 {
if c.Cannon.InfoFreq == 0 {
return ErrMissingCannonInfoFreq
}
}
if c.TraceTypeEnabled(TraceTypeAsterisc) {
if c.AsteriscBin == "" {
if c.Asterisc.VmBin == "" {
return ErrMissingAsteriscBin
}
if c.AsteriscServer == "" {
if c.Asterisc.Server == "" {
return ErrMissingAsteriscServer
}
if c.AsteriscNetwork == "" {
if c.AsteriscRollupConfigPath == "" {
if c.Asterisc.Network == "" {
if c.Asterisc.RollupConfigPath == "" {
return ErrMissingAsteriscRollupConfig
}
if c.AsteriscL2GenesisPath == "" {
if c.Asterisc.L2GenesisPath == "" {
return ErrMissingAsteriscL2Genesis
}
} else {
if c.AsteriscRollupConfigPath != "" {
if c.Asterisc.RollupConfigPath != "" {
return ErrAsteriscNetworkAndRollupConfig
}
if c.AsteriscL2GenesisPath != "" {
if c.Asterisc.L2GenesisPath != "" {
return ErrAsteriscNetworkAndL2Genesis
}
if ch := chaincfg.ChainByName(c.AsteriscNetwork); ch == nil {
return fmt.Errorf("%w: %v", ErrAsteriscNetworkUnknown, c.AsteriscNetwork)
if ch := chaincfg.ChainByName(c.Asterisc.Network); ch == nil {
return fmt.Errorf("%w: %v", ErrAsteriscNetworkUnknown, c.Asterisc.Network)
}
}
if c.AsteriscAbsolutePreState == "" && c.AsteriscAbsolutePreStateBaseURL == nil {
Expand All @@ -291,10 +291,10 @@ func (c Config) Check() error {
if c.AsteriscAbsolutePreState != "" && c.AsteriscAbsolutePreStateBaseURL != nil {
return ErrAsteriscAbsolutePreStateAndBaseURL
}
if c.AsteriscSnapshotFreq == 0 {
if c.Asterisc.SnapshotFreq == 0 {
return ErrMissingAsteriscSnapshotFreq
}
if c.AsteriscInfoFreq == 0 {
if c.Asterisc.InfoFreq == 0 {
return ErrMissingAsteriscInfoFreq
}
}
Expand Down
Loading