Compliance evidenceanyone can verify.
Hubz VCE anchors cryptographic evidence of compliance events on Base and proves compliance claims with zero-knowledge proofs verified on zkVerify. Personal data never goes on-chain.
Live activity
339,427
Transactions on Horizen and Base
Updated live as organizations across the DataHubz ecosystem record and prove evidence.
- Networks
- Base mainnet · zkVerify mainnet
- Live since
- November 2025
An audit trail that doesn't depend on trusting the auditor.
Evidence anchoring
Each compliance event is reduced to a cryptographic hash and anchored by the EvidenceAnchor contract on Base, each in its own transaction. Every record gets a sequential ID, a type, and a timestamp that anyone can query.
Zero-knowledge circuits
Circom circuits and Groth16 proofs let a claim be checked without disclosing what it is about. Only commitments and hashes reach the chain; personal data never does.
Independent verification
Proofs are verified on zkVerify, and the evidence lives on a public blockchain. Anyone can confirm a record with a standard RPC call, without an account and without trusting DataHubz.
From an event to evidence on a public blockchain.
Hubz VCE runs alongside the systems where compliance work happens. Each event produces a proof and an anchored hash, so the record can be checked later by anyone, and changed by no one.
- 1
A compliance event happens
A document is uploaded, signed, reviewed, or a security scan completes.
- 2
A commitment is formed
The event is hashed. For signatures, a Poseidon commitment binds the signer, the signature, the document, and the time.
- 3
A proof is generated
A Groth16 proof shows the claim holds, without revealing the private inputs.
- 4
The proof is verified
zkVerify checks the proof and records the verification.
- 5
The evidence is anchored
The evidence hash is anchored on Base in its own transaction and becomes part of an immutable audit trail.
Prove the claim. Keep the details private.
Document signature
Binds a signature to its signer, the document, and the moment it was made, through a Poseidon commitment. The proof shows the signature is valid; the signer, the signature, and the document stay private.
document_signature.circom · Groth16
Security scan
Proves a security scan met a bar without disclosing its findings, its score, or the tools that produced it.
- No critical vulnerabilities
- No high-severity vulnerabilities
- No critical and no high vulnerabilities
- Security score meets a threshold
- Full compliance: all of the above
security_scan_proof.circom · Groth16
The engine behind compliance proofs in DataHubz Attest.
DataHubz Attest uses the Hubz VCE security-scan circuit for its compliance proofs. An organization can prove, for example, that a scan found no critical vulnerabilities, without handing over the scan. Each proof is verified on zkVerify mainnet and its receipt is anchored on Base.
No critical vulnerabilities
Proven over a private security scan
- Groth16 proof valid
- Verified on zkVerify mainnet
- Receipt anchored on Base
- Scan findings never disclosed
No account. No API key. Just the chain.
Every evidence figure on this page can be checked independently against the chain with standard tooling. Each contract keeps a monotonic counter, and each record can be read back with its hash, type, submitter, timestamp, and metadata. Hubz VCE has run on Base since October 2026, and the transactions it recorded on Horizen mainnet from November 2025 are part of its count. Horizen stops on November 5, 2026, so its contracts' counters and every record Attest sent there are archived with storage proofs, checked against Horizen's state as posted to Base.
Base mainnet
- EvidenceAnchor0xC2f4d21B…aC97dF
- SecureScanAnchor0x9d2d0bb3…a4502B
Horizen mainnet, November 2025 to October 2026
- EvidenceAnchor0xAB258C03…FFd9E0
- SecureScanAnchor0x7b32721e…561209
# total evidence records cast call 0xC2f4d21B60f3914473DfBD3d2019580f19aC97dF \ "evidenceCounter()(uint256)" \ --rpc-url https://mainnet.base.org # read one record cast call 0xC2f4d21B60f3914473DfBD3d2019580f19aC97dF \ "getEvidence(uint256)((bytes32,uint8,address,uint256,string))" 1 \ --rpc-url https://mainnet.base.org