Overview
Ubu-Block uses TOML configuration files to manage node settings, database connections, network addresses, and peer configurations. This guide covers all configuration options for different node types.Configuration File Structure
Configuration files use the TOML format and are passed to nodes via the--config flag:
Basic Configuration
A minimal configuration file includes:config.toml
Database Configuration
Database Paths
Ubu-Block requires two SQLite databases:Database Files
| Database | Purpose | Accessibility |
|---|---|---|
blockchain.db | Stores blocks, transactions, election results, and public blockchain data | Public, read-only for queries |
private.db | Stores private keys, node identity, and sensitive configuration | Private, restricted access |
Network Configuration
Submission Node Configuration
Submission nodes require both P2P and HTTP API addresses:config.toml
http_addr: HTTP API server address (default:127.0.0.1:9091)node_addr: P2P network address (default:127.0.0.1:9090)
For production deployments, bind to
0.0.0.0 instead of 127.0.0.1 to accept external connections.Observer Node Configuration
Observer nodes only need database paths and a peer to connect to:config.toml
Multiple Node Configuration
When running multiple nodes on the same machine, use different ports and database paths:Peer Configuration
Ubu-Block supports P2P networking for node synchronization.Connecting to Peers
Peers can be configured in the TOML file:config.toml
P2P Configuration Options
Advanced P2P settings can be configured:config.toml
max_connections: Maximum number of peer connections (default: 50)connection_timeout: Connection timeout in seconds (default: 30)heartbeat_interval: Heartbeat interval in seconds (default: 10)
Setting Up Data Directory
Before running a node, initialize the data directory:Copy empty database templates
If available in the repository:Otherwise, the databases will be created automatically on first run.
Initializing the Blockchain
After configuration, initialize the blockchain with genesis data:Genesis Data
The initialization SQL file should contain:- Positions: Election positions (President, Governor, MP, etc.)
- Parties: Political parties
- Counties: Geographic regions
- Constituencies: Electoral constituencies
- Wards: Subdivisions within constituencies
- Stations: Polling stations
- Candidates: Candidates for each position
Environment Variables
Some settings can be configured via environment variables:Logging Configuration
Control log verbosity withRUST_LOG:
Production Configuration
Recommended Production Settings
production.toml
Security Considerations
File Permissions
File Permissions
Set strict permissions on configuration and database files:
Firewall Configuration
Firewall Configuration
Open only necessary ports:
TLS/SSL
TLS/SSL
For production HTTP APIs, use a reverse proxy with TLS:
Database Backups
Database Backups
Regularly backup the blockchain database:
Configuration Validation
Validate your configuration before running in production:Next Steps
Running Nodes
Start and manage different node types
Monitoring
Monitor node health and performance