Slide 01 // Title

CRISP Crisp Logo

Prove you're solvent. Reveal nothing.

A real-time zero-knowledge oracle that proves a Stellar issuer's reserves ≥ liabilities on-chain — leaking no customer balance and no true total.

Soroban · BN254 Pairing Check

attest_reserves(proof, root, L, R, ax, ay)
→ valid proof ✓ true
→ tampered ✗ false

Stellar Hacks: Real-World ZK · DoraHacks

Slide 02 // The Problem

Proof-of-Reserves forces a false choice: trust, or transparency.

Privacy leakage

Standard PoR unmasks individual customer balances and the issuer's exact total assets to competitors.

Retrospective

Audits are a quarter-old snapshot, signed by an accounting firm you also have to trust.

No live signal

By publication, the reserves an attestation describes may already be gone. One rumor → a run.

Slide 03 // The Solution

Continuous, private, on-chain solvency.

Crisp encodes the whole liability book as a ZK Merkle-Sum Tree and proves one statement on-chain: "liabilities sum to L, reserves R ≥ L, and I signed this" — revealing no balance and no exact figure.

Real-time

scrape → prove → attest

Zero leakage

balances salted & blinded

Issuer-bound

in-circuit EdDSA signature

Inclusion

holder verifies in <1s

Slide 04 // Live Demo & Flow

What the judges see

$ npm run prove:demo

1. Connect Freighter → Issuer Dashboard

2. Scrape holder balances (Horizon)

3. Merkle-Sum Tree + Groth16 + EdDSA(root)

4. attest_reserves(...) → BN254 pairing on-chain

valid proof → true ✓

tampered input → false ✗ (negative control)

5. Customer salt → local inclusion check <1s

Honest status: the hosted web app is a demo sandbox for UX; the load-bearing ZK is prove:demo + the deployed contract.

Slide 05 // Architecture & Tech

Poseidon + EdDSA in the circuit. BN254 pairing on the ledger.

ZK Circuit

Circom/Groth16 over bn128 · Merkle-Sum + Poseidon + EdDSA-Poseidon · ~30k constraints · nPublic = 5

Verifier

Rust/Soroban 26 · env.crypto().bn254().pairing_check() runs full Groth16 on-chain (Protocol 25/26) · g1_mul/g1_add MSM

Indexer

Stellar Horizon · native balance/trustline scraping, no custom node

App

Next.js 16 / React 19 / Supabase · roots indexed from on-chain events

A raw-WASM pairing check would exhaust Soroban's CPU budget — Crisp leans on the native host functions exactly where it counts.

Slide 06 // Market & Impact

Mandated demand, not speculation.

$200B+

stablecoin market cap — every dollar a liability someone must prove is backed.

MiCA

+ US frameworks + exchange PoR mandates force recurring attestation.

10×

better than the audits issuers already pay for — faster, private, continuous.

Slide 07 // Business Model

How Crisp survives the hackathon

01

Attestation-as-a-Service — SaaS per attestation cadence (hourly/daily/on-demand).

02

"Crisp Verified ✓" SDK — wallets, exchanges & aggregators embed the badge. Freemium → enterprise.

03

Compliance data layer — historical solvency roots for auditors & regulators (premium analytics).

04

Cost moat — sub-cent Soroban verification → attest continuously at a price legacy auditors can't touch.

Slide 08 // Competitive Edge

Why Crisp wins

Big-4 audit On-chain Merkle PoR Crisp
Real-time ⚠️
Privacy ⚠️ NDA
Trustless
Issuer-bound PDF sig ❌ anyone posts ✅ in-circuit EdDSA
Cost / attestation $$$$ gas sub-cent

Most ZK PoR demos let anyone post a root. Crisp's BabyJubjub EdDSA binds the proof to the issuer's key.

Slide 09 // Traction & Validation

Built & verified, not vaporware

✅ Verifies on testnet

Real Groth16 proof accepted on-chain — reproduce with npm run prove:demo.

✅ Negative control

Tampered inputs rejected on-chain — verification is real, not theater.

✅ Hardened circuit

Added in-circuit EdDSA identity binding: 21,908 → ~30,000 constraints.

✅ Measured cost

Pairing check ≈ 22.4M CPU (~22% budget), ~120KB mem; G1 op ≈ 14,488 CPU.

Slide 10 // Roadmap

30 / 60 / 90 days

30 DAYS

Redeploy BN254 + EdDSA contract; stellar.expert verified + live attestation explorer.

60 DAYS

In-browser proving (snarkjs WASM), multi-asset reserve baskets, distributed scrapers.

90 DAYS

Multi-issuer registry + regulator read-API; first design-partner issuer; badge SDK.

Slide 11 // Team

Engineering leverage

Edy Cu

full-stack + applied-ZK engineer

Solo-built the entire stack — Circom circuits (Merkle-Sum + Poseidon + EdDSA), the Rust/Soroban verifier, the Horizon scraper, and the Next.js dashboard. One of five real on-chain ZK products shipped for this hackathon.

Slide 12 // The Ask

Trust is a rumor.
Proof is math.

Crisp makes solvency a continuous, private, on-chain fact — the missing primitive for every regulated issuer on Stellar.

npm run prove:demo  # go verify it yourself