1 Prize Won

Check-Fi

Project Information

At a Glance

CheckFi lets suppliers get paid today, funders earn verified yield, and ZK proofs make the credit score trustless no data exposure required.

Description

The Problem

Invoice factoring today is opaque. Suppliers wait 30-90 days to get paid. Funders buying those invoices have no way to independently verify the credit risk. And traditional credit scoring requires exposing sensitive debtor data (revenue, payment history, defaults) to every potential buyer. You either sacrifice privacy for transparency, or transparency for privacy.

What CheckFi Does

CheckFi is a privacy-preserving invoice factoring marketplace built natively on XRPL. Suppliers tokenize unpaid invoices, choose exactly which fields stay private, and get paid instantly at a discount. Funders browse scored invoices and earn real yield at maturity. The credit grade behind every invoice is computed inside a RISC Zero zkVM and proven correct with a Groth16 proof, so nobody has to trust the scorer. The proof is verified on-chain by an XRPL Smart Escrow, and funds only release if the math checks out.

How It Works

1. Create - Supplier uploads an invoice and toggles a privacy mask per field. Debtor name, payment history, and revenue can stay hidden. Amount and maturity are always visible.

2. Approve - Debtor receives a link, connects their XRPL wallet, and approves. This atomically creates a Single Asset Vault (collateral), a Check (deferred payment instrument), and a Credential (XLS-70 attestation) in a single Batch Transaction on XRPL Devnet.

3. Score - The invoice data (including masked fields) is fed into a RISC Zero zkVM guest program written in Rust. The deterministic algorithm scores payment history, business maturity, and invoice-to-revenue ratio to produce a grade (A/B/C/D), APY, and purchase price. Debtor industry and jurisdiction are committed to the journal when unmasked, giving funders verifiable context without affecting the numeric grade.

4. Fund - The scored invoice appears on the marketplace. A funder deposits into the vault at the discounted purchase price and receives MPT (Multi-Purpose Token) shares. The supplier withdraws instant liquidity.

5. Escrow - An EscrowCreate transaction on groth5 devnet locks the face value with a 14 KB Wasm verifier binary inlined as the finish condition. This Wasm contains the RISC Zero image ID baked in at compile time, so it will only accept proofs from the exact scoring algorithm in this repo.

6. Settle - EscrowFinish submits the journal and seal as transaction memos. The groth5 node executes the Wasm on-chain, calls risc0::verify(), and releases funds to the funder only if the proof is cryptographically valid.

What Makes It Special

Selective-disclosure ZK proofs. The supplier controls exactly which fields funders see. Masked fields still feed the scoring computation inside the zkVM. The proof guarantees the grade is honest even when the underlying data is hidden.

Fully XRPL-native. No Solidity. No EVM contracts. The entire financial layer uses XRPL primitives: Single Asset Vaults, Checks, MPTs, Credentials, Memos, Batch Transactions, and Smart Escrows. The only cross-chain interaction is the Boundless proof market on Base for decentralized proving.

On-chain ZK verification. The groth5 Smart Escrow doesn't just store the proof hash. It runs a Wasm program that calls risc0::verify() with the Groth16 seal and journal. Funds are cryptographically locked until a valid proof is presented. A zeroed or forged seal returns tecFAILED_PROCESSING.

Technical Details

XRPL Primitives: Vaults (collateral lockbox), MPTs (funder shares), Checks (deferred payment), Credentials (debtor attestation), Memos (audit trail + ZK data), Smart Escrows (ZK-verified settlement), Batch Txs (atomic approval/funding).

Under the hood: RISC Zero zkVM guest (Rust, RISC-V) scores invoices from private inputs. 160-byte journal (grade, APY, price, input hash) and 256-byte Groth16 seal generated via Boundless proof market on Base mainnet. At settlement, EscrowFinish on groth5 passes both as memos to a 14KB Wasm verifier inlined in the escrow. Wasm calls risc0::verify() against a compile-time baked image ID. Funds release only on cryptographic validity. Tech: RISC Zero zkVM 3.0.3, Boundless Market, xrpl.js, risc0-verifier-xrpl-wasm, xrpl-wasm-stdlib, Next.js 16, React 19, TailwindCSS 4, MongoDB. Challenges: RISC Zero word-aligns each u8 to 4 bytes, inflating journal from 32 to 128 bytes. groth5 Wasm has no std, built for wasm32v1-none with raw calls

Team

3
FF

Fabian Ferno

LF

Leo Franklin

RK

Romario Kavin

Hackathon

HACK THE BLOCK 2026 Paris Blockchain Week XRPL Hackathon

Duration

Apr 11, 6:30 AM - Apr 12, 6:00 PM

View Hackathon Details

Prizes Won

1

Prizes Won

1 prize awarded

First Place šŸ„‡

Sponsored by XRPL COMMONS
€2,500
EUR
Total Prize Money
€2,500