# 看懂默克尔树，别让CEX挪用了我们的血汗钱

By [DrJingle 金狗博士](https://paragraph.com/@fahayek) · 2022-11-09

---

**CZ大战SBF，市场哀嚎一片，信仰崩塌。传统中心化交易所CEX往往因为运作不透明而受到普遍质疑，信誉不佳。为自证清白，各大CEX宣布进行使用默克尔树进行储备证明。那么本文就是试图让你搞清楚什么是默克尔树，如何验证储备证明，还CEX一个清白？**

![CZ发文称所有的加密交易所都应该使用默克尔树做储备证明](https://storage.googleapis.com/papyrus_images/83d3f4b82a3711a9cda163979b430a8eb03ebce296614deba70a9f84d9113821.png)

CZ发文称所有的加密交易所都应该使用默克尔树做储备证明

我一个小小散户，只知道我自己的账户名和我的账户上有多少钱，我tmd哪儿知道CEX有没有挪用我们的资金呢？请证明给我看。

**1，什么是默克尔树**

**默克尔树，也叫哈希树**（hash tree；Merkle tree），是在密码学和计算机科学中的一个树形数据结构。哈希树能够高效、安全地验证大型数据结构的内容。

哈希树的概念由[瑞夫·墨克](https://zh.m.wikipedia.org/wiki/%E7%91%9E%E5%A4%AB%C2%B7%E5%A2%A8%E5%85%8B)于 1979 年申请专利，故亦称**墨克树**（Merkle tree）

**2，如何验证**

![验证示范](https://storage.googleapis.com/papyrus_images/8499a5055de23ac253c14e34aacc2552ba163d7226152b5b1aff8f2ac9a0f544.png)

验证示范

假设某交易所一共有N个用户，每个用户钱包里有不同的ETH数量为X ，每一个用户都知道自己的ID和自己钱包里的钱数，但并不知道别人钱包里的钱数，更不知道交易所一共有多少自己，那么如何让我相信交易所一分钱都没有挪用我们的血汗钱呢？

我们看到这棵默克尔树一共有四层结构，底层是用户，有两个数据，分别代表用户User（N）和钱包里有Xn个ETH，譬如User2 钱包里有8.8个ETH；每一个用户的两个数据，分别构成一个哈希hash值，比如user1 和user2分别对应Hash1 和Hash2 ，Hash1和Hash2又向上迭代变成Hash(1,2),最终会形成一个 Hash(1,2,3……N-1,N)的节点，称为哈希树根。哈希树根包含交易所的所有用户和余额信息；

我们前面提到，作为User1只需要知道自己的用户ID和余额，以及Hash2和Hash(N-1,N)（这两个hash由交易所提供），就可以验证自己是否在树根上。\[User1,Hash2,Hash(N-1,N)\]就被称为默克尔树证明或默克尔路径。用户即可以验证树根的值是否吻合即可。

![](https://storage.googleapis.com/papyrus_images/36ba7ca3096fdfe435e99365513938ebc3a92e0baa7b78a33765500c00c0faee.png)

**3，证明100%储备的条件**

上面我们知道了一个用户如何验证自己的账户信息和账户余额是不是包含在根的哈希里了，当交易所公开默克尔树根以后，**任何用户可以验证其钱包余额和用户账户信息UID在否在树根上了。**

**同时交易所也可以聘请第三方审计公司： 1、审核树上所有用户的余额加总； 2、审核交易所所有钱包地址的余额加总。**

**4，结论**

如果上述的方法都证明了交易所的余额和所有用户或地址的余额加总是一致的，同时任何用户也都验证了自己的账户信息和余额和树根上的哈希值信息。结论可以是，**在公布默克尔树根值的那个时间切面上，交易所的确是有100%的储备**。因此，还需要交易所保持较高的频率更新储备证明的默克尔树根，已被经常动态查验。

---

*Originally published on [DrJingle 金狗博士](https://paragraph.com/@fahayek/cex)*
