Skip to main content

Overview

Ubu-Block is designed to run efficiently on modest hardware while maintaining robust blockchain operations. This page outlines the system requirements for running different types of nodes.

Hardware Requirements

Minimum Requirements

For development and testing:
  • CPU: 2 cores (x86_64 or ARM64)
  • RAM: 2 GB
  • Storage: 10 GB available disk space
  • Network: Stable internet connection with at least 1 Mbps bandwidth
For production deployments:
  • CPU: 4 cores (x86_64)
  • RAM: 4 GB or more
  • Storage: 50 GB SSD for better I/O performance
  • Network: Stable internet connection with at least 10 Mbps bandwidth

Node-Specific Requirements

  • RAM: 4 GB minimum (handles HTTP requests and P2P connections)
  • Storage: 20 GB minimum (stores blockchain data and private keys)
  • Network: Low latency connection required for peer synchronization
  • Ports: Requires two open ports (HTTP API and P2P communication)
  • RAM: 2 GB minimum (read-only operations)
  • Storage: 15 GB minimum (stores blockchain replica)
  • Network: Standard connection sufficient
  • Ports: Requires one open port for P2P connection to submission node
  • RAM: 4 GB minimum (cross-references data and processes rewards)
  • Storage: 25 GB minimum (stores blockchain data and verification records)
  • Network: Reliable connection for accessing official sources
  • Ports: Multiple ports for P2P and external data sources

Software Requirements

Operating System

Ubu-Block supports the following operating systems:
  • Linux: Ubuntu 20.04+, Debian 11+, Fedora 35+, or any modern distribution
  • macOS: macOS 11 (Big Sur) or later
  • Windows: Windows 10/11 with WSL2 (recommended) or native

Build Dependencies

If you’re using pre-built binaries from the releases page, you can skip this section.
To build Ubu-Block from source, you need:

Rust Toolchain

  • Rust: Edition 2024 or later
  • Cargo: Latest stable version
Install Rust using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

System Libraries

The following system libraries are required:
  • SQLite 3.35+: For database operations
  • OpenSSL/rustls: For TLS support
  • pkg-config: For dependency management
On Ubuntu/Debian:
sudo apt update
sudo apt install build-essential pkg-config libssl-dev sqlite3
On macOS:
brew install sqlite openssl pkg-config

Core Dependencies

Ubu-Block relies on the following Rust crates:
  • tokio: Async runtime (version 1.x with multi-threaded runtime)
  • sqlx: Database driver (version 0.8 with SQLite support)
  • axum: HTTP server framework (for submission nodes)
  • p256: Elliptic curve cryptography for signatures
  • sha3: Hashing algorithm for block verification
  • bincode: Binary serialization

Database Requirements

SQLite

Ubu-Block uses SQLite for both blockchain and private data storage:
  • Version: SQLite 3.35.0 or later
  • Features Required: Full-text search, JSON1 extension
  • Recommended: Compiled with thread-safe mode

Database Files

Each node maintains two SQLite databases:
  1. blockchain.db: Main blockchain data (public)
    • Stores blocks, transactions, and election results
    • Size grows with blockchain activity
    • Initial size: ~1 MB, can grow to several GB
  2. private.db: Private node data
    • Stores private keys and node configuration
    • Should be backed up and kept secure
    • Size: Typically < 10 MB

Network Requirements

Ports

Depending on your node type, you’ll need to configure the following ports:
Node TypeP2P PortHTTP PortNotes
Submission9090 (default)9091 (default)Both ports must be accessible
ObserverAny availableN/AOnly P2P port needed
VerificationConfigurableConfigurableMay need additional ports

Firewall Configuration

Ensure your firewall allows incoming connections on the configured P2P ports for proper node synchronization.
For submission nodes:
# Example: UFW on Ubuntu
sudo ufw allow 9090/tcp  # P2P port
sudo ufw allow 9091/tcp  # HTTP API port

Security Requirements

File Permissions

  • Database files: Should be readable/writable only by the node process user
  • Configuration files: Should have restricted permissions (600 or 640)
  • Private keys: Must be protected with strict file permissions

Encryption

Ubu-Block supports encrypted communication:
  • End-to-end encryption: For all node-to-node interactions
  • TLS: For HTTP API endpoints (recommended in production)

Cloud Deployment

Ubu-Block runs efficiently on various cloud providers:

DigitalOcean

Recommended: Basic Droplet
  • 2 vCPUs, 2 GB RAM
  • 50 GB SSD
  • Frankfurt datacenter

AWS

Recommended: t3.small
  • 2 vCPUs, 2 GB RAM
  • 30 GB EBS storage
  • Any region

Google Cloud

Recommended: e2-small
  • 2 vCPUs, 2 GB RAM
  • 30 GB persistent disk
  • Any region

Azure

Recommended: B2s
  • 2 vCPUs, 4 GB RAM
  • 30 GB managed disk
  • Any region

Performance Considerations

Storage I/O

  • Use SSD storage for production deployments
  • SQLite performance benefits significantly from SSD I/O
  • Consider RAID configurations for high-availability setups

Memory Usage

  • Memory usage scales with the number of concurrent connections
  • Expect ~500 MB base memory usage per node
  • Additional memory needed for query processing and caching

CPU Usage

  • CPU usage is generally low during normal operations
  • Spikes occur during:
    • Block validation
    • Merkle tree computation
    • P2P synchronization
    • Cryptographic operations (signing, verification)

Next Steps

Building from Source

Compile Ubu-Block from source code

Configuration

Configure your node for deployment

Build docs developers (and LLMs) love