WOO X Merkle Tree PoR: How to directly verify account balances against WOO X holdings

WOO X Merkle Tree PoR: How to directly verify account balances against WOO X holdings

To further demonstrate WOO X’s commitment to upholding traders’ trust, WOO Network has unveiled its Merkle tree-based proof of reserves and liabilities in addition to its live self-reporting dashboard, which the team developed with the goal of making crypto exchanges more trusted than traditional finance (TradFi).

Merkle tree proofs are a cryptographic solution for users to directly verify account balances against WOO X holdings, without revealing sensitive details about individual accounts. Apart from the ability to access data from the website, WOO X has taken one step further by open-sourcing the code and methodology behind the Merkle tree calculations.

Verify your account on WOO X Merkle Tree

Using the WOO X Merkle tree is as simple as selecting an audit snapshot time and inputting your unique Merkle hash, which you can find when you click the Get your Merkle hash URL while logged into your WOO X account.


Your unique Merkle hash is on your account’s Audit page.

Make sure that the audit snapshot time matches with the corresponding Merkle Hash and click verify.


Successful verification will show you the Asset List and the Merkle Hash List where your assets belong. It means that your assets are included in the Merkle tree for that specific snapshot time.

Users can also download the full Merkle tree to review the full Merkle tree data. As a further gesture of our commitment to transparency, we have open-sourced the code on GitHub, which you can review using the Download the Merkle Tree button.


The screen will also display when the verification is not successful. Please note that accounts with no assets or who did not pass KYC will not see their information on the Merkle tree. Negative assets will not be reflected on the tree.


How the WOO X Merkle tree works

The sample code on GitHub demonstrates how to validate the Merkle tree. The sample code is written in Java. It consists of only 1 Java file.

MerkleCheck.java.

The entry point is the main() function in MerkleCheck.java. There are only two variables you need to provide and substitute:

  1. Path of the Merkle tree binary file. (download from WOO X website)
  2. User hash for your account for the specified audit. (obtained from WOO X after logging in)

Using the two variables will enable the code to run the Merkle tree validation process and retrieve the balance of your account for the audit. You are welcome to review the code yourself to verify the validation approach.

Merkle Tree Binary Format

Tree structure

The leaf nodes are users' balances split into N parts (determined at random for each audit), and the Merkle Tree is a binary tree. Each leaf node, therefore, represents a portion of each user's balance at the time of the audit snapshot. The root node represents all users' balances at the time of the audit snapshot.

Any accounts with no assets or that did not pass KYC will not be represented on the Merkle tree. Also, any negative assets are not reflected on the tree to ensure no misrepresented negative balances can be added to the tree to under-report the overall sum of the users' balances. Each sub-account is represented separately from the main account in the tree.

In order for the leaf nodes to be at the same level, some leaf parents will only have a single leaf child. We also ensure every Level 2 node has at least one child. So we will assign at least one leaf node to every Level 2 node, and assign the remaining leaf nodes from left to right.


Merkle Tree Format

The Merkle tree is serialized in ProtoBuffer format. The Proto files are as follows:

The tree binary file starts with a list of token names (e.g. BTC, ETH), and the index for the token is used to represent the token itself in the corresponding representation [1].

The second file is a list of Merkle Node messages. It represents a single node in the Merkle tree. The format is as below:

The attributes left/right are the hashes of the left/right child of the current node. When the tree is loaded, we can construct the binary tree structure using the left, right, and parent attributes.

The hash attribute represents the hash of the node. The hash of the intermediary MerkleNode (non-leaf) is generated by:

And the hash of a leaf MerkleNode is generated by:

For the leaf_balance_vector and leaf_position_index parts, we use the MerkleBalanceVector Proto message as the byte array input. The format is shown below:

The index attribute is a list of tokens. We can find the mapping for the token-string representation in [1]. The balance attribute represents the quantity of each token.

The calculation process for leaf node hash is as follows:

And finally, the userHash use ProtoBuffuer message like this:

Validation Algorithm

The validation algorithm attempts to find all leaf nodes that match the UserHash by calculating the hash of the leaf nodes based on the UserHash input and comparing it against the hash of the leaf node. Matches are ensured to be unique by adding the leafIndex which is the leaf's unique id in the tree.

After finding all matched leaf nodes, the algorithm will sum up the balances of the leaf nodes, which should then equal the total balances of the account at the time of the snapshot (also provided in the WOO X Audit page after logging in for each account/subaccount).

