默克爾樹是包含哈希值的二叉樹數據結構。二叉樹中的一個節點最多有兩個子節點,分別為左節點和右節點。默克爾樹的每個恭弘 = 叶恭弘節點都存有數據元的哈希值。只要獲取到左右節點的數據,即可計算出主節點的完整信息。完整信息包含兩個部分:錢包地址的餘額數據和哈希數據。
- 餘額數據:基於二叉樹的數據結構,主節點的餘額數據只能由所含左右節點的餘額數據組成。
- 哈希數據:每個節點包括餘額數據、二叉樹的層次數據(圖中虛線)和子節點的哈希數據(每個節點下所存儲的左右節點數據)。
默克爾樹通過計算驗證,比如上圖中所計算的綠色部分(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」。然後,執行以下命令:
- 下一步,運行經過驗證的程序並觀察輸出數據。