Deon Protocol v1.3.6
Repository: https://github.com/brzb0/Deon-Protocol
A secure, high-performance file transfer and offline value protocol in Rust.
Features
- Secure Authentication: SPAKE2 (Password-Authenticated Key Exchange) prevents MITM.
- Strong Encryption: XChaCha20-Poly1305 with 24-byte random nonces (Replay Protection).
- Offline Economy: Built-in support for token state management and offline transactions.
- Smart Handover: Auto-switch BLE -> Wi-Fi for large files.
- Streaming Transfer: Chunked sender API for large files/video payloads without full in-memory buffering.
- Separated APIs: File transfer and stream transfer are handled by different protocol messages and methods.
- Resilience: Token bucket rate limiting, exponential backoff, and session resumption.
- High-Level API: One-call helpers for send/receive workflows.
Architecture
1. Token State Management (Offline)
Deon maintains an offline ledger (economy::Ledger) to track "Who has how much". Transactions are signed (Ed25519) and verified locally without internet access.
2. Replay & Double-Spend Protection
- Transport Layer: XChaCha20-Poly1305 uses 24-byte random nonces to prevent replay of encrypted frames.
- Economic Layer: Transactions include a monotonic
noncechecked against the local ledger state to prevent double-spending.
3. Settlement Layer
When connectivity is restored, the SettlementLayer trait facilitates syncing offline transactions to a blockchain (e.g., Solana, Ethereum) for final validation.
Installation
From Crates.io:
Add as dependency:
Or build from source:
Usage
CLI
Receive (defaults: port=8080, out=.):
Send (defaults: address=127.0.0.1:8080):
Custom receiver output directory:
Custom sender address:
Stream send (separate from file transfer command):
Stream receive (separate from file receive command):
Environment password fallback:
Library (Rust) - High-Level
Send with one call:
async
Receive with one call:
async
Stream with one call from any async reader:
async
Stream receive into file path:
async
Library (Rust) - Lower-Level Control
The original lower-level API remains available for advanced integrations:
use DeonProtocol;
async
Economy module remains unchanged and can still be used through economy::{Transaction, Ledger, SettlementLayer}.
Changelog
v1.3.6
- Protocol: Added dedicated stream messages (
StreamStart,StreamChunk,StreamEnd) separate from file transfer messages. - API: Added
receive_stream_into_writer(...)andreceive_stream_to_path(...)onDeonProtocol. - Root API: Added
receive_stream(...)andreceive_stream_to_path(...)one-call helpers. - CLI: Added dedicated commands
stream-sendandstream-receive.
v1.3.5
- Streaming: Added
DeonProtocol::send_stream(...)for chunked transfer from anyAsyncReadsource. - Memory: Updated
DeonProtocol::send_file_path(...)to stream from disk instead of loading full file bytes. - API: Added root helper
send_stream(...)for one-call streaming workflows.
v1.3.4
- API: Added high-level one-call helpers:
send_file(...)andreceive_file(...). - Protocol API: Added convenience methods
DeonProtocol::connect,listen,send_file_path,receive_file_into. - CLI: Simplified commands with positional arguments and useful defaults.
- Docs: Updated usage examples and onboarding flow.
v1.3.3
- Fix: Moved Session Resumption Ticket creation to immediately after shared secret derivation (server-side).
v1.3.2
- Security: Replaced ChaCha20Poly1305 with XChaCha20Poly1305 (24-byte nonce) to eliminate nonce reuse risks.
- Protocol: Fixed Session ID desynchronization; implemented deterministic session ID derivation.
- Economy: Added
economymodule withTransaction,Ledger, andSettlementLayerstructures. - Docs: Added CONTRIBUTING.md and improved architecture documentation.
v1.3.1
- Initial release with SPAKE2 and basic file transfer.