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
Recommended Requirements
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
Submission Node
Submission Node
- 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)
Observer Node
Observer Node
- 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
Verification Node
Verification 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.
Rust Toolchain
- Rust: Edition 2024 or later
- Cargo: Latest stable version
System Libraries
The following system libraries are required:- SQLite 3.35+: For database operations
- OpenSSL/rustls: For TLS support
- pkg-config: For dependency management
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:-
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
-
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 Type | P2P Port | HTTP Port | Notes |
|---|---|---|---|
| Submission | 9090 (default) | 9091 (default) | Both ports must be accessible |
| Observer | Any available | N/A | Only P2P port needed |
| Verification | Configurable | Configurable | May need additional ports |
Firewall Configuration
For submission nodes: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
Recommended Cloud Instances
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