FTX 崩盤後,我們如何透過「準備金證明」信任一家中心化交易所?

原文標題:《Doing “Proof-of-Reserves” the Right Way
撰文:0xfishylosopher,Web3.com Ventures
編譯:PANews

引言

過去幾週,加密世界一片混亂。 FTX 崩盤後,整個行業都在反思,並呼籲中心化交易所證明未挪用用戶資金:即所謂的「準備金證明」。本文將首先概述加密貨幣交易所為何需要「準備金證明」,然後會深入分析如何利用 Merkle Trees(默克爾樹)和 zk-SNARKs 等技術來實現這一證明機制。

「準備金證明」的基本原理

我們為何需要中心化交易所?

FTX 的轟然倒塌令人始料不及。將這家中心化交易所的破產比作「加密行業的雷曼時刻」並不為過。2022 年 1 月,FTX 估值 320 億美元,是加密貨幣交易量最大的中心化交易所之一。而到了 11 月初,當人們開始質疑 FTX 資產(主要體現為其原生代幣 FTT)的真實價值後,這家交易所遭遇了流動性危機。 FTT 的價格幾乎一夜間暴跌逾 90%,債權人爭相撤資,風捲殘雲後, FTX 黯然破產。

可想而知,這場風暴也衝擊了人們對加密貨幣市場的信心,尤其是對中心化交易所(CEX)。事實上,CEX 在加密世界的地位頗為尷尬,整個行業在意識形態上推崇去中心化的無需信任的模式,而 CEX 本身卻是基於信任的中心化實體。雖然市場上存在許多去中心化交易所(DEX),它們的流動性和多樣性也不亞於中心化交易所,加之中心化交易所存在種種顯而易見的缺點和風險,但市場對 CEX 仍有持續的需求。

從根本上說,中心化交易所是新來者涉足加密領域的主要門戶之一。要在 Uniswap v3 等 DEX 上完成價值 5 美元的ETH 兌(封裝)BTC 的加密貨幣交易,用戶需要採取多個步驟,並具備各種技術知識。首先,用戶要了解並安裝一個錢包,如 Metamask。這個過程涉及 12 個詞的助記詞,針對不同區塊鍊和不同代幣的帳戶管理等,僅這一步就足以令普通用戶卻步。接著,用戶需要使用第三方供應商(如MoonPay)將信用卡里的錢存入錢包。這一步也需要針對第三方供應商進行註冊、KYC 等,另一個麻煩是還要知道自己的 64 位錢包地址。用戶還要了解所有步驟的 gas 費、封裝幣、集中流動性等。整個過程對新用戶極不友好。再對比一下 CEX 上的購買體驗:用戶只需通過熟悉的過程完成註冊和 KYC,然後刷信用卡,選擇「ETH/BTC」幣對,點擊「購買」即可。這對新用戶非常友好。

此外,中心化交易所不僅服務於個人用戶,也服務於傳統金融公司和企業等機構客戶。除易用性外,機構客戶還需要伴隨中心化的可靠性和服務支持,以便在需要幫助時可以求助,在遭遇過度剝削時可以起訴責任人。所有這些都不是 DEX 能比擬的; Web 3 要想成為主流,需要傳統機構的支持,也需要易用的新手入場機制。因此,我們無法用去中心化交易所取代中心化交易所。事實上,FTX 崩盤也並未顯著增加所謂「逃離」CEX 的加密貨幣數量。正如 Chainalysis 所指出的,資金離開 CEX 後,最主要的目的地其實是其他 CEX。

這些都指向一個不容辯駁的結論:儘管中心化交易伴隨各種潛在的欺詐和風險,但放棄CEX 並非解決辦法。

綜上所述,我們不能沒有 CEX,哪怕是在 FTX 崩盤等災難發生之後。但為什麼需要全額準備金支撐呢?為什麼 CEX 不能像銀行那樣依賴於部分準備金呢?

簡言之,加密貨幣交易所的運作方式與銀行不同。首先請考量一下銀行在經濟中發揮的作用。從根本上說,銀行是一個匯集借款人和貸款人的平台。假設 Alice 向銀行家 Bob 存入1000 美元(存款利率為5%),準備金率為 20%。雖然 Bob 向 Alice 承諾她隨時可取回,但Bob 實際上只會保留 200 美元作為準備金(20%),以防 Alice 想提取一些錢來支付帳

單,但他會賭 Alice 不會想立即取回全部本金。與此同時,Bob 可將剩餘的 800 美元以 10% 的利率借給企業家 Carol。假設 Carol 創建了一座新鞋廠並賣出了足夠多的鞋子,償還了 800 美元的本金和 80 美元的利息。在收到 80 美元的利息後,Bob 會將其中 50 美元轉到 Alice 的帳戶,自己保留 30 美元。

銀行的部分準備金示例。

理想情況下,所有人都是贏家: Alice 得到 50 美元,Bob 得到 30 美元,Carol 得到一座新鞋廠。更重要的是,經濟也是贏家:Carol 能利用鞋廠生產更多鞋子,但如果 Alice 選擇把 1000 美元藏在床底下,Carol 也就沒錢建廠了。經濟學家口中的「銀行創造貨幣」正是基於這一點,銀行通過借貸創造出必要的新資本,以幫助 Carol 這樣的企業家創造更多經濟產出。銀行創造的具體貨幣數量=(存款總量)×(1/ 準備金率),「1/ 準備金率」也被稱為「貨幣係數」。準備金率越低,銀行創造的經濟產出價值越高,同時,銀行現金不足以滿足提款需求的風險也越高。反過來,如果要求 Bob 維持 100% 的準備金率, Carol 就會沒錢來建設新鞋廠,經濟就會停滯, Bob 則要自掏腰包支付 Alice 的存款利息。所有人都是輸家。綜上所述,由於經濟活動主要由借貸提供資金,銀行對於保持健康的經濟運轉和增長至關重要。

銀行通過實施部分準備金來「創造貨幣」並刺激經濟增長。但加密交易所並無類似機制。幣安、Coinbase 或 FTX 等中心化交易所無法為經濟賦能。用戶(通常)不會得到任何利息,加密貨幣交易所通常不會像傳統銀行那樣從事借貸活動。它們的行為更像證券交易所,而非銀行,它們只是將持有現金的人與持有加密貨幣的人聯繫了起來。中心化交易所只是順便幫你保管資金(作為託管人),因為追踪自己的加密貨幣很麻煩(特別是經常買賣時),且存在技術難度。而對於法幣,將現金鎖在保險箱裡並不是太難。

CEX 不是銀行:CEX 最重要的作用是促進資金的交易和提取,而非為了刺激經濟生產而進行的借貸。更重要的是,實施部分準備金模式並不能真正使 CEX 交易者像傳統銀行儲戶那樣受益。銀行需要部分準備金才能充分發揮其重要的經濟作用,而加密貨幣交易所並無同樣的需要。所以對於中心化加密貨幣交易所而言,全額準備金帶來的信任和安全性的優勢遠遠超出部分準備金模式可能帶來的任何其他優勢。因此,中心化加密貨幣交易所應當採用全額準備金模式。

實施準備金證明機制

上文已經釐清了為何中心化加密貨幣交易所應當採用全額準備金模式。現在我們需要探究如何部署這一模式,特別是如何以 Web 3 的原生方式部署,換句話說,如何利用 Web 3 原生技術而非傳統的審計模式來進行部署。全面的「準備經證明」包含兩個部分:負債證明和資產證明,以證明 CEX 資產等於(或大於)負債,藉此,當所有用戶要從一家交易所提取所有資金時,交易所才能具備充足的償付能力。

負債證明

先來看負債證明,即證明用戶存款被準確記錄在了交易所中。畢竟,我不希望存了 1 ETH 進幣安,想取時卻被告知沒有被記錄在系統內。

提供完整負債證明的最簡單方法就是發布每個人的資產的「帳戶、價值」對。但這會引發隱私問題:人人都能看到其他人有多少錢。一種邊際改進方法是僅發布隨機的帳戶哈希值及帳戶餘額。但所有餘額的洩露仍會引發隱私問題。而且所有交易變化(可以說是該交易所的所有交易)也可能洩露給攻擊者。

在實際的負債證明中,我們需要向每個人保證他們的餘額保存在交易所中,同時不能向任何具體用戶洩露其他用戶的餘額或任何交易信息。如何做到這一點?這裡就要用到默克爾樹了,這是Web 3 中最重要的數據結構之一。

默克爾樹(又稱二叉哈希樹)能通過一種簡潔的方法證明列表中存在某一個元素,同時盡量不提供關於所有其他元素的信息。它首先會將列表中所有數據的哈希放在一個二叉樹上,作為葉節點,每個父節點包含兩個子節點的哈希之和。樹的頂端是一個向所有人公開的根節點。要證明具體葉節點(如我的帳戶)保存在了某個列表(如幣安帳戶列表)中,幣安會為我提供一個簡短證明(大小為「O(log(n)」),即默克爾證明,它會證明具體的密鑰節點存在於樹中,藉此,我將能重建並驗證樹的根。

默克爾樹負債證明。來源:https://vitalik.ca/general/2022/11/19/proof_of_solvency.html

在下面的例子中,有 8 個用戶擁有不同數量的ETH。假設我是 Charlie,我的餘額存在幣安上,而幣安使用默克爾證明部署了「負債證明」機制。幣安會發給我一個默克爾證明,包含三個藍色節點的哈希值。然後我可以使用默克爾樹公式(「parentValue = hash(leftValue, rightValue)」)對我自己的值進行哈希處理,將其依次向默克爾樹的頂端添加,最終到達根節點。如果得出的根節點值與公佈的值相同,便證明我的錢確實存在幣安。

在具體實踐中,利用默克爾樹實現負債證明的方法可謂「老而彌堅」。雖然它已經誕生了一段時間,但最近大部分關於「準備金證明」的呼籲基本無一例外,仍在呼籲交易所使用默克爾樹來提供存款證明。正如V 神所說:「默克爾樹技術基本能發揮出負債證明機制的最高水平。」除默克爾樹外,也可以利用 zk-SNARKs 這一零知識證明(ZKP)來實現更強大的負債證明。 zk-SNARKs 的基本用途是提供一種簡潔證明,以證明「某物」存在,同時無需透露「某物」的具體細節。在負債證明中,這裡的「某物」即帳戶餘額。由此,利用ZKP,我們可以在不損害隱私的前提下證明交易所擁有我的帳戶餘額。

資產證明

負債證明只是其中一面。要證明中心化交易所由全額準備金支撐,還需證明其資產大於或等於負債。問題是你如何證明你擁有這些錢?對於法幣,最簡單的辦法就是「拿一箱錢來」。對於加密貨幣,相應的辦法是將交易所資金發送到一個公開同意的錢包,讓所有人都能看到裡面的錢。 V 神還指出,如果你不想支付在鏈上轉移現金的費用,也可以發送一個鏈下的簽名消息。

當然,現實情況沒這麼簡單。這一資產證明方法的主要問題是,大部分交易所的餘額都存儲在鏈下的物理隔離的冷錢包中。這些冷錢包主要用於保障資金安全:從一台未連網的計算機上竊取私鑰要難得多。冷錢包通常會離線生成並簽署交易,再通過二維碼傳輸至網絡上。因此,哪怕從一隻冷錢包中提交交易(更確切地說,任何信息)都會很麻煩。更何況,交易所通常要為每種不同的代幣及每條不同的區塊鏈配置大量冷錢包。如果每當有用戶希望交易所提供資產證明,都要發送一遍所有權證明消息,這項任務會過於昂貴且不可持續。

此外,雖然交易所可以向所有人公開他們掌控的地址以及這些地址中有多少資金,但這種資產證明方式無法顯示資金來源。假設我的資產負債表上只有 80 ETH,但儲戶存入了 100 ETH。當我需要提供準備金證明時,我完全可以藉入 20 ETH(通過朋友或銀行),以補齊 100 ETH,並將這筆錢發送到商定的錢包,然後吹噓自己是一個多麼負責任的交易所。宣傳完畢後,我可以悄悄歸還那 20 ETH(或者慢慢歸還,以與用戶提款混淆起來),並重新實施部分準備金機制。使用一次性準備金證明錢包的情況尤其難以避免這方面的擔憂。

V 神也指出,解決這兩個問題的最簡單方法是使用一些長期地址來存儲你的所有資金。你只需要證明一次這些地址是屬於你的,其餘時間,人們只需監控進出這些地址的交易,即可追踪你的資金動向,並檢查這些資金是否符合你的負債證明默克爾樹中所體現的負債。但作為持有數十億美元用戶資金的交易所,將所有儲蓄存在幾個永不改變的地址中,恐怕也不合理。這無疑會帶來安全問題,成為攻擊者垂涎的靶子。

可見,資產證明並不像乍看起來那麼簡單。雖然可以採取一些技術性措施,例如公開地址,甚至公開地址的零知識證明,但交易所似乎總有辦法動手腳(比如借錢的例子)並欺瞞消費者。也就是說,至少就資產證明而言,單純的技術手段目前只能做到這一步。最終仍然需要傳統的審計師來切實驗證資金來源是否正當。

結論

中心化交易所有存在的必要,但它們要想蓬勃發展,必須取得信任,並保證不會重蹈 FTX 崩盤的覆轍。而全額準備金是確保這一點的重要步驟。正如幣安首席執行官 CZ 所說:「銀行的運營仰賴於部分準備金,但加密貨幣交易所不應如此。」

幣安首席執行官趙長鵬(CZ)稱加密行業需要準備金證明。
來源:https://twitter.com/cz_binance/status/1590055819416330240

FTX 崩盤以來,許多人或明或暗地指出,中心化加密貨幣交易所可通過默克爾樹等措施實現純技術性的「準備金證明」,使審計機構不再有存在的必要。 「準備金證明」一詞也通過呼應「工作量證明」和「權益證明」,暗中強化了這一意味。但現實遠沒有這麼簡單。

純粹客觀的算法,例如使用默克爾證明,絕對有助於增進對於交易所償付能力現狀的保障(例如表明它已記錄下所有用戶存款)。但通常而言,這還不夠。正如我們對「資產證明」的分析所示,聰明(和邪惡)的交易所能輕易繞過這些本可以證明其償付能力的算法。歸根究底,有償付能力的交易所需要同時提供資產和負債證明。因此僅強調默克爾樹能解決所有問題,往好了說是誤導,往壞了說就是有意欺騙。本文的關鍵結論是,即使在 Web 3 的技術治理的世界中,仍需要人的參與,來監管不法行為。儘管相比傳統金融領域,審計的重要性已有所降低,但審計師這一角色仍必不可少。

由此來看,會計師的日子還長著呢。

本文不構成投資建議,虛擬貨幣波動大請謹慎小心

掌握虛擬貨幣、區塊鏈大小事