源碼解讀:火爆的二舅幣真的跑路了嗎?
作者:十四君
概要
二舅幣來了,二舅他跑了,相信今天你已經被這樣的新聞刷屏了,那他真的跑路了嗎?
結論,所謂Twitter上安全專家發推,並引發無數媒體轉發的二舅幣,其實並沒有跑路,並且在31號主動放棄項目管理員特權。
既然想辟謠就要有證據,筆者通過二舅幣的智能合約源代碼解讀並結合鏈上交易記錄的回溯,反證項方的鏈上操作,帶你分析本案原委。
先聲明,我不是項方,也完全不持有任何二舅幣,本文僅從技術研究角度出發解讀。 背景
回溯這次新聞傳播,始於Twitter上的某安全專家發推,進而被無數媒體轉發,通過前後信息傳播鏈路,最初的原文如下圖:

來自推特,見附錄link
其實就傳謠角度來說,確實這樣的行文非常仿真,描述專業數值驚人,並且Tornado Cash確實也是清洗贓款常見途徑,但真是如此嗎?130W美元的損失是怎麼算出來的。
項方自己也有所回應:
一開始,項方還想通過空投,來對其推特粉絲做獎勵來形成增粉的目的。

來自推特,見附錄link
這麼一看,似乎真像是即將跑路的樣子。
分析
此幣部署在BSC幣安智能鏈上並且做了開源驗證,都可以通過下地址翻閱到若干證據。
區塊鏈瀏覽器如何使用可見前文:
項方地址:
0x469de2c6357666c69156722e83136ad1919a70aa
二舅幣合約地址1
0x6e7ad49f67a9fa80d50f9659c3fc938296d68b58
二舅幣合約地址2
0xe67cff48da0156e7978bc5a9a44d516a48d2a1d6
筆者從7.31號下午3點開始撰寫本文,拉取到的二舅幣鏈上交易共計1686條。
最初的部署操作的初始化環節,給項方自己發了1,000,000,000,000,000個二舅幣。

初始化部署,來自bscscan,見附錄link3
其部署時初始化的函數有較大的改動,多數與構建交易池的交互方法有關,不過核心產生資產並轉移的部分如下部分代碼中的_mint,等於是誰部署,就一次性mint出來給他。
說明:constructor 是合約的初始化函數,僅在合約部署時會被調用執行一次,後續無法執行。
上來全給自己,越看越像Rug的前兆,也難怪別人要謠言你。
但是發幣是發幣,得有交易所交易池進行不同幣種兌換,才能轉成跑路的其他資金,在區塊鏈上發幣並不難,5行代碼就能發個幣,別說100億個代幣,最高能給自己發10後面跟78個0的代幣呢,因為標準ERC20對餘額的存儲類型是uint256,最大值為2**256次方。
那這個代幣可以直接進行兌換嗎?
源代碼合計有3000行,不僅包含標準ERC20以及多數常見的配套插件等,還內嵌了對接交易池的兌換代碼。
要跑路,就得有資金交互吧,
要麼其他地址對合約進行交易帶入
要麼項方自己從交易所池子兌換
筆者讀取二舅幣的全部合約交易發現,帶有value中BNB的僅有一筆交易,有且僅有注入0.126個BNB

來自bscscan對合約交易記錄的批量下載
雖然二舅幣在交易所中已經有大量的交易轉移記錄了(8K條),從而導致了現在二舅幣合計擁有的地址達到1600多個。
但是如果要判斷是否跑路,得看項方發行時給自己持有的代幣,有多少通過池子轉換成其他代幣。
追蹤項方給自己大規模發放的代幣的記錄,除了部署時給自己的1,000,000,000,000,000
就僅有上圖中的第二行的轉移操作,項方將自己的990,000,000,000,000 個代幣轉入了0地址。

銷毀99%的token,來自bscscan,見附錄link4
並且計算項方自己地址的全部交易,可以看到僅有項方通過pancakeSwapV2,用二舅幣換到的1.3個BNB被轉出。說明:當前BNB對美元價格為271美金一個BNB。
好家伙,為幾百刀就跑路?

來自bscscan對合約交易記錄的批量下載
所以為何會出現130W美金的說法呢?
盲猜一波,可能這個安全專家是以為轉出的是1.3B 的美金?然後覺得太離譜就以為這個"B"不是billion(十億)而是million(百萬)?
當然,如今交易池池子總量裡的代幣占總量只有0.55%這倒是對的,因為項方自己銷毀了99%的代幣。而他的銷毀,並沒有修改totalSupply (這確實不應該,他的銷毀不是調用標準的Burn方法)
總是目前為止,確實可以說,項方並沒有從中惡意牟利到多少,
並且,項方也對謠言發起方反問,也並沒有得到回覆。

來自推特,見附錄link
放棄管理權
在31號下午,項方自己面對流言四起,也做了一个決定性的操作,即放棄項方的管理員權限。

可以上面圖中看到,項方地址最後的兩筆交易操作,即對二舅幣的兩個合約地址做了所有權轉0的操作。
這樣真的可以徹底如猴子NFT一樣放棄新Mint權嗎?
確實可以
放棄所有權執行的是renounceOwnership方法,會將_owner 設置0地址,而這樣一來整個合約中,被用onlyOwner修飾過的方法均將無法調度使用了。

而無法使用的函數大概有20個,而清除管理員權限最重要的是清除掉Mint出新的token的方法,整個3000行代碼裡,僅有_setBalance 是調度Mint權限的,當然雖然他沒有出現onlyOwner 符號修飾他,是因為他是個internal的方法,這種外部無法調用,僅能被合約內已經定義好的方法調用。

而對應會使用他的兩個函數如下,很明顯被onlyOwner 修飾,所以後續都將無法使用了。

我也進一步分析存儲餘額的_balances 變量是否有偷留後門來用其他的名字來做繞過,確實也沒有發現,至於是否其他的後門,就仰賴高級合約審計大佬們出手了。
總結
項方確實沒跑路,或許是造謠者惡意,或許是他的小編看到下跌以及項方轉走了1.3BNB以為是1.3Milion。
但是鏈上交易記錄不會騙人,合約代碼也不會騙人,代碼裡定義是如何,就不會有所變化。
引用:
安全專家發布:
https://twitter.com/WhoCares_News/status/1552659993530609665
項方回覆:
https://twitter.com/SecondUncle_Dao/status/1553621587697381376
二舅幣合約部署交易:
https://bscscan.com/tx/0xe51cf68ec605bbbce8f2784109faff98be9272824db8ebf5ad426fcfa1bca395
項方得到1.3BNB:
https://bscscan.com/tx/0x5c22ce9f185ad0907c08b60a9d36add51deed9b2b629527c48190bba0b2a5cdb
項方轉走1.3BNB:
https://bscscan.com/tx/0xc3adb38d93c4b11b47f70a8af498dc114582392da80be8c6e7ee6783bd69b637












