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
c7f6938e
Unverified
Commit
c7f6938e
authored
Nov 16, 2023
by
Adrian Sutton
Committed by
GitHub
Nov 16, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8188 from ethereum-optimism/aj/cannon-local-context
op-challenger: Pass local context into cannon provider
parents
ddf719ea
f2bac44c
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 @
c7f6938e
...
@@ -41,7 +41,7 @@ func RegisterGameTypes(
...
@@ -41,7 +41,7 @@ func RegisterGameTypes(
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeCannon
)
{
if
cfg
.
TraceTypeEnabled
(
config
.
TraceTypeCannon
)
{
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
,
dir
,
gameDepth
)
provider
,
err
:=
cannon
.
NewTraceProvider
(
ctx
,
logger
,
m
,
cfg
,
contract
,
cannon
.
NoLocalContext
,
dir
,
gameDepth
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"create cannon trace provider: %w"
,
err
)
return
nil
,
nil
,
fmt
.
Errorf
(
"create cannon trace provider: %w"
,
err
)
}
}
...
...
op-challenger/game/fault/trace/cannon/provider.go
View file @
c7f6938e
...
@@ -23,6 +23,10 @@ import (
...
@@ -23,6 +23,10 @@ import (
const
(
const
(
proofsDir
=
"proofs"
proofsDir
=
"proofs"
diskStateCache
=
"state.json.gz"
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
{
type
proofData
struct
{
...
@@ -49,13 +53,14 @@ type CannonTraceProvider struct {
...
@@ -49,13 +53,14 @@ type CannonTraceProvider struct {
prestate
string
prestate
string
generator
ProofGenerator
generator
ProofGenerator
gameDepth
uint64
gameDepth
uint64
localContext
uint64
// lastStep stores the last step in the actual trace if known. 0 indicates unknown.
// 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.
// Cached as an optimisation to avoid repeatedly attempting to execute beyond the end of the trace.
lastStep
uint64
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
)
l2Client
,
err
:=
ethclient
.
DialContext
(
ctx
,
cfg
.
CannonL2
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"dial l2 client %v: %w"
,
cfg
.
CannonL2
,
err
)
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,
...
@@ -65,16 +70,17 @@ func NewTraceProvider(ctx context.Context, logger log.Logger, m CannonMetricer,
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"fetch local game inputs: %w"
,
err
)
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
{
return
&
CannonTraceProvider
{
logger
:
logger
,
logger
:
logger
,
dir
:
dir
,
dir
:
dir
,
prestate
:
cfg
.
CannonAbsolutePreState
,
prestate
:
cfg
.
CannonAbsolutePreState
,
generator
:
NewExecutor
(
logger
,
m
,
cfg
,
localInputs
),
generator
:
NewExecutor
(
logger
,
m
,
cfg
,
localInputs
),
gameDepth
:
gameDepth
,
gameDepth
:
gameDepth
,
localContext
:
localContext
,
}
}
}
}
...
@@ -118,8 +124,7 @@ func (p *CannonTraceProvider) GetStepData(ctx context.Context, pos types.Positio
...
@@ -118,8 +124,7 @@ func (p *CannonTraceProvider) GetStepData(ctx context.Context, pos types.Positio
}
}
var
oracleData
*
types
.
PreimageOracleData
var
oracleData
*
types
.
PreimageOracleData
if
len
(
proof
.
OracleKey
)
>
0
{
if
len
(
proof
.
OracleKey
)
>
0
{
// TODO(client-pod#104): Replace the LocalContext `0` argument below with the correct local context.
oracleData
=
types
.
NewPreimageOracleData
(
p
.
localContext
,
proof
.
OracleKey
,
proof
.
OracleValue
,
proof
.
OracleOffset
)
oracleData
=
types
.
NewPreimageOracleData
(
0
,
proof
.
OracleKey
,
proof
.
OracleValue
,
proof
.
OracleOffset
)
}
}
return
value
,
data
,
oracleData
,
nil
return
value
,
data
,
oracleData
,
nil
}
}
...
...
op-e2e/e2eutils/disputegame/cannon_helper.go
View file @
c7f6938e
...
@@ -46,7 +46,7 @@ func (g *CannonGameHelper) CreateHonestActor(ctx context.Context, rollupCfg *rol
...
@@ -46,7 +46,7 @@ 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
,
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"
)
g
.
require
.
NoError
(
err
,
"create cannon trace provider"
)
return
&
HonestHelper
{
return
&
HonestHelper
{
...
...
op-e2e/e2eutils/disputegame/helper.go
View file @
c7f6938e
...
@@ -191,6 +191,7 @@ func (h *FactoryHelper) StartCannonGameWithCorrectRoot(ctx context.Context, roll
...
@@ -191,6 +191,7 @@ func (h *FactoryHelper) StartCannonGameWithCorrectRoot(ctx context.Context, roll
testlog
.
Logger
(
h
.
t
,
log
.
LvlInfo
)
.
New
(
"role"
,
"CorrectTrace"
),
testlog
.
Logger
(
h
.
t
,
log
.
LvlInfo
)
.
New
(
"role"
,
"CorrectTrace"
),
metrics
.
NoopMetrics
,
metrics
.
NoopMetrics
,
cfg
,
cfg
,
cannon
.
NoLocalContext
,
inputs
,
inputs
,
cfg
.
Datadir
,
cfg
.
Datadir
,
maxDepth
.
Uint64
(),
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