How to Verify an Exchange's Proof of Reserves Yourself
Quick answer. Log in, open the exchange's proof of reserves page and copy your record ID, Merkle leaf and balances. Rebuild the leaf and hash up to the published root; a match means your balance was included at the snapshot.
Video transcript
You can check that your balance is in an exchange's proof of reserves yourself, by hashing your Merkle leaf up to the published root.
A proof of reserves makes two claims. Your balance is in the liabilities, and the exchange holds enough to cover them. Only the first is easy to test.
It takes four steps. Find your Merkle leaf, verify the path, check the wallets, then read the liabilities side.
Binance and Kraken both publish your record ID and leaf. First, confirm the balances match your account at the snapshot. If they differ, stop.
Hash your leaf with each sibling, in order, up to the root. Binance also proves no account is negative, ruling out the fake account trick Vitalik Buterin described.
Next, check holdings. Get the address list, look for proof of control, read balances at the snapshot block height, and compare totals per asset.
A pass proves less than it seems. It misses left out accounts, other debts, borrowed assets and anything lost or stolen since.
Proof of reserves is not an audit. PCAOB staff said in 2023 that these reports cover only a particular moment in time.
Read the full guide for the red flags. Running an exchange? Talk to Guardian about regulatory assessments, pentesting and Risk Monitoring.
A proof of reserves makes two claims. Every customer balance is in the exchange's liabilities, and the exchange holds enough assets to cover them.
You can test the first claim yourself, from your own account. The second takes more work, and has limits no Merkle tree removes.
This guide walks through both, using Binance's and Kraken's published tools.
What You Need
- An account at an exchange that publishes a proof of reserves.
- Your record ID, Merkle leaf and balances for one snapshot.
- The published Merkle root for that snapshot.
- The path: the sibling hashes from your leaf up to the root.
- The exchange's list of reserve wallet addresses.
- A block explorer, and a script if you want to do the hashing yourself.
Step 1: Find Your Merkle Leaf
Each customer balance becomes a leaf: a hash of an account identifier and its balances. Leaves are hashed in pairs, level by level, up to one root.
Change any balance and the root changes. In Kraken's words, any change to the data, "however small, will affect the root."
| Binance | Kraken | |
|---|---|---|
| Where | Wallet, then Verification | Kraken Pro: Account icon, then Proof of Reserves |
| You see | Record ID, Merkle leaf, assets, balances | Record ID, Merkle leaf ID, balances, path |
| Check it with | Open-source verifier on GitHub | Accountant's tool, or Kraken's code |
| Extra proof | zk-SNARK: no account below zero | Signed wallet proofs; accountant checks totals |
On Binance, choose the verification date. The page says your Record ID lets you check your balance "was included in the liabilities report."
On Kraken, open the Proof of Reserves tab, pick a date and select "Verify yourself."
First, compare the balances shown with what your account held at the snapshot. If they differ, stop and raise it with the exchange.
Also check what your leaf includes. Kraken adds staked balances to spot, adjusts margin for positive positions and gives futures collateral its own leaf.
Binance's verifier carries each account's debt and collateral.
Step 2: Verify the Path
Next, rebuild the leaf yourself instead of trusting the page.
Kraken: rebuild it by hand
- Record ID: SHA-256 of your account code, Kraken IIBAN and the review ID.
- Merkle leaf: the first 16 characters of SHA-256 of the record ID, a comma and your balances.
- Balances: each asset, a colon and its amount, in the order the page lists them.
- Each level: SHA-256 of the two child hashes, decoded and joined.
Hash your leaf with its sibling, then the result with the next sibling, up to the top. Order matters: left or right depends on your position.
If the final hash equals the published root, your balance is in the tree. Kraken gives code in Python, Rust, Go and Bash, and links its accountant's tool.
Binance: run the verifier
Binance's verifier is open source on GitHub. You give it your account hash, balances, the published root and your Merkle proof, then run one command.
Binance says its zk-SNARK circuit also proves every user's balances are in the total and each account's net balance is zero or more.
That second check matters. Vitalik Buterin's 2022 post shows an exchange trying to hide a shortfall with "a -500 ETH balance under a fake account."
A plain Merkle tree would not catch it. In a Merkle sum tree, nearby users' checks fail; a zk proof that no balance is negative rules it out.
Step 3: Check the Wallets
The tree covers what the exchange owes. Now check what it holds.
- Get the address list. Binance's page has a "Download All Address" button.
- Look for proof of control. Kraken produces digital signatures proving ownership of its addresses for each review.
- Read balances at the snapshot. Query each address at the snapshot block height, not today.
- Total per asset. Compare holdings with customer balances for the same asset.
Kraken's accountant verifies that onchain balances "exceed or match the client balances represented in the Merkle tree."
Buterin's post names two ways to prove control: move the coins at an agreed time, or sign an offchain message from the address.
Our Brazil post sets out the four parts of a proof someone else can rebuild.
Step 4: Read the Liabilities Side
A passing check proves less than it seems.
What it shows
- Your balance was in the tree at the snapshot.
- With Binance's zk-SNARK, no account was negative and every balance counts toward the total.
What it does not show
- Left-out accounts. Buterin notes an exchange could simply exclude users it expects never to check.
- Other debts. PCAOB staff said these reports likely do not address an entity's liabilities.
- Borrowed assets. Kraken says its review cannot prove funds were not borrowed to pass it.
- Encumbrances and key copies. Kraken's review cannot find hidden encumbrances or rule out duplicated keys.
- Later changes. Kraken notes keys "may have been lost or funds stolen since the latest review."
Limits and Red Flags
Proof of reserves is not an audit. In a March 8, 2023 advisory, PCAOB staff said these reports cover only "a particular moment in time."
They give no assurance on internal controls, the staff added, and customers "should exercise extreme caution" relying on them.
Accountants pulled back too. In December 2022, Mazars paused proof of reserves work for crypto clients, including Binance, KuCoin and Crypto.com, CNBC reported.
Mazars cited concern about how the public understood the reports. They "do not constitute either an assurance or an audit opinion," it said.
Borrowed assets are the hardest gap. Buterin warned that shuttling collateral between exchanges lets them "pretend to be solvent."
Ideally, he wrote, a proof would update after every block.
Watch for these:
- Your leaf's balance differs from your account at the snapshot.
- No published root, or no way to rebuild your leaf.
- Wallet totals shown with no customer liabilities to compare.
- Addresses with no proof of control.
- Old snapshots, or a single one.
- A reserve ratio under 100% for any asset.
- Large balances that arrive just before a snapshot and leave after it.
- A report called an audit when it is not one.
Some supervisors want far more frequent checks; see Korea's real-time reconciliation plan.
How Guardian Helps
For exchanges and custodians, Guardian's regulatory assessments check segregation, key storage, signing thresholds and cold storage ratios against the custody rules a license carries.
Guardian also pentests the infrastructure, web apps and APIs behind client assets, the systems a reserves report depends on.
Risk Monitoring keeps a rating built from confirmed findings across a firm's contracts and hosts. It can be shared with an exchange, a bank partner or an allocator.
Frequently Asked Questions
How do I check my balance is in an exchange's proof of reserves?
Log in and open its proof of reserves page. Copy your record ID, Merkle leaf and balances, rebuild the leaf, and hash up the path to the published root. A match means your balance was counted at the snapshot.
What is a proof of reserve Merkle tree?
A tree of hashes built from customer balances. Each leaf hashes one account's identifier and balances, and pairs are hashed upward to a single root. Changing any balance changes the root, so each customer can check their own leaf.
Does proof of reserves prove an exchange is solvent?
No. It compares customer balances with assets at one moment. PCAOB staff warned in 2023 that these reports are not audits and likely do not address liabilities. Kraken says its review cannot prove funds were not borrowed to pass it.
Why did Mazars stop proof of reserves work?
In December 2022, Mazars paused proof of reserves work for crypto clients, including Binance, KuCoin and Crypto.com. It cited concern about how the public understood the reports, which it said were not an assurance or an audit opinion.
Sources
- Binance: Proof of Reserves (read November 5, 2026)
- Binance on GitHub: zkmerkle-proof-of-solvency, README (read November 5, 2026)
- Kraken: Proof of Reserves (read November 5, 2026; review dated June 30, 2026)
- Vitalik Buterin: Having a safe CEX, proof of solvency and beyond (November 19, 2022)
- DLA Piper: PCAOB staff warns investors (and auditors) about proof of crypto reserve reports (March 13, 2023, on the PCAOB advisory of March 8, 2023)
- CNBC: Mazars suspends all work with crypto clients, including Binance and Crypto.com (December 16, 2022)
- Guardian: BCB Resolution 520 Proof of Reserves, What VASPs Must Build
- Guardian: Regulatory and Compliance Assessment
- Guardian: Risk Monitoring and Rating
Make your reserves hold up to scrutiny
Guardian tests the segregation, keys and systems behind your reserves before a customer, an analyst or a supervisor checks the numbers.