opnode

package module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2022 License: MIT Imports: 15 Imported by: 7

README

op-node

This is the reference implementation of the rollup-node spec.

Compiling

Compile a binary:

cd op-node
go build -o bin/op-node ./cmd

Testing

Run op-node unit tests:

cd op-node
go test ./...

Run end-to-end tests:

cd op-e2e
go test ./...

Running

Options can be reviewed with:

./bin/op-node --help

To start syncing the rollup:

Connect to at least one L1 RPC and L2 execution engine:

  • L1: use any L1 node / RPC (websocket connection path may differ)
  • L2: run the Optimism fork of geth: op-geth
# websockets or IPC preferred for event notifications to improve sync, http RPC works with adaptive polling.
op \
  --l1=ws://localhost:8546 --l2=ws//localhost:9001 \
  --rollup.config=./path-to-network-config/rollup.json \
  --rpc.addr=127.0.0.1 \
  --rpc.port=7000

Devnet Genesis Generation

The op-node can generate geth compatible genesis.json files. These files can be used with geth init to initialize the StateDB with accounts, storage, code and balances. The L2 state must be initialized with predeploy contracts that exist in the state and act as system level contracts. The op-node can generate a genesis file with these predeploys configured correctly given hardhat compilation artifacts, hardhat deployment artifacts, a L1 RPC URL and a deployment config.

The hardhat compilation artifacts are produced by hardhat compile. The native hardhat compiler toolchain produces them by default and the @foundry-rs/hardhat plugin can also produce them when using the foundry compiler toolchain. They can usually be found in an artifacts directory.

The hardhat deployment artifacts are produced by running hardhat deploy. These exist to make it easy to track deployments of smart contract systems over time. They can usually be found in a deployments directory.

The deployment config contains all of the information required to deploy the system. It can be found in packages/contracts-bedrock/deploy-config. Each deploy config file can be JSON or TypeScript, although only JSON files are supported by the op-node. The network name must match the name of the file in the deploy config directory.

Example usage:

$ op-node genesis devnet-l2 \
   --artifacts $CONTRACTS_BEDROCK/artifacts,$CONTRACTS_GOVERNANCE/artifacts \
   --network $NETWORK \
   --deployments $CONTRACTS_BEDROCK/deployments \
   --deploy-config $CONTRACTS_BEDROCK/deploy-config \
   --rpc-url http://localhost:8545 \

Note that both contracts-bedrock and contracts-governance are required as the GovernanceToken is also a predeploy and it lives in contracts-governance.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewConfig

func NewConfig(ctx *cli.Context, log log.Logger) (*node.Config, error)

NewConfig creates a Config from the provided flags or environment variables.

func NewDriverConfig

func NewDriverConfig(ctx *cli.Context) (*driver.Config, error)

func NewL1EndpointConfig

func NewL1EndpointConfig(ctx *cli.Context) (*node.L1EndpointConfig, error)

func NewL2EndpointConfig

func NewL2EndpointConfig(ctx *cli.Context, log log.Logger) (*node.L2EndpointConfig, error)

func NewLogConfig

func NewLogConfig(ctx *cli.Context) (node.LogConfig, error)

NewLogConfig creates a log config from the provided flags or environment variables.

func NewRollupConfig

func NewRollupConfig(ctx *cli.Context) (*rollup.Config, error)

func NewSnapshotLogger

func NewSnapshotLogger(ctx *cli.Context) (log.Logger, error)

Types

This section is empty.

Directories

Path Synopsis
cmd
p2p
derive
Package derive provides the data transformation functions that take L1 data and turn it into L2 blocks and results.
Package derive provides the data transformation functions that take L1 data and turn it into L2 blocks and results.
sync
The sync package is responsible for reconciling L1 and L2.
The sync package is responsible for reconciling L1 and L2.
Package testlog provides a log handler for unit tests.
Package testlog provides a log handler for unit tests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL