文//DAPDAP區塊鏈
01
駭客拿走大獎
以太坊上近期最火爆的Dapp應用FOMO 3D 第一輪大獎於北京時間8月22日下午14點48分揭曉。
錢包地址尾號為5的獲獎者(以下簡稱5哥)獲得了價值2200萬元人民幣(10,469以太坊)的大獎。
而從錢包交易歷史來看,該獲獎人僅僅付出了6000元人民幣左右的成本(2.7個以太坊)。
該玩家於8月15日開始進入遊戲,經過6天時間,145筆交易的努力,在數十萬的玩家中殺出重圍,以小博大,斬獲大獎,獲得了4000倍的收益。
為何價值北京二環兩套房的大獎能被5哥奪走?是命中註定還是暗箱操作?
DapDap的小夥伴們深入調查了中獎事件和5哥錢包相關的交易記錄,發現事情果然不是5哥撞大運這麼簡單。
幾乎可以斷定是駭客行為。
駭客5哥所做的準備工作,也遠比表面看起來的買買買這麼簡單。
02
真正的高階玩家
接下來,我們層層剝開事件真相。
首先,我們簡單介紹一下獲得大獎的規則。
規則1:最後一個購買KEY的人獲得獎池中的大獎
規則2:每有人購買一個KEY,倒計時時間會增加30秒
規則3:遊戲啟動後從24小時開始倒計時
也就是說,只要你是最後一個購買KEY的人,就可以捧走北京兩套二環房。
當然有人會懷疑團隊有暗箱操作的可能。但是由於FOMO 3D 的智慧合約全程開源,公開透明,因此可以查到駭客5哥是使用正常的購買功能進行購買的。
所以不存在官方暗箱操作的可能。
相關連結請見文末。
那作為想要獲得2200萬大獎的玩家,會怎麼去做呢?
如果你是小白玩家:
你可能會24小時盯著電腦,每次在倒計時快要結束的時候,花一點錢買一個KEY,然後祈禱後面不要再有人購買。
如果你是程式設計師玩家:
你可能會寫一個指令碼,設定在倒計時快要結束的時候,自動花一點錢買一個KEY,然後不斷重複該過程。
如果你真的這麼做了,只能說明你很傻很天真。
因為高達2200萬的大獎,只要一旦接近倒計時結束,就一定會有人去購買,甚至已經有上百個指令碼會等著購買。
真正的高階玩家是這麼做的:
買了KEY之後,以各種手段確保後面沒有人能夠再買進來。
這也是駭客5哥,拿走大獎的關鍵原因。
03
中獎的兩個手段
如下圖所示,從駭客5哥的近期錢包交易記錄看,他只是每隔一段時間就會買一個KEY。
所以不少人猜測駭客5哥只是寫了個指令碼,然後正好趕上了以太坊擁堵,或者遊戲熱度下降沒人關注,然後運氣好中了獎而已。
但是如果進一步仔細觀察,就會發現在駭客5哥購買KEY之後長達3分鐘、12個區塊的時間裡,僅有一人有過一次失敗的購買。
除此之外,再無任何人發出過購買的指令。
這和之前每次倒計時3分鐘的時候就會大搶一番完全不同,顯得異常的冷清。
那麼在以太坊上,如何可以做到這一點呢?主要有以下兩個途徑:
1)和礦主合謀,讓礦主在我的交易後,不再打包其他購買KEY的交易;
2)在自己成功購買KEY之後,把以太坊堵塞,讓其無法打包其他購買KEY的交易。
04
以太坊工作原理
這裡給區塊鏈小白簡單科普一下以太坊網路的工作原理。
一般家用計算機每秒都在執行很多程式。但是以太坊可以理解為平均每14秒才執行一次,專業術語叫做“打包交易”。
負責執行程式(打包交易)的計算機被稱為“礦機”,擁有礦機的人叫做礦工或礦主。
這個世界上有上萬臺以太坊礦機,而由哪臺礦機來打包交易,會受到礦機算力和全網算力的影響。爭奪打包交易權力的行為被稱作“挖礦”。
出自:ethgasstation.info
由於倒計時一旦低於2分鐘後,必然有大量的玩家受大獎刺激入場購買KEY。
所以大獎玩家,必須在倒計時結束前至少兩分鐘購買KEY,然後和挖到接下來的8-12個區塊(14秒一個區塊,每分鐘4個,2-3分鐘8-12個)的礦主協商好,讓對方阻止所有要購買KEY的使用者,保證自己是最後一個。
但這個做法不但在理論上較難實現,在此次事件的實際操作中,也幾乎不可能達成。
如下圖所示,從駭客5哥購買KEY直至確定大獎歸屬之間的12個區塊,分別屬於Ethermine、SparkPool、Nanopool、BitClubPool、bw等8個不同的礦工。
駭客5哥必須提前和這8個礦主都談好,然後正好是這8個礦主挖礦成功。
學過概率的同學都可以很快算出來這可能性幾乎為零。
分析到這裡,我們基本排除了串謀礦池的可能性。
06
異常的交易資料
在分析過程中,我們也驚奇地發現,5哥購買KEY直至中獎的這3分鐘、12個區塊裡的交易筆數異常的低,幾乎為平時的1/10不到,而交易費用卻數百倍高於平時水平。
這異常的資料讓我斷定其中必有貓膩,而結合接下來做的一系列資料分析,我們確認:
5哥在自己購買KEY後,使用高額的以太費用和技術手段讓以太坊堵塞了3分鐘。
進而使得其他玩家無法打包購買KEY的交易,從而獲得了最後的大獎。
以下是實錘和步驟解析:
首先,我們把中獎前以太坊12個區塊的一共353筆交易全部提取出來。經過各維度分析,我們有了以下發現:
1、交易次數最多的眾多賬號中,有一個剛剛建立不到4天的未開源合約賬戶。該賬戶在短短3分鐘時間內,交易了32筆之多。
2、我們進一步深挖發現,該可疑合約賬戶就是由駭客5哥在差不多3、4天前建立的。
也就是說,5哥購買KEY之後,自己用智慧合約向以太坊傳送了大量的交易。
到這一步,雖然我們還不確定合約內容到底是什麼,但是基本可以斷定5哥是在買到KEY之後做了手腳。
具體做了什麼手腳,我們還需進一步分析。
3、接著我們統計了在中獎前的12個區塊裡的GAS消耗。
我們發現5哥所建立的可疑合約賬戶所耗GAS佔據了這段時間GAS消耗的絕大多數。
尤其是在最後的6個區塊中,差不多1分半鐘的時間裡,5哥給出了190到501的天價GAS費用,一舉壟斷了所有以太坊所有的算力。
其他使用者幾乎無法在以太坊上執行任何操作。
07
駭客動機
這裡簡單講解一下以太坊的原理以及為什麼駭客5哥要這麼做。
上面我們說過以太坊平均每14秒左右出一個塊,該區塊中會打包一些交易。而每個區塊能夠進行的運算量是有限的,一般為800萬GAS左右。
超過這個限額的交易,將被延後至後續區塊進行交易。
打個比方,以太坊上的每個區塊都像一個水桶,使用者提交交易請求就像往水桶裡倒水,一個桶一旦倒滿了水,就無法再處理其他交易請求。
水桶一般會優先處理出價高的交易。
所以5哥在這裡做的事情,就是給他購買KEY之後6191898至6191908那十幾個區塊中挖到礦的礦機,支付了大量的金錢,讓其優先打包5哥所發出的交易。
然後5哥所發出的交易佔了過高的資源,把十幾個區塊幾乎都佔滿了。
其他所有以太坊使用者,包括玩FOMO 3D和不玩FOMO 3D的使用者,在那3分鐘的時間裡,都無法和以太坊進行互動。
由於沒有玩家可以進來和駭客5哥競爭,5哥成功守到倒計時結束的那一秒。
08
來龍去脈
於是,整個事件的脈絡也就基本理清楚了:
1、FOMO 3D倒計時剩下3分鐘左右;
2、駭客5哥購買了1個KEY;
3、駭客5哥用其他錢包賬號向自己建立的智慧合約,傳送大量垃圾資訊,造成了以太坊擁堵3分鐘;
4、3分鐘過後,由於無人購買KEY,駭客5哥成功獲得大獎。
當然,整個事件當中還有一些有趣的地方和不容易想明白的地方。我們逐一進行討論:
1、駭客5哥是手動操作的嗎?
當然不是,駭客5哥提前寫好了指令碼以及和指令碼配套的智慧合約。
在整個過程中,5哥其實寫了10來個智慧合約,但最終成功使用的還是尾數7801這個智慧合約。看來5哥也一直在最佳化。
2、駭客5哥的成功之路並不十分順利
駭客5哥在7天前建立了用於贏取大獎的錢包,之後同時在FOMO 3D和 last winner執行了5、6天的指令碼,意圖爭奪最後大獎。
但無奈一直沒有成功,還白白損失了不少手續費。
直到1天前,駭客5哥靈機一動,做了一個小的改動,由原來fccbf85主賬戶購買KEY之後,自行給智慧合約傳送命令,改為fccbf85主賬戶只負責購買KEY,由其他若干個賬號給合約傳送命令。
改動前
改動後
這個改動應該大幅提高了效率,5哥差不多3小時後就迎來了FOMO 3D的大獲全勝。
而本次的成功,並不是一次就成的,而是在失敗了近千次之後,一次帶了一點點運氣成分的成功。
3、駭客5哥是誰?
應該是一名區塊鏈領域的職業駭客,我們分析了他的錢包賬戶往來,但是很遺憾並不能確定最終是誰。
駭客5哥的錢包一共有8個錢包地址向其匯入以太坊。
而這些賬戶除了5哥自己的賬戶之外,都是使用了疑似ShapeShift的錢包,而ShapeShift因難以被追蹤而被廣大區塊鏈駭客喜愛和使用。
同時,駭客5哥在整個過程中,使用了將近20個不同的錢包地址,用於程式執行(跑指令碼)。
這些錢包地址基本都無法查到其他來源。
4、賺來的錢去哪了?
分別被存入以下兩個錢包:
0xbd321d63a925b439a20ae3260f461c35cbf9b875
0x2c389a86a686ac7ee98ac2606802b5bb4a2186c1
目前暫時還沒有轉出
5、整個過程中沒有人競爭嗎?
其實是有的,在5哥買到KEY之後的三分鐘時間裡,曾經有一位成功的以5000+的GAS 價格擠了進來,嘗試購買KEY。
但是非常遺憾的是他所設的GAS上限太低,因此交易報錯。而該名玩家也因此損失了2.1以太坊,約合4000元人民幣。
其他時間5哥還是很強勢的。
6、交易是被f2pool魚池打包的,魚池是否有做手腳的嫌疑?
經過以上討論,駭客成功的關鍵要素是堵住購買KEY交易之後的十幾個區塊。而這些區塊和魚池無關,所以我認為和魚池無關。
但魚池的強勢出鏡,反而讓遊戲變得更加有趣了起來。
09
少數駭客玩的遊戲
Fomo 3D的設計技巧十分高超,我們之前甚至會有種錯覺:「這個遊戲永遠不會結束」
所以在聽到遊戲結束的時候,我們的第一直覺就是,事情沒有那麼簡單。
於是我們花了一晚上時間,對Fomo 3D的這次大獎進行了深層次的分析,結果種種跡象都證實了我們的猜測,確實是駭客所為。
Fomo 3D的第二輪已經啟動,幾個小時內,獎池的金額就過了6000以太坊。第二輪的大獎,將會在何時產生,是否還會有駭客行為,大家可以耐心等待和觀察。
《GAME啟示錄》中曾有這樣一段話:
真實的世界有太多不可預測的事,而遊戲則不然,遊戲就是基於規則設計的,雖有區域性的隨機性,但進度與結果之間的關係是確定的。
有人暴富,就必然有人血本無歸。
正如我們所寫的,這類資金盤遊戲,是「少數駭客玩的遊戲」,他們會對以太坊直接發出指令進行互動。
透過遊戲頁面去玩的,大多數人都是虧損的。
所以永遠不要以賭徒心態去玩這類遊戲。
因為,當你在凝視深淵時,深淵也在凝視你。
10
其他線索彙總
以下是事件的關鍵要素彙總:
1、獲獎人:5哥
2、錢包地址:
0xa169df5ed3363cfc4c92ac96c6c5f2a42fccbf85
3、成功購買交易地址:
0x7a06d9f11e650fbb2061b320442e26b4a704e1277547e943d73e5b67eb49c349
4、中獎打款交易地址:
0xe08a519c03cb0aed0e04b33104112d65fa1d3a48cd3aeab65f047b2abce9d508
5、駭客5哥建立可疑合約的交易地址:
https://etherscan.io/tx/0x21ebb34d74aa487f036d5b8b5cf9cbfc7083b9fec3614a312341a3ab01592293
6、購買交易的區塊高度:6191896
7、礦工:f2pool_2 (魚池)
8、區塊資訊:七彩神仙魚
9、其他參考資料、資訊來源:
https://etherscan.io/address/0xa169df5ed3363cfc4c92ac96c6c5f2a42fccbf85
https://etherscan.io/tx/0xe08a519c03cb0aed0e04b33104112d65fa1d3a48cd3aeab65f047b2abce9d508
https://etherscan.io/block/6191896