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
e679b6d0
Unverified
Commit
e679b6d0
authored
Nov 10, 2023
by
Adrian Sutton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
op-challenger: Add a translating trace provider.
parent
d798e075
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
102 additions
and
0 deletions
+102
-0
translate.go
op-challenger/game/fault/trace/translate.go
+42
-0
translate_test.go
op-challenger/game/fault/trace/translate_test.go
+60
-0
No files found.
op-challenger/game/fault/trace/translate.go
0 → 100644
View file @
e679b6d0
package
trace
import
(
"context"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/ethereum/go-ethereum/common"
)
type
translatingProvider
struct
{
parentDepth
uint64
provider
types
.
TraceProvider
}
func
Translate
(
provider
types
.
TraceProvider
,
parentDepth
uint64
)
types
.
TraceProvider
{
return
&
translatingProvider
{
parentDepth
:
parentDepth
,
provider
:
provider
,
}
}
func
(
p
translatingProvider
)
Get
(
ctx
context
.
Context
,
pos
types
.
Position
)
(
common
.
Hash
,
error
)
{
relativePos
,
err
:=
pos
.
RelativeToAncestorAtDepth
(
p
.
parentDepth
)
if
err
!=
nil
{
return
common
.
Hash
{},
err
}
return
p
.
provider
.
Get
(
ctx
,
relativePos
)
}
func
(
p
translatingProvider
)
GetStepData
(
ctx
context
.
Context
,
pos
types
.
Position
)
(
prestate
[]
byte
,
proofData
[]
byte
,
preimageData
*
types
.
PreimageOracleData
,
err
error
)
{
relativePos
,
err
:=
pos
.
RelativeToAncestorAtDepth
(
p
.
parentDepth
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
err
}
return
p
.
provider
.
GetStepData
(
ctx
,
relativePos
)
}
func
(
p
translatingProvider
)
AbsolutePreStateCommitment
(
ctx
context
.
Context
)
(
hash
common
.
Hash
,
err
error
)
{
return
p
.
provider
.
AbsolutePreStateCommitment
(
ctx
)
}
var
_
types
.
TraceProvider
=
(
*
translatingProvider
)(
nil
)
op-challenger/game/fault/trace/translate_test.go
0 → 100644
View file @
e679b6d0
package
trace
import
(
"context"
"math/big"
"testing"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/trace/alphabet"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/stretchr/testify/require"
)
func
TestTranslate
(
t
*
testing
.
T
)
{
orig
:=
alphabet
.
NewTraceProvider
(
"abcdefghij"
,
4
)
translated
:=
Translate
(
orig
,
3
)
// All nodes on the first translated layer, map to GIndex 1
for
i
:=
int64
(
8
);
i
<=
15
;
i
++
{
requireSameValue
(
t
,
orig
,
1
,
translated
,
i
)
}
// Nodes on the second translated layer map to GIndex 2 and 3 alternately
for
i
:=
int64
(
16
);
i
<=
31
;
i
+=
2
{
requireSameValue
(
t
,
orig
,
2
,
translated
,
i
)
requireSameValue
(
t
,
orig
,
3
,
translated
,
i
+
1
)
}
// Nodes on the third translated layer map to GIndex 4, 5, 6 and 7
for
i
:=
int64
(
32
);
i
<=
61
;
i
+=
4
{
requireSameValue
(
t
,
orig
,
4
,
translated
,
i
)
requireSameValue
(
t
,
orig
,
5
,
translated
,
i
+
1
)
requireSameValue
(
t
,
orig
,
6
,
translated
,
i
+
2
)
requireSameValue
(
t
,
orig
,
7
,
translated
,
i
+
3
)
}
}
func
requireSameValue
(
t
*
testing
.
T
,
a
types
.
TraceProvider
,
aGIdx
int64
,
b
types
.
TraceProvider
,
bGIdx
int64
)
{
// Check Get returns the same results
aValue
,
err
:=
a
.
Get
(
context
.
Background
(),
types
.
NewPositionFromGIndex
(
big
.
NewInt
(
aGIdx
)))
require
.
NoError
(
t
,
err
)
bValue
,
err
:=
b
.
Get
(
context
.
Background
(),
types
.
NewPositionFromGIndex
(
big
.
NewInt
(
bGIdx
)))
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
aValue
,
bValue
)
// Check GetStepData returns the same results
aPrestate
,
aProofData
,
aPreimageData
,
err
:=
a
.
GetStepData
(
context
.
Background
(),
types
.
NewPositionFromGIndex
(
big
.
NewInt
(
aGIdx
)))
require
.
NoError
(
t
,
err
)
bPrestate
,
bProofData
,
bPreimageData
,
err
:=
b
.
GetStepData
(
context
.
Background
(),
types
.
NewPositionFromGIndex
(
big
.
NewInt
(
bGIdx
)))
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
aPrestate
,
bPrestate
)
require
.
Equal
(
t
,
aProofData
,
bProofData
)
require
.
Equal
(
t
,
aPreimageData
,
bPreimageData
)
}
func
TestTranslate_AbsolutePreStateCommitment
(
t
*
testing
.
T
)
{
orig
:=
alphabet
.
NewTraceProvider
(
"abcdefghij"
,
4
)
translated
:=
Translate
(
orig
,
3
)
origValue
,
err
:=
orig
.
AbsolutePreStateCommitment
(
context
.
Background
())
require
.
NoError
(
t
,
err
)
translatedValue
,
err
:=
translated
.
AbsolutePreStateCommitment
(
context
.
Background
())
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
origValue
,
translatedValue
)
}
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