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
4fd84d6c
Unverified
Commit
4fd84d6c
authored
Sep 21, 2023
by
mergify[bot]
Committed by
GitHub
Sep 21, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into dependabot/npm_and_yarn/types/node-20.6.3
parents
3a83da39
cedd438c
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
82 additions
and
49 deletions
+82
-49
Dockerfile
indexer/Dockerfile
+1
-1
cli.go
indexer/cmd/indexer/cli.go
+0
-37
config.go
indexer/config/config.go
+8
-6
devnet.go
indexer/config/devnet.go
+40
-0
presets.go
indexer/config/presets.go
+6
-0
agent.go
op-challenger/game/fault/agent.go
+4
-1
agent_test.go
op-challenger/game/fault/agent_test.go
+5
-3
player.go
op-challenger/game/fault/player.go
+1
-1
metrics.go
op-challenger/metrics/metrics.go
+15
-0
noop.go
op-challenger/metrics/noop.go
+2
-0
No files found.
indexer/Dockerfile
View file @
4fd84d6c
...
...
@@ -23,4 +23,4 @@ FROM alpine:3.18
COPY
--from=builder /app/indexer/indexer /usr/local/bin
CMD
["indexer", "
all
", "--config", "/app/indexer/indexer.toml"]
CMD
["indexer", "
index
", "--config", "/app/indexer/indexer.toml"]
indexer/cmd/indexer/cli.go
View file @
4fd84d6c
package
main
import
(
"sync"
"github.com/ethereum-optimism/optimism/indexer"
"github.com/ethereum-optimism/optimism/indexer/api"
"github.com/ethereum-optimism/optimism/indexer/config"
...
...
@@ -66,35 +64,6 @@ func runApi(ctx *cli.Context) error {
return
api
.
Start
(
ctx
.
Context
)
}
func
runAll
(
ctx
*
cli
.
Context
)
error
{
log
:=
log
.
NewLogger
(
log
.
ReadCLIConfig
(
ctx
))
// Ensure both processes complete before returning.
var
wg
sync
.
WaitGroup
wg
.
Add
(
2
)
go
func
()
{
defer
wg
.
Done
()
err
:=
runApi
(
ctx
)
if
err
!=
nil
{
log
.
Error
(
"api process non-zero exit"
,
"err"
,
err
)
}
}()
go
func
()
{
defer
wg
.
Done
()
err
:=
runIndexer
(
ctx
)
if
err
!=
nil
{
log
.
Error
(
"indexer process non-zero exit"
,
"err"
,
err
)
}
}()
// We purposefully return no error since the indexer and api
// have no inter-dependencies. We simply rely on the logs to
// report a non-zero exit for either process.
wg
.
Wait
()
return
nil
}
func
newCli
(
GitCommit
string
,
GitDate
string
)
*
cli
.
App
{
flags
:=
[]
cli
.
Flag
{
ConfigFlag
}
flags
=
append
(
flags
,
log
.
CLIFlags
(
"INDEXER"
)
...
)
...
...
@@ -115,12 +84,6 @@ func newCli(GitCommit string, GitDate string) *cli.App {
Description
:
"Runs the indexing service"
,
Action
:
runIndexer
,
},
{
Name
:
"all"
,
Flags
:
flags
,
Description
:
"Runs both the api service and the indexing service"
,
Action
:
runAll
,
},
{
Name
:
"version"
,
Description
:
"print version"
,
...
...
indexer/config/config.go
View file @
4fd84d6c
...
...
@@ -157,18 +157,20 @@ func LoadConfig(log log.Logger, path string) (Config, error) {
return
conf
,
err
}
if
conf
.
Chain
.
Preset
!=
0
{
if
conf
.
Chain
.
Preset
==
DEVNET_L2_CHAIN_ID
{
preset
,
err
:=
GetDevnetPreset
()
if
err
!=
nil
{
return
conf
,
err
}
conf
.
Chain
=
preset
.
ChainConfig
}
else
if
conf
.
Chain
.
Preset
!=
0
{
preset
,
ok
:=
Presets
[
conf
.
Chain
.
Preset
]
if
!
ok
{
return
conf
,
fmt
.
Errorf
(
"unknown preset: %d"
,
conf
.
Chain
.
Preset
)
}
log
.
Info
(
"detected preset"
,
"preset"
,
conf
.
Chain
.
Preset
,
"name"
,
preset
.
Name
)
log
.
Info
(
"setting L1 information from preset"
)
conf
.
Chain
.
L1Contracts
=
preset
.
ChainConfig
.
L1Contracts
conf
.
Chain
.
L1StartingHeight
=
preset
.
ChainConfig
.
L1StartingHeight
conf
.
Chain
.
L1BedrockStartingHeight
=
preset
.
ChainConfig
.
L1BedrockStartingHeight
conf
.
Chain
.
L2BedrockStartingHeight
=
preset
.
ChainConfig
.
L1BedrockStartingHeight
conf
.
Chain
=
preset
.
ChainConfig
}
// Setup L2Contracts from predeploys
...
...
indexer/config/devnet.go
0 → 100644
View file @
4fd84d6c
package
config
import
(
"encoding/json"
"errors"
"io/fs"
"os"
)
var
(
filePath
=
"../.devnet/addresses.json"
DEVNET_L2_CHAIN_ID
=
901
)
func
GetDevnetPreset
()
(
*
Preset
,
error
)
{
if
_
,
err
:=
os
.
Stat
(
filePath
);
errors
.
Is
(
err
,
fs
.
ErrNotExist
)
{
return
nil
,
err
}
content
,
err
:=
os
.
ReadFile
(
filePath
)
if
err
!=
nil
{
return
nil
,
err
}
var
l1Contracts
L1Contracts
if
err
:=
json
.
Unmarshal
(
content
,
&
l1Contracts
);
err
!=
nil
{
return
nil
,
err
}
if
err
!=
nil
{
return
nil
,
err
}
return
&
Preset
{
Name
:
"devnet"
,
ChainConfig
:
ChainConfig
{
Preset
:
DEVNET_L2_CHAIN_ID
,
L1Contracts
:
l1Contracts
,
},
},
nil
}
indexer/config/presets.go
View file @
4fd84d6c
...
...
@@ -16,6 +16,7 @@ var Presets = map[int]Preset{
10
:
{
Name
:
"Optimism"
,
ChainConfig
:
ChainConfig
{
Preset
:
10
,
L1Contracts
:
L1Contracts
{
AddressManager
:
common
.
HexToAddress
(
"0xdE1FCfB0851916CA5101820A69b13a4E276bd81F"
),
SystemConfigProxy
:
common
.
HexToAddress
(
"0x229047fed2591dbec1eF1118d64F7aF3dB9EB290"
),
...
...
@@ -37,6 +38,7 @@ var Presets = map[int]Preset{
420
:
{
Name
:
"Optimism Goerli"
,
ChainConfig
:
ChainConfig
{
Preset
:
420
,
L1Contracts
:
L1Contracts
{
AddressManager
:
common
.
HexToAddress
(
"0xa6f73589243a6A7a9023b1Fa0651b1d89c177111"
),
SystemConfigProxy
:
common
.
HexToAddress
(
"0xAe851f927Ee40dE99aaBb7461C00f9622ab91d60"
),
...
...
@@ -58,6 +60,7 @@ var Presets = map[int]Preset{
8453
:
{
Name
:
"Base"
,
ChainConfig
:
ChainConfig
{
Preset
:
8453
,
L1Contracts
:
L1Contracts
{
AddressManager
:
common
.
HexToAddress
(
"0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2"
),
SystemConfigProxy
:
common
.
HexToAddress
(
"0x73a79Fab69143498Ed3712e519A88a918e1f4072"
),
...
...
@@ -73,6 +76,7 @@ var Presets = map[int]Preset{
84531
:
{
Name
:
"Base Goerli"
,
ChainConfig
:
ChainConfig
{
Preset
:
84531
,
L1Contracts
:
L1Contracts
{
AddressManager
:
common
.
HexToAddress
(
"0x4Cf6b56b14c6CFcB72A75611080514F94624c54e"
),
SystemConfigProxy
:
common
.
HexToAddress
(
"0xb15eea247eCE011C68a614e4a77AD648ff495bc1"
),
...
...
@@ -88,6 +92,7 @@ var Presets = map[int]Preset{
7777777
:
{
Name
:
"Zora"
,
ChainConfig
:
ChainConfig
{
Preset
:
7777777
,
L1Contracts
:
L1Contracts
{
AddressManager
:
common
.
HexToAddress
(
"0xEF8115F2733fb2033a7c756402Fc1deaa56550Ef"
),
SystemConfigProxy
:
common
.
HexToAddress
(
"0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86"
),
...
...
@@ -103,6 +108,7 @@ var Presets = map[int]Preset{
999
:
{
Name
:
"Zora Goerli"
,
ChainConfig
:
ChainConfig
{
Preset
:
999
,
L1Contracts
:
L1Contracts
{
AddressManager
:
common
.
HexToAddress
(
"0x54f4676203dEDA6C08E0D40557A119c602bFA246"
),
SystemConfigProxy
:
common
.
HexToAddress
(
"0xF66C9A5E4fE1A8a9bc44a4aF80505a4C3620Ee64"
),
...
...
op-challenger/game/fault/agent.go
View file @
4fd84d6c
...
...
@@ -30,6 +30,7 @@ type ClaimLoader interface {
type
Agent
struct
{
metrics
metrics
.
Metricer
fdgAddr
common
.
Address
solver
*
solver
.
GameSolver
loader
ClaimLoader
responder
Responder
...
...
@@ -39,9 +40,10 @@ type Agent struct {
log
log
.
Logger
}
func
NewAgent
(
m
metrics
.
Metricer
,
loader
ClaimLoader
,
maxDepth
int
,
trace
types
.
TraceProvider
,
responder
Responder
,
updater
types
.
OracleUpdater
,
agreeWithProposedOutput
bool
,
log
log
.
Logger
)
*
Agent
{
func
NewAgent
(
m
metrics
.
Metricer
,
addr
common
.
Address
,
loader
ClaimLoader
,
maxDepth
int
,
trace
types
.
TraceProvider
,
responder
Responder
,
updater
types
.
OracleUpdater
,
agreeWithProposedOutput
bool
,
log
log
.
Logger
)
*
Agent
{
return
&
Agent
{
metrics
:
m
,
fdgAddr
:
addr
,
solver
:
solver
.
NewGameSolver
(
maxDepth
,
trace
),
loader
:
loader
,
responder
:
responder
,
...
...
@@ -196,6 +198,7 @@ func (a *Agent) newGameFromContracts(ctx context.Context) (types.Game, error) {
if
len
(
claims
)
==
0
{
return
nil
,
errors
.
New
(
"no claims"
)
}
a
.
metrics
.
RecordGameClaimCount
(
a
.
fdgAddr
.
String
(),
len
(
claims
))
game
:=
types
.
NewGameState
(
a
.
agreeWithProposedOutput
,
claims
[
0
],
uint64
(
a
.
maxDepth
))
if
err
:=
game
.
PutAll
(
claims
[
1
:
]);
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to load claims into the local state: %w"
,
err
)
...
...
op-challenger/game/fault/agent_test.go
View file @
4fd84d6c
...
...
@@ -10,10 +10,11 @@ import (
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
gameTypes
"github.com/ethereum-optimism/optimism/op-challenger/game/types"
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-node/testlog"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
"github.com/ethereum-optimism/optimism/op-node/testlog"
)
// TestShouldResolve tests the resolution logic.
...
...
@@ -110,11 +111,12 @@ func TestLoadClaimsWhenGameNotResolvable(t *testing.T) {
func
setupTestAgent
(
t
*
testing
.
T
,
agreeWithProposedOutput
bool
)
(
*
Agent
,
*
stubClaimLoader
,
*
stubResponder
)
{
logger
:=
testlog
.
Logger
(
t
,
log
.
LvlInfo
)
claimLoader
:=
&
stubClaimLoader
{}
addr
:=
common
.
HexToAddress
(
"0x1234"
)
depth
:=
4
trace
:=
alphabet
.
NewTraceProvider
(
"abcd"
,
uint64
(
depth
))
responder
:=
&
stubResponder
{}
updater
:=
&
stubUpdater
{}
agent
:=
NewAgent
(
metrics
.
NoopMetrics
,
claimLoader
,
depth
,
trace
,
responder
,
updater
,
agreeWithProposedOutput
,
logger
)
agent
:=
NewAgent
(
metrics
.
NoopMetrics
,
addr
,
claimLoader
,
depth
,
trace
,
responder
,
updater
,
agreeWithProposedOutput
,
logger
)
return
agent
,
claimLoader
,
responder
}
...
...
op-challenger/game/fault/player.go
View file @
4fd84d6c
...
...
@@ -106,7 +106,7 @@ func NewGamePlayer(
}
return
&
GamePlayer
{
act
:
NewAgent
(
m
,
loader
,
int
(
gameDepth
),
provider
,
responder
,
updater
,
cfg
.
AgreeWithProposedOutput
,
logger
)
.
Act
,
act
:
NewAgent
(
m
,
addr
,
loader
,
int
(
gameDepth
),
provider
,
responder
,
updater
,
cfg
.
AgreeWithProposedOutput
,
logger
)
.
Act
,
agreeWithProposedOutput
:
cfg
.
AgreeWithProposedOutput
,
loader
:
loader
,
logger
:
logger
,
...
...
op-challenger/metrics/metrics.go
View file @
4fd84d6c
...
...
@@ -25,6 +25,8 @@ type Metricer interface {
RecordGameMove
()
RecordCannonExecutionTime
(
t
float64
)
RecordGameClaimCount
(
addr
string
,
count
int
)
RecordGamesStatus
(
inProgress
,
defenderWon
,
challengerWon
int
)
RecordGameUpdateScheduled
()
...
...
@@ -53,6 +55,8 @@ type Metrics struct {
cannonExecutionTime
prometheus
.
Histogram
gameClaimCount
prometheus
.
GaugeVec
trackedGames
prometheus
.
GaugeVec
inflightGames
prometheus
.
Gauge
}
...
...
@@ -107,6 +111,13 @@ func NewMetrics() *Metrics {
[]
float64
{
1.0
,
10.0
},
prometheus
.
ExponentialBuckets
(
30.0
,
2.0
,
14
)
...
),
}),
gameClaimCount
:
*
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
Namespace
:
Namespace
,
Name
:
"game_claim_count"
,
Help
:
"Number of claims in the game"
,
},
[]
string
{
"game_address"
,
}),
trackedGames
:
*
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
Namespace
:
Namespace
,
Name
:
"tracked_games"
,
...
...
@@ -179,6 +190,10 @@ func (m *Metrics) DecIdleExecutors() {
m
.
executors
.
WithLabelValues
(
"idle"
)
.
Dec
()
}
func
(
m
*
Metrics
)
RecordGameClaimCount
(
addr
string
,
count
int
)
{
m
.
gameClaimCount
.
With
(
prometheus
.
Labels
{
"game_address"
:
addr
})
.
Set
(
float64
(
count
))
}
func
(
m
*
Metrics
)
RecordGamesStatus
(
inProgress
,
defenderWon
,
challengerWon
int
)
{
m
.
trackedGames
.
WithLabelValues
(
"in_progress"
)
.
Set
(
float64
(
inProgress
))
m
.
trackedGames
.
WithLabelValues
(
"defender_won"
)
.
Set
(
float64
(
defenderWon
))
...
...
op-challenger/metrics/noop.go
View file @
4fd84d6c
...
...
@@ -27,3 +27,5 @@ func (*NoopMetricsImpl) IncActiveExecutors() {}
func
(
*
NoopMetricsImpl
)
DecActiveExecutors
()
{}
func
(
*
NoopMetricsImpl
)
IncIdleExecutors
()
{}
func
(
*
NoopMetricsImpl
)
DecIdleExecutors
()
{}
func
(
*
NoopMetricsImpl
)
RecordGameClaimCount
(
addr
string
,
count
int
)
{}
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