Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
de51656e
Unverified
Commit
de51656e
authored
Nov 24, 2023
by
Adrian Sutton
Committed by
GitHub
Nov 24, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8255 from ethereum-optimism/aj/single-l2-client
op-challenger: Use single L2 client instance
parents
9f79d879
68000ca3
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
59 additions
and
65 deletions
+59
-65
register.go
op-challenger/game/fault/register.go
+24
-8
local.go
op-challenger/game/fault/trace/cannon/local.go
+4
-5
local_test.go
op-challenger/game/fault/trace/cannon/local_test.go
+4
-4
provider.go
op-challenger/game/fault/trace/cannon/provider.go
+1
-40
output_cannon.go
op-challenger/game/fault/trace/outputs/output_cannon.go
+4
-2
service.go
op-challenger/game/service.go
+15
-3
cannon_helper.go
op-e2e/e2eutils/disputegame/cannon_helper.go
+6
-2
helper.go
op-e2e/e2eutils/disputegame/helper.go
+1
-1
No files found.
op-challenger/game/fault/register.go
View file @
de51656e
...
@@ -26,6 +26,8 @@ var (
...
@@ -26,6 +26,8 @@ var (
alphabetGameType
=
uint8
(
255
)
alphabetGameType
=
uint8
(
255
)
)
)
type
CloseFunc
func
()
type
Registry
interface
{
type
Registry
interface
{
RegisterGameType
(
gameType
uint8
,
creator
scheduler
.
PlayerCreator
)
RegisterGameType
(
gameType
uint8
,
creator
scheduler
.
PlayerCreator
)
}
}
...
@@ -38,16 +40,27 @@ func RegisterGameTypes(
...
@@ -38,16 +40,27 @@ func RegisterGameTypes(
cfg
*
config
.
Config
,
cfg
*
config
.
Config
,
txMgr
txmgr
.
TxManager
,
txMgr
txmgr
.
TxManager
,
client
*
ethclient
.
Client
,
client
*
ethclient
.
Client
,
)
{
)
(
CloseFunc
,
error
)
{
var
closer
CloseFunc
var
l2Client
*
ethclient
.
Client
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeCannon
)
||
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeOutputCannon
)
{
l2
,
err
:=
ethclient
.
DialContext
(
ctx
,
cfg
.
CannonL2
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"dial l2 client %v: %w"
,
cfg
.
CannonL2
,
err
)
}
l2Client
=
l2
closer
=
l2Client
.
Close
}
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeOutputCannon
)
{
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeOutputCannon
)
{
registerOutputCannon
(
registry
,
ctx
,
logger
,
m
,
cfg
,
txMgr
,
client
)
registerOutputCannon
(
registry
,
ctx
,
logger
,
m
,
cfg
,
txMgr
,
client
,
l2Client
)
}
}
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeCannon
)
{
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeCannon
)
{
registerCannon
(
registry
,
ctx
,
logger
,
m
,
cfg
,
txMgr
,
client
)
registerCannon
(
registry
,
ctx
,
logger
,
m
,
cfg
,
txMgr
,
client
,
l2Client
)
}
}
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeAlphabet
)
{
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeAlphabet
)
{
registerAlphabet
(
registry
,
ctx
,
logger
,
m
,
cfg
,
txMgr
,
client
)
registerAlphabet
(
registry
,
ctx
,
logger
,
m
,
cfg
,
txMgr
,
client
)
}
}
return
closer
,
nil
}
}
func
registerOutputCannon
(
func
registerOutputCannon
(
...
@@ -57,7 +70,8 @@ func registerOutputCannon(
...
@@ -57,7 +70,8 @@ func registerOutputCannon(
m
metrics
.
Metricer
,
m
metrics
.
Metricer
,
cfg
*
config
.
Config
,
cfg
*
config
.
Config
,
txMgr
txmgr
.
TxManager
,
txMgr
txmgr
.
TxManager
,
client
*
ethclient
.
Client
)
{
client
*
ethclient
.
Client
,
l2Client
cannon
.
L2HeaderSource
)
{
resourceCreator
:=
func
(
addr
common
.
Address
,
contract
*
contracts
.
FaultDisputeGameContract
,
gameDepth
uint64
,
dir
string
)
(
faultTypes
.
TraceAccessor
,
gameValidator
,
error
)
{
resourceCreator
:=
func
(
addr
common
.
Address
,
contract
*
contracts
.
FaultDisputeGameContract
,
gameDepth
uint64
,
dir
string
)
(
faultTypes
.
TraceAccessor
,
gameValidator
,
error
)
{
logger
:=
logger
.
New
(
"game"
,
addr
)
logger
:=
logger
.
New
(
"game"
,
addr
)
// TODO(client-pod#43): Updated contracts should expose this as the pre and post state blocks
// TODO(client-pod#43): Updated contracts should expose this as the pre and post state blocks
...
@@ -65,7 +79,7 @@ func registerOutputCannon(
...
@@ -65,7 +79,7 @@ func registerOutputCannon(
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
err
return
nil
,
nil
,
err
}
}
accessor
,
err
:=
outputs
.
NewOutputCannonTraceAccessor
(
ctx
,
logger
,
m
,
cfg
,
contract
,
dir
,
gameDepth
,
agreed
.
L2BlockNumber
.
Uint64
(),
disputed
.
L2BlockNumber
.
Uint64
())
accessor
,
err
:=
outputs
.
NewOutputCannonTraceAccessor
(
ctx
,
logger
,
m
,
cfg
,
l2Client
,
contract
,
dir
,
gameDepth
,
agreed
.
L2BlockNumber
.
Uint64
(),
disputed
.
L2BlockNumber
.
Uint64
())
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
err
return
nil
,
nil
,
err
}
}
...
@@ -88,13 +102,15 @@ func registerCannon(
...
@@ -88,13 +102,15 @@ func registerCannon(
m
metrics
.
Metricer
,
m
metrics
.
Metricer
,
cfg
*
config
.
Config
,
cfg
*
config
.
Config
,
txMgr
txmgr
.
TxManager
,
txMgr
txmgr
.
TxManager
,
client
*
ethclient
.
Client
)
{
client
*
ethclient
.
Client
,
l2Client
cannon
.
L2HeaderSource
)
{
resourceCreator
:=
func
(
addr
common
.
Address
,
contract
*
contracts
.
FaultDisputeGameContract
,
gameDepth
uint64
,
dir
string
)
(
faultTypes
.
TraceAccessor
,
gameValidator
,
error
)
{
resourceCreator
:=
func
(
addr
common
.
Address
,
contract
*
contracts
.
FaultDisputeGameContract
,
gameDepth
uint64
,
dir
string
)
(
faultTypes
.
TraceAccessor
,
gameValidator
,
error
)
{
logger
:=
logger
.
New
(
"game"
,
addr
)
logger
:=
logger
.
New
(
"game"
,
addr
)
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
m
,
cfg
,
contract
,
faultTypes
.
NoLocalContext
,
dir
,
gameDepth
)
localInputs
,
err
:=
cannon
.
FetchLocalInputs
(
ctx
,
contract
,
l2Client
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"
create cannon trace provider
: %w"
,
err
)
return
nil
,
nil
,
fmt
.
Errorf
(
"
failed to fetch cannon local inputs
: %w"
,
err
)
}
}
provider
:=
cannon
.
NewTraceProvider
(
logger
,
m
,
cfg
,
faultTypes
.
NoLocalContext
,
localInputs
,
dir
,
gameDepth
)
validator
:=
func
(
ctx
context
.
Context
,
contract
*
contracts
.
FaultDisputeGameContract
)
error
{
validator
:=
func
(
ctx
context
.
Context
,
contract
*
contracts
.
FaultDisputeGameContract
)
error
{
return
ValidateAbsolutePrestate
(
ctx
,
provider
,
contract
)
return
ValidateAbsolutePrestate
(
ctx
,
provider
,
contract
)
}
}
...
...
op-challenger/game/fault/trace/cannon/local.go
View file @
de51656e
...
@@ -18,8 +18,7 @@ type LocalGameInputs struct {
...
@@ -18,8 +18,7 @@ type LocalGameInputs struct {
L2BlockNumber
*
big
.
Int
L2BlockNumber
*
big
.
Int
}
}
type
L2DataSource
interface
{
type
L2HeaderSource
interface
{
ChainID
(
context
.
Context
)
(
*
big
.
Int
,
error
)
HeaderByNumber
(
context
.
Context
,
*
big
.
Int
)
(
*
ethtypes
.
Header
,
error
)
HeaderByNumber
(
context
.
Context
,
*
big
.
Int
)
(
*
ethtypes
.
Header
,
error
)
}
}
...
@@ -32,15 +31,15 @@ type GameInputsSource interface {
...
@@ -32,15 +31,15 @@ type GameInputsSource interface {
GetProposals
(
ctx
context
.
Context
)
(
agreed
contracts
.
Proposal
,
disputed
contracts
.
Proposal
,
err
error
)
GetProposals
(
ctx
context
.
Context
)
(
agreed
contracts
.
Proposal
,
disputed
contracts
.
Proposal
,
err
error
)
}
}
func
fetchLocalInputs
(
ctx
context
.
Context
,
caller
GameInputsSource
,
l2Client
L2Data
Source
)
(
LocalGameInputs
,
error
)
{
func
FetchLocalInputs
(
ctx
context
.
Context
,
caller
GameInputsSource
,
l2Client
L2Header
Source
)
(
LocalGameInputs
,
error
)
{
agreedOutput
,
claimedOutput
,
err
:=
caller
.
GetProposals
(
ctx
)
agreedOutput
,
claimedOutput
,
err
:=
caller
.
GetProposals
(
ctx
)
if
err
!=
nil
{
if
err
!=
nil
{
return
LocalGameInputs
{},
fmt
.
Errorf
(
"fetch proposals: %w"
,
err
)
return
LocalGameInputs
{},
fmt
.
Errorf
(
"fetch proposals: %w"
,
err
)
}
}
return
f
etchLocalInputsFromProposals
(
ctx
,
caller
,
l2Client
,
agreedOutput
,
claimedOutput
)
return
F
etchLocalInputsFromProposals
(
ctx
,
caller
,
l2Client
,
agreedOutput
,
claimedOutput
)
}
}
func
fetchLocalInputsFromProposals
(
ctx
context
.
Context
,
caller
L1HeadSource
,
l2Client
L2Data
Source
,
agreedOutput
contracts
.
Proposal
,
claimedOutput
contracts
.
Proposal
)
(
LocalGameInputs
,
error
)
{
func
FetchLocalInputsFromProposals
(
ctx
context
.
Context
,
caller
L1HeadSource
,
l2Client
L2Header
Source
,
agreedOutput
contracts
.
Proposal
,
claimedOutput
contracts
.
Proposal
)
(
LocalGameInputs
,
error
)
{
l1Head
,
err
:=
caller
.
GetL1Head
(
ctx
)
l1Head
,
err
:=
caller
.
GetL1Head
(
ctx
)
if
err
!=
nil
{
if
err
!=
nil
{
return
LocalGameInputs
{},
fmt
.
Errorf
(
"fetch L1 head: %w"
,
err
)
return
LocalGameInputs
{},
fmt
.
Errorf
(
"fetch L1 head: %w"
,
err
)
...
...
op-challenger/game/fault/trace/cannon/local_test.go
View file @
de51656e
...
@@ -32,7 +32,7 @@ func TestFetchLocalInputs(t *testing.T) {
...
@@ -32,7 +32,7 @@ func TestFetchLocalInputs(t *testing.T) {
},
},
}
}
inputs
,
err
:=
f
etchLocalInputs
(
ctx
,
contract
,
l2Client
)
inputs
,
err
:=
F
etchLocalInputs
(
ctx
,
contract
,
l2Client
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
contract
.
l1Head
,
inputs
.
L1Head
)
require
.
Equal
(
t
,
contract
.
l1Head
,
inputs
.
L1Head
)
...
@@ -62,7 +62,7 @@ func TestFetchLocalInputsFromProposals(t *testing.T) {
...
@@ -62,7 +62,7 @@ func TestFetchLocalInputsFromProposals(t *testing.T) {
},
},
}
}
inputs
,
err
:=
f
etchLocalInputsFromProposals
(
ctx
,
contract
,
l2Client
,
agreed
,
claimed
)
inputs
,
err
:=
F
etchLocalInputsFromProposals
(
ctx
,
contract
,
l2Client
,
agreed
,
claimed
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
contract
.
l1Head
,
inputs
.
L1Head
)
require
.
Equal
(
t
,
contract
.
l1Head
,
inputs
.
L1Head
)
...
@@ -91,11 +91,11 @@ type mockL2DataSource struct {
...
@@ -91,11 +91,11 @@ type mockL2DataSource struct {
header
ethtypes
.
Header
header
ethtypes
.
Header
}
}
func
(
s
*
mockL2DataSource
)
ChainID
(
ctx
context
.
Context
)
(
*
big
.
Int
,
error
)
{
func
(
s
*
mockL2DataSource
)
ChainID
(
_
context
.
Context
)
(
*
big
.
Int
,
error
)
{
return
s
.
chainID
,
nil
return
s
.
chainID
,
nil
}
}
func
(
s
*
mockL2DataSource
)
HeaderByNumber
(
ctx
context
.
Context
,
num
*
big
.
Int
)
(
*
ethtypes
.
Header
,
error
)
{
func
(
s
*
mockL2DataSource
)
HeaderByNumber
(
_
context
.
Context
,
num
*
big
.
Int
)
(
*
ethtypes
.
Header
,
error
)
{
if
s
.
header
.
Number
.
Cmp
(
num
)
==
0
{
if
s
.
header
.
Number
.
Cmp
(
num
)
==
0
{
return
&
s
.
header
,
nil
return
&
s
.
header
,
nil
}
}
...
...
op-challenger/game/fault/trace/cannon/provider.go
View file @
de51656e
...
@@ -9,12 +9,10 @@ import (
...
@@ -9,12 +9,10 @@ import (
"path/filepath"
"path/filepath"
"github.com/ethereum-optimism/optimism/op-challenger/config"
"github.com/ethereum-optimism/optimism/op-challenger/config"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/contracts"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/ethereum-optimism/optimism/op-service/ioutil"
"github.com/ethereum-optimism/optimism/op-service/ioutil"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/cannon/mipsevm"
"github.com/ethereum-optimism/optimism/cannon/mipsevm"
...
@@ -56,44 +54,7 @@ type CannonTraceProvider struct {
...
@@ -56,44 +54,7 @@ type CannonTraceProvider struct {
lastStep
uint64
lastStep
uint64
}
}
func
NewTraceProvider
(
ctx
context
.
Context
,
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
gameContract
*
contracts
.
FaultDisputeGameContract
,
localContext
common
.
Hash
,
dir
string
,
gameDepth
uint64
)
(
*
CannonTraceProvider
,
error
)
{
func
NewTraceProvider
(
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
localContext
common
.
Hash
,
localInputs
LocalGameInputs
,
dir
string
,
gameDepth
uint64
)
*
CannonTraceProvider
{
l2Client
,
err
:=
ethclient
.
DialContext
(
ctx
,
cfg
.
CannonL2
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"dial l2 client %v: %w"
,
cfg
.
CannonL2
,
err
)
}
defer
l2Client
.
Close
()
// Not needed after fetching the inputs
localInputs
,
err
:=
fetchLocalInputs
(
ctx
,
gameContract
,
l2Client
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"fetch local game inputs: %w"
,
err
)
}
return
NewTraceProviderFromInputs
(
logger
,
m
,
cfg
,
localContext
,
localInputs
,
dir
,
gameDepth
),
nil
}
func
NewTraceProviderFromProposals
(
ctx
context
.
Context
,
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
gameContract
*
contracts
.
FaultDisputeGameContract
,
localContext
common
.
Hash
,
agreed
contracts
.
Proposal
,
claimed
contracts
.
Proposal
,
dir
string
,
gameDepth
uint64
,
)
(
*
CannonTraceProvider
,
error
)
{
l2Client
,
err
:=
ethclient
.
DialContext
(
ctx
,
cfg
.
CannonL2
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"dial l2 client %v: %w"
,
cfg
.
CannonL2
,
err
)
}
defer
l2Client
.
Close
()
// Not needed after fetching the inputs
localInputs
,
err
:=
fetchLocalInputsFromProposals
(
ctx
,
gameContract
,
l2Client
,
agreed
,
claimed
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"fetch local game inputs: %w"
,
err
)
}
return
NewTraceProviderFromInputs
(
logger
,
m
,
cfg
,
localContext
,
localInputs
,
dir
,
gameDepth
),
nil
}
func
NewTraceProviderFromInputs
(
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
localContext
common
.
Hash
,
localInputs
LocalGameInputs
,
dir
string
,
gameDepth
uint64
)
*
CannonTraceProvider
{
return
&
CannonTraceProvider
{
return
&
CannonTraceProvider
{
logger
:
logger
,
logger
:
logger
,
dir
:
dir
,
dir
:
dir
,
...
...
op-challenger/game/fault/trace/outputs/output_cannon.go
View file @
de51656e
...
@@ -21,6 +21,7 @@ func NewOutputCannonTraceAccessor(
...
@@ -21,6 +21,7 @@ func NewOutputCannonTraceAccessor(
logger
log
.
Logger
,
logger
log
.
Logger
,
m
metrics
.
Metricer
,
m
metrics
.
Metricer
,
cfg
*
config
.
Config
,
cfg
*
config
.
Config
,
l2Client
cannon
.
L2HeaderSource
,
contract
*
contracts
.
FaultDisputeGameContract
,
contract
*
contracts
.
FaultDisputeGameContract
,
dir
string
,
dir
string
,
gameDepth
uint64
,
gameDepth
uint64
,
...
@@ -38,10 +39,11 @@ func NewOutputCannonTraceAccessor(
...
@@ -38,10 +39,11 @@ func NewOutputCannonTraceAccessor(
cannonCreator
:=
func
(
ctx
context
.
Context
,
localContext
common
.
Hash
,
agreed
contracts
.
Proposal
,
claimed
contracts
.
Proposal
)
(
types
.
TraceProvider
,
error
)
{
cannonCreator
:=
func
(
ctx
context
.
Context
,
localContext
common
.
Hash
,
agreed
contracts
.
Proposal
,
claimed
contracts
.
Proposal
)
(
types
.
TraceProvider
,
error
)
{
logger
:=
logger
.
New
(
"pre"
,
agreed
.
OutputRoot
,
"post"
,
claimed
.
OutputRoot
,
"localContext"
,
localContext
)
logger
:=
logger
.
New
(
"pre"
,
agreed
.
OutputRoot
,
"post"
,
claimed
.
OutputRoot
,
"localContext"
,
localContext
)
subdir
:=
filepath
.
Join
(
dir
,
localContext
.
Hex
())
subdir
:=
filepath
.
Join
(
dir
,
localContext
.
Hex
())
provider
,
err
:=
cannon
.
NewTraceProviderFromProposals
(
ctx
,
logger
,
m
,
cfg
,
contract
,
localContext
,
agreed
,
claimed
,
subdir
,
bottomDepth
)
localInputs
,
err
:=
cannon
.
FetchLocalInputsFromProposals
(
ctx
,
contract
,
l2Client
,
agreed
,
claimed
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to
create cannon trace provider
: %w"
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to
fetch cannon local inputs
: %w"
,
err
)
}
}
provider
:=
cannon
.
NewTraceProvider
(
logger
,
m
,
cfg
,
localContext
,
localInputs
,
subdir
,
bottomDepth
)
return
provider
,
nil
return
provider
,
nil
}
}
...
...
op-challenger/game/service.go
View file @
de51656e
...
@@ -34,6 +34,8 @@ type Service struct {
...
@@ -34,6 +34,8 @@ type Service struct {
monitor
*
gameMonitor
monitor
*
gameMonitor
sched
*
scheduler
.
Scheduler
sched
*
scheduler
.
Scheduler
faultGamesCloser
fault
.
CloseFunc
txMgr
*
txmgr
.
SimpleTxManager
txMgr
*
txmgr
.
SimpleTxManager
loader
*
loader
.
GameLoader
loader
*
loader
.
GameLoader
...
@@ -83,8 +85,10 @@ func (s *Service) initFromConfig(ctx context.Context, cfg *config.Config) error
...
@@ -83,8 +85,10 @@ func (s *Service) initFromConfig(ctx context.Context, cfg *config.Config) error
if
err
:=
s
.
initGameLoader
(
cfg
);
err
!=
nil
{
if
err
:=
s
.
initGameLoader
(
cfg
);
err
!=
nil
{
return
err
return
err
}
}
if
err
:=
s
.
initScheduler
(
ctx
,
cfg
);
err
!=
nil
{
return
err
}
s
.
initScheduler
(
ctx
,
cfg
)
s
.
initMonitor
(
cfg
)
s
.
initMonitor
(
cfg
)
s
.
metrics
.
RecordInfo
(
version
.
SimpleWithMeta
)
s
.
metrics
.
RecordInfo
(
version
.
SimpleWithMeta
)
...
@@ -162,12 +166,17 @@ func (s *Service) initGameLoader(cfg *config.Config) error {
...
@@ -162,12 +166,17 @@ func (s *Service) initGameLoader(cfg *config.Config) error {
return
nil
return
nil
}
}
func
(
s
*
Service
)
initScheduler
(
ctx
context
.
Context
,
cfg
*
config
.
Config
)
{
func
(
s
*
Service
)
initScheduler
(
ctx
context
.
Context
,
cfg
*
config
.
Config
)
error
{
gameTypeRegistry
:=
registry
.
NewGameTypeRegistry
()
gameTypeRegistry
:=
registry
.
NewGameTypeRegistry
()
fault
.
RegisterGameTypes
(
gameTypeRegistry
,
ctx
,
s
.
logger
,
s
.
metrics
,
cfg
,
s
.
txMgr
,
s
.
l1Client
)
closer
,
err
:=
fault
.
RegisterGameTypes
(
gameTypeRegistry
,
ctx
,
s
.
logger
,
s
.
metrics
,
cfg
,
s
.
txMgr
,
s
.
l1Client
)
if
err
!=
nil
{
return
err
}
s
.
faultGamesCloser
=
closer
disk
:=
newDiskManager
(
cfg
.
Datadir
)
disk
:=
newDiskManager
(
cfg
.
Datadir
)
s
.
sched
=
scheduler
.
NewScheduler
(
s
.
logger
,
s
.
metrics
,
disk
,
cfg
.
MaxConcurrency
,
gameTypeRegistry
.
CreatePlayer
)
s
.
sched
=
scheduler
.
NewScheduler
(
s
.
logger
,
s
.
metrics
,
disk
,
cfg
.
MaxConcurrency
,
gameTypeRegistry
.
CreatePlayer
)
return
nil
}
}
func
(
s
*
Service
)
initMonitor
(
cfg
*
config
.
Config
)
{
func
(
s
*
Service
)
initMonitor
(
cfg
*
config
.
Config
)
{
...
@@ -200,6 +209,9 @@ func (s *Service) Stop(ctx context.Context) error {
...
@@ -200,6 +209,9 @@ func (s *Service) Stop(ctx context.Context) error {
if
s
.
monitor
!=
nil
{
if
s
.
monitor
!=
nil
{
s
.
monitor
.
StopMonitoring
()
s
.
monitor
.
StopMonitoring
()
}
}
if
s
.
faultGamesCloser
!=
nil
{
s
.
faultGamesCloser
()
}
if
s
.
pprofSrv
!=
nil
{
if
s
.
pprofSrv
!=
nil
{
if
err
:=
s
.
pprofSrv
.
Stop
(
ctx
);
err
!=
nil
{
if
err
:=
s
.
pprofSrv
.
Stop
(
ctx
);
err
!=
nil
{
result
=
errors
.
Join
(
result
,
fmt
.
Errorf
(
"failed to close pprof server: %w"
,
err
))
result
=
errors
.
Join
(
result
,
fmt
.
Errorf
(
"failed to close pprof server: %w"
,
err
))
...
...
op-e2e/e2eutils/disputegame/cannon_helper.go
View file @
de51656e
...
@@ -47,8 +47,12 @@ func (g *CannonGameHelper) CreateHonestActor(ctx context.Context, rollupCfg *rol
...
@@ -47,8 +47,12 @@ func (g *CannonGameHelper) CreateHonestActor(ctx context.Context, rollupCfg *rol
maxDepth
:=
g
.
MaxDepth
(
ctx
)
maxDepth
:=
g
.
MaxDepth
(
ctx
)
gameContract
,
err
:=
contracts
.
NewFaultDisputeGameContract
(
g
.
addr
,
batching
.
NewMultiCaller
(
l1Client
.
Client
(),
batching
.
DefaultBatchSize
))
gameContract
,
err
:=
contracts
.
NewFaultDisputeGameContract
(
g
.
addr
,
batching
.
NewMultiCaller
(
l1Client
.
Client
(),
batching
.
DefaultBatchSize
))
g
.
require
.
NoError
(
err
,
"Create game contract bindings"
)
g
.
require
.
NoError
(
err
,
"Create game contract bindings"
)
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
metrics
.
NoopMetrics
,
cfg
,
gameContract
,
types
.
NoLocalContext
,
filepath
.
Join
(
cfg
.
Datadir
,
"honest"
),
uint64
(
maxDepth
))
l2Client
,
err
:=
ethclient
.
DialContext
(
ctx
,
cfg
.
CannonL2
)
g
.
require
.
NoError
(
err
,
"create cannon trace provider"
)
g
.
require
.
NoErrorf
(
err
,
"dial l2 client %v"
,
cfg
.
CannonL2
)
defer
l2Client
.
Close
()
// Not needed after fetching the inputs
localInputs
,
err
:=
cannon
.
FetchLocalInputs
(
ctx
,
gameContract
,
l2Client
)
g
.
require
.
NoError
(
err
,
"fetch cannon local inputs"
)
provider
:=
cannon
.
NewTraceProvider
(
logger
,
metrics
.
NoopMetrics
,
cfg
,
types
.
NoLocalContext
,
localInputs
,
filepath
.
Join
(
cfg
.
Datadir
,
"honest"
),
uint64
(
maxDepth
))
return
&
HonestHelper
{
return
&
HonestHelper
{
t
:
g
.
t
,
t
:
g
.
t
,
...
...
op-e2e/e2eutils/disputegame/helper.go
View file @
de51656e
...
@@ -221,7 +221,7 @@ func (h *FactoryHelper) StartCannonGameWithCorrectRoot(ctx context.Context, roll
...
@@ -221,7 +221,7 @@ func (h *FactoryHelper) StartCannonGameWithCorrectRoot(ctx context.Context, roll
maxDepth
,
err
:=
gameImpl
.
MAXGAMEDEPTH
(
opts
)
maxDepth
,
err
:=
gameImpl
.
MAXGAMEDEPTH
(
opts
)
h
.
require
.
NoError
(
err
,
"fetch max game depth"
)
h
.
require
.
NoError
(
err
,
"fetch max game depth"
)
provider
:=
cannon
.
NewTraceProvider
FromInputs
(
provider
:=
cannon
.
NewTraceProvider
(
testlog
.
Logger
(
h
.
t
,
log
.
LvlInfo
)
.
New
(
"role"
,
"CorrectTrace"
),
testlog
.
Logger
(
h
.
t
,
log
.
LvlInfo
)
.
New
(
"role"
,
"CorrectTrace"
),
metrics
.
NoopMetrics
,
metrics
.
NoopMetrics
,
cfg
,
cfg
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment