architecture - nzengi/helix-physicalpaper GitHub Wiki
HelixChain employs a layered architecture that seamlessly integrates mechanical engineering principles with blockchain technology.
graph TB
subgraph "Application Layer"
A1[Web Interface]
A2[Mobile Apps]
A3[Developer APIs]
A4[Third-party DApps]
end
subgraph "API Gateway Layer"
B1[REST API Server]
B2[WebSocket Handler]
B3[Authentication]
B4[Rate Limiting]
end
subgraph "Consensus Layer - RotaryBFT"
C1[Torque Calculator]
C2[Self-Lock Validator]
C3[Block Proposer]
C4[Vote Aggregator]
C5[Consensus Manager]
end
subgraph "State Management Layer"
D1[Account Manager]
D2[Transaction Pool]
D3[Block Storage]
D4[State Tree]
end
subgraph "Network Layer"
E1[P2P Protocol]
E2[Message Broadcasting]
E3[Peer Discovery]
E4[Sync Manager]
end
subgraph "Storage Layer"
F1[Database Engine]
F2[IPFS Integration]
F3[Compression]
F4[Backup System]
end
A1 --> B1
A2 --> B1
A3 --> B1
A4 --> B2
B1 --> C5
B2 --> C5
C1 --> C2
C2 --> C3
C3 --> C4
C4 --> C5
C5 --> D1
C5 --> D2
D2 --> D3
D3 --> D4
C5 --> E1
E1 --> E2
E2 --> E3
E3 --> E4
D3 --> F1
D4 --> F1
F1 --> F2
F2 --> F3
F3 --> F4
pub struct HelixNode {
pub config: Config,
pub chain_state: Arc<ChainState>,
pub consensus: Arc<Mutex<ConsensusState>>,
pub rotary_bft: Arc<RotaryBFT>,
pub crypto: Arc<CryptoManager>,
pub network: Arc<NetworkManager>,
pub is_running: Arc<Mutex<bool>>,
pub node_info: Arc<Mutex<NodeInfo>>,
}
Responsibilities:
- Orchestrates all system components
- Manages node lifecycle (start/stop)
- Handles cross-component communication
- Maintains node health and status
pub struct RotaryBFT {
validators: Arc<Mutex<HashMap<String, Validator>>>,
chain_state: Arc<ChainState>,
current_round: Arc<Mutex<u64>>,
torque_calculator: TorqueCalculator,
self_lock_validator: SelfLockValidator,
consensus_rounds: Arc<Mutex<Vec<ConsensusRound>>>,
}
Key Features:
- Gear mechanics-based validator selection
- Torque calculation for voting power
- Self-locking condition enforcement
- Byzantine fault tolerance with physical constraints
pub struct Validator {
pub address: String,
pub stake: u64,
pub beta_angle: f64, // 0-90 degrees
pub efficiency: f64, // 0-1 mechanical efficiency
pub last_active: DateTime<Utc>,
pub is_active: bool,
pub reputation_score: f64,
pub total_blocks_proposed: u64,
pub total_votes_cast: u64,
}
The core innovation lies in mapping blockchain validators to mechanical gear properties:
graph LR
A[Validator Stake] --> D[Torque Calculator]
B[Beta Angle 0-90°] --> D
C[Efficiency 0-1] --> D
E[Network Load] --> D
D --> F[Validator Torque]
F --> G[Voting Power]
G --> H[Block Proposal Rights]
Physical law enforcement through gear mechanics:
pub fn validate_self_lock_condition(beta_angle: f64) -> bool {
let friction_angle = 8.5_f64.to_radians(); // 8.5 degrees
let friction_coefficient = 0.15;
let beta_rad = beta_angle.to_radians();
// Self-locking condition: tan(φ) ≤ μ × sec(β)
friction_angle.tan() <= friction_coefficient * (1.0 / beta_rad.cos())
}
graph TB
subgraph "Bootstrap Nodes"
BN1[Bootstrap-1]
BN2[Bootstrap-2]
BN3[Bootstrap-3]
end
subgraph "Validator Nodes"
V1[Validator-1<br/>Torque: 12.5 Nm]
V2[Validator-2<br/>Torque: 8.7 Nm]
V3[Validator-3<br/>Torque: 15.2 Nm]
V4[Validator-4<br/>Torque: 9.8 Nm]
end
subgraph "Full Nodes"
F1[Full-Node-1]
F2[Full-Node-2]
F3[Full-Node-3]
end
subgraph "Light Clients"
L1[Light-Client-1]
L2[Light-Client-2]
L3[Light-Client-3]
end
BN1 --- V1
BN1 --- V2
BN2 --- V3
BN3 --- V4
V1 --- V2
V2 --- V3
V3 --- V4
V4 --- V1
V1 --- F1
V2 --- F2
V3 --- F3
F1 --- L1
F2 --- L2
F3 --- L3
sequenceDiagram
participant C as Client
participant V1 as Validator-1
participant V2 as Validator-2
participant V3 as Validator-3
participant N as Network
C->>V1: Submit Transaction
V1->>V1: Validate Transaction
V1->>N: Broadcast Transaction
N->>V2: Propagate Transaction
N->>V3: Propagate Transaction
Note over V1,V3: Consensus Round Begins
V1->>V1: Calculate Torque
V2->>V2: Calculate Torque
V3->>V3: Calculate Torque
alt V1 has highest torque
V1->>N: Propose Block
N->>V2: Block Proposal
N->>V3: Block Proposal
V2->>N: Vote (if torque >= 8.0 Nm)
V3->>N: Vote (if torque >= 8.0 Nm)
Note over V1,V3: Total votes >= 24.0 Nm threshold
V1->>N: Commit Block
N->>V2: Block Committed
N->>V3: Block Committed
end
graph TB
subgraph "Account State"
AS1[Address]
AS2[Balance]
AS3[Nonce]
AS4[Contract Code]
AS5[Storage Root]
end
subgraph "Validator State"
VS1[Validator Address]
VS2[Stake Amount]
VS3[Beta Angle]
VS4[Efficiency]
VS5[Reputation]
end
subgraph "Consensus State"
CS1[Current Round]
CS2[Proposer]
CS3[Votes Collected]
CS4[Total Torque]
CS5[Block Hash]
end
subgraph "Global State Tree"
GST[Merkle Patricia Tree]
end
AS1 --> GST
AS2 --> GST
AS3 --> GST
AS4 --> GST
AS5 --> GST
VS1 --> GST
VS2 --> GST
VS3 --> GST
VS4 --> GST
VS5 --> GST
CS1 --> GST
CS2 --> GST
CS3 --> GST
CS4 --> GST
CS5 --> GST
pub struct Block {
// Standard blockchain fields
pub height: u64,
pub timestamp: DateTime<Utc>,
pub previous_hash: String,
pub merkle_root: String,
pub transactions: Vec<Transaction>,
pub hash: String,
// RotaryBFT specific fields
pub validator: String,
pub signature: String,
pub torque: f64, // Proposer's torque
pub total_participating_torque: f64, // Sum of all voting torque
pub gear_parameters: GearParameters,
// Performance metrics
pub gas_limit: u64,
pub gas_used: u64,
pub size: u64,
}
pub struct GearParameters {
pub friction_angle: f64,
pub friction_coefficient: f64,
pub beta_angles: Vec<f64>, // All participating validators
pub efficiency_factors: Vec<f64>,
}
graph TB
subgraph "Transaction Processing Pipeline"
TP1[Signature Validation]
TP2[Balance Checks]
TP3[Nonce Validation]
TP4[Gas Estimation]
TP5[State Updates]
end
subgraph "Consensus Pipeline"
CP1[Torque Calculation]
CP2[Self-Lock Validation]
CP3[Vote Collection]
CP4[Block Finalization]
end
subgraph "Network Pipeline"
NP1[Message Validation]
NP2[Peer Management]
NP3[Sync Processing]
NP4[Broadcast Management]
end
TX[Transaction Pool] --> TP1
TP1 --> TP2
TP2 --> TP3
TP3 --> TP4
TP4 --> TP5
TP5 --> CP1
CP1 --> CP2
CP2 --> CP3
CP3 --> CP4
CP4 --> NP1
NP1 --> NP2
NP2 --> NP3
NP3 --> NP4
pub struct CacheManager {
block_cache: LruCache<String, Block>,
transaction_cache: LruCache<String, Transaction>,
account_cache: LruCache<String, Account>,
validator_cache: LruCache<String, Validator>,
torque_cache: LruCache<String, f64>,
}
graph TB
subgraph "Application Security"
A1[Input Validation]
A2[Authentication]
A3[Authorization]
A4[Rate Limiting]
end
subgraph "Consensus Security"
C1[Self-Lock Enforcement]
C2[Torque Validation]
C3[Byzantine Detection]
C4[Slashing Conditions]
end
subgraph "Network Security"
N1[TLS Encryption]
N2[Peer Authentication]
N3[DDoS Protection]
N4[Message Integrity]
end
subgraph "Cryptographic Security"
CR1[Digital Signatures]
CR2[Hash Functions]
CR3[Merkle Proofs]
CR4[Key Management]
end
A1 --> C1
A2 --> C2
A3 --> C3
A4 --> C4
C1 --> N1
C2 --> N2
C3 --> N3
C4 --> N4
N1 --> CR1
N2 --> CR2
N3 --> CR3
N4 --> CR4
graph LR
subgraph "Node Metrics"
NM1[CPU Usage]
NM2[Memory Usage]
NM3[Disk I/O]
NM4[Network I/O]
end
subgraph "Consensus Metrics"
CM1[Block Time]
CM2[Transaction Throughput]
CM3[Validator Participation]
CM4[Torque Distribution]
end
subgraph "Network Metrics"
NEM1[Peer Count]
NEM2[Message Latency]
NEM3[Sync Status]
NEM4[Bandwidth Usage]
end
subgraph "Security Metrics"
SM1[Failed Authentications]
SM2[Suspicious Activities]
SM3[Attack Attempts]
SM4[Validator Slashing]
end
NM1 --> Dashboard
NM2 --> Dashboard
NM3 --> Dashboard
NM4 --> Dashboard
CM1 --> Dashboard
CM2 --> Dashboard
CM3 --> Dashboard
CM4 --> Dashboard
NEM1 --> Dashboard
NEM2 --> Dashboard
NEM3 --> Dashboard
NEM4 --> Dashboard
SM1 --> Dashboard
SM2 --> Dashboard
SM3 --> Dashboard
SM4 --> Dashboard
This architecture represents a revolutionary approach to blockchain design, where mechanical engineering principles provide the foundation for consensus security, creating a system that is both theoretically sound and practically efficient.