-
Notifications
You must be signed in to change notification settings - Fork 502
Description
Ticket Contents
Description
Finternet's UNITS system has an existing credential token implementation conforming to W3C Verifiable Credentials 2.0. This credential token powers compliance enforcement at transfer time — a token transfer policy references a required VC type (e.g., KYC, accredited investor status), and UNITS checks the holder's credential store before permitting the transfer.
However, the current implementation does not support two critical privacy-preserving capabilities:
Verifiable Presentations (VPs): A user cannot yet construct a presentation containing only a subset of claims from one or more VCs to share with a verifier, without exposing the full credential.
Zero-Knowledge based selective disclosure: A user cannot yet prove that a credential claim meets a threshold (e.g., age > 18, credit_score > 750) without revealing the raw value.
This project extends the existing W3C VC 2.0 credential token to add both capabilities, making UNITS the first open financial infrastructure layer to support privacy-preserving credential verification natively at the token policy layer.
Goals & Mid-Point Milestone
Goals
Current State
UNITS credential token issues and stores W3C VC 2.0 compliant credentials
Credentials are verified at transfer time by checking validity and expiry against the holder's credential store
No VP construction or selective disclosure is supported — the full credential must be presented
Proposed Extensions
-
Verifiable Presentation (VP) layer:
- VP builder: user-side SDK or internal service within finternet App to construct a W3C VC 2.0 compliant Verifiable Presentation containing a specified subset of claims from one or more VCs held in the credential store
- VP signing: VP signed with the holder's Finternet account key, binding the presentation to the presenting identity
- VP verification: A verifier module that accepts a VP in place of a raw VC at transfer policy evaluation time
-
ZK selective disclosure:
- Contributor to evaluate and propose the most suitable ZK scheme for the Finternet context (candidates: BBS+ signatures for unlinkable selective disclosure; circom/Groth16 for arithmetic threshold proofs; SD-JWT as a lighter-weight alternative)
- Implement ZK proof generation for at least two claim types: boolean membership (e.g., jurisdiction ∈ {IN, SG}) and threshold (e.g., credit_score > threshold)
- UNITS verifier extended to accept and verify ZK proofs during transfer policy evaluation without accessing the raw claim value
-
Integration with token transfer policy:
- Token Manager can specify in token class policy whether a full VC, a VP, or a ZK proof is acceptable for a given compliance check
- Policy evaluation log records proof type used (VC / VP / ZKP) without storing the credential data itself
Mid-Point Milestone:
- VP builder and VP verifier fully functional for single-credential, single-claim-subset presentations. VP accepted by UNITS transfer policy evaluator in a test token class. ZK scheme selection documented with rationale.
Setup/Installation
Builds on the existing UNITS credential token codebase. ZK tooling setup (circom, snarkjs, or any chosen scheme) to be documented as part of deliverable. All new capabilities to be runnable locally via Docker Compose against a development UNITS instance.
Expected Outcome
- VP builder SDK: constructs W3C VC 2.0 compliant Verifiable Presentations with configurable claim subsets
VP verifier module integrated into UNITS transfer policy evaluation - ZK selective disclosure: proof generation and verification for ≥2 claim types (boolean + threshold)
Scheme selection document: rationale for chosen ZK approach, tradeoffs vs. alternatives (BBS+, SD-JWT, Groth16), and recommendation for future claim types - Full test suite: VP round-trip, ZK proof round-trip, policy evaluation with VP and ZKP inputs, rejection of tampered proofs
- Developer documentation: how to configure a token policy to require VP or ZK proof, how to build and present a VP as a holder
Acceptance Criteria
VP conforms to W3C VC 2.0 Verifiable Presentations specification
- VP is signed with holder's key and verifiable without contacting the issuing Trust Provider
- UNITS transfer policy evaluator correctly accepts a valid VP and rejects a tampered or expired one
- ZK proof generation produces a valid proof for boolean membership and threshold claim types
- UNITS verifier accepts ZK proofs without accessing the raw claim value
- Token Manager can configure token policy to accept VC / VP / ZKP interchangeably per claim type
- Policy evaluation log records proof type without storing credential data
- Test suite covers: valid VP, expired VP, tampered VP, valid ZKP, invalid ZKP, policy with VP requirement, policy with ZKP requirement
Implementation Details
- Base: Existing UNITS W3C VC 2.0 credential token implementation
- VP format: W3C Verifiable Presentations Data Model 2.0; JSON-LD or CBOR-LD serialisation
- VP signing: ECDSA and EdDSA with holder's Finternet account key
- ZK scheme: Contributor to evaluate and select from different schemes. Recommendation expected by week 3.
- Verifier integration: UNITS policy evaluator extended with a ProofVerifier interface accepting {type: "VC" | "VP" | "ZKP", proof: ...}; each type dispatched to its respective verification module
Mockups/Wireframes
No response
Product Name
Finternet Verifiable Credentials
Organisation Name
FinternetLabs
Domain
Financial Inclusion
Tech Skills Needed
TypeScript or Rust, W3C Verifiable Credentials 2.0, Zero-Knowledge Proofs (BBS+, circom/snarkjs, or SD-JWT), JSON-LD, Cryptography, Docker, Technical Documentation
Mentor(s)
Finternet Engineering Team Member
Category
Backend