database crate provides SQLite-based storage for the Ubu-Block blockchain and election data.
Overview
This crate manages:- Blockchain storage and retrieval
- Public and private key management
- Election data (stations, wards, constituencies, counties)
- Candidate and voting results
- Chain validation
Main Types
Database
The main database interface managing both chain and private databases.Construction
Blockchain Operations
Block Management
Chain Validation
- Block hash integrity
- Previous hash linkage
- Merkle root correctness
- Digital signatures
Key Management
Public Keys
Private Keys
Election Data Queries
Geographic Entities
Political Data
Candidates
Results Queries
By Geographic Level
Database Schema
The database uses two separate SQLite databases:Chain Database (Public)
blockchain- Block headers and metadataresults- Election results per stationpubkeys- Public keys of block creatorscounties,constituencies,wards,stations- Geographic dataparties,positions,candidates- Political data
Private Database (Local Only)
privkeys- Private keys for block signing
MAIN_SETUPconstant (chain database schema)PRIV_SETUPconstant (private database schema)
Error Handling
All methods returnResult<T, sqlx::Error> for database operations. Common errors include:
- Connection failures
- Query execution errors
- Data integrity violations
Thread Safety
TheDatabase struct is Clone and uses SqlitePool for connection pooling, making it safe to use across multiple async tasks.