Proof of Reserves: Is Your Exchange Actually Safe?

Proof of Reserves: Is Your Exchange Actually Safe?

Proof of reserves is a way for a crypto exchange to show it actually holds the coins it owes you. It sounds like a guarantee. It isn't. Done well it is a useful signal, done badly it is theater, and even at its best it leaves out the one number that sank FTX.

This guide explains what proof of reserves really proves, how to check one yourself, and why the only thing that fully protects your coins is holding them yourself.

What proof of reserves actually is

When you keep coins on an exchange, you do not hold those coins. The exchange does. Your balance is just an IOU in their database. Proof of reserves, usually shortened to PoR, is the exchange trying to show that the IOUs add up to real coins sitting in wallets it controls.

A PoR report has two halves, and most people only ever see the first one. The first half is the reserves: a list of blockchain addresses the exchange says it owns, with balances anyone can look up. The second half is supposed to be the liabilities: the total of everything the exchange owes its customers. You compare the two. If reserves are equal to or bigger than liabilities, the exchange is solvent on the assets it chose to show.

That last phrase matters. PoR is a snapshot of chosen assets against chosen liabilities at a single moment. It is not an audit of the whole business, and the people publishing it are usually the ones being checked.

How the Merkle tree part works

The clever bit is how an exchange proves your personal balance is included in its total liabilities without publishing everyone's account. It uses a Merkle tree.

Here is the idea in plain terms. The exchange takes each account, combines your ID and balance, and runs it through a hashing function (SHA-256) to get a short fingerprint. It pairs your fingerprint with a neighbor's, hashes those together, and keeps going up the tree, pairing and hashing, until everything collapses into one final fingerprint at the top. That top value is the Merkle root.

Because changing any single balance changes the root, the exchange cannot quietly shrink your balance after the fact. You get your own leaf and a short path of neighboring hashes, and you can recompute your way up to the published root. If your numbers reach the same root, your balance was counted in the liabilities total. Binance has since layered zk-SNARKs on top of this, a zero-knowledge method that lets it prove user balances are non-negative and add up correctly without leaking individual data.

How to check a proof of reserves yourself

You do not need to be a developer to do a basic check. Most large exchanges that publish PoR give you a self-verification page. Here is the realistic version of what you can do.

  • Find the PoR page. On Binance it is at the proof of reserves section in your account and on a public page; Bybit, OKX, BingX, Phemex, Kraken and others have their own. Note the snapshot date.
  • Verify your own balance. Log in, open the audit or verification tool, pick a date, and the exchange shows your Record ID and the balances it counted for you at that snapshot. Confirm those match what you actually held.
  • Look at the reserve wallets. The exchange lists the on-chain addresses it claims to control. Paste a Bitcoin address into a BTC explorer, or an Ethereum or BNB Chain address into Etherscan or BscScan, and read the balance straight off the chain.
  • Compare the totals. Reserves should be at least 100% of stated liabilities. Binance shows absolute coin amounts; some exchanges, using Hacken's tooling for example, show only a percentage ratio and hide the totals.
Checklist of five points for evaluating a crypto exchange proof of reserves, marking which signals to trust, avoid, and treat with caution.
How to read an exchange's proof of reserves without fooling yourself.

One honest caveat on the wallet check. Seeing a balance proves the coins exist. It does not prove the exchange controls the private keys, unless the exchange signs a message from that address to demonstrate control. A list of rich addresses someone else owns proves nothing.

The hole big enough to drive FTX through

This is the part the marketing pages skip. Reserves without proof of liabilities prove almost nothing.

Picture an exchange that proudly shows one billion dollars of crypto in its wallets. Looks healthy. Now suppose it secretly owes three billion: customer withdrawals, loans against the company, derivatives positions gone wrong, money lent to a sister trading firm. The reserve report still shows that shiny one billion. It says nothing about the three billion in debt sitting off to the side.

That is roughly the shape of what happened with FTX. The assets people could see were not the problem. The hidden liabilities were. A reserves figure on its own cannot catch that, because liabilities are exactly what a failing exchange has every reason to hide. Reserves are only meaningful next to a complete and honest liabilities number, and getting an honest liabilities number is the hard part nobody can fully force.

Why a snapshot can be gamed

A PoR report describes one instant. The exchange knows the snapshot date in advance. That creates two well-worn tricks.

The first is borrowing. An exchange short on coins can borrow them just before the snapshot, take the picture looking fully backed, then return the borrowed coins the next day. The chain shows the coins were there at that minute. It does not show they were rented. This concern has been raised publicly about more than one exchange's reserve reports.

The second is timing across entities. A group with several wallets or affiliated companies can shuffle the same coins between addresses to make different snapshots each look full. Unless the report covers all related entities at the same moment, the same pile of money can appear to back two different sets of liabilities.

Frequent snapshots help a little. BingX and Phemex publish monthly, with Phemex taking its snapshot around the 25th. More often is harder to fake consistently. But no schedule turns a snapshot into a live, continuous guarantee.

