Binance adds zk-SNARK verification to its proof of reserves system
Binance implemented the upgrade following Vitalik Buterin's suggestions on improving transparency of proof-of-reserves systems.
Binance has upgraded its proof-of-reserves (PoR) system with zk-SNARK verifications, a form of zero-knowledge proofs that preserves the privacy and security of sensitive user information.
Binance CEO Changpeng Zhao said the improvement was implemented in accordance with Ethereum co-founder Vitalik Buterin’s suggestion. Buterin had laid out his ideas on promoting trustless centralized exchanges through transparent proof-of-reserves systems in November.
Binance first published its PoR system in November 2022 as users started demanding more transparency from exchanges in the aftermath of the FTX collapse. At the time, Binance used Merkle tree cryptography to enable users to verify their holdings.
Yet, the system had two major drawbacks. Firstly, the leaf nodes in the Merkle tree represented the hash of users’ holdings to protect privacy, which meant that the Merkle root could not reflect the sum of its leaf nodes’ balance information.
Secondly, a malicious entity could potentially add a negative balance under a fake account somewhere in the tree to make the size of required reserves appear smaller.
Binance claims that zk-SNARKs solve these challenges. The zero-knowledge verification system can ensure that all leaf nodes in the Merkle tree have contributed to Binance’s claimed total user balance of each cryptocurrency. It will also ensure that there is no user with a negative balance included in the tree.
Binance will generate and publish zk-SNARK proof for the construction of the Merkle tree to prove its reserves. By verifying the Merkle proof Binance users can check whether their balance is included in the Merkle tree root. Users can verify the zk-SNARK proof to ensure that the Merkle tree construction was free from any tampering.
Because Binance has millions of users, it’s not possible to get a single proof of the Merkle tree construction. Therefore, Binance will split users into batches of 864 each. It would take 110 seconds to generate zk proof for a single batch of users. The proof can be verified in less than 1 millisecond.
It would take 2 hours for Binance to generate proof for all accounts at the cost of about $1,000. The exchange is working on implementing the solutions suggested by Buterin to improve the efficiency of the proof generation process, which should lower cost and enable it to provide proofs more frequently.
Binance’s PoR system currently supports 13 cryptocurrencies, with 4 recent additions, and it plans to add more tokens in the coming weeks.
Binance is also making the code for its PoR system open-source with the aim of providing more transparency to its users.