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
22d72617
Unverified
Commit
22d72617
authored
Jul 24, 2023
by
mergify[bot]
Committed by
GitHub
Jul 24, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into refcell/challenger-touchup
parents
346d2d3e
406e1257
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
97 additions
and
22 deletions
+97
-22
CODEOWNERS
.github/CODEOWNERS
+12
-9
cannon_provider.go
op-challenger/fault/cannon/cannon_provider.go
+21
-4
cannon_provider_test.go
op-challenger/fault/cannon/cannon_provider_test.go
+37
-4
executor.go
op-challenger/fault/cannon/executor.go
+21
-0
service.go
op-challenger/fault/service.go
+1
-1
Dockerfile
ops/docker/ci-builder/Dockerfile
+1
-1
tag-service.py
ops/tag-service/tag-service.py
+4
-3
No files found.
.github/CODEOWNERS
View file @
22d72617
# Legacy codebases
# Packages
/packages/chain-mon @ethereum-optimism/devxpod
/packages/common-ts @ethereum-optimism/typescript-reviewers
/packages/contracts @ethereum-optimism/contract-reviewers
/packages/contracts-bedrock @ethereum-optimism/contract-reviewers
/packages/core-utils @ethereum-optimism/legacy-reviewers
/packages/chain-mon @ethereum-optimism/devxpod
/packages/replica-healthcheck @ethereum-optimism/legacy-reviewers
/packages/sdk @ethereum-optimism/devxpod
/packages/atst @ethereum-optimism/devxpod
# Bedrock codebases
/bedrock-devnet @ethereum-optimism/go-reviewers
/cannon @ethereum-optimism/go-reviewers
/op-batcher @ethereum-optimism/go-reviewers
/op-bootnode @ethereum-optimism/go-reviewers
/op-chain-ops @ethereum-optimism/go-reviewers
/op-challenger @ethereum-optimism/go-reviewers
/op-e2e @ethereum-optimism/go-reviewers
/op-exporter @ethereum-optimism/go-reviewers
/op-heartbeat @ethereum-optimism/go-reviewers
/op-node @ethereum-optimism/go-reviewers
/op-node/rollup @protolambda @trianglesphere
/op-proposer @ethereum-optimism/go-reviewers
/op-bootnode @ethereum-optimism/go-reviewers
/op-preimage @ethereum-optimism/go-reviewers
/op-program @ethereum-optimism/go-reviewers
/op-proposer @ethereum-optimism/go-reviewers
/op-service @ethereum-optimism/go-reviewers
/op-signer @ethereum-optimism/go-reviewers
/op-wheel @ethereum-optimism/go-reviewers
/ops-bedrock @ethereum-optimism/go-reviewers
# Ops
/.circleci @ethereum-optimism/infra-reviewers
/.github @ethereum-optimism/infra-reviewers
...
...
@@ -37,8 +40,8 @@
/endpoint-monitor @ethereum-optimism/infra-reviewers
# Don't add owners if only package.json is updated
/packages/*/package.json
/*/package.json
/packages/*/package.json
/*/package.json
# JavaScript Releases
/packages/*/CHANGELOG.md @ethereum-optimism/release-managers
...
...
op-challenger/fault/cannon/cannon_provider.go
View file @
22d72617
...
...
@@ -9,9 +9,12 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/log"
)
const
proofsDir
=
"proofs"
const
(
proofsDir
=
"proofs"
)
type
proofData
struct
{
ClaimValue
hexutil
.
Bytes
`json:"post"`
...
...
@@ -19,13 +22,20 @@ type proofData struct {
ProofData
hexutil
.
Bytes
`json:"proof-data"`
}
type
Executor
interface
{
// GenerateProof executes cannon to generate a proof at the specified trace index in dataDir.
GenerateProof
(
dataDir
string
,
proofAt
uint64
)
error
}
type
CannonTraceProvider
struct
{
dir
string
dir
string
executor
Executor
}
func
NewCannonTraceProvider
(
dataDir
string
)
*
CannonTraceProvider
{
func
NewCannonTraceProvider
(
logger
log
.
Logger
,
dataDir
string
)
*
CannonTraceProvider
{
return
&
CannonTraceProvider
{
dir
:
dataDir
,
dir
:
dataDir
,
executor
:
newExecutor
(
logger
),
}
}
...
...
@@ -65,6 +75,13 @@ func (p *CannonTraceProvider) AbsolutePreState() []byte {
func
(
p
*
CannonTraceProvider
)
loadProof
(
i
uint64
)
(
*
proofData
,
error
)
{
path
:=
filepath
.
Join
(
p
.
dir
,
proofsDir
,
fmt
.
Sprintf
(
"%d.json"
,
i
))
file
,
err
:=
os
.
Open
(
path
)
if
errors
.
Is
(
err
,
os
.
ErrNotExist
)
{
if
err
:=
p
.
executor
.
GenerateProof
(
p
.
dir
,
i
);
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"generate cannon trace with proof at %v: %w"
,
i
,
err
)
}
// Try opening the file again now and it should exist.
file
,
err
=
os
.
Open
(
path
)
}
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"cannot open proof file (%v): %w"
,
path
,
err
)
}
...
...
op-challenger/fault/cannon/cannon_provider_test.go
View file @
22d72617
...
...
@@ -15,63 +15,79 @@ import (
var
testData
embed
.
FS
func
TestGet
(
t
*
testing
.
T
)
{
provider
:=
setupWith
TestData
(
t
)
dataDir
:=
setup
TestData
(
t
)
t
.
Run
(
"ExistingProof"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
value
,
err
:=
provider
.
Get
(
0
)
require
.
NoError
(
t
,
err
)
require
.
Equal
(
t
,
common
.
HexToHash
(
"0x45fd9aa59768331c726e719e76aa343e73123af888804604785ae19506e65e87"
),
value
)
require
.
Empty
(
t
,
executor
.
generated
)
})
t
.
Run
(
"ProofUnavailable"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
_
,
err
:=
provider
.
Get
(
7
)
require
.
ErrorIs
(
t
,
err
,
os
.
ErrNotExist
)
require
.
Contains
(
t
,
executor
.
generated
,
7
,
"should have tried to generate the proof"
)
})
t
.
Run
(
"MissingPostHash"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
_
,
err
:=
provider
.
Get
(
1
)
require
.
ErrorContains
(
t
,
err
,
"missing post hash"
)
require
.
Empty
(
t
,
executor
.
generated
)
})
t
.
Run
(
"IgnoreUnknownFields"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
value
,
err
:=
provider
.
Get
(
2
)
require
.
NoError
(
t
,
err
)
expected
:=
common
.
HexToHash
(
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
)
require
.
Equal
(
t
,
expected
,
value
)
require
.
Empty
(
t
,
executor
.
generated
)
})
}
func
TestGetPreimage
(
t
*
testing
.
T
)
{
provider
:=
setupWith
TestData
(
t
)
dataDir
:=
setup
TestData
(
t
)
t
.
Run
(
"ExistingProof"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
value
,
proof
,
err
:=
provider
.
GetPreimage
(
0
)
require
.
NoError
(
t
,
err
)
expected
:=
common
.
Hex2Bytes
(
"b8f068de604c85ea0e2acd437cdb47add074a2d70b81d018390c504b71fe26f400000000000000000000000000000000000000000000000000000000000000000000000000"
)
require
.
Equal
(
t
,
expected
,
value
)
expectedProof
:=
common
.
Hex2Bytes
(
"08028e3c0000000000000000000000003c01000a24210b7c00200008000000008fa40004"
)
require
.
Equal
(
t
,
expectedProof
,
proof
)
require
.
Empty
(
t
,
executor
.
generated
)
})
t
.
Run
(
"ProofUnavailable"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
_
,
_
,
err
:=
provider
.
GetPreimage
(
7
)
require
.
ErrorIs
(
t
,
err
,
os
.
ErrNotExist
)
require
.
Contains
(
t
,
executor
.
generated
,
7
,
"should have tried to generate the proof"
)
})
t
.
Run
(
"MissingStateData"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
_
,
_
,
err
:=
provider
.
GetPreimage
(
1
)
require
.
ErrorContains
(
t
,
err
,
"missing state data"
)
require
.
Empty
(
t
,
executor
.
generated
)
})
t
.
Run
(
"IgnoreUnknownFields"
,
func
(
t
*
testing
.
T
)
{
provider
,
executor
:=
setupWithTestData
(
dataDir
)
value
,
proof
,
err
:=
provider
.
GetPreimage
(
2
)
require
.
NoError
(
t
,
err
)
expected
:=
common
.
Hex2Bytes
(
"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
)
require
.
Equal
(
t
,
expected
,
value
)
expectedProof
:=
common
.
Hex2Bytes
(
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
)
require
.
Equal
(
t
,
expectedProof
,
proof
)
require
.
Empty
(
t
,
executor
.
generated
)
})
}
func
setup
WithTestData
(
t
*
testing
.
T
)
*
CannonTraceProvider
{
func
setup
TestData
(
t
*
testing
.
T
)
string
{
srcDir
:=
filepath
.
Join
(
"test_data"
,
"proofs"
)
entries
,
err
:=
testData
.
ReadDir
(
srcDir
)
require
.
NoError
(
t
,
err
)
...
...
@@ -84,5 +100,22 @@ func setupWithTestData(t *testing.T) *CannonTraceProvider {
err
=
os
.
WriteFile
(
filepath
.
Join
(
dataDir
,
"proofs"
,
entry
.
Name
()),
file
,
0
o644
)
require
.
NoErrorf
(
t
,
err
,
"writing %v"
,
path
)
}
return
NewCannonTraceProvider
(
dataDir
)
return
dataDir
}
func
setupWithTestData
(
dataDir
string
)
(
*
CannonTraceProvider
,
*
stubExecutor
)
{
executor
:=
&
stubExecutor
{}
return
&
CannonTraceProvider
{
dir
:
dataDir
,
executor
:
executor
,
},
executor
}
type
stubExecutor
struct
{
generated
[]
int
// Using int makes assertions easier
}
func
(
e
*
stubExecutor
)
GenerateProof
(
dir
string
,
i
uint64
)
error
{
e
.
generated
=
append
(
e
.
generated
,
int
(
i
))
return
nil
}
op-challenger/fault/cannon/executor.go
0 → 100644
View file @
22d72617
package
cannon
import
(
"fmt"
"github.com/ethereum/go-ethereum/log"
)
type
executor
struct
{
logger
log
.
Logger
}
func
newExecutor
(
logger
log
.
Logger
)
Executor
{
return
&
executor
{
logger
:
logger
,
}
}
func
(
e
*
executor
)
GenerateProof
(
dir
string
,
i
uint64
)
error
{
return
fmt
.
Errorf
(
"please execute cannon with --proof-at %v --proof-fmt %v/%v/%%d.json"
,
i
,
dir
,
proofsDir
)
}
op-challenger/fault/service.go
View file @
22d72617
...
...
@@ -55,7 +55,7 @@ func NewService(ctx context.Context, logger log.Logger, cfg *config.Config) (*se
var
trace
types
.
TraceProvider
switch
cfg
.
TraceType
{
case
config
.
TraceTypeCannon
:
trace
=
cannon
.
NewCannonTraceProvider
(
cfg
.
CannonDatadir
)
trace
=
cannon
.
NewCannonTraceProvider
(
logger
,
cfg
.
CannonDatadir
)
case
config
.
TraceTypeAlphabet
:
trace
=
NewAlphabetProvider
(
cfg
.
AlphabetTrace
,
uint64
(
cfg
.
GameDepth
))
default
:
...
...
ops/docker/ci-builder/Dockerfile
View file @
22d72617
...
...
@@ -30,7 +30,7 @@ FROM ethereum/client-go:alltools-v1.10.25 as geth
FROM
ghcr.io/crytic/echidna/echidna:v2.0.4 as echidna-test
FROM
python:3.
8.13
-slim-bullseye
FROM
python:3.
11.4
-slim-bullseye
ENV
GOPATH=/go
ENV
PATH=/usr/local/go/bin:$GOPATH/bin:$PATH
...
...
ops/tag-service/tag-service.py
View file @
22d72617
...
...
@@ -10,12 +10,13 @@ import semver
# Minimum version numbers for packages migrating from legacy versioning.
MIN_VERSIONS
=
{
'ci-builder'
:
'0.6.0'
,
'indexer'
:
'0.5.0'
,
'op-node'
:
'0.10.14'
,
'op-batcher'
:
'0.10.14'
,
'op-proposer'
:
'0.10.14'
,
'proxyd'
:
'3.16.0'
,
'indexer'
:
'0.5.0'
,
'ci-builder'
:
'0.6.0'
'op-ufm'
:
'0.1.0'
,
'proxyd'
:
'3.16.0'
}
VALID_BUMPS
=
(
'major'
,
'minor'
,
'patch'
,
'prerelease'
,
'finalize-prerelease'
)
...
...
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