.. | ||
l2-only.md | ||
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)
We support running just the L2 part of stack, given an external L1 endpoint. Follow the L2 only doc for the same.
Setup
Clone required repositories:
laconic-so --stack fixturenet-optimism setup-repositories
# If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories mentioned below and re-run the command
Checkout to the required versions and branches in repos:
# Optimism
cd ~/cerc/optimism
git checkout v1.0.4
Build the container images:
laconic-so --stack fixturenet-optimism build-containers
Note: this will take >10 mins depending on the specs of your machine, and requires 16GB of memory or greater.
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-node
cerc/optimism-op-batcher
cerc/optimism-op-proposer
Deploy
Deploy the stack:
laconic-so --stack fixturenet-optimism deploy up
If you get the error service "fixturenet-optimism-contracts" didn't complete successfully: exit 1
with ~25 lines of Traceback, wait 15-20 mins then re-run the command.
The fixturenet-optimism-contracts
service takes a while 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 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 30
Clear volumes created by this stack:
# List all relevant volumes
docker volume ls -q --filter "name=.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data"
# Remove all the listed volumes
docker volume rm $(docker volume ls -q --filter "name=.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data")
Troubleshooting
-
If
op-geth
service aborts or is restarted, the following error might occur in theop-node
service:WARN [02-16|21:22:02.868] Derivation process temporary error attempts=14 err="stage 0 failed resetting: temp: failed to find the L2 Heads to start from: failed to fetch L2 block by hash 0x0000000000000000000000000000000000000000000000000000000000000000: failed to determine block-hash of hash 0x0000000000000000000000000000000000000000000000000000000000000000, could not get payload: not found"
-
This means that the data directory that
op-geth
is using is corrupted and needs to be reinitialized; the containersop-geth
,op-node
andop-batcher
need to be started afresh:WARNING: This will reset the L2 chain; consequently, all the data on it will be lost
-
Stop and remove the concerned containers:
# List the containers docker ps -f "name=op-geth|op-node|op-batcher" # Force stop and remove the listed containers docker rm -f $(docker ps -qf "name=op-geth|op-node|op-batcher")
-
Remove the concerned volume:
# List the volume docker volume ls -q --filter name=l2_geth_data # Remove the listed volume docker volume rm $(docker volume ls -q --filter name=l2_geth_data)
-
Re-run the deployment command used in Deploy to restart the stopped containers
-
Known Issues
fixturenet-eth
currently starts fresh on a restart- Resource requirements (memory + time) for building the
cerc/foundry
image are on the higher sidecerc/optimism-contracts
image is currently based oncerc/foundry
(Optimism requires foundry installation)