Skip to content
WhySoGeek.
Crypto

Proof of Reserves: How Exchanges Prove They Hold Your Crypto

Proof of reserves uses Merkle trees to let exchanges show they hold enough assets to cover deposits. Here is how it works and what it misses.

Sam Carter 8 min read
Cover image for Proof of Reserves: How Exchanges Prove They Hold Your Crypto
Photo: _Hadock_ / flickr (BY-NC-ND 2.0)

After the collapse of FTX revealed that a major exchange had been quietly lending out customer deposits, the crypto industry scrambled for a way to prove solvency. The answer that took hold is proof of reserves, a cryptographic method that lets an exchange demonstrate it holds enough assets to cover every customer balance, and lets each user verify their own balance is included.

Quick answer

Proof of reserves (PoR) lets an exchange show it controls on-chain assets that cover all customer deposits, using a Merkle tree that compresses every balance into a single root hash so any user can verify their own balance is included without seeing anyone else's. A reserve ratio at or above 100% is the reassuring number to look for. But PoR is a point-in-time snapshot and does not capture hidden off-chain liabilities, so the strongest assurance pairs it with an independent liabilities audit and, for large holdings, self-custody.

Key takeaways

  • Proof of reserves (PoR) is a method for an exchange to show it holds assets that cover all customer deposits.
  • It uses a Merkle tree, a structure that compresses every customer balance into a single fingerprint called the Merkle root.
  • Any user can verify their balance is included in the proof without seeing anyone else's account.
  • PoR proves what an exchange holds but not what it owes off the books; it is incomplete without a liabilities audit.
  • Newer systems use zk-SNARKs to prove solvency while better protecting individual balance privacy.

What proof of reserves proves

Proof of reserves answers one question: does the exchange actually control enough crypto to cover what customers are owed? It does this in two parts. First, the exchange demonstrates control of its on-chain wallets, typically by signing a message or moving funds, so anyone can see the total assets it holds. Second, it builds a cryptographic commitment to the full list of customer balances so the total liabilities can be compared against the assets. If assets meet or exceed liabilities, the exchange is solvent for the assets covered.

Some exchanges report a reserve ratio above 100%, meaning they hold more than they owe. Phemex, for example, reported a 131% total reserve ratio in April 2026. A ratio at or above 100% is the reassuring number to look for.

How Merkle trees make it verifiable

The clever part is letting individual users check the proof without exposing everyone's data. This is where the Merkle tree comes in.

Picture every customer's balance as a leaf at the bottom of a tree. Each leaf is run through a one-way hash function. Pairs of hashes are then combined and hashed again, level by level, until the whole set of balances condenses into a single value at the top called the Merkle root. This root is a compact fingerprint of every balance in the system. Change any single balance anywhere, and the root changes entirely.

Diagram of a Merkle tree condensing many customer balances into a single root hash
Photo: raisin_raisin / flickr (BY 2.0)

To verify, a user receives a short cryptographic path from their own leaf up to the published root. By hashing along that path, they confirm their balance was included in the total without ever seeing another customer's account. The exchange cannot quietly drop or shrink a balance without breaking the math, which is exactly the kind of fraud that proof of reserves is meant to make detectable.

What proof of reserves does not prove

Note

Proof of reserves shows what an exchange holds. It does not, on its own, prove what the exchange secretly owes elsewhere. That gap is the most important thing to understand.

The biggest limitation is hidden liabilities. PoR confirms assets and confirms the customer balances included in the tree, but it cannot reveal debts the exchange owes off-chain, loans it has taken, or balances it deliberately left out of the tree. An exchange could in theory present a healthy reserve snapshot while owing money elsewhere that the proof never captures.

Here is what proof of reserves does and does not cover:

ClaimDoes PoR prove it?Why
Exchange controls the on-chain assetsYesWallet signatures show the holdings
Your balance is in the totalYesMerkle path verifies inclusion
Assets cover the included liabilitiesYesCompare assets to the liabilities tree
No hidden off-chain debtsNoLoans and obligations are invisible to PoR
Funds still there after the snapshotNoPoR is a point-in-time check
No borrowed assets inflate the snapshotNoA one-day loan can pad reserves

There are other gaps. PoR is a snapshot in time; an exchange could pass on the day of the proof and move funds afterward. Borrowed assets could be used to inflate a one-time snapshot. And users have to actually check their own inclusion for the system to deliver its full benefit, which most never do.

This is why the strongest assurance combines proof of reserves with an independent audit of liabilities by a reputable accounting firm. Leading exchanges including Kraken, Binance, and others now pair their Merkle-tree proofs with third-party attestation. Vitalik Buterin proposed using zk-SNARKs to strengthen these proofs, and Binance implemented zk-SNARK verification on top of its Merkle tree to confirm no account is negative while better protecting privacy.

How to read an exchange's proof of reserves

Look for three things: a reserve ratio at or above 100%, a recent proof date rather than a stale one, and involvement of a recognized third-party auditor. Where the exchange offers a self-verification tool, use it once to confirm your own balance is in the tree. If you hold significant funds, remember the oldest rule in crypto custody: assets you do not control through your own keys carry counterparty risk no proof can fully remove. Our guide to self-custody and seed phrase backup covers the alternative, and our piece on hardware wallet passphrases goes deeper on protecting self-custodied funds.

What to do right now

Before you trust an exchange with significant funds, run this check:

  • Find the exchange's latest proof of reserves page and confirm the reserve ratio is at or above 100%.
  • Check the proof date; a stale snapshot from months ago tells you little about today.
  • Confirm a recognized third-party auditor attested to liabilities, not just assets.
  • Use the self-verification tool once to confirm your own balance is in the Merkle tree.
  • Move funds you do not actively trade into self-custody to remove counterparty risk entirely.

Frequently asked questions

What does proof of reserves actually prove?

It proves the exchange controls on-chain assets that cover the customer balances included in its Merkle tree at the moment of the snapshot. It does not prove the absence of hidden off-chain debts.

How can I verify my own balance is included?

Exchanges that offer self-verification give you a cryptographic path from your account leaf to the published Merkle root. Hashing along that path confirms your balance was counted without revealing other accounts.

Does proof of reserves mean my funds are safe?

It is reassuring but not a guarantee. PoR is a snapshot and does not capture hidden liabilities. Pairing it with an independent audit and considering self-custody for large holdings provides stronger protection.

What is a good reserve ratio?

At or above 100% means the exchange holds at least as much as it owes for the covered assets. Some exchanges report ratios above 100%, indicating an extra buffer.

How do zk-SNARKs improve proof of reserves?

zk-SNARKs let an exchange prove solvency and that no account balance is negative while revealing less about individual or aggregate balances, improving privacy over a plain Merkle-tree approach.

#crypto#security

Sources & further reading

Keep reading