Commit b23d3f67 authored by Adrian Sutton's avatar Adrian Sutton Committed by GitHub

op-challenger: Rename `--l2-rpc` to `--l2-eth-rpc` and log warning for...

op-challenger: Rename `--l2-rpc` to `--l2-eth-rpc` and log warning for deprecated `--cannon-l2` (#10257)

* op-challenger: Log a warning when deprecated --cannon-l2 option is used.

* op-challenger: Rename --l2-rpc to --l2-eth-rpc for consistency with --l1-eth-rpc
parent 59d4fbb2
...@@ -45,7 +45,7 @@ make op-challenger op-program cannon ...@@ -45,7 +45,7 @@ make op-challenger op-program cannon
--cannon-bin ./cannon/bin/cannon \ --cannon-bin ./cannon/bin/cannon \
--cannon-server ./op-program/bin/op-program \ --cannon-server ./op-program/bin/op-program \
--cannon-prestate <PRESTATE> \ --cannon-prestate <PRESTATE> \
--l2-rpc <L2_URL> \ --l2-eth-rpc <L2_URL> \
--private-key <PRIVATE_KEY> --private-key <PRIVATE_KEY>
``` ```
......
...@@ -44,7 +44,7 @@ DISPUTE_GAME_FACTORY=$(jq -r .DisputeGameFactoryProxy .devnet/addresses.json) ...@@ -44,7 +44,7 @@ DISPUTE_GAME_FACTORY=$(jq -r .DisputeGameFactoryProxy .devnet/addresses.json)
--cannon-bin ./cannon/bin/cannon \ --cannon-bin ./cannon/bin/cannon \
--cannon-server ./op-program/bin/op-program \ --cannon-server ./op-program/bin/op-program \
--cannon-prestate ./op-program/bin/prestate.json \ --cannon-prestate ./op-program/bin/prestate.json \
--l2-rpc http://localhost:9545 \ --l2-eth-rpc http://localhost:9545 \
--mnemonic "test test test test test test test test test test test junk" \ --mnemonic "test test test test test test test test test test test junk" \
--hd-path "m/44'/60'/0'/0/8" \ --hd-path "m/44'/60'/0'/0/8" \
--num-confirmations 1 --num-confirmations 1
......
...@@ -59,7 +59,7 @@ func run(ctx context.Context, args []string, action ConfiguredLifecycle) error { ...@@ -59,7 +59,7 @@ func run(ctx context.Context, args []string, action ConfiguredLifecycle) error {
} }
logger.Info("Starting op-challenger", "version", VersionWithMeta) logger.Info("Starting op-challenger", "version", VersionWithMeta)
cfg, err := flags.NewConfigFromCLI(ctx) cfg, err := flags.NewConfigFromCLI(ctx, logger)
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
...@@ -23,7 +23,7 @@ var ( ...@@ -23,7 +23,7 @@ var (
gameFactoryAddressValue = "0xbb00000000000000000000000000000000000000" gameFactoryAddressValue = "0xbb00000000000000000000000000000000000000"
cannonNetwork = "op-mainnet" cannonNetwork = "op-mainnet"
testNetwork = "op-sepolia" testNetwork = "op-sepolia"
l2Rpc = "http://example.com:9545" l2EthRpc = "http://example.com:9545"
cannonBin = "./bin/cannon" cannonBin = "./bin/cannon"
cannonServer = "./bin/op-program" cannonServer = "./bin/op-program"
cannonPreState = "./pre.json" cannonPreState = "./pre.json"
...@@ -305,25 +305,25 @@ func TestAsteriscRequiredArgs(t *testing.T) { ...@@ -305,25 +305,25 @@ func TestAsteriscRequiredArgs(t *testing.T) {
}) })
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) { t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--l2-rpc")) configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--l2-eth-rpc"))
}) })
t.Run("RequiredForAsteriscTrace", func(t *testing.T) { t.Run("RequiredForAsteriscTrace", func(t *testing.T) {
verifyArgsInvalid(t, "flag l2-rpc is required", addRequiredArgsExcept(traceType, "--l2-rpc")) verifyArgsInvalid(t, "flag l2-eth-rpc is required", addRequiredArgsExcept(traceType, "--l2-eth-rpc"))
}) })
t.Run("ValidLegacy", func(t *testing.T) { t.Run("ValidLegacy", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--l2-rpc", fmt.Sprintf("--cannon-l2=%s", l2Rpc))) cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--l2-eth-rpc", fmt.Sprintf("--cannon-l2=%s", l2EthRpc)))
require.Equal(t, l2Rpc, cfg.L2Rpc) require.Equal(t, l2EthRpc, cfg.L2Rpc)
}) })
t.Run("Valid", func(t *testing.T) { t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType)) cfg := configForArgs(t, addRequiredArgs(traceType))
require.Equal(t, l2Rpc, cfg.L2Rpc) require.Equal(t, l2EthRpc, cfg.L2Rpc)
}) })
t.Run("InvalidUsingBothFlags", func(t *testing.T) { t.Run("InvalidUsingBothFlags", func(t *testing.T) {
verifyArgsInvalid(t, "flag cannon-l2 and l2-rpc must not be both set", addRequiredArgsExcept(traceType, "", fmt.Sprintf("--cannon-l2=%s", l2Rpc))) verifyArgsInvalid(t, "flag cannon-l2 and l2-eth-rpc must not be both set", addRequiredArgsExcept(traceType, "", fmt.Sprintf("--cannon-l2=%s", l2EthRpc)))
}) })
}) })
...@@ -492,21 +492,21 @@ func TestCannonRequiredArgs(t *testing.T) { ...@@ -492,21 +492,21 @@ func TestCannonRequiredArgs(t *testing.T) {
}) })
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) { t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--l2-rpc")) configForArgs(t, addRequiredArgsExcept(config.TraceTypeAlphabet, "--l2-eth-rpc"))
}) })
t.Run("RequiredForCannonTrace", func(t *testing.T) { t.Run("RequiredForCannonTrace", func(t *testing.T) {
verifyArgsInvalid(t, "flag l2-rpc is required", addRequiredArgsExcept(traceType, "--l2-rpc")) verifyArgsInvalid(t, "flag l2-eth-rpc is required", addRequiredArgsExcept(traceType, "--l2-eth-rpc"))
}) })
t.Run("ValidLegacy", func(t *testing.T) { t.Run("ValidLegacy", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--l2-rpc", fmt.Sprintf("--cannon-l2=%s", l2Rpc))) cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--l2-eth-rpc", fmt.Sprintf("--cannon-l2=%s", l2EthRpc)))
require.Equal(t, l2Rpc, cfg.L2Rpc) require.Equal(t, l2EthRpc, cfg.L2Rpc)
}) })
t.Run("Valid", func(t *testing.T) { t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgs(traceType)) cfg := configForArgs(t, addRequiredArgs(traceType))
require.Equal(t, l2Rpc, cfg.L2Rpc) require.Equal(t, l2EthRpc, cfg.L2Rpc)
}) })
}) })
...@@ -777,7 +777,7 @@ func addRequiredCannonArgs(args map[string]string) { ...@@ -777,7 +777,7 @@ func addRequiredCannonArgs(args map[string]string) {
args["--cannon-bin"] = cannonBin args["--cannon-bin"] = cannonBin
args["--cannon-server"] = cannonServer args["--cannon-server"] = cannonServer
args["--cannon-prestate"] = cannonPreState args["--cannon-prestate"] = cannonPreState
args["--l2-rpc"] = l2Rpc args["--l2-eth-rpc"] = l2EthRpc
addRequiredOutputArgs(args) addRequiredOutputArgs(args)
} }
...@@ -786,7 +786,7 @@ func addRequiredAsteriscArgs(args map[string]string) { ...@@ -786,7 +786,7 @@ func addRequiredAsteriscArgs(args map[string]string) {
args["--asterisc-bin"] = asteriscBin args["--asterisc-bin"] = asteriscBin
args["--asterisc-server"] = asteriscServer args["--asterisc-server"] = asteriscServer
args["--asterisc-prestate"] = asteriscPreState args["--asterisc-prestate"] = asteriscPreState
args["--l2-rpc"] = l2Rpc args["--l2-eth-rpc"] = l2EthRpc
addRequiredOutputArgs(args) addRequiredOutputArgs(args)
} }
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
"strings" "strings"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
"github.com/ethereum-optimism/optimism/op-challenger/config" "github.com/ethereum-optimism/optimism/op-challenger/config"
...@@ -72,10 +73,10 @@ var ( ...@@ -72,10 +73,10 @@ var (
EnvVars: prefixEnvVars("MAX_CONCURRENCY"), EnvVars: prefixEnvVars("MAX_CONCURRENCY"),
Value: uint(runtime.NumCPU()), Value: uint(runtime.NumCPU()),
} }
L2RpcFlag = &cli.StringFlag{ L2EthRpcFlag = &cli.StringFlag{
Name: "l2-rpc", Name: "l2-eth-rpc",
Usage: "L2 Address of L2 JSON-RPC endpoint to use (eth and debug namespace required) (cannon/asterisc trace type only)", Usage: "L2 Address of L2 JSON-RPC endpoint to use (eth and debug namespace required) (cannon/asterisc trace type only)",
EnvVars: prefixEnvVars("L2_RPC"), EnvVars: prefixEnvVars("L2_ETH_RPC"),
} }
MaxPendingTransactionsFlag = &cli.Uint64Flag{ MaxPendingTransactionsFlag = &cli.Uint64Flag{
Name: "max-pending-tx", Name: "max-pending-tx",
...@@ -135,7 +136,7 @@ var ( ...@@ -135,7 +136,7 @@ var (
} }
CannonL2Flag = &cli.StringFlag{ CannonL2Flag = &cli.StringFlag{
Name: "cannon-l2", Name: "cannon-l2",
Usage: fmt.Sprintf("Deprecated: Use %v instead", L2RpcFlag.Name), Usage: fmt.Sprintf("Deprecated: Use %v instead", L2EthRpcFlag.Name),
EnvVars: prefixEnvVars("CANNON_L2"), EnvVars: prefixEnvVars("CANNON_L2"),
} }
CannonSnapshotFreqFlag = &cli.UintFlag{ CannonSnapshotFreqFlag = &cli.UintFlag{
...@@ -228,7 +229,7 @@ var requiredFlags = []cli.Flag{ ...@@ -228,7 +229,7 @@ var requiredFlags = []cli.Flag{
var optionalFlags = []cli.Flag{ var optionalFlags = []cli.Flag{
TraceTypeFlag, TraceTypeFlag,
MaxConcurrencyFlag, MaxConcurrencyFlag,
L2RpcFlag, L2EthRpcFlag,
MaxPendingTransactionsFlag, MaxPendingTransactionsFlag,
HTTPPollInterval, HTTPPollInterval,
AdditionalBondClaimants, AdditionalBondClaimants,
...@@ -288,9 +289,9 @@ func CheckCannonFlags(ctx *cli.Context) error { ...@@ -288,9 +289,9 @@ func CheckCannonFlags(ctx *cli.Context) error {
if !ctx.IsSet(CannonPreStateFlag.Name) && !ctx.IsSet(CannonPreStatesURLFlag.Name) { if !ctx.IsSet(CannonPreStateFlag.Name) && !ctx.IsSet(CannonPreStatesURLFlag.Name) {
return fmt.Errorf("flag %s or %s is required", CannonPreStatesURLFlag.Name, CannonPreStateFlag.Name) return fmt.Errorf("flag %s or %s is required", CannonPreStatesURLFlag.Name, CannonPreStateFlag.Name)
} }
// CannonL2Flag is checked because it is an alias with L2RpcFlag // CannonL2Flag is checked because it is an alias with L2EthRpcFlag
if !ctx.IsSet(CannonL2Flag.Name) && !ctx.IsSet(L2RpcFlag.Name) { if !ctx.IsSet(CannonL2Flag.Name) && !ctx.IsSet(L2EthRpcFlag.Name) {
return fmt.Errorf("flag %s is required", L2RpcFlag.Name) return fmt.Errorf("flag %s is required", L2EthRpcFlag.Name)
} }
return nil return nil
} }
...@@ -315,9 +316,9 @@ func CheckAsteriscFlags(ctx *cli.Context) error { ...@@ -315,9 +316,9 @@ func CheckAsteriscFlags(ctx *cli.Context) error {
if !ctx.IsSet(AsteriscPreStateFlag.Name) { if !ctx.IsSet(AsteriscPreStateFlag.Name) {
return fmt.Errorf("flag %s is required", AsteriscPreStateFlag.Name) return fmt.Errorf("flag %s is required", AsteriscPreStateFlag.Name)
} }
// CannonL2Flag is checked because it is an alias with L2RpcFlag // CannonL2Flag is checked because it is an alias with L2EthRpcFlag
if !ctx.IsSet(CannonL2Flag.Name) && !ctx.IsSet(L2RpcFlag.Name) { if !ctx.IsSet(CannonL2Flag.Name) && !ctx.IsSet(L2EthRpcFlag.Name) {
return fmt.Errorf("flag %s is required", L2RpcFlag.Name) return fmt.Errorf("flag %s is required", L2EthRpcFlag.Name)
} }
return nil return nil
} }
...@@ -360,22 +361,23 @@ func parseTraceTypes(ctx *cli.Context) ([]config.TraceType, error) { ...@@ -360,22 +361,23 @@ func parseTraceTypes(ctx *cli.Context) ([]config.TraceType, error) {
return traceTypes, nil return traceTypes, nil
} }
func getL2Rpc(ctx *cli.Context) (string, error) { func getL2Rpc(ctx *cli.Context, logger log.Logger) (string, error) {
if ctx.IsSet(CannonL2Flag.Name) && ctx.IsSet(L2RpcFlag.Name) { if ctx.IsSet(CannonL2Flag.Name) && ctx.IsSet(L2EthRpcFlag.Name) {
return "", fmt.Errorf("flag %v and %v must not be both set", CannonL2Flag.Name, L2RpcFlag.Name) return "", fmt.Errorf("flag %v and %v must not be both set", CannonL2Flag.Name, L2EthRpcFlag.Name)
} }
l2Rpc := "" l2Rpc := ""
if ctx.IsSet(CannonL2Flag.Name) { if ctx.IsSet(CannonL2Flag.Name) {
logger.Warn(fmt.Sprintf("flag %v is deprecated, please use %v", CannonL2Flag.Name, L2EthRpcFlag.Name))
l2Rpc = ctx.String(CannonL2Flag.Name) l2Rpc = ctx.String(CannonL2Flag.Name)
} }
if ctx.IsSet(L2RpcFlag.Name) { if ctx.IsSet(L2EthRpcFlag.Name) {
l2Rpc = ctx.String(L2RpcFlag.Name) l2Rpc = ctx.String(L2EthRpcFlag.Name)
} }
return l2Rpc, nil return l2Rpc, nil
} }
// NewConfigFromCLI parses the Config from the provided flags or environment variables. // NewConfigFromCLI parses the Config from the provided flags or environment variables.
func NewConfigFromCLI(ctx *cli.Context) (*config.Config, error) { func NewConfigFromCLI(ctx *cli.Context, logger log.Logger) (*config.Config, error) {
traceTypes, err := parseTraceTypes(ctx) traceTypes, err := parseTraceTypes(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -424,7 +426,7 @@ func NewConfigFromCLI(ctx *cli.Context) (*config.Config, error) { ...@@ -424,7 +426,7 @@ func NewConfigFromCLI(ctx *cli.Context) (*config.Config, error) {
} }
cannonPrestatesURL = parsed cannonPrestatesURL = parsed
} }
l2Rpc, err := getL2Rpc(ctx) l2Rpc, err := getL2Rpc(ctx, logger)
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
...@@ -204,7 +204,7 @@ services: ...@@ -204,7 +204,7 @@ services:
OP_CHALLENGER_CANNON_BIN: ./cannon/bin/cannon OP_CHALLENGER_CANNON_BIN: ./cannon/bin/cannon
OP_CHALLENGER_CANNON_SERVER: /op-program/op-program OP_CHALLENGER_CANNON_SERVER: /op-program/op-program
OP_CHALLENGER_CANNON_PRESTATE: /op-program/prestate.json OP_CHALLENGER_CANNON_PRESTATE: /op-program/prestate.json
OP_CHALLENGER_CANNON_L2: http://l2:8545 OP_CHALLENGER_L2_ETH_RPC: http://l2:8545
OP_CHALLENGER_MNEMONIC: test test test test test test test test test test test junk OP_CHALLENGER_MNEMONIC: test test test test test test test test test test test junk
OP_CHALLENGER_HD_PATH: "m/44'/60'/0'/0/4" OP_CHALLENGER_HD_PATH: "m/44'/60'/0'/0/4"
OP_CHALLENGER_NUM_CONFIRMATIONS: 1 OP_CHALLENGER_NUM_CONFIRMATIONS: 1
......
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