ProofOS
Verifiable income proofs for crypto India
Created on 14th March 2026
•
ProofOS
Verifiable income proofs for crypto India
The problem ProofOS solves
Right now, if you hold ₹2Cr in ETH, you cannot:
- Get a home loan (banks won't accept wallet statements as income proof)
- Apply for a US visa (embassies want bank statements, not transaction exports)
- Pass an audit (CAs need verifiable tax records, not spreadsheets)
- Prove solvency to a business partner (without handing over your entire wallet history)
The current options are bad:
- Export your full wallet history → privacy gone
- Trust a CA with raw data → no cryptographic guarantee
- Use existing tools (KoinX, Cleartax) → they give you a PDF, not a proof
ProofOS lets you prove facts about your money without revealing your money.
Generate a ZK proof that says:
- "I earned ₹40L this year" (for a bank loan)
- "I paid ₹6.2L in taxes" (for an auditor)
- "My net worth is above ₹50L" (for a visa application)
...all backed by on-chain verification. No transaction history exposed. No trust required.
Who it's for:
- Crypto freelancers applying for visas
- Traders getting home loans
- Family offices managing 20+ wallets (via ENS)
- Anyone filing ITR-VDA who wants a verifiable proof
The tax calculator is the entry point. The real product is financial credibility for crypto-native India.
Challenges we ran into
1. Cairo u256 ≠ Solidity u256
Starknet uses u256 { low: u128, high: u128 }. Ethereum just has uint256. When we bridged the tax value from Cairo to Solidity via L2→L1 messaging, the Ethereum contract read garbage values because we didn't pack/unpack correctly.
Fix: Split the u256 into two uint128 values in the Cairo message payload, then reconstructed it in Solidity as (high * 2^128) + low. Took 3 failed message consumptions to debug.
2. Starknet L2→L1 messages don't appear instantly
The proof gets committed on Starknet, then bridged to Ethereum via send_message_to_l1_syscall. But the message doesn't show up in Starknet Core immediately - you have to wait for finalization.
Fix: Added a polling loop in the frontend that checks isVerified() every 10 seconds. Shows the user a spinner with "waiting for Starknet finalization" instead of letting them spam the verify button.
Tracks Applied (8)
Privacy
DeFi
Best creative use of ENS
Ethereum Name Service
Pool prize
Ethereum Name Service
Build What Big Tech Won't
Fileverse
DeFi 2.0 - New Primitives
Base
Privacy
Base
BEST Overall Project
Technologies used
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
