· four exchange APIs · rebuilt daily

The finding
A proof of reserves exchange attestation verifies assets at 1 block height but omits total unencumbered liabilities.
- Merkle trees prove your account balance is included in the liability sum.
- Snapshot reserves can be temporarily inflated using short-term borrowed capital.
- True solvency requires a full accounting audit of off-balance-sheet commitments.
An off-chain proof of reserves exchange attestation verifies that a specific set of wallet addresses holds a stated balance of assets at a single block height. However, a standard proof of reserves exchange procedure only provides a one-sided snapshot that ignores total exchange liabilities.
An exchange proves asset control by signing a message with private keys controlling specified public wallet addresses. To prove user liabilities without revealing individual balance records publicly, the exchange constructs a cryptographic Merkle tree.
Each user account balance forms a leaf node in the tree. Leaf nodes pair together and hash repeatedly until producing a single Merkle root hash. The exchange publishes this root hash along with total wallet balances.
You can verify that your specific balance exists inside the published Merkle tree using a Merkle proof path. If your balance is present, your deposit contributes to the total declared customer liabilities of the platform.
Where this goes wrong
Negative balance leaves in a Merkle tree allow an exchange to hide user liabilities without changing the root hash validation for other accounts.
Proving wallet balances shows assets held on-chain at block execution time. It does not prove that those assets belong strictly to platform depositors or that they are unencumbered by debt.
If an exchange leaves user accounts out of the Merkle tree construction, total declared customer liabilities drop artificially. The published root hash remains internally consistent, but total debt is understated.
Furthermore, on-chain balances say nothing about off-chain debts. Platform liabilities include outstanding loans, operational expenses, corporate obligations, and off-chain commitments to market makers or credit facilities.
Worth knowing
A snapshot taken at a single block height cannot detect assets borrowed shortly before the block and returned immediately after.
Attestations reflect an isolated instant in time rather than continuous balance tracking. An exchange holding insufficient reserves can temporarily inflate its reported asset holdings prior to an attestation timestamp.
Consider an exchange with 2,000 BTC in total customer liabilities but only 1,000 BTC in actual reserves. The exchange faces a 1,000 BTC deficit.
One hour before the snapshot, the exchange borrows 1,000 BTC from an institutional lender. The borrowed assets enter the verified exchange wallet.
At the exact snapshot block, public on-chain balances show 2,000 BTC. The exchange publishes a Merkle root reflecting 2,000 BTC in total liabilities, showing a 100% reserve ratio.
One hour after the snapshot, the exchange returns the 1,000 BTC to the lender. The actual reserve ratio falls back to 50%, while the published attestation reports full backing.
A proof of reserves attestation is an automated technical snapshot. It differs fundamentally from a full financial audit performed by an independent accounting firm.
| Feature | PoR Attestation | Full Financial Audit |
|---|---|---|
| Asset Scope | On-chain wallet snapshot | On-chain assets plus fiat bank balances |
| Liabilities Scope | Self-reported Merkle balance tree | Verified user balances and institutional debts |
| Time Horizon | Single block timestamp | Historical sample period |
| Encumbrance Check | None | Legal debt and loan agreement verification |
| Third-Party Role | Self-generated or third-party observer | Independent certified auditor |
An attestation proves technical balance existence at a single moment. A complete financial audit assesses legal ownership, off-balance-sheet commitments, and total unencumbered balance sheets.
Proof of reserves mechanisms fail when traders treat technical attestations as solvency guarantees. A platform can maintain clean Merkle proofs while operating under severe balance sheet deficits.
The primary failure mode occurs when corporate liabilities exceed liquid reserves outside the visible scope of the Merkle tree. Fiat liabilities in bank accounts, corporate debt bonds, and unpaid collateral obligations do not appear on-chain.
A second failure mode involves asset re-hypothecation. If reserve assets are deposited into third-party yield protocols or pledged as collateral elsewhere, an emergency withdrawal event can lock those assets instantly.
When withdrawals accelerate, the gap between reported snapshot reserves and actual liquid assets causes fast platform liquidations or frozen user accounts.
It proves that specific wallet addresses held a defined quantity of assets at a single block timestamp and that your account was included in the calculated balance sum. It does not prove that those assets are unencumbered by corporate debt or short-term loans.
Yes. An exchange can temporarily borrow capital to inflate wallet balances at the snapshot block or omit off-chain debt commitments from its Merkle tree calculations.
You obtain your account leaf hash and Merkle proof path from your account settings. You then hash your proof path up to the published Merkle root to confirm your balance was included in the total liability calculation.
An attestation is a point-in-time cryptographic check of wallet balances and self-reported user liabilities. A financial audit evaluates full balance sheets, fiat accounts, legal obligations, and continuous operational liabilities over time.