Skip to main content
Trusset never sees or hashes your customers’ KYC data. You run the trusset-kyc-zk-proofs tool on your own infrastructure, and only two artifacts from its output ever reach Trusset:
  1. The root hash (kycHash) - a Rescue-Prime Merkle root over per-field commitments, stored on-chain by identity.verify.
  2. The bundle manifest (manifest.json) - hashes and public inputs only, used by identity.addClaimsFromProof to derive on-chain claims.
Names, birth dates, and document data stay on your machine. The proofs themselves (proofs/*.bin) and the encrypted witness material (secrets.enc) are never uploaded.

Run the proof tool

The tool is a separate repository you clone and run locally. It reads subject rows from /input (JSON or CSV) and writes one proof bundle per subject:
The root hash appears in three places - they are the same value: kycHash.hex, the kycHash field of manifest.json, and the kycHash column of the batch CSV.
secrets.enc and proofs/*.bin must never leave your infrastructure. Trusset endpoints only accept the manifest (hashes and public inputs) and the root hash.

Stub vs production manifests

Each manifest carries a mode. production manifests are accepted everywhere. stub manifests (CI smoke mode, --skip-proofs) are accepted by development instances only - a production instance rejects them with STUB_NOT_ALLOWED.

From bundle to verified customer

1

Verify on-chain with the root hash

Load the bundle’s manifest.json and call verifyFromManifest. The wallet address, root hash, country, investor type, and expiry days are read straight from the manifest; pass overrides for anything you want to change.
If you only stored the root hash (for example from the batch CSV), call verify directly with kycHash:
2

Add proof-backed claims

With the root hash on-chain, the manifest can back on-chain claims. The backend re-checks that the manifest’s kycHash matches the on-chain identity before adding anything.
One transaction is sent per claim. Use selected: ['KYC'] to add a subset.
3

Check the result

Which claims a proof can back

The KYC claim always derives from the root hash. Field-level claims derive from the manifest’s proof leaves: AML, TAX_RESIDENCY, SANCTIONS_CHECK, and PEP_CHECK are not proof-backed - add them with addClaim.

Batch onboarding

The tool’s batch CSV maps row-for-row onto batchVerify entries - up to 500 subjects in one on-chain transaction:
Addresses that are already actively verified are skipped on-chain (their existing root hash is kept); revoked identities are re-verified.

Troubleshooting