Kurtosis devnet for running local SSV networks.
- Docker
- Kurtosis
The easiest way to get started is using the automated setup with the prepare command:
make run-with-prepareThis single command will:
- Clone the required repositories (ssv, anchor, ethereum2-monitor) if they don't exist
- Checkout to the correct branches (ssv: stage, anchor: unstable, ethereum2-monitor: main)
- Pull the latest changes for existing repositories
- Build the necessary Docker images
- Start the SSV network
If you prefer to manage the repositories and Docker images manually:
git clone https://github.com/ssvlabs/ssv.git
git checkout %YOUR_BRANCH%
docker build -t node/ssv . git clone https://github.com/sigp/anchor.git
git checkout origin/unstable
docker build -f Dockerfile.devnet -t node/anchor . git clone https://github.com/ssvlabs/ethereum2-monitor.git
docker build -t monitor . make run-with-prepare(default): Downloads/updates repos and runs the networkmake reset-with-prepare: Cleans everything and runs with fresh setup
make run: Runs with existing local repos and Docker imagesmake reset: Cleans and runs with existing setupmake prepare: Only prepares repositories and Docker images (without running)
make clean: Stops and removes the current enclavemake show: Shows currently running servicesmake restart-ssv-nodes: Restarts SSV node services
make run-with-preparemake runView the logs of the nodes
kurtosis service logs -f localnet {service-name}make showmake restart-ssv-nodesNOTE: When making changes to SSV Nodes locally, you need to build a new Docker image: docker build -t node/ssv .. Then run the following command to redeploy the nodes to the local network: make restart-ssv-nodes
docker build -t node/ssv .
make restart-ssv-nodesThe prepare command automatically manages the following repositories:
- SSV: Clones from
https://github.com/ssvlabs/ssv.gitand checks out thestagebranch - Anchor: Clones from
https://github.com/sigp/anchor.gitand checks out theunstablebranch - Ethereum2-Monitor: Clones from
https://github.com/ssvlabs/ethereum2-monitor.gitand checks out themainbranch
All repositories are cloned to the parent directory (../) relative to the ssv-mini project.
- The
preparecommand (used byrun-with-prepareandreset-with-prepare) builds the anchor image locally asnode/anchor - However,
params.yamldefaults to using the remote imagesigp/anchor:v0.3.1 - At runtime, the configuration uses the value from
params.yaml, so the locally builtnode/anchorimage is ignored
Workaround: To use the locally built anchor image, you need to manually change the anchor value in params.yaml from "sigp/anchor:{tag}" to "node/anchor".
This inconsistency will be addressed in a future update with a more comprehensive approach that allows specifying the anchor source (local vs remote) via command-line parameters.
Use this to shutdown the previous network and start fresh with the latest repositories:
make reset-with-prepareUse this if you want to shutdown previous network and start one from genesis using your existing local repositories:
make reset- Anyone can run a SSV network on their pc
- Running any SSV commit on local testnet is easy and fast
- Local setup is similar to actual testnet
- Possible to scale by adding resources
