Commit 0a829efe authored by Adrian Sutton's avatar Adrian Sutton

op-challenger: Add cannon-server flag

parent a1ee3497
...@@ -16,6 +16,7 @@ var ( ...@@ -16,6 +16,7 @@ var (
l1EthRpc = "http://example.com:8545" l1EthRpc = "http://example.com:8545"
gameAddressValue = "0xaa00000000000000000000000000000000000000" gameAddressValue = "0xaa00000000000000000000000000000000000000"
cannonBin = "./bin/cannon" cannonBin = "./bin/cannon"
cannonServer = "./bin/op-program"
cannonPreState = "./pre.json" cannonPreState = "./pre.json"
cannonDatadir = "./test_data" cannonDatadir = "./test_data"
cannonL2 = "http://example.com:9545" cannonL2 = "http://example.com:9545"
...@@ -153,6 +154,21 @@ func TestCannonBin(t *testing.T) { ...@@ -153,6 +154,21 @@ func TestCannonBin(t *testing.T) {
}) })
} }
func TestCannonServer(t *testing.T) {
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--cannon-server"))
})
t.Run("Required", func(t *testing.T) {
verifyArgsInvalid(t, "flag cannon-server is required", addRequiredArgsExcept(config.TraceTypeCannon, "--cannon-server"))
})
t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(config.TraceTypeCannon, "--cannon-server", "--cannon-server=./op-program"))
require.Equal(t, "./op-program", cfg.CannonServer)
})
}
func TestCannonAbsolutePrestate(t *testing.T) { func TestCannonAbsolutePrestate(t *testing.T) {
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) { t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--cannon-prestate")) configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--cannon-prestate"))
...@@ -246,6 +262,7 @@ func requiredArgs(traceType config.TraceType) map[string]string { ...@@ -246,6 +262,7 @@ func requiredArgs(traceType config.TraceType) map[string]string {
args["--alphabet"] = alphabetTrace args["--alphabet"] = alphabetTrace
case config.TraceTypeCannon: case config.TraceTypeCannon:
args["--cannon-bin"] = cannonBin args["--cannon-bin"] = cannonBin
args["--cannon-server"] = cannonServer
args["--cannon-prestate"] = cannonPreState args["--cannon-prestate"] = cannonPreState
args["--cannon-datadir"] = cannonDatadir args["--cannon-datadir"] = cannonDatadir
args["--cannon-l2"] = cannonL2 args["--cannon-l2"] = cannonL2
......
...@@ -13,6 +13,7 @@ var ( ...@@ -13,6 +13,7 @@ var (
ErrMissingCannonDatadir = errors.New("missing cannon datadir") ErrMissingCannonDatadir = errors.New("missing cannon datadir")
ErrMissingCannonL2 = errors.New("missing cannon L2") ErrMissingCannonL2 = errors.New("missing cannon L2")
ErrMissingCannonBin = errors.New("missing cannon bin") ErrMissingCannonBin = errors.New("missing cannon bin")
ErrMissingCannonServer = errors.New("missing cannon server")
ErrMissingCannonAbsolutePreState = errors.New("missing cannon absolute pre-state") ErrMissingCannonAbsolutePreState = errors.New("missing cannon absolute pre-state")
ErrMissingAlphabetTrace = errors.New("missing alphabet trace") ErrMissingAlphabetTrace = errors.New("missing alphabet trace")
ErrMissingL1EthRPC = errors.New("missing l1 eth rpc url") ErrMissingL1EthRPC = errors.New("missing l1 eth rpc url")
...@@ -66,6 +67,7 @@ type Config struct { ...@@ -66,6 +67,7 @@ type Config struct {
// Specific to the cannon trace provider // Specific to the cannon trace provider
CannonBin string // Path to the cannon executable to run when generating trace data 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
CannonAbsolutePreState string // File to load the absolute pre-state for Cannon traces from CannonAbsolutePreState string // File to load the absolute pre-state for Cannon traces from
CannonDatadir string // Cannon Data Directory CannonDatadir string // Cannon Data Directory
CannonL2 string // L2 RPC Url CannonL2 string // L2 RPC Url
...@@ -107,6 +109,9 @@ func (c Config) Check() error { ...@@ -107,6 +109,9 @@ func (c Config) Check() error {
if c.CannonBin == "" { if c.CannonBin == "" {
return ErrMissingCannonBin return ErrMissingCannonBin
} }
if c.CannonServer == "" {
return ErrMissingCannonServer
}
if c.CannonAbsolutePreState == "" { if c.CannonAbsolutePreState == "" {
return ErrMissingCannonAbsolutePreState return ErrMissingCannonAbsolutePreState
} }
......
...@@ -13,6 +13,7 @@ var ( ...@@ -13,6 +13,7 @@ var (
validGameAddress = common.HexToAddress("0x7bdd3b028C4796eF0EAf07d11394d0d9d8c24139") validGameAddress = common.HexToAddress("0x7bdd3b028C4796eF0EAf07d11394d0d9d8c24139")
validAlphabetTrace = "abcdefgh" validAlphabetTrace = "abcdefgh"
validCannonBin = "./bin/cannon" validCannonBin = "./bin/cannon"
validCannonOpProgramBin = "./bin/op-program"
validCannonAbsolutPreState = "pre.json" validCannonAbsolutPreState = "pre.json"
validCannonDatadir = "/tmp/cannon" validCannonDatadir = "/tmp/cannon"
validCannonL2 = "http://localhost:9545" validCannonL2 = "http://localhost:9545"
...@@ -27,6 +28,7 @@ func validConfig(traceType TraceType) Config { ...@@ -27,6 +28,7 @@ func validConfig(traceType TraceType) Config {
cfg.AlphabetTrace = validAlphabetTrace cfg.AlphabetTrace = validAlphabetTrace
case TraceTypeCannon: case TraceTypeCannon:
cfg.CannonBin = validCannonBin cfg.CannonBin = validCannonBin
cfg.CannonServer = validCannonOpProgramBin
cfg.CannonAbsolutePreState = validCannonAbsolutPreState cfg.CannonAbsolutePreState = validCannonAbsolutPreState
cfg.CannonDatadir = validCannonDatadir cfg.CannonDatadir = validCannonDatadir
cfg.CannonL2 = validCannonL2 cfg.CannonL2 = validCannonL2
...@@ -77,6 +79,12 @@ func TestCannonBinRequired(t *testing.T) { ...@@ -77,6 +79,12 @@ func TestCannonBinRequired(t *testing.T) {
require.ErrorIs(t, config.Check(), ErrMissingCannonBin) require.ErrorIs(t, config.Check(), ErrMissingCannonBin)
} }
func TestCannonServerRequired(t *testing.T) {
config := validConfig(TraceTypeCannon)
config.CannonServer = ""
require.ErrorIs(t, config.Check(), ErrMissingCannonServer)
}
func TestCannonAbsolutePreStateRequired(t *testing.T) { func TestCannonAbsolutePreStateRequired(t *testing.T) {
config := validConfig(TraceTypeCannon) config := validConfig(TraceTypeCannon)
config.CannonAbsolutePreState = "" config.CannonAbsolutePreState = ""
......
...@@ -63,6 +63,11 @@ var ( ...@@ -63,6 +63,11 @@ var (
Usage: "Path to cannon executable to use when generating trace data (cannon trace type only)", Usage: "Path to cannon executable to use when generating trace data (cannon trace type only)",
EnvVars: prefixEnvVars("CANNON_BIN"), EnvVars: prefixEnvVars("CANNON_BIN"),
} }
CannonServerFlag = &cli.StringFlag{
Name: "cannon-server",
Usage: "Path to executable to use as pre-image oracle server when generating trace data (cannon trace type only)",
EnvVars: prefixEnvVars("CANNON_SERVER"),
}
CannonPreStateFlag = &cli.StringFlag{ CannonPreStateFlag = &cli.StringFlag{
Name: "cannon-prestate", Name: "cannon-prestate",
Usage: "Path to absolute prestate to use when generating trace data (cannon trace type only)", Usage: "Path to absolute prestate to use when generating trace data (cannon trace type only)",
...@@ -93,6 +98,7 @@ var requiredFlags = []cli.Flag{ ...@@ -93,6 +98,7 @@ var requiredFlags = []cli.Flag{
var optionalFlags = []cli.Flag{ var optionalFlags = []cli.Flag{
AlphabetFlag, AlphabetFlag,
CannonBinFlag, CannonBinFlag,
CannonServerFlag,
CannonPreStateFlag, CannonPreStateFlag,
CannonDatadirFlag, CannonDatadirFlag,
CannonL2Flag, CannonL2Flag,
...@@ -120,6 +126,9 @@ func CheckRequired(ctx *cli.Context) error { ...@@ -120,6 +126,9 @@ func CheckRequired(ctx *cli.Context) error {
if !ctx.IsSet(CannonBinFlag.Name) { if !ctx.IsSet(CannonBinFlag.Name) {
return fmt.Errorf("flag %s is required", CannonBinFlag.Name) return fmt.Errorf("flag %s is required", CannonBinFlag.Name)
} }
if !ctx.IsSet(CannonServerFlag.Name) {
return fmt.Errorf("flag %s is required", CannonServerFlag.Name)
}
if !ctx.IsSet(CannonPreStateFlag.Name) { if !ctx.IsSet(CannonPreStateFlag.Name) {
return fmt.Errorf("flag %s is required", CannonPreStateFlag.Name) return fmt.Errorf("flag %s is required", CannonPreStateFlag.Name)
} }
...@@ -160,6 +169,7 @@ func NewConfigFromCLI(ctx *cli.Context) (*config.Config, error) { ...@@ -160,6 +169,7 @@ func NewConfigFromCLI(ctx *cli.Context) (*config.Config, error) {
GameAddress: dgfAddress, GameAddress: dgfAddress,
AlphabetTrace: ctx.String(AlphabetFlag.Name), AlphabetTrace: ctx.String(AlphabetFlag.Name),
CannonBin: ctx.String(CannonBinFlag.Name), CannonBin: ctx.String(CannonBinFlag.Name),
CannonServer: ctx.String(CannonServerFlag.Name),
CannonAbsolutePreState: ctx.String(CannonPreStateFlag.Name), CannonAbsolutePreState: ctx.String(CannonPreStateFlag.Name),
CannonDatadir: ctx.String(CannonDatadirFlag.Name), CannonDatadir: ctx.String(CannonDatadirFlag.Name),
CannonL2: ctx.String(CannonL2Flag.Name), CannonL2: ctx.String(CannonL2Flag.Name),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment