The Suitability Verifier Logic ensures that investors can prove compliance with regulatory requirements without revealing their raw questionnaire responses. This is done using a zkSNARK proof.
-
Investor (User)
- Fills out a suitability questionnaire offchain.
- FE (frontend) generates a commitment hash of the answers.
- BE (backend) computes zkSNARK proof:
- Shows that the answers meet required conditions.
- Keeps raw answers private.
-
Frontend (FE)
- Collects user answers.
- Passes them securely to BE.
- Displays status to user (proof verified or not).
-
Backend (BE)
- Generates proof using Circom circuit.
- Sends proof + public signals to smart contract.
-
Smart Contract (Verifier)
- Receives proof + signals.
- Runs
verifyProof(...)onchain. - Marks user as "suitable" if proof is valid.
The contract only verifies:
- Proof validity.
- Public signals match expected format (e.g., user address, KYC hash).
Raw answers never leave the BE and are not revealed onchain.
SuitabilityVerified(address indexed user)β user passed the suitability check.SuitabilityRevoked(address indexed user)β regulator/admin revoked suitability.

