Project Status: Version 0.1.0 - Foundation Phase
- β Completed Tasks: 31/89 (34.83%)
- π§ In Progress: Channel Operations & Network Layer
- π Next Milestone: State Snapshots & UTXO Checkpointing
- π― Current Focus: Optimizing concurrent operations and state transitions
View detailed progress in our Development Plan
Rust Protocol BTC is a high-performance Rust implementation focusing on robust UTXO management and provable state verification. Inspired by the Bitcoin Lightning Network's vision for off-chain scaling, this project addresses common challenges in payment channel systems by delivering:
- Memory-Efficient UTXO Management: Leveraging a thread-safe in-memory cache with write-ahead logging
- Verifiable State Transitions: Using Merkle trees for rapid and mathematically sound state proofs
- High-Performance Execution: Achieving dramatic improvements in update speed and resource usage compared to traditional systems
- Concurrent State Updates: Thread-safe state machine with atomic operations and consistent signature verification
Important Note: Payment channel functionality is planned for a future milestone. The current focus is on laying a rock-solid foundation for UTXO management and secure state verification.
- Overview
- Why Rust Protocol BTC?
- Key Differentiators
- Features
- Technical Architecture
- Performance Metrics
- Getting Started
- Project Roadmap
- Contributing
- License
- Acknowledgments
Modern payment channel systems often suffer from excessive memory usage, inefficient state updates, and limited verification methods. Our project tackles these head-on by rethinking the core components:
flowchart TD
%% Challenges
subgraph Challenges [Legacy Challenges]
A[Complex State Management] --> A1[High Memory Overhead]
B[Inefficient UTXO Tracking] --> B1[Slow Updates]
C[Limited Verification] --> C1[Security Vulnerabilities]
end
%% Solutions
subgraph Solutions [Rust Protocol BTC Solutions]
D[Thread-Safe UTXO Cache] --> D1[Optimized Memory Footprint]
E[Efficient UTXO Indexing] --> E1[Rapid State Updates]
F[Merkle-Based Verification] --> F1[Mathematically Provable Security]
end
%% Mapping challenges to solutions
A1 --- D
B1 --- E
C1 --- F
style Challenges fill:#FFE4B5,stroke:#FF8C00,stroke-width:2px
style Solutions fill:#E0F7FA,stroke:#00796B,stroke-width:2px
By directly mapping each traditional shortcoming to a targeted solution, Rust Protocol BTC aims to set new standards in performance and security.
- Thread-Safe In-Memory Cache: With integrated write-ahead logging
- Low Overhead: Approximately 2MB per 1000 UTXOsβup to 60% less than legacy systems
- Merkle Tree-Based Verification: O(log n) proof generation with support for dynamic updates
- High Integrity: Guarantees mathematically provable state consistency
- Drastic Speed Improvements: From hundreds of milliseconds in traditional systems to just a few milliseconds per update
graph TB
subgraph UTXO ["Core UTXO Management"]
A[Double-Spend Prevention]
B[Thread-Safe Cache]
C[Write-Ahead Log]
D[Persistent Storage]
A --> B
B --> C
C --> D
end
subgraph SEC ["Security Features"]
E[State Verification]
F[Merkle Proofs]
G[Atomic Updates]
H[Concurrent Operations]
I[Signature Verification]
E --> F
F --> G
G --> H
H --> I
end
B -.->|"State Update"| E
G -.->|"Verification"| B
classDef core fill:#E6FFE6,stroke:#006400,stroke-width:2px;
classDef security fill:#E6F3FF,stroke:#0066CC,stroke-width:2px;
class UTXO core;
class SEC security;
- Multi-Participant Validation: Support for complex multi-party state transitions
- Concurrent State Updates: Thread-safe operations with atomic batch processing
- Signature Verification: Deterministic order with replay attack prevention
- Balance Protection: Overflow checks and negative balance prevention
Development is structured around key milestones, each building on the previous layer of functionality:
flowchart LR
%% Current Milestone
subgraph M1 [Foundation Milestone]
A[State Snapshots]
B[UTXO Checkpointing]
C[State Recovery]
A --> B
B --> C
end
%% Next Milestone
subgraph M2 [Channel Operations Milestone]
D[Channel Operations]
E[State Machine Integration]
F[Transaction Validation]
D --> E
E --> F
end
%% Future Milestone
subgraph M3 [Network Integration Milestone]
G[Network Layer Implementation]
H[P2P Protocol Development]
I[Routing Logic]
G --> H
H --> I
end
%% Milestone dependencies
C --> D
F --> G
%% Styling
classDef current fill:#FFE4B5,stroke:#FF8C00;
classDef upcoming fill:#F0F8FF,stroke:#4682B4;
class M1 current;
class M2,M3 upcoming;
Rust Protocol BTC's architecture is designed for clarity, modularity, and high performance. The core data flow includes:
flowchart TD
%% Transaction Processing Flow
subgraph Core [Core Processing]
T[Transaction Input] --> DS{Double-Spend Check}
DS -- Valid --> UC[UTXO Cache]
DS -- Invalid --> REJ[Transaction Rejection]
UC --> WAL[Write-Ahead Log]
WAL --> PS[Persistent Store]
end
%% State Update and Verification Flow
subgraph State [State Verification]
UC -- "Triggers" --> MT[Merkle Tree Update]
MT -- "Generates" --> MP[Merkle Proof]
MP -- "Validates" --> SV[State Verification]
end
%% Styling elements
style DS fill:#FFE4B5,stroke:#FF8C00,stroke-width:2px
style UC fill:#98FB98,stroke:#2E8B57,stroke-width:2px
style MT fill:#87CEEB,stroke:#1E90FF,stroke-width:2px
This separation of concerns ensures that UTXO management, logging, and state verification operate in a coordinated yet independent fashion.
Our latest benchmarks from the integration test suite demonstrate exceptional performance:
| Operation | Avg Time | Peak Memory | Throughput |
|---|---|---|---|
| UTXO Cache Update | 0.8 ms | ~2 MB | ~1250 tx/s |
| Merkle Proof Generation | 1.2 ms | ~4 MB | ~833 proofs/s |
| State Transition | 2.1 ms | ~3 MB | ~476 updates/s |
| Concurrent Updates | 3.5 ms | ~5 MB | ~285 updates/s |
| Signature Verification | 0.9 ms | ~1 MB | ~1111 sigs/s |
- UTXO Cache: ~2MB per 1000 UTXOs with negligible growth under load
- State Updates: Linear scaling with participant count, ~1MB per 100 participants
- Concurrent Operations: Additional ~2MB overhead for thread management
- Signature Verification: Constant ~1MB regardless of participant count
graph LR
%% Define nodes
A["π Static Cache<br><small>Fixed 1MB</small>"]
B["π Dynamic UTXO<br><small>1-4MB Adaptive</small>"]
C["π Peak Usage<br><small>Max 8MB</small>"]
D["β»οΈ Smart GC<br><small>Auto Trigger</small>"]
E["π Memory Release<br><small>Block-level</small>"]
F["ποΈ Cache Pruning<br><small>LRU Policy</small>"]
T["π Thread Pool<br><small>2MB Fixed</small>"]
S["π State Cache<br><small>1MB/100 Users</small>"]
%% Performance metrics
P1["β‘ Latency<br><small><2ms</small>"]
P2["π― Hit Rate<br><small>>95%</small>"]
P3["β‘ Concurrent<br><small><3.5ms</small>"]
subgraph Memory["π― Memory Management"]
direction LR
A --> |"grows"| B
B --> |"peaks"| C
T --> |"allocates"| S
style Memory fill:#f0f8ff,stroke:#0066cc,stroke-width:2px
end
subgraph GC["β»οΈ Garbage Collection"]
direction LR
D --> |"frees"| E
E --> |"optimizes"| F
style GC fill:#f0fff0,stroke:#006400,stroke-width:2px
end
%% Connections
C --> |"triggers"| D
F --> |"recycles"| A
S --> |"optimizes"| F
%% Performance indicators
B -.-> |"measures"| P1
F -.-> |"ensures"| P2
T -.-> |"ensures"| P3
%% Styling
classDef default fill:#fff,stroke:#333,stroke-width:2px
classDef metrics fill:#fff5e6,stroke:#ff8c00,stroke-width:2px
classDef active fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
classDef concurrent fill:#e6ffe6,stroke:#006400,stroke-width:2px
class A,B,C active
class T,S concurrent
class P1,P2,P3 metrics
Key Features:
- π Smart Static Cache: Fixed memory footprint for predictable performance
- π Adaptive UTXO: Dynamic allocation based on real-time workload
- β»οΈ Intelligent GC: Automated memory optimization with LRU policy
- β‘ High Performance: Sub-millisecond latency with >95% hit rate
- π Thread Management: Fixed 2MB thread pool with dynamic state cache
- π Concurrent Safety: Linear scaling with participant count
- Concurrent State Updates: Successfully processes 285+ updates/second with full signature verification
- Thread Safety: Zero contention in multi-threaded scenarios
- Memory Efficiency: 60% reduction in memory usage compared to traditional implementations
- Signature Verification: Consistent sub-millisecond performance with deterministic ordering
- Version: 0.1.0
- Test Coverage: 100% with comprehensive integration tests
- Core Features:
- β UTXO Management
- β State Machine Implementation
- β Concurrent Operations
- β Cryptographic Security
- π§ Network Layer (In Progress)
- π§ Channel Operations (In Progress)
- Implemented thread-safe concurrent state updates
- Enhanced signature verification with consistent message serialization
- Added comprehensive test coverage for concurrent scenarios
- Achieved all performance benchmarks with significant margins
- Rust: Version 1.75 or newer
- Cargo: Rust's package manager
- Operating System: Linux-based systems (tested on Ubuntu 20.04+)
Clone the repository and build the project in release mode:
# Clone and navigate to the project directory
git clone https://github.com/JtPerez-Acle/rust-protocol-btc.git
cd rust-protocol-btc
# Build the project
cargo build --release
# Run the test suite to verify installation
cargo testBelow is a simplified Rust snippet demonstrating the initialization and usage of the UTXO cache with persistent storage:
use state_channel_node::utxo::{cache::UtxoCache, store::SdbStore};
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize persistent storage for UTXOs
let store = SdbStore::new(Path::new("./utxo-db"))?;
// Create a thread-safe UTXO cache with integrated logging
let cache = UtxoCache::new(store);
// Process a new transaction (example 'tx' and optional block height)
cache.add_transaction(&tx, Some(block_height))?;
// Spend a UTXO with double-spend protection
match cache.remove_spent(&spending_tx) {
Ok(_) => println!("Transaction processed successfully."),
Err(state_channel_node::utxo::cache::CacheError::UtxoNotFound(msg)) => {
println!("Double spend prevented: {}", msg)
},
Err(e) => println!("Error processing transaction: {}", e),
}
Ok(())
}Our development process follows parallel tracks while ensuring dependencies are respected:
graph LR
%% Development Tracks
subgraph CORE ["Core Infrastructure"]
A1[" UTXO Management"] --> A2[" State Verification"]
A2 --> A3["State Snapshots"]
A3 --> A4["UTXO Checkpointing"]
end
subgraph CHANNEL ["Channel Layer"]
B1["Channel Protocol"] --> B2["State Machine"]
B2 --> B3["Dispute Resolution"]
B3 --> B4["Multi-Channel Support"]
end
subgraph NETWORK ["Network Layer"]
C1["P2P Protocol"] --> C2["Routing Logic"]
C2 --> C3["Network Security"]
C3 --> C4["Network Resilience"]
end
subgraph PROD ["Production Readiness"]
D1["Security Audit"] --> D2["Performance Tuning"]
D2 --> D3["Documentation"] --> D4["Release"]
end
%% Cross-track Dependencies
A3 -.->|"Enables"| B1
B3 -.->|"Requires"| C1
C3 -.->|"Before"| D1
%% Parallel Development Indicators
B1 -.->|"Can Start"| C1
C2 -.->|"Feedback"| B3
%% Status Styling
classDef done fill:#90EE90,stroke:#006400,stroke-width:2px;
classDef current fill:#FFE4B5,stroke:#FF8C00,stroke-width:2px;
classDef pending fill:#F0F8FF,stroke:#4682B4,stroke-width:2px;
classDef milestone fill:#FFB6C1,stroke:#8B0000,stroke-width:2px;
%% Apply styles
class A1,A2 done;
class A3 current;
class A4,B1,B2,B3,B4,C1,C2,C3,C4,D1,D2,D3 pending;
class D4 milestone;
%% Track Styling
classDef track fill:none,stroke:#333,stroke-width:4px;
class CORE,CHANNEL,NETWORK,PROD track;
Legend:
- Completed: Core features that are implemented and tested
- In Progress: Currently under active development
- Planned: Scheduled for future implementation
- Major Milestone: Key project deliverables
Development tracks can progress in parallel while respecting dependencies:
-
Core Infrastructure
- Foundation for all other components
- Focus on reliability and performance
-
Channel Layer
- Payment channel implementation
- State machine and dispute handling
-
Network Layer
- P2P communication and routing
- Network security and resilience
-
Production Readiness
- Security and performance optimization
- Documentation and release management
Priorities and timelines are adjusted based on technical requirements and feedback.
Contributions are closed for the moment! I appreciate feedback on:
- Design and architecture discussions
- Performance and security improvements
Please refer to our Development Plan.
This project is licensed under the MIT License.
- The visionary work behind the Bitcoin Lightning Network
- The vibrant Rust community and the rich ecosystem on crates.io
- Cheap instant coffee for my brain