AquaChain Verifier Documentation
Overview
This Rust library implements verification, signing, and management functionality for an AquaChain, the library follows the specification in Aqua Protocol data, https://aqua-protocol.org/ . It provides utilities for handling revisions, signatures, witnesses, and chain management.
Core Functions
verify_revision
pub
Verifies a single revision in the AquaChain system by performing multiple validation checks:
- File verification
- Content verification
- Metadata verification
- Signature verification (if present)
- Witness verification (if present)
Returns a RevisionVerificationResult containing the status of each verification step.
verify_signature
pub
Validates a revision signature against a previous verification hash. Returns a ResultStatus indicating success or failure.
verify_witness
pub
Verifies a witness record in the chain, including optional Merkle proof verification. Returns a ResultStatus with verification details and logs.
verify_aqua_chain
pub
Performs verification of an entire AquaChain by validating each revision. Returns a comprehensive RevisionAquaChainResult.
sign_aqua_chain
pub
Signs a revision in the AquaChain using provided signature data. Updates chain state and returns modified chain data with logs.
witness_aqua_chain
pub
Adds witness information to a revision in the chain. Creates Merkle proofs and updates chain state.
generate_aqua_chain
pub
Creates a new AquaChain instance with an initial revision. Handles:
- File size validation (max 20MB)
- Hash generation
- Metadata creation
- Initial chain structure setup
delete_revision_in_aqua_chain
pub
Removes specified number of revisions from the chain while preserving chain integrity and genesis revision.
Constants
const MAX_FILE_SIZE: u32 = 20 * 1024 * 1024; // 20 MB in bytes
Data Types
Core Types
RevisionVerificationResult: Contains verification results for all aspects of a revisionResultStatus: Represents the status of a verification operationPageData: Contains the complete chain data structureHashChain: Represents a sequence of related revisionsRevision: Individual revision entry in the chainRevisionContent: Content data for a revisionRevisionWitness: Witness data for blockchain verificationRevisionSignature: Signature data for revision authentication
Error Handling
The library uses Rust's Result type for error handling, with error messages collected in Vec<String> for detailed logging and debugging.
Dependencies
sha3: For cryptographic hash functionschrono: For timestamp handlingethaddr: For Ethereum address parsing and validation
Usage Notes
- File size limits are enforced (20MB maximum)
- Genesis revisions cannot be deleted
- All operations maintain chain integrity through proper hash linking
- Each operation provides detailed logging for debugging and audit purposes
- Witness and signature operations require proper cryptographic inputs
Security Considerations
- All cryptographic operations use SHA3-512 for hashing
- Chain integrity is maintained through hash linking
- Signature verification includes wallet address validation
- Merkle proofs are used for witness verification
- All modifications preserve the chain's immutable history
Best Practices
- Always verify chain integrity after modifications
- Maintain proper error handling for all operations
- Log all operations for audit purposes
- Validate inputs before chain operations
- Preserve genesis revision integrity