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:
blog
,
technical specification
and
our source code
for the circuit (constraints) for implementation detail.
A
zk-SNARK
(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) is a proof protocol that follows the zero-knowledge principles previously outlined. With a
zk-SNARK
, 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
transaction
without revealing any information about the specific amounts, values, or addresses involved.