Proof of Reserves (PoR)

Security Updated May 2026

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

ProvenHow
Customer balances are accounted forMerkle tree inclusion proof
Total reserves existSigned wallet addresses / blockchain attestations
Reserves ≥ liabilitiesComparing total reserves to Merkle root sum

What It Does NOT Prove

Not ProvenWhy It Matters
No liabilitiesExchange could have borrowed assets to pass PoR
No double-countingSame assets could be used as reserves for multiple entities
SolvencyHaving assets ≠ being solvent (could owe more than assets are worth)
Internal misuseFTX 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

ProviderMethodClients
ChainlinkOn-chain attestations via smart contractsstables, exchanges
Armanino (Trail of Bits)Auditor-signed Merkle rootsBinance, Kraken (historical)
HackenIndependent PoR auditsMultiple exchanges
BNY MellonTraditional custodian attestationsInstitutional

Exchanges and PoR

Post-FTX, major exchanges publish PoR:

ExchangeFrequencyAssets CoveredIndependent Audit
BinanceMonthly~12 assetsPartial
KrakenQuarterlyMajor assetsFully audited
CoinbasePublic financialsAll assetsSEC reporting (public company)
OKXMonthly~22 assetsPartial
BitfinexIrregularMajor assetsPartial

How to Verify Your Own Balance

  1. Find your exchange’s PoR verification page
  2. Get your unique Merkle proof (usually from account settings)
  3. Use the exchange’s verification tool or a third-party verifier
  4. Confirm your balance is included in the Merkle root

PoR for Stablecoins

Stablecoin issuers use PoR to prove reserves back the peg:

StablecoinPoR MethodFrequency
USDC (Circle)Monthly attestations by DeloitteMonthly
USDT (Tether)Quarterly attestations by BDOQuarterly
DAI (MakerDAO)Real-time on-chain collateralContinuous
PAXG (Paxos)Monthly audited gold reservesMonthly

USDC is considered the gold standard — fully audited monthly attestations showing reserves in cash and short-term US Treasuries.

Limitations and Criticisms

CriticismDescription
Snapshot in timeProves reserves at a moment — assets can be borrowed just before
No proof of liabilitiesShowing you have $10B doesn’t prove you don’t owe $12B
Self-attestation riskIf the exchange generates its own Merkle tree, it can manipulate data
Merkle tree manipulationNegative balances or fake accounts can be hidden in the tree
Off-chain assetsPoR 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.