· four exchange APIs · rebuilt daily

The finding
A cryptographic proof of reserves exchange report verifies 100% of included wallet balances, but it ignores off-chain debt and temporary flash-loans.
It confirms that specific public addresses hold a stated quantity of tokens at one block height.
It does not prove that those assets exceed total venue liabilities or that the assets belong permanently to the venue.
A standard proof of reserves exchange report uses a Merkle tree to let you check if your account balance was included in the audit aggregate. The exchange hashes your account ID and balance into a leaf node, then combines leaf nodes upwards to form a root hash. If your balance is present, your leaf mathematically contributes to that published root hash.
This process proves asset presence, but it relies on complete liability disclosure. The total asset figure published by an exchange is only valid if every single user account is included in the aggregate sum. If an exchange omits accounts with large positive balances, or includes fictitious accounts with negative balances to offset real liabilities, the resulting Merkle root understates total user deposits.
If an exchange holds 10,000 BTC in custody wallets but owes 15,000 BTC to depositors, it can publish a Merkle tree that excludes 5,000 BTC of user accounts. The remaining user accounts will verify their balances against the root successfully, even though the venue is insolvent by 33%.
Worth knowing
Merkle tree verification only proves that your balance is part of the listed sum. It cannot prove that the listed sum represents total exchange liabilities.
Public proofs of reserve are static snapshots taken at a single block timestamp. They do not track continuous asset control over time. An exchange can temporarily inflate its address balances immediately before the snapshot is taken, then move those funds back after the block is finalized.
To execute this balance manipulation, a venue borrows assets from institutional lenders, decentralized finance pools, or sister entities right before the target block height. The borrowed tokens arrive in the exchange wallets, generating an on-chain address snapshot showing full coverage. Once the cryptographic snapshot completes, the venue returns the borrowed tokens along with interest.
The published report reflects wallet balances that existed for only a few minutes. If a venue borrows 2,000 BTC for a two-hour window to pass a monthly snapshot, the resulting attestation shows 2,000 BTC of assets that are no longer present when you open a perpetual trade the following day.
Where this goes wrong
A single-block snapshot allows an exchange to present borrowed funds as permanent reserves, masking an actual asset shortfall.
While proof of reserves addresses long-term balance sheet risks, daily holding costs impact your margin balances immediately. Exchanges charge baseline maker and taker fees alongside periodic funding payments for perpetual contracts.
The table below shows the default baseline taker fees alongside the current 8-hour funding rates for SOL perpetual contracts across four venues.
| Exchange | Futures Taker Fee | SOL 8h Funding Rate | Cheapest SOL Long Venue |
|---|---|---|---|
| bitget | 0.0300% | -0.0132% | Yes |
| okx | 0.0500% | -0.0080% | No |
| mexc | 0.0200% | -0.0074% | No |
| bybit | 0.0550% | +0.0100% | No |
A negative funding rate means short position holders pay long position holders. Holding a long position on bitget earns 0.0132% per 8-hour interval while carrying a baseline taker fee of 0.0300%. On bybit, holding that same long position costs 0.0100% per 8-hour interval alongside a higher baseline taker fee of 0.0550%.
A cryptographic attestation is an automated script execution, not a financial audit. An independent accountant checking a venue balance sheet must evaluate three distinct categories that a Merkle tree snapshot cannot touch.
First, an audit requires verified access to off-chain bank accounts containing fiat currencies. Merkle trees only verify native blockchain tokens. Second, an audit requires inspecting legal liabilities, including corporate debts, outstanding venture loans, and collateralized line-of-credit agreements. Third, an auditor must confirm who holds the private keys to the wallet addresses. If an exchange holds assets in a wallet where a third-party custodian has primary withdrawal authority, those assets are encumbered by contract.
What to do instead
Treat proof of reserves as a confirmation of on-chain wallet addresses, while managing leverage under the assumption that exchange liabilities remain unverified.
You can evaluate the strength of a published proof of reserves by looking at three specific technical disclosures in the report documentation.
First, check if the report includes a Zero-Knowledge proof mechanism. Standard Merkle trees allow an exchange to hide negative balance accounts within the tree structure. Zero-Knowledge proofs mathematically prevent any node from containing a negative value, ensuring that no accounts are used to artificially suppress total listed liabilities.
Second, check whether the audit covers third-party borrowing data. If the attestation provider does not cross-examine corporate debt registries and institutional lending platforms, the asset total remains vulnerable to temporary snapshot borrowing.
Third, confirm whether the exchange updates its Merkle root continuously or on a scheduled delay. A monthly attestation leaves 720 hours of unverified wallet movements between snapshots. Continuous or daily cryptographic updates significantly raise the cost of temporary liquidity borrowing for the exchange.
It proves that specific public wallet addresses contained a stated quantity of cryptographic assets at a single block height. It also confirms whether your specific account balance was included in that snapshot sum.
Yes. An exchange can pass if it omits user account liabilities from the Merkle tree, relies on borrowed assets during the snapshot window, or carries off-chain corporate debt that exceeds its on-chain holdings.
If an exchange does not use Zero-Knowledge proofs, it can insert fake accounts with negative balances into the tree structure. These negative values offset real user balances, lowering the published sum of total liabilities.