吳說作者| Colin Wu
本期編輯| Colin Wu
近日,多名流動性“礦工”對吳說區塊鍊錶示,幣安智能鏈上又一個DeFi“土礦”popcornswap跑路,項目方捲走近48000個BNB,價值約215萬美金。數日內還有三個項目(Zap Finance和Tin Finance、SharkYield)跑路。目前SharkYield跑路疑似帶走了6000個BNB。
幣安表示安全團隊在“連夜跟進”popcornswap項目,但並不一定能追回成功。幣安此前宣傳文章也表示追回是小概率事件,希望用戶務必謹慎投資,選擇優質的頭部項目參與。
此次popcornswap跑路事件出現兩個問題:
1、礦工反饋,幣安表示USDT(通過Tether)、BUSD可以凍結,但BNB無法凍結,因此跑路項目開始大範圍使用BNB。
2、幣安曾經表示,未來幣安智能鏈社區會為部署上來的優質項目陸續提供審計服務,未來會有標示將審計與未審計完成的項目進行區分,以供用戶參考。但是直到目前,該審計標示沒有出現,可能是審計機構的昂貴費用與時長的阻礙。
幣安此前的反饋是,BSC是與以太坊一樣的公鏈,不應該為上面的項目負責。何一曾經表示:幣安智能鏈項目又不是幣安發的,以太坊上挖礦賠錢怎麼不找V神索賠?
但另一方面幣安又在宣傳幫助用戶追回資產。例如自動做市商(AMM)的“土礦”項目Wine Swap跑路,幣安安全團隊幫助用戶追回了損失資金的99.9%,共計超過34.4萬美元。幣安也表示,像這樣的追索往往需要耗費大量的人力物力,而往往這些追查的線索會中斷,能像這次追討成功可以說是萬里無一。
由此幣安就會陷入一個尷尬的境地:對於跑路項目究竟是管,還是不管?用戶也會對此有疑問,幣安究竟管不管?
BSC上項目的邏輯是,發展好的項目CZ會轉發推特,然後引起關注逐漸壯大。相較之下火幣生態鏈中心化程度更高,會列出報名項目,跑路情況較少。幣安智能鏈更多希望“不做裁判員”。
這也可以理解,幣安智能鏈的國際化程度更高,對於習慣DAO社區文化的海外用戶而言,他們可能更能理解BSC的做法。海外社區非常警惕中心化的管理,因此幣安輕易凍結BNB資產,也可能給海外用戶帶來擔憂。哪怕是針對黑客行為凍結,也需要先有警方的要求。
火幣因為項目與用戶絕大多數是中國人,這也決定了他們必須選擇中心化的管控,幾個小項目也第一時間得到了處理。
對於幣安來說,BSC上跑路情況確實有日漸嚴重的傾向,依靠制度治理可能是唯一的選擇。但目前為止,我們還沒有看到幣安智能鏈制度上改進的動作。
參考幣安智能鏈(BSC)的野望與尷尬:超越以太坊還是成為孫宇晨?
以下內容為iNexusPro獨家授權吳說區塊鏈發布,內容稍作編輯
土礦一般來講,抽走資金一般這幾個步驟:
1、通過高APY吸引你衝動梭哈(注意,很多雞賊的土礦都是寫APR,看起來更高,用APR的土礦求穩可以直接關閉),畢竟高APY都是真金白銀支撐的,收益這麼高大戶早來了,正所謂的收益越高,風險越大。
2、通過一些“所謂的”安全措施(timelock等)讓你覺得風險很低。
3、盜取資金之後馬上換為非erc代幣或者無法凍結的代幣,然後等待混幣機會逃走。
看到了這個步驟,你應該明白了,如果能夠做到:
1、不開源的土礦一律不碰,不管他APY寫得多麼誘人
2、開源的土礦,如果要參與,一定是在diff合約,檢查變量參數之後,少量資金參與。 (然而可能還有風險,比如popcornswap,會詳解)
3、那麼相信你能規避大部分風險,下面簡單講一下怎麼diff合約,怎麼檢查參數,以及一些衍生的思考。
第一步:diff
這里以在線對比工具 https://www.diffchecker.com/ 為例
注意一點,diff的合約需要是你真實要轉幣進去的合約地址(可以轉非常少的量去拿地址)
首先拿到原版的MasterChef代碼(這里以pancakeswap為例):
https://bscscan.com/address/0x73feaa1ee314f8c655e354234017be2193c9e24e#code
接著這里以popcornswap為例:
https://bscscan.com/address/0x584527ded17aceb3dc617c40b04e8fe9afc57096#code
分別吧代碼複製到兩邊,開始diff
這裡我保存了diff結果,可以直接點這個link:https://www.diffchecker.com/VqaCP3DK
像結果中字符串(名稱等)的修改,或者// 後的內容(註釋)都可以忽略
如上圖這種,可以忽略
如果是原版添加的代碼,土狗刪除的,一般也不重要,重點是土狗和原版代碼不同的地方:
上圖為關鍵差異,土狗修改了原版的migrator方法,還增加了個一個叫做preUpgrade的函數。
看到這裡,如果你對合約一無所知,安全期間,就可以直接關閉頁面保平安了。
這裡簡單分析一下差異,首先migrate方法,這個是sushiswap繼承的代碼,原版代碼就有將池子裡錢掏空的可能性(所以土狗如果有migrate方法,求穩就不要去玩)。
popcorn這裡,新的preUpgrade方法,是public的,代表所有人都能調用,就是一個非常可疑的點,理論上在migrator設置為惡意地址的時候能夠讓migrator掏空所有的錢。
第二步:檢查變量
點擊土狗合約的這個按鈕:
檢查migrator,owner等變量:(owner是核心)
可以看到migrator是0,owner是一個timelock地址,土狗的一種套路是,聲稱自己有timelock,給出了合約地址,但owner並不是timelock的地址,那明顯就是騙局了。
當然timelock合約,也可以做小動作,所以也需要做diff操作,這裡他的timelock沒有問題,就不贅述了
那麼完成了上面兩步,很多資深礦工可能會覺得,timelock有的,合約變量沒問題,雖然有代碼存在風險,但是有timelock啊,沒事,衝tmd,對低級土狗而言,可能確實就無風險了,但很可惜,popcornswap是一個略高級的土狗。看我下面分解盜幣過程:
項目方通過調用:
https://bscscan.com/tx/0x38f75296e3343228c0309f8c99a24ca4f4812372f2b032f38ce25ac5a992b768
preUpgrade方法,讓自己的地址有了合約裡token的transferFrom權限(簡單理解為uniswap交易之前你需要allow合約花你的幣,這裡是allow自己花合約裡的幣)
看前面的代碼可以發現,preUpgrade確實又這個功能,但他只會給migrator這個權限,而migrator又是0,修改migrator需要經過時間鎖,那麼他是怎麼做到的呢? (這個問題其實也困擾了我一會)
答案是:項目方在部署合約後,加timelock之前,把migrator改成了自己的地址,並通過preUpgrade提前獲取了裡面所有token的allowance,然後再改回migrator,添加時間鎖。
因為這些tx混在項目方添加池子的tx中,普通人根本不可能去檢查一個池子之前的每一個tx,所以popcornswap得以在2小時內盜取2mil的代幣。
這個作案手法也引起了我的思考,目前並沒有有效的工具,能夠查出一個合約地址裡,token allow給其他地址的情況,因此非常難發現問題。普通的用戶,沒有能力,也不太可能發現這個端倪,甚至我相信在本次事件中,一些對合約代碼有所了解的土礦老司機也一併翻車。
後續思考
本次作案手法曝光之後,相信未來的土礦也很有可能利用類似的手法進行盜幣,而對普通用戶而言防不勝防,事實上最近2天bsc上就有2個礦翻車,金額還都不小。
作為交易所公鏈,不管是bsc,還是heco,他們的核心競爭力是什麼?是去中心化嗎?
我個人認為不是的。
bsc,heco等,他們最大的優勢應該是1. 低手續費2. 交易所公信力背書。
以bsc為例,作為一個類似DPos的設計公鏈,跨鏈橋非去中心化,以及上面的大部分資產都是幣安發放的情況下,即使代碼開源,談何去中心化?
個人認為,反而應該反其道行之,引入類似EOS的仲裁機制,最大程度的保證用戶在鏈上的的財產安全才是生存之道。