The default package for Optimism
optimism_package:
participants:
- el_type: op-geth
cl_type: op-node
- el_type: op-reth
- el_type: op-erigon
- el_type: op-nethermind
ethereum_package:
network_params:
preset: minimal
Please note, by default your network will be running a minimal
preset Ethereum network. Click here to learn more about minimal preset. You can customize the L1 Ethereum network by modifying the ethereum_package
configuration.
You can also completely remove ethereum_package
from your configuration in which case it will default to a minimal
preset Ethereum network.
Kurtosis packages are parameterizable, meaning you can customize your network and its behavior to suit your needs by storing parameters in a file that you can pass in at runtime like so:
kurtosis run github.com/ethpandaops/optimism-package --args-file https://raw.githubusercontent.com/ethpandaops/optimism-package/main/network_params.yaml
For --args-file
you can pass a local file path or a URL to a file.
To clean up running enclaves and data, you can run:
kurtosis clean -a
This will stop and remove all running enclaves and delete all data.
The enclave will automatically deploy an optimism L2 contract on the L1 network. The contract address will be printed in the logs. You can use this contract address to interact with the L2 network.
Please refer to this Dockerfile if you want to see how the contract deployer image is built: Dockerfile
To configure the package behaviour, you can modify your network_params.yaml
file. The full YAML schema that can be passed in is as follows with the defaults provided:
optimism_package:
# Specification of the optimism-participants in the network
participants:
# EL(Execution Layer) Specific flags
# The type of EL client that should be started
# Valid values are:
# op-geth
# op-reth
# op-erigon
# op-nethermind
# op-besu
- el_type: geth
# The Docker image that should be used for the EL client; leave blank to use the default for the client type
# Defaults by client:
# - op-geth: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:latest
# - op-reth: parithoshj/op-reth:latest
# - op-erigon: testinprod/op-erigon:latest
# - op-nethermind: nethermindeth/nethermind:op-c482d56
# - op-besu: ghcr.io/optimism-java/op-besu:latest
el_image: ""
# CL(Consensus Layer) Specific flags
# The type of CL client that should be started
# Valid values are:
# op-node
# hildr
cl_type: op-node
# The Docker image that should be used for the CL client; leave blank to use the default for the client type
# Defaults by client:
# - op-node: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:develop
# - hildr: ghcr.io/optimism-java/hildr:latest
cl_image: ""
# Count of nodes to spin up for this participant
# Default to 1
count: 1
# Default configuration parameters for the network
network_params:
# Network name, used to enable syncing of alternative networks
# Defaults to "kurtosis"
network: "kurtosis"
# The network ID of the network.
# Must be unique for each network (if you run multiple networks)
# Defaults to "2151908"
network_id: "2151908"
# Seconds per slots
seconds_per_slot: 2
# Name of your rollup.
# Must be unique for each rollup (if you run multiple rollups)
# Defaults to "op-kurtosis"
name: "op-kurtosis"
# Triggering future forks in the network
# Fjord fork
# Defaults to 0 (genesis activation) - decimal value
# Offset is in seconds
fjord_time_offset: 0
# Granite fork
# Defaults to None - not activated - decimal value
# Offset is in seconds
granite_time_offset: ""
# Holocene fork
# Defaults to None - not activated - decimal value
# Offset is in seconds
holocene_time_offset: ""
# Interop fork
# Defaults to None - not activated - decimal value
# Offset is in seconds
interop_time_offset: ""
# Additional services to run alongside the network
# Defaults to []
# Available services:
# - blockscout
additional_services: []
# L2 contract deployer configuration
# The docker image that should be used for the L2 contract deployer
op_contract_deployer_params:
image: ethpandaops/optimism-contract-deployer:develop
It is required you to launch an L1 Ethereum node to interact with the L2 network. You can use the ethereum_package
to launch an Ethereum node. The ethereum_package
configuration is as follows:
optimism_package:
participants:
- el_type: op-geth
cl_type: op-node
additional_services:
- blockscout
ethereum_package:
participants:
- el_type: geth
- el_type: reth
network_params:
preset: minimal
additional_services:
- dora
- blockscout
Additionally, you can spin up multiple L2 networks by providing a list of L2 configuration parameters like so:
optimism_package:
- participants:
- el_type: op-geth
network_params:
name: op-rollup-one
network_id: "3151909"
additional_services:
- blockscout
- participants:
- el_type: op-geth
network_params:
name: op-rollup-two
network_id: "3151910"
additional_services:
- blockscout
ethereum_package:
participants:
- el_type: geth
- el_type: reth
network_params:
preset: minimal
additional_services:
- dora
- blockscout
Note: if configuring multiple L2s, make sure that the network_id
and name
are set to differentiate networks.
Please find examples of additional configurations in the test folder.