Proof Of Assets
How does Proof-of-Assets work?
An exchange proves ownership of funds by cryptographically signing a custom message for each claimed address using the private key of that address. The coin balances for each address are obtained by taking a snapshot of the top N=32767 addresses for the current blockchain state.
The Proof-of-Assets zk-SNARK consumes the address-ownership signatures provided by the exchange, and the blockchain snapshots provided by Proven. It then computes the sum of the balances of all addresses for which a valid ownership signature was provided.
How do I see the blockchain snapshots that are used to obtain address balances in the Proof-of-Assets protocol?
We (Proven) provide snapshots of the blockchain state on each day and make them available to the public at the URL:
https://artifacts.proven.tools/snapshots/YYYY-MM-DD/snapshots.tar
Where YYYY-MM-DD is the current day. For example, the snapshot from June 21 2023 is available at:
https://artifacts.proven.tools/snapshots/2023-06-21/snapshots.tar.
How do I verify that the snapshot provided by Proven matches the snapshot that was used in the protocol?
The top-level Solvency zk-SNARK reveals the hash of the snapshot that was used in its execution. To verify that a given snapshot was used in a given proof execution, it suffices to compute the hash of the snapshot and compare it with the snapshot hash revealed by the top-level Solvency zk-SNARK.
Details and sample code for doing this can be found here: https://github.com/proven-dev/solvency/blob/main/generate_snapshot_hash.py
Last updated