Running Sova
Node Version: v0.0.5
Overview
There are two docker compose file variants, 'dev' and 'testnet' in the running-sova repository. The primary difference is in 'dev', the consensus is mocked in the execution client, where as the 'testnet' implementation, the OP rollup client is used for consensus.
dev - dockerfiles/dev-sova-node
Used to run a Sova validator locally in --dev mode. This means validator consensus is mocked and there is only one tx per sova block. This uses a regtest bitcoin node to mock bitcoin interactions.
When the 'core' profile is specified, sova-reth and sova-sentinel run alongside the Sova auxiliary services.
# run single node devnet sequencer locally
docker-compose -f dockerfiles/dev-sova-node.yml -p sova-devnet --profile core --env-file ./.env up --build -d
# remove all containers and volumes with:
docker-compose -f dockerfiles/dev-sova-node.yml -p sova-devnet --profile core --env-file ./.env down -v --rmi all
testnet - dockerfiles/sova-op-sequencer-nod
Used to run a full Sova OP Sequencer node.
When the 'core' and 'op-stack' profiles are specified sova-reth, sova-sentinel, op-node, op-batcher, op-proposer all run alongside the Sova auxiliary services.
# run Sova OP sequencer
docker-compose -f dockerfiles/sova-op-sequencer-node.yml -p sova-op-testnet --profile core --profile op-stack --env-file ./.env up --build -d
# remove all containers and volumes with:
docker-compose -f dockerfiles/sova-op-sequencer-node.yml -p sova-op-testnet --profile core --profile op-stack --env-file ./.env down -v --rmi all
# run all auxiliary services used by sequencer
docker-compose -f dockerfiles/sova-op-sequencer-node.yml -p sova-aux-services --env-file ./.env up --build -d
# remove all containers and volumes with:
docker-compose -f dockerfiles/sova-op-sequencer-node.yml -p sova-aux-services --env-file ./.env down -v --rmi all
Setup Guide
This guide will walk you through the process of setting up and running a local Sova devnet node using Docker Compose.
Prerequisites
Software
Docker (version 20.10.0 or higher)
Docker Compose (version 2.0.0 or higher)
Git
Hardware
A modern multi-core CPU with good single-core performance.
At least 32 GB RAM (64 GB recommended).
A locally attached NVMe SSD drive. RAID 0 configurations can improve performance.
Reth Archive Node:
Instance: AWS
i4ie.6xlarge
Storage: RAID 0 of all local NVMe drives (
/dev/nvme*
)Filesystem: ext4
Note: Requirements may vary based on network activity, transaction volume, number of connected peers, and chain state growth.
Installation Steps
1. Clone the Repository
git clone https://github.com/SovaNetwork/running-sova
cd running-sova
# checkout release version
git checkout v0.0.5
2. Configure Environment Variables
# Create and edit the .env file
cp env.example .env
In the .env file, update the variables if necessary. The `ENCLAVE_SEED` is the seed for computing the BIP-32 derivation path for the network signing service.
3. Build and Start the Services
# run single node devnet locally
docker-compose -f dockerfiles/dev-sova-node.yml -p sova-devnet --profile core --env-file ./.env up --build -d
# View all active containers
docker ps
# remove all containers and volumes with:
docker-compose -f dockerfiles/sova-op-sequencer-node.yml -p sova-op-testnet --profile core --profile op-stack --env-file ./.env down -v --rmi all
Service Architecture
The stack consists of the following services:
nginx-proxy (Port 18444)
Reverse proxy service based on nginx:alpine
Handles routing and load balancing
Configured via mounted nginx.conf file
bitcoin-regtest (Port 18443)
Bitcoin Core node running in regtest mode
Provides the underlying Bitcoin network functionality
sova-reth (Port 8545)
EVM-compatible JSON-RPC endpoint
Handles EVM-compatible transactions and smart contracts
sova-sentinel (port 50051)
Handles double spend protection
network-enclave (Port 5555)
Handles network signing operations
Manages cryptographic operations
network-utxos (Port 5557)
Tracks and manages UTXO state
Provides UTXO-related services
network-indexer
Indexes Bitcoin blockchain data
Maintains synchronization with the Bitcoin node
Network Health Checks
Verify the execution client JSON-RPC endpoint:
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
http://localhost:8545
Verify the bitcoin regtest client JSON-RPC endpoint:
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"1.0","method":"getblockchaininfo","params":[],"id":1}' \
-u user:password http://localhost:18443
Last updated