The content above is neither a recommendation for investment and trading strategies nor does it constitute an offer, solicitation, or recommendation of any product or service. The content is for informational sharing purposes only. Anyone who makes or changes the investment decision based on the content shall undertake the result or loss by himself/herself.

The content of this document has been translated into different languages and shared throughout different platforms. In case of any discrepancy or inconsistency between different posts caused by mistranslations, the English version on our official website shall prevail.




繼續閱讀
BTC 現在更加稀缺,為 10 萬美元

BTC 現在更加稀缺,為 10 萬美元

熱門項目 + 市場概覽 I. 主流交易所新聞 * Coinbase 已列出 MOG Coin (MOG) 和 Movement (MOVE) 代幣,並在其路線圖中添加了 Gigachad (GIGA) 和 Turbo (TURBO)。 * Bybit已上線HYPE/USDT永續合約。 * 幣安已上線 KAIA/USDT 和 AERO/USDT 永續合約,槓桿高達 75 倍。 12月6日,幣安將下架NOT/BNB和RDNT/BTC現貨交易對。 * OKX已推出Hyperliquid(HYPE)代幣的盤前交易,並列出Movement Network(MOVE)代幣進行現貨交易。 II. 主流項目和熱門活動 * 金融服務公司Robinhood將於2025年進軍亞洲市場,總部位於新加坡。 Robinhood 11 月名義加密貨幣交易量超過 300 億美元。 * 領先的模組化運算層和RaaS(渲染即服務)平台Lumoz已將esMOZ空投至UXLINK社區,並開放空投詢價。 * Uniswap Labs 與 Fireblocks 合作,為機構用戶提供去中心化金融服務。

BTC 跌破 9.85 萬美元支撐位,市場等待新趨勢

BTC 跌破 9.85 萬美元支撐位,市場等待新趨勢

熱門項目 + 市場概覽 I. 主流交易所新聞 * WOO X Global 已上線 Kosmos Energy(KOS)代幣用於現貨交易、USUAL/USDT 和 HSK/USDT 永續合約以及 VANA 代幣。 * 幣安將於 12 月 27 日上線 BTC/USDT 和 ETH/USDT(0627 系列)的新季度期貨合約以及相應的幣本位合約。 * Bitget 已上線 HYPE/USDT 永續合約並上線 FUEL/USDT 交易對。該平台還與 TRON 合作,投資 1000 萬美元購買 TRX 代幣。同時,Bitget 已在 BulbaSwap DEX 上架設其 BGB代幣,並提供五倍積分獎勵。此外,Bitget 已完成 LaunchX 代幣的分發。 II. 主流項目和熱門活動 * Eigen 基金會是一家致力於推進 EigenLayer 生態系統的獨立非營利組織,已向 AltLayer(一種彈性 Rollup 即服務(RaaS)協議)授予 100 萬個 EIGEN 代幣。第一批 50 萬個 EIGEN 代幣已於本週開始分發給 realALT 持有者和質押者。

鮑威爾發表評論後,比特幣跌至 9.8 萬美元

鮑威爾發表評論後,比特幣跌至 9.8 萬美元

熱門項目 + 市場概覽 I. 主流交易所新聞 * Bitget 推出了最高75倍槓桿的 PENGU/USDT 和 USUAL/USDT 永續合約以及 Hyperliquid(HYPE)現貨交易。Bitget LaunchX 計畫 FUEL 的認購額已超過4億美元,吸引了超過 14 萬名參與者。 * Binance Alpha 是幣安創建的一個機制,旨在透過更開放和投機的代幣上市流程來解決上市批評,該機制已宣布其第一批和第二批項目。第一批包括 KOMA、Cheems、APX、ai16z 和 AIXBT 等代幣,第二批包括 CKP、GEAR、SD、SYRUP 和 FARTCOIN 等代幣,允許用戶進行投機交易和投票。 * WOO 任命人工智慧專家 Alex Lee 領導其 2025 年人工智慧策略,透過人工智慧驅動的功能增強 WOOFi 和 WOO X Global 平台,以提供更個人化和直覺的區塊鏈交易體驗。 * 幣安上線 USUAL/USDT 及 LUMIA/USDT 永續合約,同時發放 1.35 億枚 PENGU 空投,補償因 PENGU 市值數據延遲影響的用戶。 *

我們使用 cookies 來改善您的體驗。欲了解更多資訊,請閱讀我們的隱私政策。點擊「接受」即表示您同意我們的 cookies 和隱私政策。或者,您可以點擊「拒絕」來拒絕同意。