Gate US Proof of Reserves

Gate US Total Reserves:

0

Latest Audit Time:

(UTC+0)

Reserve Ratio:

0%

Algorithm:

Merkle Tree + zk-SNARKs

Merkle Root Hash:

Gate US Total Reserves

0

Customer Net Balance:

0

Reserve Surplus:

0

+100.00%

No Data

What Is Proof of 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 US uses a Merkle Tree structure to address this issue by storing the hash of each user's account balance in the leaf nodes. Users can review the aggregated asset data recorded in the Merkle Tree and confirm that their balances are included, with verification supported by an independent third-party audit firm.

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 Is Proof of Reserves Important?

With Adequate Reserves

Demonstrates financial capability

Enhances user confidence

Strengthens asset protection

Supports withdrawals during periods of high demand

Without Adequate Reserves

Risk of fund misappropriation

Potential delays in processing withdrawals

A surge in withdrawals could trigger a liquidity crisis

Higher risk of bankruptcy leading to asset losses

VS

How Do We Maintain Reserve Transparency?

If the total number of tokens held on-chain by the exchange meets or exceeds the aggregate balance of all user accounts captured in a snapshot, the reserve report indicates that recorded user balances are reflected in the exchange's disclosed on-chain holdings.

Ownership over the wallet - Gate.com

Wallet Ownership Verification

When using hot or cold wallets, the platform transfers a randomly designated amount to blockchain addresses specified by the audit firm to demonstrate control of the relevant wallets.

The audit firm aggregates the balances of the relevant addresses to calculate the total assets involved, including both user-related holdings and platform-owned assets.

How Do We Build the Merkle Tree With Hashed User IDs and User Balances?

The hashed user IDs (UIDs) and corresponding user balances are first exported from Gate US's database.
Each hashed UID and user balance pair is individually hashed and then concatenated to form the underlying data block.
For each data block, the same hash function is applied to generate the leaf nodes of the Merkle Tree. These hashed values are then combined in pairs and hashed again to create the parent nodes.
This process continues iteratively until a single hash value, known as the Merkle root, is produced.

Please refer to the diagram below for illustration. After the Merkle Tree is constructed, the leaf nodes are exported into a plain text file and 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 helps verify that the total user asset balances are recorded as leaf nodes in the Merkle Tree (i.e., each user's account balance). For each leaf node, we validate the following:

a. The platform's total asset amount includes all user balances.

b. Each user's net balance is greater than or equal to zero.

c. Any change in a user's balance will alter the Merkle root hash.

2. User verification: Users can confirm the accuracy of the proof by checking the Merkle root hash with zk-SNARK. This method allows us to efficiently audit asset holdings while protecting privacy and trade secrets, supporting transparency in operations and building user trust.

zk-SNARK, which stands for Zero-Knowledge Succinct Non-Interactive Argument of Knowledge, is an advanced cryptographic tool. Using sophisticated mathematical algorithms, it enables verification of asset balances without revealing individual asset details. zk-SNARK allows efficient validation, mitigates privacy risks, and, due to its non-interactive nature and scalability, is widely used in areas such as blockchain transaction verification, data privacy protection, and identity authentication.

Verification Process

1. Install the Program and Download the Data:

a. Download the Verification Program:

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

b. Download the Required Data:

Go to the Audit Page and locate the batch you want to verify. Click [Download Merkle Tree] and [Download User Config] to download the required data files.

Unzip the zkmerkle_cex_xxx.tar.gz file. Place the main program file into the extracted folder, and move the user_config.json file into the config folder.

The program folder structure should now appear as follows:

zkmerkle_cex_xxx

Config

cex_config.json

user_config.json

proof.csv

zkpor864.vk.save

main

2. Asset Verification:

Open Command Prompt (cmd) or Terminal, and use the cd command to navigate to the downloaded folder. For example:cd ~/Downloads/zkmerkle_cex_xxx.

Before running the program, you may need to execute chmod 777 main to grant execution permissions or set security items.

Run the following command to begin the verification process.

./main verify cex

If the verification is successful, a confirmation message will be displayed.

All proofs verify passed!!!

For detailed technical documentation and information about the verification methodology, please refer to the GitHub open-source project.

Gate US PoR Implementation

Audit Firm

HACKEN

Audit Time

January 3, 2024

Auditor

Luciano Ciattaglia, Sofiane Akermoun, Nino Lipartiia, Bartosz Barwikowski