What is Proof of Reserves?
Proof of Reserves (PoR) is an attestation mechanism that allows crypto exchanges, stablecoin issuers, and custodians to prove they hold sufficient assets to back customer balances — without revealing individual user data. It uses Merkle trees and cryptographic commitments to provide transparency.
PoR emerged as a critical trust mechanism after the FTX collapse (November 2022), where the exchange secretly used customer funds, leaving an $8B+ hole. PoR lets users independently verify that their custodian is solvent.
How Proof of Reserves Works
The Merkle Tree Approach
1. Exchange records each user's balance (e.g., Alice: 5 BTC, Bob: 3 BTC, ...)
2. Balances are hashed and placed as leaves in a Merkle tree
3. The Merkle root is published on-chain or via a notary
4. Total reserves are proven via signed wallet addresses or blockchain attestation
5. Each user can verify their balance is included:
→ User downloads their Merkle proof
→ Recomputes the path to the root
→ If it matches the published root → their balance was counted
This allows each user to verify their individual balance is included in the total, without seeing anyone else’s balance.
Verification Example
Alice's balance: 5 BTC → hash("alice:5")
Bob's balance: 3 BTC → hash("bob:3")
Carol's balance: 2 BTC → hash("carol:2")
Merkle tree:
Root = hash(HAB + HC)
/ \
HAB = hash(HA + HB) HC = hash(HC)
/ \
HA = hash("alice:5") HB = hash("bob:3")
Alice verifies: hash("alice:5") + HB → HAB → HAB + HC → Root
If Root matches published root → Alice's 5 BTC was counted ✓
What PoR Proves (and Doesn’t Prove)
What It Proves
| Proven | How |
|---|---|
| Customer balances are accounted for | Merkle tree inclusion proof |
| Total reserves exist | Signed wallet addresses / blockchain attestations |
| Reserves ≥ liabilities | Comparing total reserves to Merkle root sum |
What It Does NOT Prove
| Not Proven | Why It Matters |
|---|---|
| No liabilities | Exchange could have borrowed assets to pass PoR |
| No double-counting | Same assets could be used as reserves for multiple entities |
| Solvency | Having assets ≠ being solvent (could owe more than assets are worth) |
| Internal misuse | FTX passed audits while misusing funds |
A PoR snapshot is a point-in-time proof. Between snapshots, assets can be moved or borrowed.
Major PoR Providers
| Provider | Method | Clients |
|---|---|---|
| Chainlink | On-chain attestations via smart contracts | stables, exchanges |
| Armanino (Trail of Bits) | Auditor-signed Merkle roots | Binance, Kraken (historical) |
| Hacken | Independent PoR audits | Multiple exchanges |
| BNY Mellon | Traditional custodian attestations | Institutional |
Exchanges and PoR
Post-FTX, major exchanges publish PoR:
| Exchange | Frequency | Assets Covered | Independent Audit |
|---|---|---|---|
| Binance | Monthly | ~12 assets | Partial |
| Kraken | Quarterly | Major assets | Fully audited |
| Coinbase | Public financials | All assets | SEC reporting (public company) |
| OKX | Monthly | ~22 assets | Partial |
| Bitfinex | Irregular | Major assets | Partial |
How to Verify Your Own Balance
- Find your exchange’s PoR verification page
- Get your unique Merkle proof (usually from account settings)
- Use the exchange’s verification tool or a third-party verifier
- Confirm your balance is included in the Merkle root
PoR for Stablecoins
Stablecoin issuers use PoR to prove reserves back the peg:
| Stablecoin | PoR Method | Frequency |
|---|---|---|
| USDC (Circle) | Monthly attestations by Deloitte | Monthly |
| USDT (Tether) | Quarterly attestations by BDO | Quarterly |
| DAI (MakerDAO) | Real-time on-chain collateral | Continuous |
| PAXG (Paxos) | Monthly audited gold reserves | Monthly |
USDC is considered the gold standard — fully audited monthly attestations showing reserves in cash and short-term US Treasuries.
Limitations and Criticisms
| Criticism | Description |
|---|---|
| Snapshot in time | Proves reserves at a moment — assets can be borrowed just before |
| No proof of liabilities | Showing you have $10B doesn’t prove you don’t owe $12B |
| Self-attestation risk | If the exchange generates its own Merkle tree, it can manipulate data |
| Merkle tree manipulation | Negative balances or fake accounts can be hidden in the tree |
| Off-chain assets | PoR can’t track fiat in bank accounts or assets lent to third parties |
The “Borrowed Reserves” Problem
Exchange A: Has $5B in actual reserves, owes customers $5B ✓
Exchange B: Borrows $1B from Exchange A just before PoR snapshot
→ Exchange B shows $6B reserves for $5B customers ✓ (passes PoR!)
→ Exchange A shows $5B reserves for $5B customers ✓ (passes PoR!)
→ Combined: $6B exists, but $10B is "proven" → double-counted
This is why independent, audited PoR is critical — and why self-reported PoR is less trustworthy.
Frequently Asked Questions
Q: Does PoR guarantee my funds are safe? A: No. PoR proves reserves at a point in time but doesn’t guarantee ongoing solvency, proper risk management, or that funds aren’t lent out between snapshots.
Q: Why doesn’t every exchange do PoR? A: Some cite privacy concerns (revealing total assets). Others don’t want the scrutiny. Regulated exchanges (like Coinbase as a public company) have stricter financial reporting requirements that go beyond PoR.
Q: Can PoR be faked? A: Yes, if self-reported without independent audit. The exchange could generate a fake Merkle tree. Third-party audited PoR is far more trustworthy.