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
f2bac44c
Unverified
Commit
f2bac44c
authored
Nov 16, 2023
by
Adrian Sutton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
op-challenger: Pass local context into cannon provider
Allows it to be customised by the split output trace provider.
parent
78bd8690
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
17 deletions
+23
-17
register.go
op-challenger/game/fault/register.go
+1
-1
provider.go
op-challenger/game/fault/trace/cannon/provider.go
+20
-15
cannon_helper.go
op-e2e/e2eutils/disputegame/cannon_helper.go
+1
-1
helper.go
op-e2e/e2eutils/disputegame/helper.go
+1
-0
No files found.
op-challenger/game/fault/register.go
View file @
f2bac44c
...
...
@@ -41,7 +41,7 @@ func RegisterGameTypes(
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeCannon
)
{
resourceCreator
:=
func
(
addr
common
.
Address
,
contract
*
contracts
.
FaultDisputeGameContract
,
gameDepth
uint64
,
dir
string
)
(
faultTypes
.
TraceAccessor
,
gameValidator
,
error
)
{
logger
:=
logger
.
New
(
"game"
,
addr
)
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
m
,
cfg
,
contract
,
dir
,
gameDepth
)
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
m
,
cfg
,
contract
,
cannon
.
NoLocalContext
,
dir
,
gameDepth
)
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"create cannon trace provider: %w"
,
err
)
}
...
...
op-challenger/game/fault/trace/cannon/provider.go
View file @
f2bac44c
...
...
@@ -23,6 +23,10 @@ import (
const
(
proofsDir
=
"proofs"
diskStateCache
=
"state.json.gz"
// NoLocalContext is the LocalContext value used when the cannon trace provider is used alone instead of as part
// of a split game.
NoLocalContext
=
0
)
type
proofData
struct
{
...
...
@@ -49,13 +53,14 @@ type CannonTraceProvider struct {
prestate
string
generator
ProofGenerator
gameDepth
uint64
localContext
uint64
// lastStep stores the last step in the actual trace if known. 0 indicates unknown.
// Cached as an optimisation to avoid repeatedly attempting to execute beyond the end of the trace.
lastStep
uint64
}
func
NewTraceProvider
(
ctx
context
.
Context
,
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
gameContract
*
contracts
.
FaultDisputeGameContract
,
dir
string
,
gameDepth
uint64
)
(
*
CannonTraceProvider
,
error
)
{
func
NewTraceProvider
(
ctx
context
.
Context
,
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
gameContract
*
contracts
.
FaultDisputeGameContract
,
localContext
uint64
,
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
)
...
...
@@ -65,16 +70,17 @@ func NewTraceProvider(ctx context.Context, logger log.Logger, m CannonMetricer,
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"fetch local game inputs: %w"
,
err
)
}
return
NewTraceProviderFromInputs
(
logger
,
m
,
cfg
,
localInputs
,
dir
,
gameDepth
),
nil
return
NewTraceProviderFromInputs
(
logger
,
m
,
cfg
,
local
Context
,
local
Inputs
,
dir
,
gameDepth
),
nil
}
func
NewTraceProviderFromInputs
(
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
localInputs
LocalGameInputs
,
dir
string
,
gameDepth
uint64
)
*
CannonTraceProvider
{
func
NewTraceProviderFromInputs
(
logger
log
.
Logger
,
m
CannonMetricer
,
cfg
*
config
.
Config
,
local
Context
uint64
,
local
Inputs
LocalGameInputs
,
dir
string
,
gameDepth
uint64
)
*
CannonTraceProvider
{
return
&
CannonTraceProvider
{
logger
:
logger
,
dir
:
dir
,
prestate
:
cfg
.
CannonAbsolutePreState
,
generator
:
NewExecutor
(
logger
,
m
,
cfg
,
localInputs
),
gameDepth
:
gameDepth
,
localContext
:
localContext
,
}
}
...
...
@@ -118,8 +124,7 @@ func (p *CannonTraceProvider) GetStepData(ctx context.Context, pos types.Positio
}
var
oracleData
*
types
.
PreimageOracleData
if
len
(
proof
.
OracleKey
)
>
0
{
// TODO(client-pod#104): Replace the LocalContext `0` argument below with the correct local context.
oracleData
=
types
.
NewPreimageOracleData
(
0
,
proof
.
OracleKey
,
proof
.
OracleValue
,
proof
.
OracleOffset
)
oracleData
=
types
.
NewPreimageOracleData
(
p
.
localContext
,
proof
.
OracleKey
,
proof
.
OracleValue
,
proof
.
OracleOffset
)
}
return
value
,
data
,
oracleData
,
nil
}
...
...
op-e2e/e2eutils/disputegame/cannon_helper.go
View file @
f2bac44c
...
...
@@ -46,7 +46,7 @@ func (g *CannonGameHelper) CreateHonestActor(ctx context.Context, rollupCfg *rol
maxDepth
:=
g
.
MaxDepth
(
ctx
)
gameContract
,
err
:=
contracts
.
NewFaultDisputeGameContract
(
g
.
addr
,
batching
.
NewMultiCaller
(
l1Client
.
Client
(),
batching
.
DefaultBatchSize
))
g
.
require
.
NoError
(
err
,
"Create game contract bindings"
)
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
metrics
.
NoopMetrics
,
cfg
,
gameContract
,
filepath
.
Join
(
cfg
.
Datadir
,
"honest"
),
uint64
(
maxDepth
))
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
metrics
.
NoopMetrics
,
cfg
,
gameContract
,
cannon
.
NoLocalContext
,
filepath
.
Join
(
cfg
.
Datadir
,
"honest"
),
uint64
(
maxDepth
))
g
.
require
.
NoError
(
err
,
"create cannon trace provider"
)
return
&
HonestHelper
{
...
...
op-e2e/e2eutils/disputegame/helper.go
View file @
f2bac44c
...
...
@@ -191,6 +191,7 @@ func (h *FactoryHelper) StartCannonGameWithCorrectRoot(ctx context.Context, roll
testlog
.
Logger
(
h
.
t
,
log
.
LvlInfo
)
.
New
(
"role"
,
"CorrectTrace"
),
metrics
.
NoopMetrics
,
cfg
,
cannon
.
NoLocalContext
,
inputs
,
cfg
.
Datadir
,
maxDepth
.
Uint64
(),
...
...
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