關於Proof of Reserve
最近因為FTX事件一定常常聽到Proof of Reserve (PoR)這個名詞,到底什麼是PoR呢?Proof of Reserve顧名思義,就是交易所資產的證明,證明交易所擁有的資產大於或等於使用者所存的資產,才能夠因應使用者提領,使用者資產也才有保障。
在傳統金融(TradFi)的市場,清算、交易、資金保管都會在不同的機構裡面被完成,同時都有對應的法規以及各種審計制度,避免許多球員兼裁判的事情發生,也減少了舞弊的可能。
但在加密貨幣市場中,這種球員兼裁判的事情層出不窮,加上加密貨幣領域發展的速度飛快,許多新的資訊還沒被消化、被理解,就又有新的東西出來,因此法規要跟上是有很大的難度,因此透過的PoR方法,來證明交易所擁有的資產儲備,用以獲取客戶的信任。
而怎樣的PoR是可以信任,並且讓投資人能夠相信交易所有足夠儲備資金,可以償付所有的提領?因此做了一些研究跟大家分享,有不盡詳細或是不嚴謹的地方,再請大家多多指教。
PoR牽涉到三個角色,交易所、使用者及第三方審計單位,如下圖:
PoR的流程
- 中心化交易所收受使用者的存款,這時交易所的資料庫(私有帳本)會記錄使用者ID,對應存的幣種與數量。
- 交易所要提供鏈上資產的規模大小,與對應的簽章,證明資產的所有權,接著準備與Merkle Tree上的客戶資產做比較。
- 第三方審計單位將交易所提供的客戶與資產資料庫,建成Merkle Tree,建立的演算法如下:
Record_ID = SHA256(concatenate(Account_Code, Exchange_IIBAN, Audit_ID)) Balances = "" ForEach sort(Asset): Balances = concatenate(Asset, ":", AssetBalances[asset]) Merkle_Hash = concatenate(Record ID, “,”, Balances) Merkle_Leaf = substring(SHA256(Merkle_Hash), 0, 16)
演算法是先將客戶的Account_Code, 交易所id, 審計單位的id組合之後再SHA256 Hash。接著將對應的資產相加,計算出在此Record_ID下的Balances是多少。再取16位作為Merkle Leaf。
4. 透過第三方審計計算出所有客戶的資產總合(Total_Balance)後,就可以用Total_Balance對比交易所提供簽章的資產規模大小,是否有足夠的資產儲備。同時,交易所的使用者可以透過審計公司提供的前端介面,輸入自己的Record_ID,查詢是否自己的資產有在Merkle Tree上,以及紀錄的資產規模是否正確。
目前最大的PoR審計公司是Armanino,Kraken, Gate.io都是透過Armanio來作PoR。下圖是Kraken的PoR範例
PoR結語
如果交易所真的有如實做PoR的話,的確會增加客戶的信任程度,有幾點可能是身為交易所使用者的我們需要關心的:
- PoR的頻率是多久做一次,傳統上市櫃公司,會有月報、季報、年報等,那交易所應該要多少頻率才合理,方能夠符合成本與效用,像是上面的圖,有的交易所上一次做是半年前,感覺也有點久了。
- 做PoR的資產是常駐型的資產嗎?還是臨時借來充當帳面的資產,聽說最近有交易所胖手指轉了幾萬顆以太到另一個交易所,然後又把以太幣要回來,到底是互相借用資產,還是真的胖手指我們就不得而知了。
- 審計單位的公正性,因為審計公司是跟交易所收費的,這種關係有時候有些矛盾,畢竟拿錢手軟,是不是能夠100%相信審計單位的公正性,也是我們需要考量的。
相信每個領域的發展都會有蠻荒生長的時候,加密貨幣更是如此,最近的一連串爆雷,的確讓很多人對加密貨幣失去信心,但我相信黑夜總是會過去,黎明將會到來的,希望屆時我們都能佔有一席之地。
參考資料
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!