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?
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.
Prerequisite:
Set up “config.json”,“proof.csv” and “zkpor864.vk.save” within the zip file and place them in the “PathToVerifierTool/config” folder.
Configuration:
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, DOGE, PEPE, FLOKI, IDRT, BONK, DOGS, 1000SATS and NEIRO (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.
Prerequisite:
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.
Configuration:
“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, DOGE, PEPE, FLOKI, IDRT, BONK, DOGS, 1000SATS and NEIRO (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: