熱門穩(wěn)定數(shù)字貨幣GUSD其實并沒有第三方托管機構監(jiān)管癣防!

國慶長假快進尾聲蜗巧,今天把GUSD的合約代碼仔細看了,得出一個非常驚人的結論:

GUSD已經(jīng)拋棄了Custodian第三方托管合約蕾盯,變成由Gemini自由控制的中心化的增發(fā)工具幕屹。

通過仔細閱讀GUSD復雜的合約,筆者發(fā)現(xiàn)级遭,GUSD的主合約:ERC20Impl合約的custodian(托管賬戶)從原先的Custodian合約變成了PrintingLimiter合約望拖,導致增發(fā)等重要的操作可以不受Custodian合約控制,無需第三方托管賬戶操作挫鸽。

事實上说敏,GUSD的Custodian合約有史以來只操作了4次,見:https://etherscan.io/address/0x9a7b5f6e453d0cda978163cb4a9a88367250a52d
每次只是授權了confirmImplChange方法(該方法的Method Id為0x8181b029

下面丢郊,我們來進一步查看究竟GUSD是如何實現(xiàn)增發(fā)的盔沫。
首先,我們來看該代幣地址:https://etherscan.io/token/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd
顯示余額為:957525.96GUSD(2018年10月6日16點左右)

在列表中隨意找一個From0x0000...的Tx交易記錄枫匾,點擊后架诞,查看交易詳情:
https://etherscan.io/tx/0xd204a0e54d63a27de84074d48491016892a933ddce9cf7debf36747f1af96460
可以看出干茉,該幣交易增發(fā)了157,882.70個GUSD谴忧。

通過查詢交易的Event Logs,可以看出,這筆交易完成后收到了三個事件:

  • ERC20Impl合約的requestPrint方法沾谓,發(fā)送PrintingLocked事件委造;
  • ERC20Impl合約的confirmPrint方法,發(fā)送PrintingConfirmed事件均驶;
  • ERC20Proxy合約的發(fā)送代幣争涌,并釋放Transfer事件。

而以上事件全部是由PrintLimiter合約中的limitedPrint方法統(tǒng)一控制的辣恋。

點擊這里查看PrintLimiter合約源碼

PrintLimiter合約中找到limitedPrint函數(shù),源碼如下:

function limitedPrint(address _receiver, uint256 _value) public onlyLimitedPrinter {
    uint256 totalSupply = erc20Impl.totalSupply();
    uint256 newTotalSupply = totalSupply + _value;

    require(newTotalSupply >= totalSupply);
    require(newTotalSupply <= totalSupplyCeiling);
    erc20Impl.confirmPrint(erc20Impl.requestPrint(_receiver, _value));
}

看最后一句erc20Impl.confirmPrint(erc20Impl.requestPrint(_receiver, _value));模软,是指擁有增發(fā)權限的用戶伟骨,直接從requestPrint()方法中獲取lockId,并交給confirmPrint()方法作為參數(shù)燃异,確認其增發(fā)行為携狭。

按道理,應該在提出增發(fā)申請回俐,即requestPrint()后逛腿,由資金托管方Custodian進行多簽授權,然后執(zhí)行確認增發(fā)命令仅颇,即confirmPrint()单默。但實際上,這里全部省略了忘瓦。

我們再來看看到底誰擁有增發(fā)權限的賬戶呢搁廓?也即是上面代碼中的modifier方法onlyLimitedPrinter中的條件到底是什么?

看代碼:

modifier onlyLimitedPrinter {
    require(msg.sender == limitedPrinter);
    _;
}

即只要發(fā)送改指令的以太坊賬號msg.sender等于limitedPrinter就行了耕皮,而limitedPrinter是在部署PrintLimiter合約時的構造函數(shù)中設定的境蜕。因此,只要部署該合約時指定某個以太坊賬戶擁有增發(fā)權限即可凌停。

那么粱年,究竟誰是擁有這個增發(fā)權限的超級賬號呢?
我們通過查詢前面的交易記錄:https://etherscan.io/tx/0xd204a0e54d63a27de84074d48491016892a933ddce9cf7debf36747f1af96460
找到From賬戶罚拟,就是給合約發(fā)送指令的msg.sender的地址:0xd24400ae8bfebb18ca49be86258a3c749cf46853台诗。

那這個地址又是什么呢?
讓我們打開ERC20Impl合約的詳情:https://etherscan.io/address/0x6704ba24b8640BCcEe6BF2fd276a6a1b8EdF4Ade#readContract
可以發(fā)現(xiàn)舟舒,以上地址就是sweeper拉庶。

查看ERC20Impl合約的構造函數(shù)可以發(fā)現(xiàn),這個sweeper地址是在部署ERC20Impl合約時設定的參數(shù)秃励。通過etherscan.io查詢氏仗,發(fā)現(xiàn)這個地址就是Gemini交易所地址。

由此,一個看似復雜皆尔,公平呐舔,受第三方監(jiān)管的穩(wěn)定幣GUSD,其實增發(fā)完全被一個交易所賬戶控制著慷蠕。增發(fā)過程很容易珊拼,只要執(zhí)行PrintLimiter合約中的limitedPrint方法即可。所謂的托管方Custodian只是一個幌子罷了流炕。

那么澎现,GUSD的所有代碼是不是都是擺設呢?也不是每辟,在Custodian合約中剑辫,已經(jīng)把所有邏輯寫的很清楚了。其基本邏輯是:
如果某人需要執(zhí)行某個更改(如增發(fā))渠欺,首先需要提出一個申請妹蔽,獲取lockId,然后第三方監(jiān)管機構執(zhí)行Custodian合約中的requestUnlock函數(shù)挠将,提出解鎖申請胳岂。第三方監(jiān)管機構中有權限的幾個賬戶中的兩個對該申請審核,然后通過多簽舔稀,確定是否批準解鎖乳丰。如果批準,則執(zhí)行人擁有執(zhí)行該方法的權限(如增發(fā))镶蹋。
以上邏輯成艘,其實建立了一套:發(fā)行-監(jiān)管的模式,該模式適用于幾乎所有金融應用場景贺归。

根據(jù)筆者對GUSD合約的理解淆两,只要將上面的limitPrint方法的modifier方法改為onlyCustodian即可實現(xiàn)增發(fā)行為的第三方監(jiān)管,如下:

function limitedPrint(address _receiver, uint256 _value) public onlyCustodian {
    uint256 totalSupply = erc20Impl.totalSupply();
    uint256 newTotalSupply = totalSupply + _value;

    require(newTotalSupply >= totalSupply);
    require(newTotalSupply <= totalSupplyCeiling);
    erc20Impl.confirmPrint(erc20Impl.requestPrint(_receiver, _value));
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拂酣,一起剝皮案震驚了整個濱河市秋冰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌婶熬,老刑警劉巖剑勾,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赵颅,居然都是意外死亡虽另,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門饺谬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捂刺,“玉大人,你說我怎么就攤上這事∽逭梗” “怎么了森缠?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仪缸。 經(jīng)常有香客問我贵涵,道長,這世上最難降的妖魔是什么恰画? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任宾茂,我火速辦了婚禮,結果婚禮上拴还,老公的妹妹穿的比我還像新娘刻炒。我一直安慰自己,他們只是感情好自沧,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著树瞭,像睡著了一般拇厢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晒喷,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天孝偎,我揣著相機與錄音,去河邊找鬼凉敲。 笑死衣盾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的爷抓。 我是一名探鬼主播势决,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蓝撇!你這毒婦竟也來了果复?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渤昌,失蹤者是張志新(化名)和其女友劉穎虽抄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體独柑,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡迈窟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忌栅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片车酣。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出骇径,到底是詐尸還是另有隱情躯肌,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布破衔,位于F島的核電站清女,受9級特大地震影響,放射性物質發(fā)生泄漏晰筛。R本人自食惡果不足惜嫡丙,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望读第。 院中可真熱鬧曙博,春花似錦、人聲如沸怜瞒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吴汪。三九已至惠窄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漾橙,已是汗流浹背杆融。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霜运,地道東北人脾歇。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像淘捡,于是被迫代替她去往敵國和親藕各。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容

  • 2018年4月17日 星期二 晴 這幾天作業(yè)不多焦除,孩子總是很快就完成了座韵!和前一段時間相比較,有一點娃還是很值得表...
    小魚快樂游閱讀 97評論 3 1
  • 第一章 夏洛克·福爾摩斯 先生 (接上集) “你們就從來沒有聊過他的愛好嗎踢京?”我問道誉碴。 “沒有绳军。他這人不太容易向人...
    史黛拉945閱讀 805評論 0 1
  • 假如我們都還年少 我定要 帶你爬爬城東頭的角樓 在梨花忽綻的時候 看一看雪落 聽一聽風流 假如我們都還年少 我定要...
    水青聲閱讀 522評論 4 7
  • 好可惜終于失去你组力,對不起我已經(jīng)盡力——《好可惜》by莊心妍 總有一首歌可以觸動到你內心深處最柔軟的一塊地方鬼佣,或喜悅...
    小感想大雜燴閱讀 876評論 0 0
  • 王軒炫走在漆黑狹窄的四層走廊里壁涎,靠著破碎的窗戶折射著散亂的月光休弃,踏著帶有一絲血腥味的布滿灰塵的道路介牙。 ...
    睡著的皮球閱讀 179評論 1 0