Buy Crypto
Pay with
Markets
NFT
Feed
USD
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.
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
Transparency
We will always be transparent with our users
Safety
The safety of our users funds is a priority for us
Protected
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.
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.
Proof of Reserves
Auditor:
Merkle Root Hash:
CoinRatioCustomer Net Balances
No Data
You can find out more about how this workshere
Self Verify Merkle Leaf
For users who wish to independently verify their hashes, this can be done in 3 simple steps.
  • Copy the source code into a Python application that you own or by using a tool, such ashttps://www.online-python.com/
  • Update the following variables within the code with the corresponding information provided within your verification page after logging in:
    • merkle_hash - This is a value created with the hashed user’s information to uniquely identify an account within the balances used for the verification.
    • Account_code - This is a value created with hashed user’s information to uniquely identify your account for the purposes of verification.
    • Balances - The snapshot balances taken into consideration for the verification.
  • Run the program and verify that the self generated Merkle leaf result is the same as the value presented within the verification page.
Please note that the results are sensitive to the particular string format of balances and the order of assets verified (as displayed on the Verification page.)
The underlying logic behind the hashing logic is as follows:
  • Record ID = SHA256(concatenate(Account Code, SALT , Verification ID))
  • Balances = ""
  • ForEach Asset:
    • Balances = concatenate(Asset, ":", AssetBalances[asset])
  • Merkle Hash = concatenate(Record ID, “,”, Balances)
  • Merkle Leaf = substring(SHA256(Merkle Hash), 0, 16)
You can self verify the Merkle tree with nodeJShere
You can self verify the Merkle tree information regarding the third-party verification.here
Verification Process
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).
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.
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.
Verified by a Third-Party Audit Agency
Verified by an independent auditor.