隨著FTX在加密世界中的墜落,在11月9日的FTX事件過後的這幾天內,各大中心化交易所(CEX)紛紛表示近期公佈或直接公示交易所的默克爾樹儲備證明(merkle-tree proof-of-reserves),希望通過默克爾證明,將原本不透明的CEX資產準備金透明化,從而證明自家的CEX中心化交易所的資產儲備情況,證明資金是沒有被挪用或移動的。
毋庸置疑FTX的隕落讓整個CEX的黑箱運行機制蒙上了陰影甚至是難以抹去的污點,而默克爾樹儲備證明似乎給這個行業帶來一絲絲曙光。就此技術方案而言,幾年前很早之前就已經被提出且應用過。那到底“默克爾證明”是什麼,又如何證明交易所裡的用戶資產是沒有被挪用的,是否能證明其資產就是在被安全保管的?
默克爾樹是比特幣和以太坊等加密貨幣的數據結構,它是一種可以將數據壓縮的密碼學技術。通過使用默克爾樹,多個數據可以合併成一個數據,並且將較大規模的數據匯總結果存儲,同時,又可以通過密碼學的手段證明對應的數據被壓縮在了匯總結果當中。並且,通過驗證默克爾樹樹根的數據完整性,構成默克爾樹的所有數據的完整性都可以被證明。
默克爾樹的樹葉部分由數據集當中每個數據的哈希值所構成。具體來說,樹葉部分的構造是將兩個相鄰的哈希值連起來,打包到一塊再次哈希化,以產生母哈希值。最後打包到最上層的哈希值被稱為默克爾樹根,根哈希值(Merkle Root)。默克爾樹根的哈希值包含了所有數據的哈希特徵,這就是說在哪個節點上數據被篡改,它將呈現完全不同的值,即無法篡改記錄在默克爾樹上的哈希值。
假設我們的賬戶和余額信息作為數據A被記錄在了默克爾根當中,我們可以通過以下幾個數據作為證明來驗證數據A是否被記錄在默克爾樹當中:
數據A(賬戶和余額信息)
B的哈希值
CD的哈希值
根哈希值
圖1: 默克爾樹存儲數據示意圖
接下來我們通過數據A計算A的哈希,再和B的哈希一起計算AB的哈希,最後利用AB的哈希和CD的哈希一起計算根哈希,用我們計算的根哈希和得到的根哈希比較,若相等則驗證了A被記錄在默克爾樹當中。
假如中心化交易所的所有用戶的資產被記錄在了默克爾樹上,證明是真實的,交易所就可以在不公開其他用戶信息的情況下去向每個用戶證明“數據記錄已被到默克爾樹,用戶的資產是真實存在的”。
這套證明系統在實際中又是如何運用的呢?這套系統的信任是建立在默克爾樹(動態威懾)和審計(第三方專業職責)之上的。動態威懾是基於任何一個用戶都能夠作為檢測節點,舉證自己不在默克爾樹上從而揭露交易所提供的樹根是假,除此之外沒有其他任何作用,比如樹根沒有展示所有用戶餘額之和的功能。二者是缺一不可的,並不是說緊緊依靠密碼學的證明方式就能夠證明一切問題,實踐中比理論複雜很多,其中有很多可以操控的點。
但是比起之前的CEX只有審計的監控,加入默克爾樹實際上是給予了用戶吹哨的權利,讓CEX的資產儲備一定程度的得到了去中心式的監控,是很大的進步,對於目前信心強烈不足的市場是一件好事。
然而,採用默克爾樹儲備證明是否能證明用戶資產就是安全的呢?雖然通過默克爾證明,我們可以驗證自身的資產是被記錄在了不可篡改的哈希中,但這是否能夠完全證明資金是沒有被挪用或移動的?
中心化交易所每秒都有大量的交易,不可能每一秒都去更新樹根,因此我們看到的樹根大概率不是最新的。但是從另一個角度講,默克爾樹計算主要是由一系列哈希函數的計算來組成,而哈希函數的計算速度是比較快的,所以在這種意義下,更新頻率不會很慢。
除上述更新頻率的問題之外,默克爾樹儲備證明存在以下重要的問題:
前端欺詐問題:默克爾樹數據存在交易所自家服務器上,用戶與交易所交互的前端頁面是交易所掌控的,交易所完全可能返回假的頁面來欺騙用戶,存在前端欺詐的可能性。該問題需要通過第三方的軟件監督來解決。
第三方審計的信用問題:同樣的傳統金融中常常也會有審計犯錯甚至的違法的行為,這在Crypto領域雖然還沒有大規模應用起來,但是有審計並不永遠客觀公正。
關聯交易、負債關係、保證金交易等無法通過儲備來體現。
加密貨幣這個市場需要更多公開透明的信息,默克爾樹儲備證明成為Crypto交易所的標配有助於建立行業規範、重建用戶信心。
不管是對投資人還是對用戶,保證資金安全永遠是一個懸在每個從業者頭頂上的達摩克利斯之劍。這輪熊市,無論倒下誰,最後剩下誰,Web3的車輪不會停歇,滾滾向前。