Commit 772dbf30 authored by Adrian Sutton's avatar Adrian Sutton

op-challenger: Create game contract when registering type so it can be customised.

parent 888e8c1c
......@@ -11,10 +11,8 @@ import (
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
gameTypes "github.com/ethereum-optimism/optimism/op-challenger/game/types"
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-service/sources/batching"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
)
......@@ -47,14 +45,10 @@ func NewGamePlayer(
dir string,
addr common.Address,
txMgr txmgr.TxManager,
client *ethclient.Client,
loader *contracts.FaultDisputeGameContract,
creator resourceCreator,
) (*GamePlayer, error) {
logger = logger.New("game", addr)
loader, err := contracts.NewFaultDisputeGameContract(addr, batching.NewMultiCaller(client.Client(), batching.DefaultBatchSize))
if err != nil {
return nil, fmt.Errorf("failed to create fault dispute game contract wrapper: %w", err)
}
status, err := loader.GetStatus(ctx)
if err != nil {
......
......@@ -13,6 +13,7 @@ import (
"github.com/ethereum-optimism/optimism/op-challenger/game/scheduler"
"github.com/ethereum-optimism/optimism/op-challenger/game/types"
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-service/sources/batching"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
......@@ -37,6 +38,8 @@ func RegisterGameTypes(
txMgr txmgr.TxManager,
client *ethclient.Client,
) {
multiCaller := batching.NewMultiCaller(client.Client(), batching.DefaultBatchSize)
if cfg.TraceTypeEnabled(config.TraceTypeCannon) {
resourceCreator := func(addr common.Address, contract *contracts.FaultDisputeGameContract, gameDepth uint64, dir string) (faultTypes.TraceAccessor, faultTypes.OracleUpdater, gameValidator, error) {
provider, err := cannon.NewTraceProvider(ctx, logger, m, cfg, contract, dir, gameDepth)
......@@ -53,7 +56,11 @@ func RegisterGameTypes(
return trace.NewSimpleTraceAccessor(provider), updater, validator, nil
}
playerCreator := func(game types.GameMetadata, dir string) (scheduler.GamePlayer, error) {
return NewGamePlayer(ctx, logger, m, cfg, dir, game.Proxy, txMgr, client, resourceCreator)
gameContract, err := contracts.NewFaultDisputeGameContract(game.Proxy, multiCaller)
if err != nil {
return nil, fmt.Errorf("failed to create fault dispute game contract wrapper: %w", err)
}
return NewGamePlayer(ctx, logger, m, cfg, dir, game.Proxy, txMgr, gameContract, resourceCreator)
}
registry.RegisterGameType(cannonGameType, playerCreator)
}
......@@ -67,7 +74,11 @@ func RegisterGameTypes(
return trace.NewSimpleTraceAccessor(provider), updater, validator, nil
}
playerCreator := func(game types.GameMetadata, dir string) (scheduler.GamePlayer, error) {
return NewGamePlayer(ctx, logger, m, cfg, dir, game.Proxy, txMgr, client, resourceCreator)
gameContract, err := contracts.NewFaultDisputeGameContract(game.Proxy, multiCaller)
if err != nil {
return nil, fmt.Errorf("failed to create fault dispute game contract wrapper: %w", err)
}
return NewGamePlayer(ctx, logger, m, cfg, dir, game.Proxy, txMgr, gameContract, resourceCreator)
}
registry.RegisterGameType(alphabetGameType, playerCreator)
}
......
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