Verification
Locale Lending employs a multi-layered verification approach combining traditional identity checks, zero-knowledge proofs, and blockchain attestations.
Verification Stack
Verification Layers Stack
VERIFICATION LAYERS
1. Identity
Plaid IDV
KYC/AML
KYC/AML
2. Financial
Bank Data
Transactions
Transactions
3. Computation
Cartesi DSCR
Calculator
Calculator
4. Proofs
ZK Circuits
ProofVerifier
ProofVerifier
5. Credentials
BorrowerCredential
InvestorCredential
InvestorCredential
Layer 1: Identity Verification
Plaid IDV
Locale uses Plaid's Identity Verification service for KYC:
Accepted Documents:
- Passport
- Driver's license
- National ID card
Verification Checks:
- Document authenticity
- Expiration validation
- Selfie matching
- Liveness detection
- Watchlist screening
Process Flow
User Upload → Document Analysis → Selfie Capture →
Liveness Check → Watchlist Screen → Result
Layer 2: Financial Verification
Bank Connection
Users connect bank accounts via Plaid Link:
- OAuth Flow — Secure bank authorization
- Read-Only Access — No fund movement capability
- 90+ Days History — Required transaction data
Transaction Analysis
The system categorizes transactions:
| Category | Examples |
|---|---|
| Income | Salary, freelance, business revenue |
| Operating Expenses | Rent, utilities, subscriptions |
| Debt Payments | Loans, credit cards |
| Discretionary | Shopping, entertainment |
Layer 3: Off-Chain Computation
Cartesi DSCR Calculator
The Cartesi rollup processes financial data:
| Step | Description |
|---|---|
| Parse Transactions | Extract and categorize bank transactions |
| Calculate Income | Sum verified income sources |
| Calculate Expenses | Sum operating expenses |
| Extract Debt Service | Identify existing debt payments |
| Compute NOI | Net Operating Income = Income - Expenses |
| Calculate DSCR | NOI ÷ (Debt Service + New Loan Payment) |
| Return Result | DSCR value, monthly income, approval status |
Computation Output
Results are published as blockchain notices containing:
- DSCR value
- Monthly income average
- Debt service total
- Approval recommendation
Layer 4: Zero-Knowledge Proofs
Why ZK Proofs?
Instead of exposing raw financial data, ZK proofs allow proving specific claims:
| Claim | Verification |
|---|---|
| "Income exceeds $40,000" | Prove without revealing actual amount |
| "DSCR is above 1.25" | Prove threshold met |
| "KYC completed" | Prove status without PII |
Circom Circuits
Locale uses Circom for ZK circuits:
- DSCR Threshold Proof — Proves DSCR meets minimum
- KYC Verification Proof — Proves identity verified
- Income Range Proof — Proves income in range
Proof Generation
Input Data → Circom Circuit → Groth16 Prover → ZK Proof
zkTLS Implementation
What is zkTLS?
zkTLS proves that data came from a specific HTTPS source without revealing the data itself.
Flow
1. User connects bank via Plaid
2. Reclaim Protocol records TLS session
3. User selects data to disclose
4. ZK proof generated
5. Smart contract validates proof
Benefits
| Benefit | Description |
|---|---|
| Privacy | Raw data never exposed |
| Authenticity | Proof data came from Plaid |
| Verifiability | On-chain validation |
| Tamper-proof | Cannot fabricate proofs |
Layer 5: On-Chain Credentials
Credential Issuance
After verification:
- All checks pass
- Backend generates credential data
- Admin mints SBT to user wallet
- User gains platform access
Credential Verification
Smart contracts check credential validity before allowing platform actions:
| Check | Description |
|---|---|
| isValid | Verifies credential exists and is not expired |
| kycLevel | Confirms required KYC tier for action |
| notRevoked | Ensures credential hasn't been revoked |
Security Measures
Data Protection
| Layer | Protection |
|---|---|
| At Rest | AES-256 encryption for Plaid tokens |
| In Transit | TLS 1.3 for all connections |
| On-Chain | Only proofs and commitments stored |
Attack Mitigations
| Attack | Mitigation |
|---|---|
| Replay | Proof nullifiers |
| Front-running | Commit-reveal scheme |
| Sybil | One credential per identity |
| Data Tampering | zkTLS verification |
Verification Costs
| Step | Approximate Cost |
|---|---|
| Plaid IDV | $2-5 |
| Transaction API | $0.10 per call |
| Credential Mint | ~150,000 gas |
| Proof Verification | ~300,000 gas |
Next Steps
- Credentials — Soulbound token details
- Security — Security measures
- For Borrowers — Verification guide