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
c30d58c6
Unverified
Commit
c30d58c6
authored
Aug 21, 2023
by
mergify[bot]
Committed by
GitHub
Aug 21, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into proxyd-max-block-range
parents
96c4f919
41bcf7b2
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
147 additions
and
30 deletions
+147
-30
README.md
docs/README.md
+8
-0
go.mod
go.mod
+5
-5
go.sum
go.sum
+11
-11
docker-compose.yml
indexer/docker-compose.yml
+1
-0
monitor.go
op-challenger/fault/monitor.go
+6
-6
monitor_test.go
op-challenger/fault/monitor_test.go
+2
-1
service.go
op-challenger/fault/service.go
+3
-1
waits.go
op-e2e/e2eutils/wait/waits.go
+2
-1
host.go
op-node/p2p/host.go
+0
-3
clock.go
op-service/clock/clock.go
+21
-2
clock_test.go
op-service/clock/clock_test.go
+32
-0
common.go
op-service/clock/common.go
+17
-0
deterministic.go
op-service/clock/deterministic.go
+4
-0
deterministic_test.go
op-service/clock/deterministic_test.go
+35
-0
No files found.
docs/README.md
0 → 100644
View file @
c30d58c6
## Optimism Monorepo Documentation
The
`docs/`
directory contains Optimism documentation closely tied to the implementation details of the monorepo (https://github.com/ethereum-optimism/optimism).
The directory layout is divided into the following sub-directories.
-
[
`postmortems/`
](
./postmortems/
)
: Timestamped post-mortem documents.
-
[
`security-reviews`
](
./security-reviews/
)
: Audit summaries and other security review documents.
go.mod
View file @
c30d58c6
...
@@ -31,7 +31,7 @@ require (
...
@@ -31,7 +31,7 @@ require (
github.com/multiformats/go-multiaddr v0.10.1
github.com/multiformats/go-multiaddr v0.10.1
github.com/multiformats/go-multiaddr-dns v0.3.1
github.com/multiformats/go-multiaddr-dns v0.3.1
github.com/olekukonko/tablewriter v0.0.5
github.com/olekukonko/tablewriter v0.0.5
github.com/onsi/gomega v1.27.
4
github.com/onsi/gomega v1.27.
10
github.com/pkg/errors v0.9.1
github.com/pkg/errors v0.9.1
github.com/pkg/profile v1.7.0
github.com/pkg/profile v1.7.0
github.com/prometheus/client_golang v1.14.0
github.com/prometheus/client_golang v1.14.0
...
@@ -43,7 +43,7 @@ require (
...
@@ -43,7 +43,7 @@ require (
golang.org/x/term v0.11.0
golang.org/x/term v0.11.0
golang.org/x/time v0.3.0
golang.org/x/time v0.3.0
gorm.io/driver/postgres v1.5.2
gorm.io/driver/postgres v1.5.2
gorm.io/gorm v1.25.
3
gorm.io/gorm v1.25.
4
)
)
require (
require (
...
@@ -157,7 +157,7 @@ require (
...
@@ -157,7 +157,7 @@ require (
github.com/multiformats/go-varint v0.0.7 // indirect
github.com/multiformats/go-varint v0.0.7 // indirect
github.com/naoina/go-stringutil v0.1.0 // indirect
github.com/naoina/go-stringutil v0.1.0 // indirect
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 // indirect
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 // indirect
github.com/onsi/ginkgo/v2 v2.
9.2
// indirect
github.com/onsi/ginkgo/v2 v2.
11.0
// indirect
github.com/opencontainers/runtime-spec v1.0.2 // indirect
github.com/opencontainers/runtime-spec v1.0.2 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
...
@@ -193,10 +193,10 @@ require (
...
@@ -193,10 +193,10 @@ require (
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.24.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/mod v0.11.0 // indirect
golang.org/x/mod v0.11.0 // indirect
golang.org/x/net v0.1
0
.0 // indirect
golang.org/x/net v0.1
2
.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/text v0.12.0 // indirect
golang.org/x/text v0.12.0 // indirect
golang.org/x/tools v0.
7.0
// indirect
golang.org/x/tools v0.
9.3
// indirect
google.golang.org/protobuf v1.30.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
...
...
go.sum
View file @
c30d58c6
...
@@ -214,7 +214,7 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm
...
@@ -214,7 +214,7 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.2.
3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0
=
github.com/go-logr/logr v1.2.
4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ
=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
...
@@ -647,16 +647,16 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv
...
@@ -647,16 +647,16 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
github.com/onsi/ginkgo/v2 v2.
9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFS
U=
github.com/onsi/ginkgo/v2 v2.
11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tc
U=
github.com/onsi/ginkgo/v2 v2.
9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts
=
github.com/onsi/ginkgo/v2 v2.
11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM
=
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
github.com/onsi/gomega v1.27.
4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E
=
github.com/onsi/gomega v1.27.
10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI
=
github.com/onsi/gomega v1.27.
4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ
=
github.com/onsi/gomega v1.27.
10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M
=
github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0=
github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0=
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
...
@@ -934,8 +934,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT
...
@@ -934,8 +934,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.1
0.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M
=
golang.org/x/net v0.1
2.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50
=
golang.org/x/net v0.1
0.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg
=
golang.org/x/net v0.1
2.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA
=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
...
@@ -1056,8 +1056,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
...
@@ -1056,8 +1056,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.
7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4
=
golang.org/x/tools v0.
9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM
=
golang.org/x/tools v0.
7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s
=
golang.org/x/tools v0.
9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc
=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
...
@@ -1136,8 +1136,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
...
@@ -1136,8 +1136,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0=
gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0=
gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8=
gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8=
gorm.io/gorm v1.25.
3 h1:zi4rHZj1anhZS2EuEODMhDisGy+Daq9jtPrNGgbQYD8
=
gorm.io/gorm v1.25.
4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw
=
gorm.io/gorm v1.25.
3
/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/gorm v1.25.
4
/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
...
...
indexer/docker-compose.yml
View file @
c30d58c6
...
@@ -15,6 +15,7 @@ services:
...
@@ -15,6 +15,7 @@ services:
-
"
5434:5432"
-
"
5434:5432"
volumes
:
volumes
:
-
postgres_data:/data/postgres
-
postgres_data:/data/postgres
-
./migrations:/docker-entrypoint-initdb.d/
indexer
:
indexer
:
build
:
build
:
...
...
op-challenger/fault/monitor.go
View file @
c30d58c6
...
@@ -6,6 +6,7 @@ import (
...
@@ -6,6 +6,7 @@ import (
"math/big"
"math/big"
"time"
"time"
"github.com/ethereum-optimism/optimism/op-service/clock"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/log"
)
)
...
@@ -24,6 +25,7 @@ type gameSource interface {
...
@@ -24,6 +25,7 @@ type gameSource interface {
type
gameMonitor
struct
{
type
gameMonitor
struct
{
logger
log
.
Logger
logger
log
.
Logger
clock
clock
.
Clock
source
gameSource
source
gameSource
createPlayer
playerCreator
createPlayer
playerCreator
fetchBlockNumber
blockNumberFetcher
fetchBlockNumber
blockNumberFetcher
...
@@ -31,9 +33,10 @@ type gameMonitor struct {
...
@@ -31,9 +33,10 @@ type gameMonitor struct {
players
map
[
common
.
Address
]
gamePlayer
players
map
[
common
.
Address
]
gamePlayer
}
}
func
newGameMonitor
(
logger
log
.
Logger
,
fetchBlockNumber
blockNumberFetcher
,
allowedGame
common
.
Address
,
source
gameSource
,
createGame
playerCreator
)
*
gameMonitor
{
func
newGameMonitor
(
logger
log
.
Logger
,
cl
clock
.
Clock
,
fetchBlockNumber
blockNumberFetcher
,
allowedGame
common
.
Address
,
source
gameSource
,
createGame
playerCreator
)
*
gameMonitor
{
return
&
gameMonitor
{
return
&
gameMonitor
{
logger
:
logger
,
logger
:
logger
,
clock
:
cl
,
source
:
source
,
source
:
source
,
createPlayer
:
createGame
,
createPlayer
:
createGame
,
fetchBlockNumber
:
fetchBlockNumber
,
fetchBlockNumber
:
fetchBlockNumber
,
...
@@ -86,11 +89,8 @@ func (m *gameMonitor) MonitorGames(ctx context.Context) error {
...
@@ -86,11 +89,8 @@ func (m *gameMonitor) MonitorGames(ctx context.Context) error {
if
err
!=
nil
{
if
err
!=
nil
{
m
.
logger
.
Error
(
"Failed to progress games"
,
"err"
,
err
)
m
.
logger
.
Error
(
"Failed to progress games"
,
"err"
,
err
)
}
}
select
{
if
err
:=
m
.
clock
.
SleepCtx
(
ctx
,
300
*
time
.
Millisecond
);
err
!=
nil
{
case
<-
time
.
After
(
300
*
time
.
Millisecond
)
:
return
err
// Continue
case
<-
ctx
.
Done
()
:
return
ctx
.
Err
()
}
}
}
}
}
}
op-challenger/fault/monitor_test.go
View file @
c30d58c6
...
@@ -5,6 +5,7 @@ import (
...
@@ -5,6 +5,7 @@ import (
"math/big"
"math/big"
"testing"
"testing"
"github.com/ethereum-optimism/optimism/op-service/clock"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/require"
...
@@ -86,7 +87,7 @@ func setupMonitorTest(t *testing.T, allowedGame common.Address) (*gameMonitor, *
...
@@ -86,7 +87,7 @@ func setupMonitorTest(t *testing.T, allowedGame common.Address) (*gameMonitor, *
fetchBlockNum
:=
func
(
ctx
context
.
Context
)
(
uint64
,
error
)
{
fetchBlockNum
:=
func
(
ctx
context
.
Context
)
(
uint64
,
error
)
{
return
1234
,
nil
return
1234
,
nil
}
}
monitor
:=
newGameMonitor
(
logger
,
fetchBlockNum
,
allowedGame
,
source
,
games
.
CreateGame
)
monitor
:=
newGameMonitor
(
logger
,
clock
.
SystemClock
,
fetchBlockNum
,
allowedGame
,
source
,
games
.
CreateGame
)
return
monitor
,
source
,
games
return
monitor
,
source
,
games
}
}
...
...
op-challenger/fault/service.go
View file @
c30d58c6
...
@@ -11,6 +11,7 @@ import (
...
@@ -11,6 +11,7 @@ import (
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-challenger/version"
"github.com/ethereum-optimism/optimism/op-challenger/version"
"github.com/ethereum-optimism/optimism/op-service/client"
"github.com/ethereum-optimism/optimism/op-service/client"
"github.com/ethereum-optimism/optimism/op-service/clock"
oppprof
"github.com/ethereum-optimism/optimism/op-service/pprof"
oppprof
"github.com/ethereum-optimism/optimism/op-service/pprof"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
...
@@ -33,6 +34,7 @@ type service struct {
...
@@ -33,6 +34,7 @@ type service struct {
// NewService creates a new Service.
// NewService creates a new Service.
func
NewService
(
ctx
context
.
Context
,
logger
log
.
Logger
,
cfg
*
config
.
Config
)
(
*
service
,
error
)
{
func
NewService
(
ctx
context
.
Context
,
logger
log
.
Logger
,
cfg
*
config
.
Config
)
(
*
service
,
error
)
{
cl
:=
clock
.
SystemClock
m
:=
metrics
.
NewMetrics
()
m
:=
metrics
.
NewMetrics
()
txMgr
,
err
:=
txmgr
.
NewSimpleTxManager
(
"challenger"
,
logger
,
&
m
.
TxMetrics
,
cfg
.
TxMgrConfig
)
txMgr
,
err
:=
txmgr
.
NewSimpleTxManager
(
"challenger"
,
logger
,
&
m
.
TxMetrics
,
cfg
.
TxMgrConfig
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -71,7 +73,7 @@ func NewService(ctx context.Context, logger log.Logger, cfg *config.Config) (*se
...
@@ -71,7 +73,7 @@ func NewService(ctx context.Context, logger log.Logger, cfg *config.Config) (*se
}
}
loader
:=
NewGameLoader
(
factory
)
loader
:=
NewGameLoader
(
factory
)
monitor
:=
newGameMonitor
(
logger
,
client
.
BlockNumber
,
cfg
.
GameAddress
,
loader
,
func
(
addr
common
.
Address
)
(
gamePlayer
,
error
)
{
monitor
:=
newGameMonitor
(
logger
,
cl
,
cl
ient
.
BlockNumber
,
cfg
.
GameAddress
,
loader
,
func
(
addr
common
.
Address
)
(
gamePlayer
,
error
)
{
return
NewGamePlayer
(
ctx
,
logger
,
cfg
,
addr
,
txMgr
,
client
)
return
NewGamePlayer
(
ctx
,
logger
,
cfg
,
addr
,
txMgr
,
client
)
})
})
...
...
op-e2e/e2eutils/wait/waits.go
View file @
c30d58c6
...
@@ -56,7 +56,8 @@ func (s *jsonRawString) UnmarshalJSON(input []byte) error {
...
@@ -56,7 +56,8 @@ func (s *jsonRawString) UnmarshalJSON(input []byte) error {
// printDebugTrace logs debug_traceTransaction output to aid in debugging unexpected receipt statuses
// printDebugTrace logs debug_traceTransaction output to aid in debugging unexpected receipt statuses
func
printDebugTrace
(
ctx
context
.
Context
,
client
*
ethclient
.
Client
,
txHash
common
.
Hash
)
{
func
printDebugTrace
(
ctx
context
.
Context
,
client
*
ethclient
.
Client
,
txHash
common
.
Hash
)
{
var
trace
jsonRawString
var
trace
jsonRawString
options
:=
map
[
string
]
string
{}
options
:=
map
[
string
]
any
{}
options
[
"enableReturnData"
]
=
true
err
:=
client
.
Client
()
.
CallContext
(
ctx
,
&
trace
,
"debug_traceTransaction"
,
hexutil
.
Bytes
(
txHash
.
Bytes
()),
options
)
err
:=
client
.
Client
()
.
CallContext
(
ctx
,
&
trace
,
"debug_traceTransaction"
,
hexutil
.
Bytes
(
txHash
.
Bytes
()),
options
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Printf
(
"TxTrace unavailable: %v
\n
"
,
err
)
fmt
.
Printf
(
"TxTrace unavailable: %v
\n
"
,
err
)
...
...
op-node/p2p/host.go
View file @
c30d58c6
...
@@ -186,9 +186,6 @@ func (conf *Config) Host(log log.Logger, reporter metrics.Reporter, metrics Host
...
@@ -186,9 +186,6 @@ func (conf *Config) Host(log log.Logger, reporter metrics.Reporter, metrics Host
tcpTransport
:=
libp2p
.
Transport
(
tcpTransport
:=
libp2p
.
Transport
(
tcp
.
NewTCPTransport
,
tcp
.
NewTCPTransport
,
tcp
.
WithConnectionTimeout
(
time
.
Minute
*
60
))
// break unused connections
tcp
.
WithConnectionTimeout
(
time
.
Minute
*
60
))
// break unused connections
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to create TCP transport: %w"
,
err
)
}
// TODO: technically we can also run the node on websocket and QUIC transports. Maybe in the future?
// TODO: technically we can also run the node on websocket and QUIC transports. Maybe in the future?
var
nat
lconf
.
NATManagerC
// disabled if nil
var
nat
lconf
.
NATManagerC
// disabled if nil
...
...
op-service/clock/clock.go
View file @
c30d58c6
// Package clock provides an abstraction for time to enable testing of functionality that uses time as an input.
// Package clock provides an abstraction for time to enable testing of functionality that uses time as an input.
package
clock
package
clock
import
"time"
import
(
"context"
"time"
)
// Clock represents time in a way that can be provided by varying implementations.
// Clock represents time in a way that can be provided by varying implementations.
// Methods are designed to be direct replacements for methods in the time package.
// Methods are designed to be direct replacements for methods in the time package,
// with some new additions to make common patterns simple.
type
Clock
interface
{
type
Clock
interface
{
// Now provides the current local time. Equivalent to time.Now
// Now provides the current local time. Equivalent to time.Now
Now
()
time
.
Time
Now
()
time
.
Time
...
@@ -26,6 +30,10 @@ type Clock interface {
...
@@ -26,6 +30,10 @@ type Clock interface {
// NewTimer creates a new Timer that will send
// NewTimer creates a new Timer that will send
// the current time on its channel after at least duration d.
// the current time on its channel after at least duration d.
NewTimer
(
d
time
.
Duration
)
Timer
NewTimer
(
d
time
.
Duration
)
Timer
// SleepCtx sleeps until either ctx is done or the specified duration has elapsed.
// Returns the ctx.Err if it returns because the context is done.
SleepCtx
(
ctx
context
.
Context
,
d
time
.
Duration
)
error
}
}
// A Ticker holds a channel that delivers "ticks" of a clock at intervals
// A Ticker holds a channel that delivers "ticks" of a clock at intervals
...
@@ -104,3 +112,14 @@ func (t *SystemTimer) Ch() <-chan time.Time {
...
@@ -104,3 +112,14 @@ func (t *SystemTimer) Ch() <-chan time.Time {
func
(
s
systemClock
)
AfterFunc
(
d
time
.
Duration
,
f
func
())
Timer
{
func
(
s
systemClock
)
AfterFunc
(
d
time
.
Duration
,
f
func
())
Timer
{
return
&
SystemTimer
{
time
.
AfterFunc
(
d
,
f
)}
return
&
SystemTimer
{
time
.
AfterFunc
(
d
,
f
)}
}
}
func
(
s
systemClock
)
SleepCtx
(
ctx
context
.
Context
,
d
time
.
Duration
)
error
{
timer
:=
s
.
NewTimer
(
d
)
defer
timer
.
Stop
()
select
{
case
<-
ctx
.
Done
()
:
return
ctx
.
Err
()
case
<-
timer
.
Ch
()
:
return
nil
}
}
op-service/clock/clock_test.go
0 → 100644
View file @
c30d58c6
package
clock
import
(
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func
TestSystemClock_SleepCtx
(
t
*
testing
.
T
)
{
t
.
Run
(
"ReturnWhenContextDone"
,
func
(
t
*
testing
.
T
)
{
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
cancel
()
start
:=
time
.
Now
()
err
:=
SystemClock
.
SleepCtx
(
ctx
,
5
*
time
.
Minute
)
end
:=
time
.
Now
()
require
.
ErrorIs
(
t
,
err
,
context
.
Canceled
)
// The call shouldn't block for the 5 minutes, but use a high tolerance as test servers can be slow
// and clocks are inaccurate.
require
.
Less
(
t
,
end
.
Sub
(
start
),
time
.
Minute
)
})
t
.
Run
(
"ReturnAfterDuration"
,
func
(
t
*
testing
.
T
)
{
start
:=
time
.
Now
()
err
:=
SystemClock
.
SleepCtx
(
context
.
Background
(),
100
*
time
.
Millisecond
)
end
:=
time
.
Now
()
require
.
NoError
(
t
,
err
)
// Require the call to sleep for at least a little. Use a high tolerance since clocks can be quite inaccurate.
require
.
Greater
(
t
,
end
.
Sub
(
start
),
5
*
time
.
Millisecond
,
"should sleep at least a bit"
)
})
}
op-service/clock/common.go
0 → 100644
View file @
c30d58c6
package
clock
import
(
"context"
"time"
)
func
sleepCtx
(
ctx
context
.
Context
,
d
time
.
Duration
,
c
Clock
)
error
{
timer
:=
c
.
NewTimer
(
d
)
defer
timer
.
Stop
()
select
{
case
<-
ctx
.
Done
()
:
return
ctx
.
Err
()
case
<-
timer
.
Ch
()
:
return
nil
}
}
op-service/clock/deterministic.go
View file @
c30d58c6
...
@@ -195,6 +195,10 @@ func (s *DeterministicClock) NewTimer(d time.Duration) Timer {
...
@@ -195,6 +195,10 @@ func (s *DeterministicClock) NewTimer(d time.Duration) Timer {
return
t
return
t
}
}
func
(
s
*
DeterministicClock
)
SleepCtx
(
ctx
context
.
Context
,
d
time
.
Duration
)
error
{
return
sleepCtx
(
ctx
,
d
,
s
)
}
func
(
s
*
DeterministicClock
)
addPending
(
t
action
)
{
func
(
s
*
DeterministicClock
)
addPending
(
t
action
)
{
s
.
pending
=
append
(
s
.
pending
,
t
)
s
.
pending
=
append
(
s
.
pending
,
t
)
select
{
select
{
...
...
op-service/clock/deterministic_test.go
View file @
c30d58c6
...
@@ -315,3 +315,38 @@ func TestWaitForPending(t *testing.T) {
...
@@ -315,3 +315,38 @@ func TestWaitForPending(t *testing.T) {
require
.
False
(
t
,
clock
.
WaitForNewPendingTask
(
ctx
),
"should have reset new pending task flag"
)
require
.
False
(
t
,
clock
.
WaitForNewPendingTask
(
ctx
),
"should have reset new pending task flag"
)
})
})
}
}
func
TestSleepCtx
(
t
*
testing
.
T
)
{
t
.
Run
(
"ReturnWhenContextComplete"
,
func
(
t
*
testing
.
T
)
{
clock
:=
NewDeterministicClock
(
time
.
UnixMilli
(
1000
))
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
cancel
()
err
:=
clock
.
SleepCtx
(
ctx
,
5
*
time
.
Minute
)
require
.
ErrorIs
(
t
,
err
,
context
.
Canceled
)
})
t
.
Run
(
"ReturnWhenDurationComplete"
,
func
(
t
*
testing
.
T
)
{
clock
:=
NewDeterministicClock
(
time
.
UnixMilli
(
1000
))
var
wg
sync
.
WaitGroup
var
result
atomic
.
Value
wg
.
Add
(
1
)
go
func
()
{
err
:=
clock
.
SleepCtx
(
context
.
Background
(),
5
*
time
.
Minute
)
if
err
!=
nil
{
result
.
Store
(
err
)
}
wg
.
Done
()
}()
ctx
,
cancelFunc
:=
context
.
WithTimeout
(
context
.
Background
(),
30
*
time
.
Second
)
defer
cancelFunc
()
// Wait until the SleepCtx is called and schedules a pending task
clock
.
WaitForNewPendingTask
(
ctx
)
clock
.
AdvanceTime
(
5
*
time
.
Minute
)
// Wait for the call to return
wg
.
Wait
()
require
.
Nil
(
t
,
result
.
Load
())
})
}
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