Merkle 樹與零知識儲備證明:隱私上的取捨

2026-09-10

Merkle 樹與零知識儲備證明:隱私上的取捨

兩條路線都讓交易所能在不公佈用戶餘額的前提下把自己綁定到這些餘額上,而它們把隱私的界劃在了不同的地方。Merkle 證明讓你看到自己那一行和路徑上的少數幾個相鄰哈希;零知識證明則能就整個集合確立一句陳述,同時不透露任何一行的任何資訊。更強的隱私換來的代價是算力、複雜度,以及一樣你必須新去信任的東西。

把 Merkle 與零知識兩條儲備證明路線放在一起比:用戶核甚麼、一份證明透露甚麼、代價是多少、以及你必須信任甚麼

兩條路線各自想藏住甚麼

兩邊要解的問題是同一個。交易所需要就一組餘額說服用戶,又不能把這組餘額變成一份公開文件——因為公佈它會一次性暴露每一位客戶。

Merkle 樹的解法是:把自己綁定到這個集合上,然後讓每個用戶只核自己的成員資格。沒有人看到名單,而每個人看到的又足夠驗證自己那一行。這個結構寫在儲備證明裏的 Merkle 樹裏。

零知識證明攻的是同一個問題更難的版本。它不是讓每個用戶核一行,而是產出一份證明:關於整個集合的某句陳述為真,同時不透露這句陳述所關於的那些數據。這一類證明是甚麼、大體怎麼工作,寫在零知識證明、SNARK 與 STARK裏。

兩條路線逐維度對照

維度 Merkle 樹 零知識證明
用戶核的是甚麼 自己那一行對着根 關於整個集合的一句陳述
一份證明透露甚麼 你路徑上的兄弟哈希 除了那句陳述本身以外甚麼都不透露
負餘額或對沖餘額 察覺不到 可以由那句陳述排除掉
生成的代價 微不足道 相當可觀的算力
核驗的代價 幾十次哈希運算 一份小證明,很快驗完
你必須信任甚麼 那個根與葉子格式 那個電路,以及它是怎麼被設置的

按行成對地讀,不要順着一欄往下讀——因為有意思的是兩條路線在哪裏分岔,而不是各自單獨表現如何。最後一行改變的是問題的形狀而不只是數值,這也正是「更新的那條路線並不就是更好」的原因。

一份 Merkle 證明洩露了甚麼

你的證明路徑裏裝着屬於樹上其他部分的哈希。哈希不可逆,所以你對它們底下的餘額一無所知;在這個意義上,洩露接近於零。

但不完全是零。你會知道這棵樹有某種形狀、裏面大致有多少帳戶、以及某些兄弟值確實存在。一個長期收集大量證明的人,能比任何單個用戶了解到更多關於結構的資訊。

這些本身都不危險,也值得保持比例感:關於一棵樹的結構資訊,離關於一個人的資訊還遠得很。更實際的那個缺口是另一件事。因為每個用戶只核自己那一行,Merkle 方案沒法排除集合內部互相抵消的餘額;而一個由「沒有人交叉核對過的行」加總出來的總額,比它看起來更弱。

零知識證明加上了甚麼

它改變的是「甚麼可以被證明」。交易所不必一次證明一個成員資格,而可以證明整個集合的某個性質——比如所有餘額之和等於某個寫明的數字,並且沒有任何一條餘額是負的。

第二個從句比聽起來重要。在樸素的 Merkle 方案下,沒有任何東西阻止一條負項抵消掉一條正項;而樹兩種情況都會驗過,因為它承諾的是「給它甚麼它就綁甚麼」。一句零知識陳述可以在構造上讓這件事不可能。

這是密碼學裏一個通用形態的好例子:從「證明實例」轉到「證明性質」,改變的是能保證甚麼,而不只是核起來有多快。隱私上的改進也是真的:驗證者知道那句陳述成立,除此之外甚麼都不知道——包括對樹的形狀一無所知,所以反覆的證明不會累積成一幅關於客戶群的圖。類似的推理也驅動着它在別處的應用,寫在零知識用在哪裏裏。

零知識的代價

生成證明很貴。就數百萬個帳戶構造一句陳述需要可觀的算力,而這筆成本每一期都落在交易所身上,不落在讀者身上。

更大的代價是概念上的。一次 Merkle 核驗就是幾十次哈希,任何理解哈希的人都能重新實現一遍;而一套零知識系統立在一個把陳述編碼進去的電路上,以及那個電路被設置時用的參數上。核實這個電路說的是不是它聲稱的那件事,多數用戶做不到。

還有一筆很少被提到的營運成本:電路是有版本的,而被證明的那句陳述一改,每一個獨立複核者都得重看一遍。所以它把信任挪了位置,而不是消掉了信任。你不再需要信任交易所的算術,同時你現在需要信任這個電路被正確地寫出並配置好——通常是憑複核過它的人的一句話。

為甚麼兩者都補不上完整性缺口

兩條路線都是「綁定到一個集合」。誰都確立不了這個集合包含了每一個帳戶,因為被漏掉的帳戶在兩種構造裏都不留痕跡;而任何關於一個集合被證明的性質,對留在集合外的東西都一言不發。

這一點值得直說,因為零知識證明的精巧會誘人假設它解決了一切。它們就「進來了的那些數據」做出了更強的陳述;它們對「從沒進來的數據」甚麼都沒說。

資產那一側、以及客戶餘額以外的義務,同樣如此。密碼學定下的是一個被承諾的集合上能定的東西,其餘的坐在外面——這寫在儲備證明的局限裏。

讀者該偏向哪一條

就核自己的餘額而言,Merkle 證明完全夠用,而且有一個好處:它能用你讀得懂的工具去驗。當做核驗的人正是讀者本人時,簡單本身就是一項真實的安全性質。

就關於整個集合的陳述而言,零知識嚴格地更有能力,而「能排除負餘額」是其中最清楚的一項具體收益。如果一份披露提供了它,那是關於「發佈方對這個問題更難的那一半有多認真」的一個信號。

所以選擇與其說是「哪種技術更優越」,不如說是「這份披露想回答的是哪個問題」。實踐中兩者共存而不是競爭:一個方案完全可以用樹來綁定、給用戶單獨的證明,再加一句關於聚合性質的零知識陳述——這是合理的設計,不是自相矛盾。

小結

Merkle 樹給每個用戶一份便宜、讀得懂的包含性證明,同時洩露少量結構資訊。零知識證明能確立整個集合的性質——包括不存在負餘額——同時甚麼都不透露。

更強的那件工具花算力,並把信任挪到一個多數人無法檢視的電路上。而兩者都證明不了這個集合是完整的;那仍然是密碼學回答不了的那個問題。想繼續讀幣貝學院的其他內容,請接着往下看。

風險披露:本文為 Bitbase(幣貝)學院的科普內容,僅供教育與資訊參考,不構成任何投資、交易、稅務或財務建議。加密資產波動劇烈,請自行評估風險。本文撰寫於 2026 年 9 月,請以官方最新資訊為準。

參考資料

[1] 幣貝,儲備證明 —— 每月披露、Merkle 根哈希與開源驗證工具 www.bitbase.com

相關推薦

更多推薦