Sova Docs
  • Sova Developer Docs
  • Documentation
    • Intro
    • How It Works
    • Node Design & Architecture
    • Sova Whitepaper
  • TECHNOLOGY
    • Bitcoin Precompiles
    • Double Spend Protection
    • For Frontend Developers
    • For Solidity Developers
  • Contributing
  • NETWORK INFORMATION
    • Connecting to Sova
    • OP Chain Configuration
    • Sova Contracts
  • Node Operators
    • Running Sova
  • Community & Support
    • Frequently Asked Questions (FAQ)
Powered by GitBook
On this page
  • Overview
  • Setup Guide
  • Prerequisites
  • Installation Steps
  • Devnet Service Architecture
  • Network Health Checks
  1. Node Operators

Running Sova

PreviousSova ContractsNextFrequently Asked Questions (FAQ)

Last updated 1 day ago

Overview

There are two docker compose file variants, 'dev' and 'testnet' in the 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 -

  • 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 -

  • 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 Requirements

    • A modern multi-core CPU.

    • 32 GB RAM (64 GB recommended).

    • A locally attached NVMe SSD drive.

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.6

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

Devnet Service Architecture

The stack consists of the following services:

  • 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 Sova 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
running-sova
dockerfiles/dev-sova-node
dockerfiles/sova-op-sequencer-nod