Mathematical, not procedural.
Most "audit trails" are append-only because the application says so. Ours is append-only because the database enforces it, hashed because cryptography enforces it, and verifiable because the public chain anchors it.
Hash-chained audit ledger
Every ledger entry stores hash = SHA-256(seq + ts + prev_hash + payload).
Editing entry N requires rewriting every subsequent entry โ and even that won't match the Merkle anchor.
seq=1 prev=0000... hash=55a1934a701e5970e4bcde96a7429540d2250422f338ff01b88785c7bc75773f
seq=2 prev=55a1... hash=5e73b2c4138979c77cf18197cc7702a84e34440eb79b0a28ef0762a1e2f52cb3
seq=3 prev=5e73... hash=โฆ ECDSA P-256 signatures
Each party (sender, receiver, witness) signs the handover payload with their private key. Private keys never leave the device โ on web via Web Crypto, on mobile via Secure Enclave / TEE, in production via WebAuthn / Passkeys.
Public keys live with us. We can verify but never forge.
Merkle anchoring
Every 10 ledger entries โ Merkle root โ published to a public chain (or notary service). Even a privileged admin who tampered with their own database can't change history without contradicting the published root.
Demo uses a simulated testnet. Production deploys can publish to Polygon, Arbitrum, or any EVM chain.
Zero-knowledge federation
Peer organisations exchange salted SHA-256 commitments of banned actors. Querying "is X banned somewhere?" is satisfied by Merkle membership proofs. Nobody learns who banned whom, or why โ only that this person has been blacklisted.
Forensic-grade evidence bundles
When fraud is detected, you export a tamper-evident bundle: signed by the investigator (HMAC-SHA256), cryptographically anchored to the ledger, suitable for law enforcement and insurance adjusters.
Every export is also logged to the ledger. The watchers are watched.
Compliance
We provide a Data Processing Agreement (DPA) on request. Penetration test report shared on Enterprise tier under NDA.