The attestor problem: who is checking the checkers

To make a PoR feel credible, exchanges bring in an outside firm to attest to the numbers. That sounds reassuring until you read what those reports actually say.

Most of these are agreed-upon-procedures engagements, not audits. The firm performs a narrow set of steps the exchange agreed to, at a single date, and explicitly states the work is not an audit and gives no assurance opinion. In late 2022 the firm Mazars, which had produced reserve reports for Binance, Crypto.com and KuCoin, paused all crypto reserve work, citing worry about how the public was misreading these reports. Another firm, Armanino, wound down its crypto attestation practice around the same time after its FTX US work drew scrutiny.

So the trust chain has a weak link. A friendly or careless attestor can rubber-stamp numbers. The exchange picks and pays the attestor and decides which wallets and liabilities to include. Relying on one firm to vouch for everything is a single point of failure, and history shows those firms can walk away exactly when things get interesting. Kraken is one of the few that has used recurring full-reserve checks by an independent accounting firm rather than a one-off attestation, which is closer to what you actually want.

How to read an exchange's PoR like a skeptic

When you look at a proof of reserves, ask sharper questions than "does it have one."

  • Does it include liabilities, not just reserves? If it only shows assets, treat the solvency claim as unproven.
  • Can the exchange prove control of the wallets? Look for signed messages from the reserve addresses, not just a list of addresses.
  • Are totals shown, or only a percentage? A bare ratio with no underlying numbers is harder to sanity-check.
  • Who attested, and what did they actually claim? Read whether it is a real audit or agreed-upon-procedures, and check the firm exists and stands behind it.
  • How fresh and how often? A report from eight months ago tells you about a company that may no longer exist in that shape.
  • Does it cover all group entities? Many exchanges run multiple legal entities and product lines. A report covering one slice can hide the rest.

If most of those come back weak, the PoR is closer to a logo than a guarantee.

The real protection is not on the exchange at all

Here is the uncomfortable conclusion. Proof of reserves is one signal among several. It can tell you an exchange is probably not obviously insolvent on the day it published. It cannot promise the exchange will still be standing, honest, and unhacked next month, and it cannot see debts the exchange chooses not to show.

The thing that actually protects your coins is not trusting an exchange at all. It is self-custody. When you withdraw your coins to a wallet where you hold the private keys (a hardware wallet like a Ledger or Trezor, or a well-reviewed software wallet), no reserve report, no attestor, and no exchange balance sheet stands between you and your money. The coins are simply yours, on-chain, controlled by your keys.

That comes with its own job. You become responsible for your seed phrase and your backups, and if you lose them, nobody can reset them for you. But it removes the single biggest risk in crypto, which is some company you cannot see losing or stealing money it told you was safe. Use exchanges to trade. Treat them as cash registers, not vaults. For anything you are not actively trading, take it home. Proof of reserves is worth checking. Your own keys are worth more.

Frequently asked questions

Does proof of reserves mean my money is safe on an exchange?

No. It is one signal, not a guarantee. At best it suggests the exchange was not obviously insolvent on the snapshot date, using the assets and liabilities it chose to show. It cannot promise the exchange stays solvent later, and it cannot reveal debts the exchange hides. Self-custody is the real protection.

Why do reserves alone prove almost nothing?

Because reserves are only half the equation. An exchange can show a billion dollars in wallets while secretly owing three billion in customer funds, loans, or losing trades. The reserve figure ignores those liabilities. Without a complete and honest liabilities number to compare against, a reserves number tells you very little about solvency.

How do I check that the wallet addresses really belong to the exchange?

Looking up a balance on a block explorer like Etherscan, BscScan, or a Bitcoin explorer only proves the coins exist at that address. To prove the exchange controls them, it should sign a message from that address demonstrating it holds the private key. A plain list of addresses with big balances proves nothing about who owns the keys.

What is a Merkle tree and why does it matter for proof of reserves?

A Merkle tree is a way to combine every customer balance into one final fingerprint, called the Merkle root, by hashing balances together in pairs until one value remains. It lets you confirm your own balance was counted in the total without the exchange publishing everyone's accounts. Because changing any balance changes the root, it stops the exchange quietly shrinking your number after publishing.

Can a proof of reserves be faked or gamed?

Yes, in a few ways. An exchange can borrow coins right before the known snapshot time and return them afterward, so the chain looks fully backed for one minute. Groups with multiple wallets or affiliated companies can shuffle the same coins between addresses to make several reports look full. And a friendly or careless attestor can rubber-stamp the numbers, since the exchange picks and pays them.

Is self-custody really safer than a reputable exchange with proof of reserves?

For coins you are not actively trading, yes. With self-custody you hold the private keys in a hardware or software wallet, so no exchange failure, hack, or hidden debt can touch your coins. The trade-off is that you alone are responsible for your seed phrase and backups, and losing them means losing access. Use exchanges to trade, then move long-term holdings to your own wallet.

Last updated: 2026-06-24.