Merkle 樹讓交易所能公佈一個很短的值,而這個值一次性把它綁定到每一條用戶餘額上。每個用戶成為一片葉子,葉子兩兩向上做哈希,直到只剩一個根;而下面任何一處發生變化,根就完全不同。這正是「公佈出來的根是一種承諾而不是一句保證」的原因,也是你能在看不到任何別人數據的前提下證明自己被包含在內的原因。
Merkle 樹解決的是什麼問題
交易所想就數百萬條餘額說點什麼,又不想把它們公佈出來。公佈名單會暴露每一位客戶;公佈一個總額則什麼都證明不了,因為任何一組數字都能湊出一個總額。
需要的是一個小到可以公佈、由每一條餘額推導出來、又不可能與另一組餘額對得上的值。這樣交易所就能公開地把自己綁到整個集合上,而每個用戶各自去驗證自己那一行確實在被綁定的東西裏面。
這恰好就是 Merkle 樹幹的活,也解釋了為什麼用這個結構而不是「把名單拼起來做一次哈希」。一次平坦的哈希在數據變動時同樣會變,但它會逼着你手裏握有每一條餘額才能核,而那正好破壞了隱私要求。
各個部件的名字
| 術語 | 它是什麼 | 為什麼要緊 |
|---|---|---|
| 葉子 | 一個用戶快照餘額的哈希 | 它就是你親自去核的那一行 |
| 葉子原文 | 被哈希以生成葉子的那段確切文本 | 格式不同,哈希就不同 |
| 兄弟節點 | 每一層上還需要的另一個哈希 | 它們正是你證明文件裏裝的東西 |
| 證明路徑 | 從你的葉子到根的那些兄弟節點 | 即便有數百萬用戶它也很短 |
| 根 | 最頂上那一個哈希 | 交易所公佈出來的就是這個值 |
第二行值得讀兩遍。葉子是對一段特定字符串的哈希,而如果這段字符串是按另一種方式拼的,哈希就不同——這正是算法版本必須與根一起公佈的原因。
一片葉子是怎麼造出來的
葉子是對一小段文本的哈希,那段文本描述的是某個帳戶在快照時刻的狀況。它寫明算法版本、它所屬的那次披露的標識、該帳戶的一個記錄標識,以及被覆蓋幣種上的餘額。
有兩條格式規則,起的作用比看上去大。餘額被寫成固定的小數位數,所以同一筆金額永遠產出同一段文本;而各幣種按固定順序出現,而不是按某個系統碰巧輸出的順序。少了這兩條中的任何一條,兩個實現會把同一個帳戶哈希成不同的值,而獨立驗證會因為與誠實無關的理由失敗。
帳戶由一個記錄標識來指代,而不是由任何關於你的東西。正是這一點,讓這棵樹在結構上可以被公佈,同時對「裏面是誰」保持無資訊。圍繞它的那些被公佈的欄位,寫在怎麼讀一份儲備證明報告裏。
這棵樹是怎麼向上建起來的
葉子兩兩合併。兩個哈希被拼成一段字符串,再對這段字符串做哈希,產出上一層的一個節點;這些節點再按同樣方式兩兩配對,如此重複,直到只剩一個值。
每一次合併的順序都要緊,而這正是實現驗證工具時最容易絆倒人的細節。每一步都有左側和右側,把它們按錯誤的順序哈希會得到不同的結果。所以證明文件不僅記下每一層要用哪個兄弟哈希,還記下它坐在哪一側,而你的驗證工具必須遵守這個指示,而不是把兩個值排個序。
因為這棵樹每一層都減半,從任何一片葉子到根的路徑都很短。一個數百萬帳戶的集合,產出的證明只有幾十個哈希,這就是為什麼這個檢查在手機上瞬間跑完,而不需要下載整個數據集。
為什麼篡改會被發現
哈希函數有一條性質:輸入上一處很小的改動,會產出一個毫不相關的輸出。把某條餘額改動最小的一個可表示單位,它的葉子哈希就完全變了,它的父節點變了,從它到根這條路徑上的每一個節點都跟着變。
這正是把「公佈」變成「承諾」的那一步。一旦根被公開,交易所就無法修改某條餘額、插入一個帳戶或者刪掉一個,而不產出一個不同的根。它沒法悄悄地做,也沒法只為一個用戶做而不弄壞所有路徑經過同一分支的人的驗證。
這份承諾只有在「根是在任何人需要它出錯之前就已公佈」的情況下才成立,所以根的公佈時點與公開記錄,與那段數學同樣要緊。自己去跑這次比對,寫在如何核驗儲備證明裏。
為什麼鄰居們仍然是隱私的
你的證明路徑裏裝着這棵樹其他部分的哈希,而哈希不可逆回它所來自的數據。你知道有這麼一個兄弟節點、知道它的哈希是什麼;你不知道它下面是誰的餘額,也不知道那些餘額是多少。
正是這份不對稱,讓這個結構與這個問題相配。每個用戶都能確認自己被包含在內,而沒有任何用戶會知道關於另一個用戶的任何事,同時交易所既不必信任誰,也不必公佈一份客戶名單。
各家實現通常還會再加強一層:把這次檢查放在本地完成,而不是把你的驗證數據回傳給伺服器。在這裏,隱私那一側的論證與驗證那一側的論證指向同一個方向,這不常見,值得注意。
這個結構在哪裏就幫不上忙了
Merkle 樹證明的是「屬於某個集合」。它說的是你那一行在那棵被公佈了根的樹裏,而對於「那個集合是不是對的集合」,它一個字都沒說。
三條局限由此直接跟着來。它沒法告訴你是不是每個帳戶都被包含了,因為一個被漏掉的帳戶,對留下來的人不留下任何痕跡。它沒法告訴你資產是否存在,那是另一件鏈上的聲稱,而不是這個結構的性質。它也沒法告訴你進入樹裏的那些餘額之外的任何負債——這個缺口討論在儲備證明與負債裏。
這些都不是密碼學上的缺陷。它們是「一個成員資格證明能被要求做到什麼」的邊界,而知道這條邊界,正是讓這個結構不被過度推銷的那件事。
小結
Merkle 樹把數百萬條餘額變成一個可公佈的值,並給每個用戶一條短路徑,證明自己那一行就在它下面。葉子是固定格式記錄的哈希,節點是成對的哈希,而每一層的拼接順序是規格的一部分,不是一個細節。
它的長處是:發佈之後的篡改藏不住,而「被包含在內」可以在不暴露任何人的前提下被證明。它的邊界是:它證明的只有成員資格——集合是否完整、資產是否存在、負債是多少,全都在這棵樹之外。想繼續讀幣貝學院的其他內容,請接着往下看。
風險披露:本文為 Bitbase(幣貝)學院的科普內容,僅供教育與資訊參考,不構成任何投資、交易、稅務或財務建議。加密資產波動劇烈,請自行評估風險。本文撰寫於 2026 年 9 月,請以官方最新資訊為準。
參考資料
[1] 幣貝,儲備證明 —— 每月披露、Merkle 根哈希與開源驗證工具 www.bitbase.com






