transaction.rs - Transactions
Transaction Structure
// src/transaction.rs (lines 4-13)
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Transaction {
pub sender: Vec<u8>, // Ed25519 public key
pub recipient: Vec<u8>, // Ed25519 public key
pub amount: u64, // Amount in base units
pub nonce: u64, // Deterministic nonce
pub signature: Vec<u8>, // Ed25519 signature
}Ed25519 Cryptographic Implementation
Digital Signature Verification
// src/transaction.rs (lines 15-23)
impl Transaction {
pub fn verify(&self) -> bool {
let pk = PublicKey::from_bytes(&self.sender).unwrap();
let data = self.data_to_sign();
let sig_bytes: [u8; 64] = self.signature.clone().try_into().expect("sig length");
let sig = Signature::from_bytes(&sig_bytes).unwrap();
pk.verify(&data, &sig).is_ok()
}
}Signing Data Generation
Blake3 Transaction Hashing
Deterministic Nonce System
Nonce Generation Strategy
Anti-Replay Protection
Transaction Lifecycle
1. Creation and Signing
2. Network Propagation
3. Block Inclusion
Radio-Optimized Features
Compact Binary Format
JS8Call Compatibility
Validation and Security
Cryptographic Validation Chain
Security Properties
Property
Implementation
Purpose
Error Handling and Recovery
Malformed Transaction Handling
Radio Transmission Errors
Future Enhancements
Planned Transaction Features
Backward Compatibility
Last updated