forked from cerc-io/stack-orchestrator
be08ee81ea
* Remove unnecessary todos
* Set option to log commands in shell scripts
* Replace fixturenet-eth dependency with wait on endpoint
* Skip lighthouse node dependency check
* Update all services in the stack
* Use debug flag to enable shell commands logging
* Add bash in op-batcher container
* Update mobymask-v2 instructions
* Update fixturenet-optimism instructions
* Add descriptions for services
* Move ts files to container-build
* Take L1 RPC endpoint from the env file
* Add dev mode restriction for editing env file
Former-commit-id:
|
||
---|---|---|
.. | ||
README.md | ||
stack.yml |
fixturenet-optimism
Instructions to setup and deploy an end-to-end L1+L2 stack with fixturenet-eth (L1) and Optimism (L2)
Setup
Clone required repositories:
laconic-so --stack fixturenet-optimism setup-repositories
# Exclude cerc-io/go-ethereum repository if running L1 separately
laconic-so --stack fixturenet-optimism setup-repositories --exclude cerc-io/go-ethereum
Checkout to the required versions and branches in repos:
# Optimism
cd ~/cerc/optimism
git checkout @eth-optimism/sdk@0.0.0-20230329025055
Build the container images:
laconic-so --stack fixturenet-optimism build-containers
# Only build containers required for L2 if running L1 separately
laconic-so --stack fixturenet-optimism build-containers --include cerc/foundry,cerc/optimism-contracts,cerc/optimism-op-node,cerc/optimism-l2geth,cerc/optimism-op-batcher
This should create the required docker images in the local image registry:
cerc/go-ethereum
cerc/lighthouse
cerc/fixturenet-eth-geth
cerc/fixturenet-eth-lighthouse
cerc/foundry
cerc/optimism-contracts
cerc/optimism-l2geth
cerc/optimism-op-batcher
cerc/optimism-op-node
Deploy
(Optional) Update the l1-params.env file with L1 endpoint (L1_RPC
, L1_HOST
and L1_PORT
) and other params if running L1 separately
- NOTE:
- Stack Orchestrator needs to be run in
dev
mode to be able to edit the env file - If L1 is running on the host machine, use
host.docker.internal
as the hostname to access the host port
- Stack Orchestrator needs to be run in
Deploy the stack:
laconic-so --stack fixturenet-optimism deploy up
# Only start fixturenet-optimism pod (L2) if running L1 separately
laconic-so --stack fixturenet-optimism deploy up --include fixturenet-optimism
The fixturenet-optimism-contracts
service may take a while (~15 mins
) to complete running as it:
- waits for the 'Merge' to happen on L1
- waits for a finalized block to exist on L1 (so that it can be taken as a starting block for roll ups)
- deploys the L1 contracts
To list down and monitor the running containers:
laconic-so --stack fixturenet-optimism deploy ps
# With status
docker ps
# Check logs for a container
docker logs -f <CONTAINER_ID>
Clean up
Stop all services running in the background:
laconic-so --stack fixturenet-optimism deploy down
# If only ran fixturenet-optimism pod (L2)
laconic-so --stack fixturenet-optimism deploy down --include fixturenet-optimism
Clear volumes created by this stack:
# List all relevant volumes
docker volume ls -q --filter name=laconic*
# Remove all the listed volumes
docker volume rm $(docker volume ls -q --filter name=laconic*)
Known Issues
- Currently not supported:
- Stopping and restarting the stack from where it left off; currently starts fresh on a restart
- Resource requirements (memory + time) for building
cerc/foundry
image are on the higher sidecerc/optimism-contracts
image is currently based oncerc/foundry
(Optimism requires foundry installation)