opnode

package
v1.5.0-rc.3 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2024 License: MIT, MIT Imports: 21 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 \
   --network $NETWORK \
   --deployments $CONTRACTS_BEDROCK/deployments \
   --deploy-config $CONTRACTS_BEDROCK/deploy-config \
   --rpc-url http://localhost:8545 \

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewBeaconEndpointConfig added in v1.5.0

func NewBeaconEndpointConfig(ctx *cli.Context) node.L1BeaconEndpointSetup

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 NewConfigPersistence added in v1.1.2

func NewConfigPersistence(ctx *cli.Context) node.ConfigPersistence

func NewDriverConfig

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

func NewL1EndpointConfig

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

func NewL2EndpointConfig

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

func NewRollupConfig

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

func NewSnapshotLogger

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

func NewSyncConfig added in v1.1.4

func NewSyncConfig(ctx *cli.Context, log log.Logger) (*sync.Config, error)

Types

This section is empty.

Directories

Path Synopsis
cmd
p2p
Package heartbeat provides a service for sending heartbeats to a server.
Package heartbeat provides a service for sending heartbeats to a server.
Package metrics provides a set of metrics for the op-node.
Package metrics provides a set of metrics for the op-node.
p2p
cli
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
Package sync is responsible for reconciling L1 and L2.
Package sync is responsible for reconciling L1 and L2.

Jump to

Keyboard shortcuts

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