Buy Crypto
Proof of Reserves
Verify that Binance holds user assets 1:1, plus reserves. Please note that Binance’s corporate holdings are recorded in separate accounts and do not form part of the proof-of-reserves calculations.
Audit Time
Merkle Root Hash:
What is Proof of Reserves (PoR)?
When we say Proof of Reserves, we are specifically referring to those assets that we hold in custody for users. This means that we are showing evidence and proof that Binance has funds that cover all of our users assets 1:1, as well as some reserves.
When a user deposits one Bitcoin, Binance's reserves increase by at least one Bitcoin to ensure client funds are fully backed. It is important to note that this does not include Binance’s corporate holdings, which are kept on a completely separate ledger.
What this means in actual terms is that Binance holds all user assets 1:1 (as well as some reserves), we have zero debt in our capital structure and we have made sure that we have an emergency fund (SAFU fund) for extreme cases.
Read on to see more information on what we have built to allow people to check their funds are safe with Binance.
Our commitment to our community remains the same as it has always been
We will always be transparent with our users
The safety of our users funds is a priority for us
Your funds are protected
Merkle Tree
What have we built?
In order to show that Binance has all user assets 1:1, we have built and implemented the Merkle tree (shown below) to allow people to verify their assets within the platform. Our goal is that every user will be able to verify their asset holdings using their own generated Merkle hash/record ID. This way people will be able to confirm that their funds are held 1:1 and they can have it verified by a third-party audit agency.
What is a Merkle Tree?
A Merkle Tree is a cryptographic tool that enables the consolidation of large amounts of data into a single hash. This single hash, called a Merkle Root, acts as a cryptographic seal that “summarizes” all the inputted data. Additionally, Merkle Trees give users the ability to verify specific contents that were included within a particular set of “sealed” data. We use these properties of Merkle Trees during our Proof of Reserves assessments to verify individual user accounts are included within the liabilities report inspected by the auditor.
What have we built?
By using a zk-SNARK, a crypto exchange can prove that all Merkle tree leaf nodes’ balance sets (i.e., user account balances) contribute to the exchange’s claimed total user asset balance. Each user can easily access their leaf node as having been included in the process. For each user’s balance set (Merkle tree leaf node), our circuit ensures that:
1. A user’s asset balances are included in the calculation of the sum of the total net user balances with Binance.
2. The total net balance of the user is greater than or equal to zero.
3. The change of Merkle tree root is valid (i.e., not using falsified information) after updating a user’s information to the leaf node hash.
Here are some useful resources: blog, technical specification and our source code for the circuit (constraints) for implementation detail.
What is a zk-SNARK?
A zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) is a proof protocol that follows the zero-knowledge principles previously outlined. With a zk-SNARK, you can prove that you know the original hashed value (discussed further below) without revealing what that value is. You can also prove the validity of a transaction without revealing any information about the specific amounts, values, or addresses involved.
How it works
How can I verify my own transactions?
Log in to the Binance Website
-> Click on “Wallet”
-> Click on “Verification”
You will be able to find your Merkle Leaf and Record ID within the page.
Select the verification date you want to check. You will then find confirmation of the verification type, your Record ID (specific to your account and this particular verification), the assets that were covered, and your asset balances at the time of the verification.
The Record ID/Merkle Leaf enables you to independently verify that your account balance was included by the third-party auditor’s attestation report.
Verification Process
We have two ways to produce verification reports, the first is the self-verification method (combined with zk-SNARKS technical solutions) and the second is third-party audits providing audit reports.
1. Verify Ownership of Address
For assets that are used to verify reserves, we must ensure that ownership of the wallet belongs to Binance (including cold and hot wallet).
2. Snapshot of User Balances
The snapshot value is calculated based on the asset holding within the customer's account balances at the date and time of the snapshot.
3. Generate zk-SNARKs Proof
We generate zk-SNARKs proof files for users so that each user can easily access their leaf node, providing transparency for all users.
4. Generation of Merkle Tree
We generate the underlying data block by linking the hashed UID and balance of each user. We then generate a Merkle tree based upon all users' data. The Merkle root will change if any account ID or balance in the leaf node changes. Every user can verify whether their assets are included in the leaf node.