默克尔树是包含哈希值的二叉树数据结构。二叉树中的一个节点最多有两个子节点,分别为左节点和右节点。默克尔树的每个叶节点都存有数据元的哈希值。只要获取到左右节点的数据,即可计算出主节点的完整信息。完整信息包含两个部分:钱包地址的余额数据和哈希数据。
- 余额数据:基于二叉树的数据结构,主节点的余额数据只能由所含左右节点的余额数据组成。
- 哈希数据:每个节点包括余额数据、二叉树的层次数据(图中虚线)和子节点的哈希数据(每个节点下所存储的左右节点数据)。
默克尔树通过计算验证,比如上图中所计算的绿色部分(B 和 D),并遵循以下两个标准:
1.验证余额是否符合拆分原则。
2.验证哈希值是否合法。
默克尔树运用哈希函数,让用户在对紫色节点信息知之甚少的情况下,即可验证自己是否是完整树型的一部分。默克尔证明对各个用户而言是独一无二的。对于 24 层的默克尔树,用户需要长度为 24 个元素的余额数组来验证自己的余额信息,并且这个数组只用于验证用户的余额。
只要获得的数据不超过默克尔树中用户数据总量的 50%,用户就无法根据已拥得的碎片化信息重构整个数据结构。因此,对于公司而言,默克尔树能确保公司整体资产信息不外泄,并保护用户的账户隐私。
Bybit 提供以下两种验证方式:
通过 Bybit 平台验证
访问此页面,前往验证我的账户页面,即可查看个人的默克尔路径。我们以图形方式展示默克尔树验证的节点推导过程,让个人资产余额显示更加一目了然。
注意:我们会定期进行储量证明审计,以证明 Bybit 拥有足够的储量。 如果您在审计后创建了您的账户,或者您没有持有审计过的代币,您的账户将不会有任何相应的审计记录。
通过自我验证工具——开源代码
Bybit 已在 GitHub 发布默克尔树生成源代码和验证码,以协助用户自行完成余额验证流程。默克尔树的计算过程涉及海量用户数据的计算,通常由大数据和 Java 实现。Java 编码完全开放,供用户查验。
背景
Bybit 开源了以下编码,供专业用户自行验证。用户点击个人储备金证明页面的“复制数据”,即可将数据复制到自己编程系统剪贴板的默克尔树证明文件中,并将此文件命名为“myProof.json”,存储于本地驱动器。
操作方式
1.创建可执行文件
请下载最新的源代码文件,确保个人工作站或笔记本电脑已安装 JDK(1.8 及以上版本)和 Maven。
- 解决依靠、编译和打包问题。
- 如下所示,检查项目当前文件夹中编译好的 jar 包。
2.执行验证
- 将从 Bybit 网站复制的证明文件粘贴至当前文件夹的新文件中,并将此文件命名为“myProof.json”。然后,执行以下命令:
- 下一步,运行经过验证的程序并观察输出数据。