Binance is committed to ensuring each user has complete transparency on the safety and security of their assets. You can now use zk-SNARKs and Merkle Tree to accurately verify Binance’s Proof of Reserves and your account balance.
How to verify your account balance using zk-SNARKs and Merkle Tree?
1. Visit the official GitHub website and download the verifier tool from the repository.
2. Go to Binance.com and log in to your account. Click [Profile] - [Wallet] - [Verification]. Then, click the arrow to expand the verification data.
3. Look for self-verifying Merkle Tree entries and make sure that the [Verification Type] is “Merkle Tree + Zksnarks”. You will see the data for your account. Click [Download Merkle Tree] to save it to your computer.
Please note that the report is a snapshot and not a display of real-time assets. It may not match your current asset count.
4. Go to the verifier tool folder. To verify the root hash, run “./verifier_darwin_amd64” on MacOS, “./verifier_linux_amd64” on Linux, or “./verifier_windows_amd64.exe” on Windows.
Set up “config.json”,“proof.csv” and “zkpor864.vk.save” within the zip file and place them in the “PathToVerifierTool/config” folder.
- Set up the “ProofTable” to refer to the zk-SNARKs proof data file generated by the proofer;
- Set up the “ZkKeyName” to point to the verifying key downloaded within the package;
- “CexAssetInfo'' refers to the total customer balance of all the tokens listed within Binance (including all verifiable and non-verifiable assets). It can be verified using the listed zk-SNARKs proof. You may cross-check with the verifiable asset at Binance’s Proof of Reserves. All balances and prices are 10^8 except for BTTC, SHIB, LUNC, XEC, WIN, BIDR, SPELL, HOT, and DOGE (10^2).
5. To verify your account information, use “./verifier_darwin_amd64 -user” on MacOS or “./verifier_linux_amd64 -user” on Linux, “./verifier_windows_amd64.exe -user” on Windows.
Download/Set up “user_config.json”. It is specifically generated based on a user’s account data during the snapshot. You can find it in the zip file you downloaded. Place it in the “PathToVerifierTool/config” folder.
- “AccountIndex”: Location of the Merkle Leaf within the Merkle Tree;
- “AccountIdHash” - “Record ID”: Identify each user’s account within Binance. You can find the information for your account on the [Verification] page.
- “TotalEquity”: The total value of the user’s holding (in USD); Values is in 10^16
- “TotalDebt”: The total value of the user’s borrowing (in USD); Values is in 10^16
- “Assets”: The user’s assets in the snapshot. You can refer to the assets equivalent to the indexes within the asset template list download in step 2 (refer to the “Asset_List.csv” to identify the token by the index). Asset balances are 10^8 except for BTTC, SHIB, LUNC, XEC, WIN, BIDR, SPELL, HOT, and DOGE (10^2);
- “Root”: Merkle root hash of the verification exercise. It is used to check the user’s information with Merkle path information from the same root hashes.
- “Proof”: The Merkle path that belongs to the user.
For more information on how zk-SNARKs works, please refer to:
- Improving Crypto Transparency With Zero-Knowledge Proof
- How zk-SNARKs Improve Binance’s Proof-of-Reserves System
If you have any suggestions, you can submit your feedback here.