當前位置:
首頁 > 新聞 > Gemini穩定幣智能合約研究報告

Gemini穩定幣智能合約研究報告

作者: 金丘區塊鏈研究院 洪蜀寧


Gemini穩定幣概況

紐約金融服務局(NYDFS)於9月10日批准了Gemini Trust LLC發行的Gemini Dollar(代碼GUSD),這是全球首個合規穩定幣,由全美最大的託管銀行道富銀行(State Street Bank)負責資金託管,並聘請了第三方註冊會計師事務所定期進行獨立審計,相比於之前Tether公司發行的USDT等穩定幣,在資金安全性方面有了重大的進步。

與USDT基於比特幣的Omni協議發行方式不同,GUSD是基於以太坊的ERC20代幣,更加便於與佔市場絕大多數份額的其它ERC20代幣進行去中心化的交易,這也是GUSD的一大優勢。筆者從Gemini公司官網找到了GUSD合約的源代碼鏈接,並進行了詳細的研究分析。

GUSD智能合約代碼分析

合約結構分析

GUSD共包含6個智能合約,分別為ERC20Proxy、ERC20Impl、ERC20Store、PrintLimit以及2個獨立的Custodian合約,所有合約均由地址0x4c2F150Fc90fed3d8281114c2349f1906cdE5346創建。

合約之間的相互依賴關係見下圖。

可以看出,GUSD的合約結構與其白皮書所描述的是一致的,各合約的功能如下:

ERC20Proxy合約:即白皮書中的Proxy合約,是GUSD對外提供服務的介面,所有功能均通過ERC20Impl合約實現。這個合約是唯一且永久不變的。

ERC20Impl合約:即白皮書中的Impl合約,實現了GUSD幾乎所有的功能,如發行、銷毀、轉賬等等。這個合約是可以升級的。

ERC20Store合約:即白皮書中的Store合約,實現了GUSD數據儲存功能,保存了所有賬戶的餘額以及總發行量等信息。這個合約也是唯一且永久不變的。

PrintLimit合約:對發行量的上限進行管理,允許指定的賬戶提升或降低發行總量上限。GUSD發行總量無法超過該上限。

Custodian合約:用於許可權管理,所有需要許可權的操作均通過Custodian合約來調用。在合約中設置了多種許可權管理模式,如雙人控制、離線簽名、延時生效等。

上圖最下方的地址0xd24400ae8bfebb18ca49be86258a3c749cf46853是極為關鍵的管理賬號,掌握了GUSD發行、銷毀、合約升級、許可權管理等所有的核心許可權,相當於Linux操作系統的root賬戶。該賬號一旦丟失或被盜,將會造成系統的崩潰。

合約功能分析

繼續對合約的源代碼進行分析,各合約的功能和繼承關係見下圖。

類MVC模式

可見Proxy、Impl、Store三個合約構成了一種類似於MVC的設計模式:Proxy相當於View,Impl相當於Controller,Store相當於Model。作為Controller的Impl合約實現了絕大多數業務邏輯,由於其並不存儲數據,故可以任意升級替換而不影響用戶資金。相信這樣的模式會因其靈活性被將來的項目普遍模仿。

Impl合約可替換

Impl合約的可替換性是通過ERC20ImplUpgradable合約實現的,該合約通過requestImplChange和lconfirmImplChange兩個方法允許Custodian為Proxy指定新的Impl合約地址,之後Proxy將會調用新的Impl合約中的代碼。

合約治理

Custodian合約通過一種稱為解鎖(Unlock)的機制來實現靈活的許可權控制。解鎖操作要麼由主賬戶(即前述0xd24400地址)、要麼由任意賬戶發送1個以上的ETH進行申請,申請時可指定一個回調函數(任意的合約調用操作)。該申請需要等待一段時間方可生效,主賬戶發起的申請需等待2天,其他賬戶發起的需等待一周。申請生效後,需由2個不同的管理員簽名生成確認交易(目前共有6個管理員賬戶),2個簽名驗證無誤後,Custodian合約會自動調用之前指定的回調函數,從而實現管理機制的調整。

而Custodian合約本身也是可替換的,可以通過CustodianUpgradeable合約的requestCustodianChange和confirmCustodianChange方法指定新的Custodian合約地址,從而調整對Proxy、Impl、Store合約許可權管理的機制。


結論

優點

代碼規範,注釋較為豐富且合理。

參考MVC模式實現的Proxy、Impl、Store合約具備充分的靈活性,便於BUG修復和功能升級。

Custodian機制靈活,且可任意調整管理機制。


缺陷

主賬戶許可權過於集中,未進行分權治理,風險極高,是系統安全的瓶頸,會成為黑客和內部人員攻擊的重點目標。

未實現專門的監管介面,監管指令仍需通過主賬戶進行操作,無法防範Gemini公司作惡的情形。

發行過程未能實現雙人操作,如果能改為Gemini公司申請發行、託管銀行審核確認的方式則更能減少超發風險。

Custodian解鎖機制的回調函數過於靈活,萬一調用了錯誤的或惡意的合約函數,可能會對用戶資金造成損失。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 巴比特資訊 的精彩文章:

印度法律改革委員會:建議體育博彩接受數字貨幣支付
澤西島金融服務委員會發布ICO投資保護措施

TAG:巴比特資訊 |