Design · README.md
CBA Hackathon: income-verified CommBank ID via CDR Data Pods
A renter scans a QR code on a listing and lands in a mock CommBank app. The app sets up a CommBank ID with income verification. Income comes from the customer's own CommBank accounts (CBA core banking) and, if they choose, from Westpac, NAB or ANZ through the Consumer Data Right, with CBA acting as the Accredited Data Recipient. CDR data only lands in a pod, and only once another bank is brought in. The data lands in a self-managing CDR Data Pod, which works out income, issues zero-knowledge income proofs and deletes itself in line with CDR rules. MATTR VII issues the credential into the mock CommBank app's wallet, built on MATTR's mDocs Holder SDK.
Internal hackathon demo. All customer data is synthetic.
- Plan: see
docs/and the interface contracts indocs/CONTRACTS.md - Design reference:
docs/commbank-id-in-app-issuance.png - CDR Kit source:
vendor/pingidentity-cdr-sandbox(pinned, seevendor/PINNED.txt)
Layout
| Path | What |
|---|---|
participants/register |
Mock CDR Register |
participants/dh-westpac, dh-nab, dh-anz |
Data Holders (each holds its own config) |
participants/adr-cba |
CBA as ADR: PingFederate + CDR Kit orchestration + consent screens |
participants/cba-issuer |
Eligible-offers API, PingAuthorize gateway, CBA core banking mock + total-income prover, MATTR config |
packages/pod-runtime, pod-programs |
CDR Data Pods: actor runtime, adapters, income, ZKP, retention |
packages/zk-circuits |
circom circuits: income ≥ threshold, and CBA + CDR income ≥ threshold |
apps/ios |
Mock CommBank iOS app with embedded wallet |
apps/qr-landing, apps/zk-verifier |
Listing QR page and agent-facing proof verifier |
data/customers.json |
Demo customers (placeholder mobiles), source of every seed (DH seeds, and the cba blocks → core banking seed) |
End to end over Railway (CBA-only, CBA + Westpac via CDR, add another bank, total-income proofs, MATTR issuance): PLAYWRIGHT_CORE=… node deploy/e2e-income-sources.mjs (see the script header).