Balance Commitment Format
Balance Commitment Format - Technical Specification
This document specifies the balance commitment format used for proving value conservation in Roru Protocol transactions.
Balance Proof Architecture
Purpose
Balance commitments prove that:
Input values equal output values
No value is created or destroyed
All values are within valid ranges
Transaction is balanced
Commitment Structure
Balance Commitment Format:
pub struct BalanceCommitment {
pub input_commitment: Commitment, // Sum of input commitments
pub output_commitment: Commitment, // Sum of output commitments
pub public_value: Option<i64>, // Public value (if any)
pub proof: BalanceProof, // Zero-knowledge proof
}Commitment Calculation
Input Commitment
Input Commitment Formula:
Where each C_i is a Pedersen commitment to note i.
Implementation:
Output Commitment
Output Commitment Formula:
Implementation:
Balance Equation
Balance Verification:
Where:
C_in= sum of input commitmentsC_out= sum of output commitmentsC_fee= fee commitment (if applicable)
Zero-Knowledge Balance Proof
Proof Circuit
Balance Circuit:
Proves input sum = output sum
Hides individual values
Verifies range constraints
Ensures no overflow
Circuit Constraints:
Proof Generation
Generation Process:
Construct witness
Execute circuit
Generate proof
Verify proof
Generation Code:
Public Values
Public Value Support
Public Value Format:
Public Value Handling
Use Cases:
Public fees
Public refunds
Transparent operations
Compliance requirements
Balance with Public Values:
Range Constraints
Value Ranges
Valid Range:
Minimum: 0
Maximum: 2^64 - 1
No negative values (except public)
No overflow
Range Proof
Range Proof Circuit:
Proves value in range [0, 2^64)
Efficient proof size
Fast verification
Range Proof Implementation:
Fee Handling
Fee Commitment
Fee Format:
Fee Calculation
Fee Structure:
Base fee
Size-based fee
Priority fee (optional)
Total fee
Fee Commitment:
Batch Balance Verification
Batch Operations
Batch Format:
Batch Verification
Verification Process:
Verify individual proofs
Verify batch proof
Check aggregate balance
Validate all constraints
Batch Verification Code:
Homomorphic Properties
Additive Homomorphism
Property:
Application:
Efficient balance verification
Batch operations
Aggregate proofs
Implementation
Homomorphic Addition:
Performance
Efficiency
Operations:
Commitment calculation: O(n) where n is number of notes
Proof generation: O(1) circuit execution
Proof verification: O(1)
Batch verification: O(1) per transaction
Sizes:
Balance commitment: 64 bytes
Balance proof: ~1-2 KB
Batch proof: ~2-3 KB
Security
Security Properties
Binding:
Cannot change values without changing commitment
Cryptographically secure
Prevents fraud
Hiding:
Values hidden in commitments
Zero-knowledge proofs
No information leakage
Conclusion
Balance commitments provide:
Correctness: Proves value conservation
Privacy: Hides individual values
Efficiency: Fast verification
Flexibility: Supports various scenarios
Security: Cryptographic guarantees
Understanding balance commitments is essential for transaction validation.
Last updated
