<div id="ng5vq"><tr id="ng5vq"></tr></div>

  • <div id="ng5vq"></div>

      <em id="ng5vq"></em>
      <div id="ng5vq"></div>

          投資有風險 入市需謹慎
          APP
          下載火星財經客戶端

          掃描下載APP

          微信公眾號
          火星財經二維碼 火星財經

          洪蜀寧:Gemini穩定幣智能合約研究報告

          洪蜀寧 ·

          09月19日

          熱度: 25726

          本文對Gemini穩定幣GUSD的智能合約代碼進行了分析,并指出了其優缺點。

          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創建。
          合約之間的相互依賴關系見下圖。

          洪蜀寧:Gemini穩定幣智能合約研究報告


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

          • ERC20Proxy合約:即白皮書中的Proxy合約,是GUSD對外提供服務的接口,所有功能均通過ERC20Impl合約實現。這個合約是唯一且永久不變的。
          • ERC20Impl合約:即白皮書中的Impl合約,實現了GUSD幾乎所有的功能,如發行、銷毀、轉賬等等。這個合約是可以升級的。
          • ERC20Store合約:即白皮書中的Store合約,實現了GUSD數據儲存功能,保存了所有賬戶的余額以及總發行量等信息。這個合約也是唯一且永久不變的。
          • PrintLimit合約:對發行量的上限進行管理,允許指定的賬戶提升或降低發行總量上限。GUSD發行總量無法超過該上限。
          • Custodian合約:用于權限管理,所有需要權限的操作均通過Custodian合約來調用。在合約中設置了多種權限管理模式,如雙人控制、離線簽名、延時生效等。

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

          合約功能分析

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

          洪蜀寧:Gemini穩定幣智能合約研究報告

          類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解鎖機制的回調函數過于靈活,萬一調用了錯誤的或惡意的合約函數,可能會對用戶資金造成損失。


          文章聲明:本文為火星財經專欄作者作品,不代表火星財經觀點,版權歸作者所有,如需轉載,請提前聯系作者或注明出處。

          推廣
          相關新聞

          漲幅榜

          你可能感興趣的內容
          下一篇

          從蒸汽機車到高鐵,從 POW 到 SPOS 的共識機制歷史

          河北十一选五软件