Gate PoR

Gate Total Reserves:

0

Latest audit time:

(UTC+0)

Total Reserve Rate:

0%

Algorithm:

Merkle Tree + zk-SNARKs

Merkle Root Hash:

Gate Total Reserves

0

Customer Net Balance:

0

Excess reserve value:

0

+100.00%

No Data

What are 100% reserves?

A centralized trading platform manages a ledger for recording user assets in a database. As such, platforms face the challenge of proving that they have full custody of all users' assets in good condition.

Gate implemented the Merkle Tree to address this issue, by storing the hash value of each user's account assets in the leaf nodes. Every user can audit the total amount of users' assets recorded in the Merkle Tree and verify whether their funds are included through a qualified third-party audit agency.

If the assets recorded in the Merkle Tree are verified to be equal to or greater than 100%, it shows that users' assets are fully held on the platform, meaning the platform provides 100% reserves for users' assets.

Why are the 100% reserves so important?

The platform provides 100% reserves

The platform is financially solid

Enhance users' trust

Guarantee the security of users' assets

100% cash out during mass withdrawals

Without the 100% reserves commitment

Users' assets are at risk of being misappropriated

Delays or inability to withdraw assets

The platform may suffer a run if users rush to withdraw their funds

The platform is more likely to go bankrupt or suffer asset losses

VS

How do we maintain 100% reserves?

If the total number of tokens managed by the exchange on the blockchain meets or exceeds the aggregate balance of all user accounts, as captured in a snapshot, the platform maintains 100% reserves for those tokens.

Ownership over the wallet - Gate.com

Ownership of the wallet

When using hot or cold wallets, the platform transfers a randomly designated amount to addresses specified by the audit firm to prove ownership of the wallets.

The audit firm will aggregate the balances of the relevant addresses to calculate the total amount involved, including users' assets and the platform's self-owned assets.

How to build the Merkle Tree with hashed user ID and user balance?

The hashed user ID (UID) and user balances are first exported from Gate's database.
Each pair of hashed UID and user balances will be hashed respectively and then concatenated to form the underlying data block.
For each data block, the same hash function will be applied to generate the leaf nodes of the Merkle Tree. The resulting hashed data are subsequently hashed together in pairs to create the parent nodes of the leaf nodes.
This process continues until it results in a single hash known as the Merkle root.

Please refer to the diagram below for illustration. After the Merkle Tree is successfully built, the leaf nodes will be exported into a plain text file, which will be published together with the Merkle root hash by the auditor.

Merkle tree - Gate.com

In cryptography and computer science, a hash tree or Merkle Tree is a tree in which every leaf node is labeled with the cryptographic hash of a data block. Every non-leaf node is labeled with the hash of the labels of its child nodes. Hash trees allow efficient and secure verification of the contents of large data structures.

How do we use a Merkle Tree to provide Proof of Reserves?

1. zk-SNARK assists in auditing that the total balance of users' assets is stored as leaf nodes in the Merkle Tree (i.e., user account balance). For each leaf node, we confirm the following points:

a. The total amount of assets managed by the platform includes the total asset balance of all users.

b. The net balance of each user is greater than or equal to zero.

c. Change of any user's assets will result in alteration of the Merkle root hash value.

2. User verification: Users can verify the authenticity of the proof by checking the Merkle root hash value using zk-SNARK. This technology allows us to complete the 100% reserve audit efficiently and safely while avoiding the risk of privacy or trade secret leaks, helping to fulfill our commitment to transparent operations and enhance customers' trust.

zk-SNARK, standing for Zero-Knowledge Succinct Non-Interactive Argument of Knowledge, is a groundbreaking tool rooted in cryptography. Utilizing advanced mathematical algorithms, it can proficiently validate the reserve amount without disclosing specific asset details. zk-SNARK not only facilitates swift asset verification but also negates privacy breach risks. Owing to these benefits, coupled with its non-interactive nature and high scalability, it finds extensive applications in areas like on-chain transaction verification, data privacy safeguards, and identity authentication.

Verification Process

1. Install the program and download data:

a. Download the verification program:

First, download the verification program via the provided link or from GitHub. Then, rename it to main.

b. Download required data:

Access the Audit Page and locate the batch you need to verify. Click on [Download Merkle Tree] and [Download User Config] to download the data.

Unzip the zkmerkle_cex_xxx.tar.gz compressed file, place the main program inside this folder, and put the user_config.json file inside the config folder.

The program folder is now

zkmerkle_cex_xxx

Config

cex_config.json

user_config.json

proof.csv

zkpor864.vk.save

main

2. Assets verification:

From cmd or terminal, use the cd command to navigate into the downloaded folder, such as cd ~/Downloads/zkmerkle_cex_xxx.

(Before running the program, you might need to execute chmod 777 main to grant permissions or set security items.)

Execute the following command to begin verification.

./main verify cex

Upon successful verification, the message will be displayed.

All proofs verify passed!!!

For detailed technical documentation and verification principles, please check the GitHub open-source project.

Gate PoR Implementation

Audit Firm

HACKEN

Audit Time

January 3, 2024

Auditor

Luciano Ciattaglia, Sofiane Akermoun, Nino Lipartiia, Bartosz Barwikowski

Community