Proof of Reserves
Verify that all Binance account balances are fully backed 1:1.
Audit Time
Verification Mechanism:
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 one Bitcoin to ensure client funds are fully backed.
What this means is that Binance holds all user assets 1:1, including reserves. Binance has zero debt in our capital structure and we have an emergency fund (SAFU fund) for extreme cases, such as hacks or security breaches.
Read more to find additional information on what we have built to allow users to verify their funds are safe with Binance.
Our commitment to our community remains the same as it has always been
image
Transparency
We will always be transparent with our users
image
Safety
The safety of our users funds is a priority for us
image
Protected
Your funds are protected
Merkle Tree
What have we built?
In order to show that Binance has all user assets backed 1:1, we have built and implemented a Merkle Tree (shown below) to allow users to verify their assets are included in the aggregate net account balance. Our goal is that every user will be able to verify the 1:1 backing of their asset holdings using their own generated Merkle hash/record ID.
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, which acts as a cryptographic seal that “summarizes” all of the inputted data. Additionally, Merkle Trees give users the ability to verify that specific contents 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 accounts are included within the liabilities report, validated by our zk-SNARKs mechanism.
image
zk-SNARKs
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 account balances are included in the calculation of the sum of the total net account balances with Binance.
2. The total net balance of the account is greater than or equal to zero.
3. The change of Merkle tree root is valid (i.e., not using falsified information) after updating an account’s information to the leaf node hash.
Here are some useful resources: , and for the circuit (constraints) for implementation detail.
What is a zk-SNARK?
A (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) is a proof protocol that follows the zero-knowledge principles previously outlined. With a , 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 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 in the liabilities report through our self-verification method.
image
Verification Process
image
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).
image
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.
image
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.
image
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.