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
a6b8a697
Unverified
Commit
a6b8a697
authored
Jul 29, 2022
by
Mark Tyneway
Committed by
GitHub
Jul 29, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into deps/safe-call
parents
7f6ea137
2a7be367
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
237 additions
and
55 deletions
+237
-55
batch_submitter.go
op-batcher/batch_submitter.go
+23
-0
config.go
op-batcher/config.go
+10
-2
flags.go
op-batcher/flags/flags.go
+20
-0
main.go
op-node/cmd/main.go
+24
-0
flags.go
op-node/flags/flags.go
+20
-0
config.go
op-node/node/config.go
+15
-0
service.go
op-node/service.go
+5
-0
config.go
op-proposer/config.go
+10
-2
flags.go
op-proposer/flags/flags.go
+20
-0
l2_output_submitter.go
op-proposer/l2_output_submitter.go
+24
-0
devnet-up.sh
ops-bedrock/devnet-up.sh
+6
-6
docker-compose.yml
ops-bedrock/docker-compose.yml
+8
-0
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+6
-6
OptimismPortal.t.sol
...ges/contracts-bedrock/contracts/test/OptimismPortal.t.sol
+8
-5
devnetL1.ts
packages/contracts-bedrock/deploy-config/devnetL1.ts
+5
-4
goerli.ts
packages/contracts-bedrock/deploy-config/goerli.ts
+3
-2
hardhat.ts
packages/contracts-bedrock/deploy-config/hardhat.ts
+5
-4
000-L2OutputOracle.deploy.ts
...ges/contracts-bedrock/deploy/000-L2OutputOracle.deploy.ts
+6
-9
hardhat.config.ts
packages/contracts-bedrock/hardhat.config.ts
+3
-6
genesis-l1.ts
packages/contracts-bedrock/tasks/genesis-l1.ts
+1
-1
genesis-l2.ts
packages/contracts-bedrock/tasks/genesis-l2.ts
+6
-2
rollup-config.ts
packages/contracts-bedrock/tasks/rollup-config.ts
+8
-3
tsconfig.json
packages/contracts-bedrock/tsconfig.json
+1
-3
No files found.
op-batcher/batch_submitter.go
View file @
a6b8a697
...
@@ -6,6 +6,9 @@ import (
...
@@ -6,6 +6,9 @@ import (
"fmt"
"fmt"
"io"
"io"
"math/big"
"math/big"
"net"
"net/http"
_
"net/http/pprof"
"os"
"os"
"os/signal"
"os/signal"
"sync"
"sync"
...
@@ -76,6 +79,26 @@ func Main(version string) func(ctx *cli.Context) error {
...
@@ -76,6 +79,26 @@ func Main(version string) func(ctx *cli.Context) error {
defer
batchSubmitter
.
Stop
()
defer
batchSubmitter
.
Stop
()
l
.
Info
(
"Batch Submitter started"
)
l
.
Info
(
"Batch Submitter started"
)
if
cfg
.
PprofEnabled
{
var
srv
http
.
Server
srv
.
Addr
=
net
.
JoinHostPort
(
cfg
.
PprofAddr
,
cfg
.
PprofPort
)
// Start pprof server + register it's shutdown
go
func
()
{
l
.
Info
(
"pprof server started"
,
"addr"
,
srv
.
Addr
)
if
err
:=
srv
.
ListenAndServe
();
err
!=
http
.
ErrServerClosed
{
l
.
Error
(
"error in pprof server"
,
"err"
,
err
)
}
else
{
l
.
Info
(
"pprof server shutting down"
)
}
}()
defer
func
()
{
shutCtx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
10
*
time
.
Second
)
defer
cancel
()
err
:=
srv
.
Shutdown
(
shutCtx
)
l
.
Info
(
"pprof server shut down"
,
"err"
,
err
)
}()
}
interruptChannel
:=
make
(
chan
os
.
Signal
,
1
)
interruptChannel
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
interruptChannel
,
[]
os
.
Signal
{
signal
.
Notify
(
interruptChannel
,
[]
os
.
Signal
{
...
...
op-batcher/config.go
View file @
a6b8a697
...
@@ -68,6 +68,11 @@ type Config struct {
...
@@ -68,6 +68,11 @@ type Config struct {
// LogTerminal if true, will log to stdout in terminal format. Otherwise the
// LogTerminal if true, will log to stdout in terminal format. Otherwise the
// output will be in JSON format.
// output will be in JSON format.
LogTerminal
bool
LogTerminal
bool
// Flags for the pprof server
PprofEnabled
bool
PprofAddr
string
PprofPort
string
}
}
// NewConfig parses the Config from the provided flags or environment variables.
// NewConfig parses the Config from the provided flags or environment variables.
...
@@ -88,7 +93,10 @@ func NewConfig(ctx *cli.Context) Config {
...
@@ -88,7 +93,10 @@ func NewConfig(ctx *cli.Context) Config {
SequencerHDPath
:
ctx
.
GlobalString
(
flags
.
SequencerHDPathFlag
.
Name
),
SequencerHDPath
:
ctx
.
GlobalString
(
flags
.
SequencerHDPathFlag
.
Name
),
SequencerBatchInboxAddress
:
ctx
.
GlobalString
(
flags
.
SequencerBatchInboxAddressFlag
.
Name
),
SequencerBatchInboxAddress
:
ctx
.
GlobalString
(
flags
.
SequencerBatchInboxAddressFlag
.
Name
),
/* Optional Flags */
/* Optional Flags */
LogLevel
:
ctx
.
GlobalString
(
flags
.
LogLevelFlag
.
Name
),
LogLevel
:
ctx
.
GlobalString
(
flags
.
LogLevelFlag
.
Name
),
LogTerminal
:
ctx
.
GlobalBool
(
flags
.
LogTerminalFlag
.
Name
),
LogTerminal
:
ctx
.
GlobalBool
(
flags
.
LogTerminalFlag
.
Name
),
PprofEnabled
:
ctx
.
GlobalBool
(
flags
.
PprofEnabledFlag
.
Name
),
PprofAddr
:
ctx
.
GlobalString
(
flags
.
PprofAddrFlag
.
Name
),
PprofPort
:
ctx
.
GlobalString
(
flags
.
PprofPortFlag
.
Name
),
}
}
}
}
op-batcher/flags/flags.go
View file @
a6b8a697
...
@@ -113,6 +113,23 @@ var (
...
@@ -113,6 +113,23 @@ var (
"in JSON format."
,
"in JSON format."
,
EnvVar
:
prefixEnvVar
(
"LOG_TERMINAL"
),
EnvVar
:
prefixEnvVar
(
"LOG_TERMINAL"
),
}
}
PprofEnabledFlag
=
cli
.
BoolFlag
{
Name
:
"pprof.enabled"
,
Usage
:
"Enable the pprof server"
,
EnvVar
:
prefixEnvVar
(
"PPROF_ENABLED"
),
}
PprofAddrFlag
=
cli
.
StringFlag
{
Name
:
"pprof.addr"
,
Usage
:
"pprof listening address"
,
Value
:
"0.0.0.0"
,
EnvVar
:
prefixEnvVar
(
"PPROF_ADDR"
),
}
PprofPortFlag
=
cli
.
IntFlag
{
Name
:
"pprof.port"
,
Usage
:
"pprof listening port"
,
Value
:
6060
,
EnvVar
:
prefixEnvVar
(
"PPROF_PORT"
),
}
)
)
var
requiredFlags
=
[]
cli
.
Flag
{
var
requiredFlags
=
[]
cli
.
Flag
{
...
@@ -134,6 +151,9 @@ var requiredFlags = []cli.Flag{
...
@@ -134,6 +151,9 @@ var requiredFlags = []cli.Flag{
var
optionalFlags
=
[]
cli
.
Flag
{
var
optionalFlags
=
[]
cli
.
Flag
{
LogLevelFlag
,
LogLevelFlag
,
LogTerminalFlag
,
LogTerminalFlag
,
PprofEnabledFlag
,
PprofAddrFlag
,
PprofPortFlag
,
}
}
// Flags contains the list of configuration options available to the binary.
// Flags contains the list of configuration options available to the binary.
...
...
op-node/cmd/main.go
View file @
a6b8a697
...
@@ -2,9 +2,12 @@ package main
...
@@ -2,9 +2,12 @@ package main
import
(
import
(
"context"
"context"
"net"
"net/http"
"os"
"os"
"os/signal"
"os/signal"
"syscall"
"syscall"
"time"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/metrics"
...
@@ -101,6 +104,27 @@ func RollupNodeMain(ctx *cli.Context) error {
...
@@ -101,6 +104,27 @@ func RollupNodeMain(ctx *cli.Context) error {
m
.
RecordUp
()
m
.
RecordUp
()
log
.
Info
(
"Rollup node started"
)
log
.
Info
(
"Rollup node started"
)
if
cfg
.
Pprof
.
Enabled
{
var
srv
http
.
Server
srv
.
Addr
=
net
.
JoinHostPort
(
cfg
.
Pprof
.
ListenAddr
,
cfg
.
Pprof
.
ListenPort
)
// Start pprof server + register it's shutdown
go
func
()
{
log
.
Info
(
"pprof server started"
,
"addr"
,
srv
.
Addr
)
if
err
:=
srv
.
ListenAndServe
();
err
!=
http
.
ErrServerClosed
{
log
.
Error
(
"error in pprof server"
,
"err"
,
err
)
}
else
{
log
.
Info
(
"pprof server shutting down"
)
}
}()
defer
func
()
{
shutCtx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
10
*
time
.
Second
)
defer
cancel
()
err
:=
srv
.
Shutdown
(
shutCtx
)
log
.
Info
(
"pprof server shut down"
,
"err"
,
err
)
}()
}
interruptChannel
:=
make
(
chan
os
.
Signal
,
1
)
interruptChannel
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
interruptChannel
,
[]
os
.
Signal
{
signal
.
Notify
(
interruptChannel
,
[]
os
.
Signal
{
os
.
Interrupt
,
os
.
Interrupt
,
...
...
op-node/flags/flags.go
View file @
a6b8a697
...
@@ -111,6 +111,23 @@ var (
...
@@ -111,6 +111,23 @@ var (
Value
:
7300
,
Value
:
7300
,
EnvVar
:
prefixEnvVar
(
"METRICS_PORT"
),
EnvVar
:
prefixEnvVar
(
"METRICS_PORT"
),
}
}
PprofEnabledFlag
=
cli
.
BoolFlag
{
Name
:
"pprof.enabled"
,
Usage
:
"Enable the pprof server"
,
EnvVar
:
prefixEnvVar
(
"PPROF_ENABLED"
),
}
PprofAddrFlag
=
cli
.
StringFlag
{
Name
:
"pprof.addr"
,
Usage
:
"pprof listening address"
,
Value
:
"0.0.0.0"
,
EnvVar
:
prefixEnvVar
(
"PPROF_ADDR"
),
}
PprofPortFlag
=
cli
.
IntFlag
{
Name
:
"pprof.port"
,
Usage
:
"pprof listening port"
,
Value
:
6060
,
EnvVar
:
prefixEnvVar
(
"PPROF_PORT"
),
}
SnapshotLog
=
cli
.
StringFlag
{
SnapshotLog
=
cli
.
StringFlag
{
Name
:
"snapshotlog.file"
,
Name
:
"snapshotlog.file"
,
...
@@ -139,6 +156,9 @@ var optionalFlags = append([]cli.Flag{
...
@@ -139,6 +156,9 @@ var optionalFlags = append([]cli.Flag{
MetricsEnabledFlag
,
MetricsEnabledFlag
,
MetricsAddrFlag
,
MetricsAddrFlag
,
MetricsPortFlag
,
MetricsPortFlag
,
PprofEnabledFlag
,
PprofAddrFlag
,
PprofPortFlag
,
SnapshotLog
,
SnapshotLog
,
},
p2pFlags
...
)
},
p2pFlags
...
)
...
...
op-node/node/config.go
View file @
a6b8a697
...
@@ -28,6 +28,8 @@ type Config struct {
...
@@ -28,6 +28,8 @@ type Config struct {
Metrics
MetricsConfig
Metrics
MetricsConfig
Pprof
PprofConfig
// Optional
// Optional
Tracer
Tracer
Tracer
Tracer
}
}
...
@@ -59,6 +61,16 @@ func (m MetricsConfig) Check() error {
...
@@ -59,6 +61,16 @@ func (m MetricsConfig) Check() error {
return
nil
return
nil
}
}
type
PprofConfig
struct
{
Enabled
bool
ListenAddr
string
ListenPort
string
}
func
(
p
PprofConfig
)
Check
()
error
{
return
nil
}
// Check verifies that the given configuration makes sense
// Check verifies that the given configuration makes sense
func
(
cfg
*
Config
)
Check
()
error
{
func
(
cfg
*
Config
)
Check
()
error
{
if
err
:=
cfg
.
L2
.
Check
();
err
!=
nil
{
if
err
:=
cfg
.
L2
.
Check
();
err
!=
nil
{
...
@@ -70,6 +82,9 @@ func (cfg *Config) Check() error {
...
@@ -70,6 +82,9 @@ func (cfg *Config) Check() error {
if
err
:=
cfg
.
Metrics
.
Check
();
err
!=
nil
{
if
err
:=
cfg
.
Metrics
.
Check
();
err
!=
nil
{
return
fmt
.
Errorf
(
"metrics config error: %w"
,
err
)
return
fmt
.
Errorf
(
"metrics config error: %w"
,
err
)
}
}
if
err
:=
cfg
.
Pprof
.
Check
();
err
!=
nil
{
return
fmt
.
Errorf
(
"pprof config error: %w"
,
err
)
}
if
cfg
.
P2P
!=
nil
{
if
cfg
.
P2P
!=
nil
{
if
err
:=
cfg
.
P2P
.
Check
();
err
!=
nil
{
if
err
:=
cfg
.
P2P
.
Check
();
err
!=
nil
{
return
fmt
.
Errorf
(
"p2p config error: %w"
,
err
)
return
fmt
.
Errorf
(
"p2p config error: %w"
,
err
)
...
...
op-node/service.go
View file @
a6b8a697
...
@@ -68,6 +68,11 @@ func NewConfig(ctx *cli.Context, log log.Logger) (*node.Config, error) {
...
@@ -68,6 +68,11 @@ func NewConfig(ctx *cli.Context, log log.Logger) (*node.Config, error) {
ListenAddr
:
ctx
.
GlobalString
(
flags
.
MetricsAddrFlag
.
Name
),
ListenAddr
:
ctx
.
GlobalString
(
flags
.
MetricsAddrFlag
.
Name
),
ListenPort
:
ctx
.
GlobalInt
(
flags
.
MetricsPortFlag
.
Name
),
ListenPort
:
ctx
.
GlobalInt
(
flags
.
MetricsPortFlag
.
Name
),
},
},
Pprof
:
node
.
PprofConfig
{
Enabled
:
ctx
.
GlobalBool
(
flags
.
PprofEnabledFlag
.
Name
),
ListenAddr
:
ctx
.
GlobalString
(
flags
.
PprofAddrFlag
.
Name
),
ListenPort
:
ctx
.
GlobalString
(
flags
.
PprofPortFlag
.
Name
),
},
P2P
:
p2pConfig
,
P2P
:
p2pConfig
,
P2PSigner
:
p2pSignerSetup
,
P2PSigner
:
p2pSignerSetup
,
}
}
...
...
op-proposer/config.go
View file @
a6b8a697
...
@@ -57,6 +57,11 @@ type Config struct {
...
@@ -57,6 +57,11 @@ type Config struct {
// LogTerminal if true, will log to stdout in terminal format. Otherwise the
// LogTerminal if true, will log to stdout in terminal format. Otherwise the
// output will be in JSON format.
// output will be in JSON format.
LogTerminal
bool
LogTerminal
bool
// Flags for the pprof server
PprofEnabled
bool
PprofAddr
string
PprofPort
string
}
}
// NewConfig parses the Config from the provided flags or environment variables.
// NewConfig parses the Config from the provided flags or environment variables.
...
@@ -74,7 +79,10 @@ func NewConfig(ctx *cli.Context) Config {
...
@@ -74,7 +79,10 @@ func NewConfig(ctx *cli.Context) Config {
Mnemonic
:
ctx
.
GlobalString
(
flags
.
MnemonicFlag
.
Name
),
Mnemonic
:
ctx
.
GlobalString
(
flags
.
MnemonicFlag
.
Name
),
L2OutputHDPath
:
ctx
.
GlobalString
(
flags
.
L2OutputHDPathFlag
.
Name
),
L2OutputHDPath
:
ctx
.
GlobalString
(
flags
.
L2OutputHDPathFlag
.
Name
),
/* Optional Flags */
/* Optional Flags */
LogLevel
:
ctx
.
GlobalString
(
flags
.
LogLevelFlag
.
Name
),
LogLevel
:
ctx
.
GlobalString
(
flags
.
LogLevelFlag
.
Name
),
LogTerminal
:
ctx
.
GlobalBool
(
flags
.
LogTerminalFlag
.
Name
),
LogTerminal
:
ctx
.
GlobalBool
(
flags
.
LogTerminalFlag
.
Name
),
PprofEnabled
:
ctx
.
GlobalBool
(
flags
.
PprofEnabledFlag
.
Name
),
PprofAddr
:
ctx
.
GlobalString
(
flags
.
PprofAddrFlag
.
Name
),
PprofPort
:
ctx
.
GlobalString
(
flags
.
PprofPortFlag
.
Name
),
}
}
}
}
op-proposer/flags/flags.go
View file @
a6b8a697
...
@@ -95,6 +95,23 @@ var (
...
@@ -95,6 +95,23 @@ var (
"in JSON format."
,
"in JSON format."
,
EnvVar
:
prefixEnvVar
(
"LOG_TERMINAL"
),
EnvVar
:
prefixEnvVar
(
"LOG_TERMINAL"
),
}
}
PprofEnabledFlag
=
cli
.
BoolFlag
{
Name
:
"pprof.enabled"
,
Usage
:
"Enable the pprof server"
,
EnvVar
:
prefixEnvVar
(
"PPROF_ENABLED"
),
}
PprofAddrFlag
=
cli
.
StringFlag
{
Name
:
"pprof.addr"
,
Usage
:
"pprof listening address"
,
Value
:
"0.0.0.0"
,
EnvVar
:
prefixEnvVar
(
"PPROF_ADDR"
),
}
PprofPortFlag
=
cli
.
IntFlag
{
Name
:
"pprof.port"
,
Usage
:
"pprof listening port"
,
Value
:
6060
,
EnvVar
:
prefixEnvVar
(
"PPROF_PORT"
),
}
)
)
var
requiredFlags
=
[]
cli
.
Flag
{
var
requiredFlags
=
[]
cli
.
Flag
{
...
@@ -113,6 +130,9 @@ var requiredFlags = []cli.Flag{
...
@@ -113,6 +130,9 @@ var requiredFlags = []cli.Flag{
var
optionalFlags
=
[]
cli
.
Flag
{
var
optionalFlags
=
[]
cli
.
Flag
{
LogLevelFlag
,
LogLevelFlag
,
LogTerminalFlag
,
LogTerminalFlag
,
PprofEnabledFlag
,
PprofAddrFlag
,
PprofPortFlag
,
}
}
// Flags contains the list of configuration options available to the binary.
// Flags contains the list of configuration options available to the binary.
...
...
op-proposer/l2_output_submitter.go
View file @
a6b8a697
...
@@ -3,6 +3,9 @@ package op_proposer
...
@@ -3,6 +3,9 @@ package op_proposer
import
(
import
(
"context"
"context"
"fmt"
"fmt"
"net"
"net/http"
_
"net/http/pprof"
"os"
"os"
"os/signal"
"os/signal"
"syscall"
"syscall"
...
@@ -68,6 +71,27 @@ func Main(version string) func(ctx *cli.Context) error {
...
@@ -68,6 +71,27 @@ func Main(version string) func(ctx *cli.Context) error {
l
.
Info
(
"L2 Output Submitter started"
)
l
.
Info
(
"L2 Output Submitter started"
)
if
cfg
.
PprofEnabled
{
var
srv
http
.
Server
srv
.
Addr
=
net
.
JoinHostPort
(
cfg
.
PprofAddr
,
cfg
.
PprofPort
)
// Start pprof server + register it's shutdown
go
func
()
{
l
.
Info
(
"pprof server started"
,
"addr"
,
srv
.
Addr
)
if
err
:=
srv
.
ListenAndServe
();
err
!=
http
.
ErrServerClosed
{
l
.
Error
(
"error in pprof server"
,
"err"
,
err
)
}
else
{
l
.
Info
(
"pprof server shutting down"
)
}
}()
defer
func
()
{
shutCtx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
10
*
time
.
Second
)
defer
cancel
()
err
:=
srv
.
Shutdown
(
shutCtx
)
l
.
Info
(
"pprof server shut down"
,
"err"
,
err
)
}()
}
interruptChannel
:=
make
(
chan
os
.
Signal
,
1
)
interruptChannel
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
interruptChannel
,
[]
os
.
Signal
{
signal
.
Notify
(
interruptChannel
,
[]
os
.
Signal
{
os
.
Interrupt
,
os
.
Interrupt
,
...
...
ops-bedrock/devnet-up.sh
View file @
a6b8a697
...
@@ -58,9 +58,9 @@ function wait_up {
...
@@ -58,9 +58,9 @@ function wait_up {
mkdir
-p
./.devnet
mkdir
-p
./.devnet
if
[
!
-f
./.devnet/rollup.json
]
;
then
if
[
!
-f
./.devnet/rollup.json
]
;
then
GENESIS_TIMESTAMP
=
$(
date
+%s | xargs
printf
"0x%x"
)
L1_
GENESIS_TIMESTAMP
=
$(
date
+%s | xargs
printf
"0x%x"
)
else
else
GENESIS_TIMESTAMP
=
$(
jq
'.timestamp'
< .devnet/genesis-l1.json
)
L1_
GENESIS_TIMESTAMP
=
$(
jq
'.timestamp'
< .devnet/genesis-l1.json
)
fi
fi
# Regenerate the L1 genesis file if necessary. The existence of the genesis
# Regenerate the L1 genesis file if necessary. The existence of the genesis
...
@@ -69,7 +69,7 @@ if [ ! -f ./.devnet/genesis-l1.json ]; then
...
@@ -69,7 +69,7 @@ if [ ! -f ./.devnet/genesis-l1.json ]; then
echo
"Regenerating L1 genesis."
echo
"Regenerating L1 genesis."
(
(
cd
$CONTRACTS_BEDROCK
cd
$CONTRACTS_BEDROCK
L
2OO_STARTING_BLOCK_TIMESTAMP
=
$
GENESIS_TIMESTAMP
npx hardhat genesis-l1
\
L
1_GENESIS_TIMESTAMP
=
$L1_
GENESIS_TIMESTAMP
npx hardhat genesis-l1
\
--outfile
genesis-l1.json
--outfile
genesis-l1.json
mv
genesis-l1.json ../../.devnet/genesis-l1.json
mv
genesis-l1.json ../../.devnet/genesis-l1.json
)
)
...
@@ -89,7 +89,7 @@ if [ ! -d $CONTRACTS_BEDROCK/deployments/$NETWORK ]; then
...
@@ -89,7 +89,7 @@ if [ ! -d $CONTRACTS_BEDROCK/deployments/$NETWORK ]; then
(
(
echo
"Deploying contracts."
echo
"Deploying contracts."
cd
$CONTRACTS_BEDROCK
cd
$CONTRACTS_BEDROCK
L
2OO_STARTING_BLOCK_TIMESTAMP
=
$
GENESIS_TIMESTAMP
yarn hardhat
--network
$NETWORK
deploy
L
1_GENESIS_TIMESTAMP
=
$L1_
GENESIS_TIMESTAMP
yarn hardhat
--network
$NETWORK
deploy
)
)
else
else
echo
"Contracts already deployed, skipping."
echo
"Contracts already deployed, skipping."
...
@@ -99,7 +99,7 @@ if [ ! -f ./.devnet/genesis-l2.json ]; then
...
@@ -99,7 +99,7 @@ if [ ! -f ./.devnet/genesis-l2.json ]; then
(
(
echo
"Creating L2 genesis file."
echo
"Creating L2 genesis file."
cd
$CONTRACTS_BEDROCK
cd
$CONTRACTS_BEDROCK
L
2OO_STARTING_BLOCK_TIMESTAMP
=
$
GENESIS_TIMESTAMP
npx hardhat
--network
$NETWORK
genesis-l2
L
1_GENESIS_TIMESTAMP
=
$L1_
GENESIS_TIMESTAMP
npx hardhat
--network
$NETWORK
genesis-l2
mv
genesis.json ../../.devnet/genesis-l2.json
mv
genesis.json ../../.devnet/genesis-l2.json
echo
"Created L2 genesis."
echo
"Created L2 genesis."
)
)
...
@@ -120,7 +120,7 @@ if [ ! -f ./.devnet/rollup.json ]; then
...
@@ -120,7 +120,7 @@ if [ ! -f ./.devnet/rollup.json ]; then
(
(
echo
"Building rollup config..."
echo
"Building rollup config..."
cd
$CONTRACTS_BEDROCK
cd
$CONTRACTS_BEDROCK
L
2OO_STARTING_BLOCK_TIMESTAMP
=
$
GENESIS_TIMESTAMP
npx hardhat
--network
$NETWORK
rollup-config
L
1_GENESIS_TIMESTAMP
=
$L1_
GENESIS_TIMESTAMP
npx hardhat
--network
$NETWORK
rollup-config
mv
rollup.json ../../.devnet/rollup.json
mv
rollup.json ../../.devnet/rollup.json
)
)
else
else
...
...
ops-bedrock/docker-compose.yml
View file @
a6b8a697
...
@@ -63,10 +63,12 @@ services:
...
@@ -63,10 +63,12 @@ services:
--metrics.enabled
--metrics.enabled
--metrics.addr=0.0.0.0
--metrics.addr=0.0.0.0
--metrics.port=7300
--metrics.port=7300
--pprof.enabled
ports
:
ports
:
-
"
7545:8545"
-
"
7545:8545"
-
"
9003:9003"
-
"
9003:9003"
-
"
7300:7300"
-
"
7300:7300"
-
"
6060:6060"
volumes
:
volumes
:
-
${PWD}/p2p-sequencer-key.txt:/config/p2p-sequencer-key.txt
-
${PWD}/p2p-sequencer-key.txt:/config/p2p-sequencer-key.txt
-
${PWD}/p2p-node-key.txt:/config/p2p-node-key.txt
-
${PWD}/p2p-node-key.txt:/config/p2p-node-key.txt
...
@@ -82,6 +84,8 @@ services:
...
@@ -82,6 +84,8 @@ services:
build
:
build
:
context
:
../
context
:
../
dockerfile
:
./op-proposer/Dockerfile
dockerfile
:
./op-proposer/Dockerfile
ports
:
-
"
6062:6060"
environment
:
environment
:
L1_ETH_RPC
:
http://l1:8545
L1_ETH_RPC
:
http://l1:8545
L2_ETH_RPC
:
http://l2:8545
L2_ETH_RPC
:
http://l2:8545
...
@@ -94,6 +98,7 @@ services:
...
@@ -94,6 +98,7 @@ services:
OUTPUT_SUBMITTER_L2_OUTPUT_HD_PATH
:
"
m/44'/60'/0'/0/1"
OUTPUT_SUBMITTER_L2_OUTPUT_HD_PATH
:
"
m/44'/60'/0'/0/1"
OUTPUT_SUBMITTER_LOG_TERMINAL
:
"
true"
OUTPUT_SUBMITTER_LOG_TERMINAL
:
"
true"
L2OO_ADDRESS
:
"
${L2OO_ADDRESS}"
L2OO_ADDRESS
:
"
${L2OO_ADDRESS}"
OUTPUT_SUBMITTER_PPROF_ENABLED
:
"
true"
op-batcher
:
op-batcher
:
depends_on
:
depends_on
:
...
@@ -103,6 +108,8 @@ services:
...
@@ -103,6 +108,8 @@ services:
build
:
build
:
context
:
../
context
:
../
dockerfile
:
./op-batcher/Dockerfile
dockerfile
:
./op-batcher/Dockerfile
ports
:
-
"
6061:6060"
environment
:
environment
:
L1_ETH_RPC
:
http://l1:8545
L1_ETH_RPC
:
http://l1:8545
L2_ETH_RPC
:
http://l2:8545
L2_ETH_RPC
:
http://l2:8545
...
@@ -120,6 +127,7 @@ services:
...
@@ -120,6 +127,7 @@ services:
BATCH_SUBMITTER_SEQUENCER_GENESIS_HASH
:
"
${SEQUENCER_GENESIS_HASH}"
BATCH_SUBMITTER_SEQUENCER_GENESIS_HASH
:
"
${SEQUENCER_GENESIS_HASH}"
BATCH_SUBMITTER_SEQUENCER_BATCH_INBOX_ADDRESS
:
"
${SEQUENCER_BATCH_INBOX_ADDRESS}"
BATCH_SUBMITTER_SEQUENCER_BATCH_INBOX_ADDRESS
:
"
${SEQUENCER_BATCH_INBOX_ADDRESS}"
BATCH_SUBMITTER_LOG_TERMINAL
:
"
true"
BATCH_SUBMITTER_LOG_TERMINAL
:
"
true"
BATCH_SUBMITTER_PPROF_ENABLED
:
"
true"
stateviz
:
stateviz
:
build
:
build
:
...
...
packages/contracts-bedrock/.gas-snapshot
View file @
a6b8a697
...
@@ -135,14 +135,14 @@ OptimismPortalUpgradeable_Test:test_cannotInitImpl() (gas: 10686)
...
@@ -135,14 +135,14 @@ OptimismPortalUpgradeable_Test:test_cannotInitImpl() (gas: 10686)
OptimismPortalUpgradeable_Test:test_cannotInitProxy() (gas: 15662)
OptimismPortalUpgradeable_Test:test_cannotInitProxy() (gas: 15662)
OptimismPortalUpgradeable_Test:test_initValuesOnProxy() (gas: 15967)
OptimismPortalUpgradeable_Test:test_initValuesOnProxy() (gas: 15967)
OptimismPortalUpgradeable_Test:test_upgrading() (gas: 230843)
OptimismPortalUpgradeable_Test:test_upgrading() (gas: 230843)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnInsufficientGas() (gas: 16074
9
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnInsufficientGas() (gas: 16074
3
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnInvalidOutputRootProof() (gas: 812
85
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnInvalidOutputRootProof() (gas: 812
41
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnRecentWithdrawal() (gas: 53001)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnRecentWithdrawal() (gas: 53001)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnReentrancy() (gas: 2055
86
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnReentrancy() (gas: 2055
21
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnReplay() (gas: 2789
19
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnReplay() (gas: 2789
41
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnSelfCall() (gas: 505
17
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOnSelfCall() (gas: 505
39
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOninvalidWithdrawalProof() (gas: 148562)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_revertsOninvalidWithdrawalProof() (gas: 148562)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_succeeds() (gas: 18
6991
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_succeeds() (gas: 18
7013
)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_targetFails() (gas: 289662)
OptimismPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_targetFails() (gas: 289662)
OptimismPortal_Test:test_OptimismPortalConstructor() (gas: 17341)
OptimismPortal_Test:test_OptimismPortalConstructor() (gas: 17341)
OptimismPortal_Test:test_OptimismPortalContractCreationReverts() (gas: 14199)
OptimismPortal_Test:test_OptimismPortalContractCreationReverts() (gas: 14199)
...
...
packages/contracts-bedrock/contracts/test/OptimismPortal.t.sol
View file @
a6b8a697
...
@@ -275,7 +275,7 @@ contract OptimismPortal_FinalizeWithdrawal_Test is Portal_Initializer {
...
@@ -275,7 +275,7 @@ contract OptimismPortal_FinalizeWithdrawal_Test is Portal_Initializer {
event WithdrawalFinalized(bytes32 indexed, bool success);
event WithdrawalFinalized(bytes32 indexed, bool success);
// Use a constructor to set the storage vars above, so as to minimize the number of ffi calls.
// Use a constructor to set the storage vars above, so as to minimize the number of ffi calls.
constructor()
public
{
constructor() {
super.setUp();
super.setUp();
_defaultTx = Types.WithdrawalTransaction({
_defaultTx = Types.WithdrawalTransaction({
nonce: 0,
nonce: 0,
...
@@ -425,8 +425,8 @@ contract OptimismPortal_FinalizeWithdrawal_Test is Portal_Initializer {
...
@@ -425,8 +425,8 @@ contract OptimismPortal_FinalizeWithdrawal_Test is Portal_Initializer {
(
(
bytes32 stateRoot,
bytes32 stateRoot,
bytes32 storageRoot,
bytes32 storageRoot,
bytes32 outputRoot
,
,
bytes32 withdrawalHash
,
,
bytes memory withdrawalProof
bytes memory withdrawalProof
) = ffi.getFinalizeWithdrawalTransactionInputs(insufficientGasTx);
) = ffi.getFinalizeWithdrawalTransactionInputs(insufficientGasTx);
Types.OutputRootProof memory outputRootProof = Types.OutputRootProof({
Types.OutputRootProof memory outputRootProof = Types.OutputRootProof({
...
@@ -526,12 +526,15 @@ contract OptimismPortal_FinalizeWithdrawal_Test is Portal_Initializer {
...
@@ -526,12 +526,15 @@ contract OptimismPortal_FinalizeWithdrawal_Test is Portal_Initializer {
function test_finalizeWithdrawalTransaction_differential(
function test_finalizeWithdrawalTransaction_differential(
address _sender,
address _sender,
address _target,
address _target,
uint
64
_value,
uint
256
_value,
uint
8
_gasLimit,
uint
256
_gasLimit,
bytes memory _data
bytes memory _data
) external {
) external {
// Cannot call the optimism portal
// Cannot call the optimism portal
vm.assume(_target != address(op));
vm.assume(_target != address(op));
// Total ETH supply is currently about 120M ETH.
vm.assume(_value < 200_000_000 ether);
vm.assume(_gasLimit < 50_000_000);
uint256 _nonce = messagePasser.nonce();
uint256 _nonce = messagePasser.nonce();
Types.WithdrawalTransaction memory _tx = Types.WithdrawalTransaction({
Types.WithdrawalTransaction memory _tx = Types.WithdrawalTransaction({
nonce: _nonce,
nonce: _nonce,
...
...
packages/contracts-bedrock/deploy-config/devnetL1.ts
View file @
a6b8a697
...
@@ -2,19 +2,20 @@ import { ethers } from 'ethers'
...
@@ -2,19 +2,20 @@ import { ethers } from 'ethers'
const
{
env
}
=
process
const
{
env
}
=
process
const
starting
Timestamp
=
const
l1Genesis
Timestamp
=
typeof
env
.
L
2OO_STARTING_BLOCK
_TIMESTAMP
===
'
string
'
typeof
env
.
L
1_GENESIS
_TIMESTAMP
===
'
string
'
?
ethers
.
BigNumber
.
from
(
env
.
L
2OO_STARTING_BLOCK
_TIMESTAMP
).
toNumber
()
?
ethers
.
BigNumber
.
from
(
env
.
L
1_GENESIS
_TIMESTAMP
).
toNumber
()
:
Math
.
floor
(
Date
.
now
()
/
1000
)
:
Math
.
floor
(
Date
.
now
()
/
1000
)
const
config
=
{
const
config
=
{
submissionInterval
:
6
,
submissionInterval
:
6
,
genesisOutput
:
ethers
.
constants
.
HashZero
,
genesisOutput
:
ethers
.
constants
.
HashZero
,
historicalBlocks
:
0
,
historicalBlocks
:
0
,
l1StartingBlockTag
:
'
earliest
'
,
startingBlockNumber
:
0
,
startingBlockNumber
:
0
,
l2BlockTime
:
2
,
l2BlockTime
:
2
,
starting
Timestamp
,
l1Genesis
Timestamp
,
sequencerAddress
:
'
0x70997970C51812dc3A010C7d01b50e0d17dc79C8
'
,
sequencerAddress
:
'
0x70997970C51812dc3A010C7d01b50e0d17dc79C8
'
,
l2CrossDomainMessengerOwner
:
ethers
.
constants
.
AddressZero
,
l2CrossDomainMessengerOwner
:
ethers
.
constants
.
AddressZero
,
...
...
packages/contracts-bedrock/deploy-config/goerli.ts
View file @
a6b8a697
import
{
ethers
}
from
'
ethers
'
import
{
ethers
}
from
'
ethers
'
const
sequencerAddress
=
'
0x6c23a0dcdfc44b7a57bed148de598895e398d984
'
const
sequencerAddress
=
'
0x6c23a0dcdfc44b7a57bed148de598895e398d984
'
const
startingTimestamp
=
1658777882
const
l1StartingBlockTag
=
'
0xafce66a0a2446856112e4069b275ad32b1f4a607888f9c4c59eddf9be81f8670
'
const
config
=
{
const
config
=
{
submissionInterval
:
6
,
submissionInterval
:
6
,
...
@@ -9,7 +10,7 @@ const config = {
...
@@ -9,7 +10,7 @@ const config = {
historicalBlocks
:
0
,
historicalBlocks
:
0
,
startingBlockNumber
:
0
,
startingBlockNumber
:
0
,
l2BlockTime
:
2
,
l2BlockTime
:
2
,
startingTimestamp
,
l1StartingBlockTag
,
sequencerAddress
,
sequencerAddress
,
l2CrossDomainMessengerOwner
:
ethers
.
constants
.
AddressZero
,
l2CrossDomainMessengerOwner
:
ethers
.
constants
.
AddressZero
,
...
...
packages/contracts-bedrock/deploy-config/hardhat.ts
View file @
a6b8a697
...
@@ -2,9 +2,9 @@ import { ethers } from 'ethers'
...
@@ -2,9 +2,9 @@ import { ethers } from 'ethers'
const
{
env
}
=
process
const
{
env
}
=
process
const
starting
Timestamp
=
const
l1Genesis
Timestamp
=
typeof
env
.
L
2OO_STARTING_BLOCK
_TIMESTAMP
===
'
string
'
typeof
env
.
L
1_GENESIS
_TIMESTAMP
===
'
string
'
?
ethers
.
BigNumber
.
from
(
env
.
L
2OO_STARTING_BLOCK
_TIMESTAMP
).
toNumber
()
?
ethers
.
BigNumber
.
from
(
env
.
L
1_GENESIS
_TIMESTAMP
).
toNumber
()
:
Math
.
floor
(
Date
.
now
()
/
1000
)
:
Math
.
floor
(
Date
.
now
()
/
1000
)
const
config
=
{
const
config
=
{
...
@@ -12,8 +12,9 @@ const config = {
...
@@ -12,8 +12,9 @@ const config = {
genesisOutput
:
ethers
.
constants
.
HashZero
,
genesisOutput
:
ethers
.
constants
.
HashZero
,
historicalBlocks
:
0
,
historicalBlocks
:
0
,
startingBlockNumber
:
0
,
startingBlockNumber
:
0
,
l1StartingBlockTag
:
'
earliest
'
,
l2BlockTime
:
2
,
l2BlockTime
:
2
,
starting
Timestamp
,
l1Genesis
Timestamp
,
sequencerAddress
:
'
0x70997970C51812dc3A010C7d01b50e0d17dc79C8
'
,
sequencerAddress
:
'
0x70997970C51812dc3A010C7d01b50e0d17dc79C8
'
,
maxSequencerDrift
:
10
,
maxSequencerDrift
:
10
,
sequencerWindowSize
:
4
,
sequencerWindowSize
:
4
,
...
...
packages/contracts-bedrock/deploy/000-L2OutputOracle.deploy.ts
View file @
a6b8a697
...
@@ -10,13 +10,10 @@ const deployFn: DeployFunction = async (hre) => {
...
@@ -10,13 +10,10 @@ const deployFn: DeployFunction = async (hre) => {
const
{
deployer
}
=
await
hre
.
getNamedAccounts
()
const
{
deployer
}
=
await
hre
.
getNamedAccounts
()
const
{
deployConfig
}
=
hre
const
{
deployConfig
}
=
hre
if
(
const
l1
=
hre
.
ethers
.
getDefaultProvider
()
typeof
deployConfig
.
startingTimestamp
!==
'
number
'
||
const
l1StartingBlock
=
await
l1
.
getBlock
(
deployConfig
.
l1StartingBlockTag
)
isNaN
(
deployConfig
.
startingTimestamp
)
if
(
l1StartingBlock
===
null
)
{
)
{
throw
new
Error
(
`Cannot fetch block tag
${
deployConfig
.
l1StartingBlockTag
}
`
)
throw
new
Error
(
'
Cannot deploy L2OutputOracle without specifying a valid startingTimestamp.
'
)
}
}
await
deploy
(
'
L2OutputOracleProxy
'
,
{
await
deploy
(
'
L2OutputOracleProxy
'
,
{
...
@@ -34,7 +31,7 @@ const deployFn: DeployFunction = async (hre) => {
...
@@ -34,7 +31,7 @@ const deployFn: DeployFunction = async (hre) => {
deployConfig
.
genesisOutput
,
deployConfig
.
genesisOutput
,
deployConfig
.
historicalBlocks
,
deployConfig
.
historicalBlocks
,
deployConfig
.
startingBlockNumber
,
deployConfig
.
startingBlockNumber
,
deployConfig
.
startingT
imestamp
,
l1StartingBlock
.
t
imestamp
,
deployConfig
.
l2BlockTime
,
deployConfig
.
l2BlockTime
,
deployConfig
.
sequencerAddress
,
deployConfig
.
sequencerAddress
,
deployConfig
.
outputOracleOwner
,
deployConfig
.
outputOracleOwner
,
...
@@ -84,7 +81,7 @@ const deployFn: DeployFunction = async (hre) => {
...
@@ -84,7 +81,7 @@ const deployFn: DeployFunction = async (hre) => {
}
}
const
startingTimestamp
=
await
L2OutputOracle
.
STARTING_TIMESTAMP
()
const
startingTimestamp
=
await
L2OutputOracle
.
STARTING_TIMESTAMP
()
if
(
!
startingTimestamp
.
eq
(
BigNumber
.
from
(
deployConfig
.
startingT
imestamp
)))
{
if
(
!
startingTimestamp
.
eq
(
BigNumber
.
from
(
l1StartingBlock
.
t
imestamp
)))
{
throw
new
Error
(
'
starting timestamp misconfigured
'
)
throw
new
Error
(
'
starting timestamp misconfigured
'
)
}
}
const
l2BlockTime
=
await
L2OutputOracle
.
L2_BLOCK_TIME
()
const
l2BlockTime
=
await
L2OutputOracle
.
L2_BLOCK_TIME
()
...
...
packages/contracts-bedrock/hardhat.config.ts
View file @
a6b8a697
...
@@ -74,18 +74,15 @@ const config: HardhatUserConfig = {
...
@@ -74,18 +74,15 @@ const config: HardhatUserConfig = {
historicalBlocks
:
{
historicalBlocks
:
{
type
:
'
number
'
,
type
:
'
number
'
,
},
},
startingBlockNumber
:
{
type
:
'
number
'
,
},
startingTimestamp
:
{
type
:
'
number
'
,
},
sequencerAddress
:
{
sequencerAddress
:
{
type
:
'
address
'
,
type
:
'
address
'
,
},
},
outputOracleOwner
:
{
outputOracleOwner
:
{
type
:
'
address
'
,
type
:
'
address
'
,
},
},
l1StartingBlockTag
:
{
type
:
'
string
'
,
},
},
},
external
:
{
external
:
{
contracts
:
[
contracts
:
[
...
...
packages/contracts-bedrock/tasks/genesis-l1.ts
View file @
a6b8a697
...
@@ -61,7 +61,7 @@ task('genesis-l1', 'create a genesis config')
...
@@ -61,7 +61,7 @@ task('genesis-l1', 'create a genesis config')
}
}
}
}
const
timestamp
=
hre
.
deployConfig
.
starting
Timestamp
const
timestamp
=
hre
.
deployConfig
.
l1Genesis
Timestamp
if
(
timestamp
===
undefined
)
{
if
(
timestamp
===
undefined
)
{
throw
new
Error
(
'
Must configure starting block timestamp
'
)
throw
new
Error
(
'
Must configure starting block timestamp
'
)
}
}
...
...
packages/contracts-bedrock/tasks/genesis-l2.ts
View file @
a6b8a697
...
@@ -462,8 +462,12 @@ task('genesis-l2', 'create a genesis config')
...
@@ -462,8 +462,12 @@ task('genesis-l2', 'create a genesis config')
}
}
}
}
const
portal
=
await
hre
.
deployments
.
get
(
'
OptimismPortalProxy
'
)
const
l1StartingBlock
=
await
l1
.
getBlock
(
deployConfig
.
l1StartingBlockTag
)
const
l1StartingBlock
=
await
l1
.
getBlock
(
portal
.
receipt
.
blockHash
)
if
(
l1StartingBlock
===
null
)
{
throw
new
Error
(
`Cannot fetch block tag
${
deployConfig
.
l1StartingBlockTag
}
`
)
}
if
(
l1StartingBlock
===
null
)
{
if
(
l1StartingBlock
===
null
)
{
console
.
log
(
`Unable to fetch L1 starting timestamp`
)
console
.
log
(
`Unable to fetch L1 starting timestamp`
)
...
...
packages/contracts-bedrock/tasks/rollup-config.ts
View file @
a6b8a697
...
@@ -23,13 +23,18 @@ task('rollup-config', 'create a genesis config')
...
@@ -23,13 +23,18 @@ task('rollup-config', 'create a genesis config')
const
l2Genesis
=
await
l2
.
getBlock
(
'
earliest
'
)
const
l2Genesis
=
await
l2
.
getBlock
(
'
earliest
'
)
const
portal
=
await
hre
.
deployments
.
get
(
'
OptimismPortalProxy
'
)
const
portal
=
await
hre
.
deployments
.
get
(
'
OptimismPortalProxy
'
)
const
l1StartingBlock
=
await
l1
.
getBlock
(
portal
.
receipt
.
blockHash
)
const
l1StartingBlock
=
await
l1
.
getBlock
(
deployConfig
.
l1StartingBlockTag
)
if
(
l1StartingBlock
===
null
)
{
throw
new
Error
(
`Cannot fetch block tag
${
deployConfig
.
l1StartingBlockTag
}
`
)
}
const
config
:
OpNodeConfig
=
{
const
config
:
OpNodeConfig
=
{
genesis
:
{
genesis
:
{
l1
:
{
l1
:
{
hash
:
portal
.
receipt
.
blockH
ash
,
hash
:
l1StartingBlock
.
h
ash
,
number
:
portal
.
receipt
.
blockN
umber
,
number
:
l1StartingBlock
.
n
umber
,
},
},
l2
:
{
l2
:
{
hash
:
l2Genesis
.
hash
,
hash
:
l2Genesis
.
hash
,
...
...
packages/contracts-bedrock/tsconfig.json
View file @
a6b8a697
...
@@ -4,7 +4,5 @@
...
@@ -4,7 +4,5 @@
"rootDir"
:
"./src"
,
"rootDir"
:
"./src"
,
"outDir"
:
"./dist"
"outDir"
:
"./dist"
},
},
"include"
:
[
"include"
:
[
"src/**/*"
]
"src/**/*"
]
}
}
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