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

op-challenger: Add cannon-server flag

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