2 月22 日,《Unchained》主理人Laura Shin 在Forbes 上發文表示,據其發現的相關證據顯示,以太坊2016 年The DAO 事件中黑客的身份疑似為TenX 聯合創始人兼首席執行官、奧地利程序員Toby Hoenisch。 Laura Shin 表示,根據其對嫌疑人的數據追踪以及區塊鏈分析公司Chainalysis 的鏈上分析,她鎖定了TenX 位於新加坡的節點地址。這起6 年前的史上最大黑客攻擊事件,又勾起了很多人的會議。

「當時我看到以太坊創始人Vitalik 突然發了一句話,說The DAO 被黑客攻擊了,錢正在被黑客拿走,我還以為是玩笑,然後我就懵了。」加密貨幣錢包ImToken 的聯合創始人Daniel 說。

360 萬ETH,當時超過6000 萬美金,這是這場影響深遠的黑客攻擊事件的被盜金額。如果按照ETH 的歷史最高價格計算,360 萬ETH,價值接近175 億美金。

價值6000 萬美金的兩行代碼

直到現在,很多人在想起6 年前加密行業這起黑客攻擊事件時,估計還會心有餘悸。

大家都知道比特幣是一個安全地記錄了所有轉賬記錄的全球賬本,可以實現無障礙的點對點轉賬,以太坊可以看做比特幣的2.0 版本,可以把它看做是一台「全球計算機」,開發者基於以太坊,可以高效、快速地開發出很多上層應用。

在這樣一個系統之上,很多致力於解決現實痛點的項目開始出現。當時,這種通過代碼自行運作、不依賴個人主觀意志的運作方式被很多人追捧,也是在這樣的背景下,The DAO 誕生了。

它其實是由一家名為德國初創公司Slock.it 發起的項目,這家公司當時做的是實體資產的上鍊業務,但因為很難在傳統行業中融資,他們就萌生了一個大膽的想法:既然沒人投自己,為什麼不造出一個投資機構?

分佈式自治組織的理念被他們引入,通過利用合約把一群利益相關者(投資人)把錢放到一起,如果有人拿著商業計劃書來尋求融資,所有人投票決定是不是要投資,如果成功了,大家共享收益。

它整個過程,其實是這樣運作的:用戶向它提起希望獲得投資的proposal,在提案公示後,如果被超過半數以上的用戶投票同意,那麼這個虛擬「VC」就會拿出一筆錢,投給項目。被投項目需要保證將來其業務會通過這個合約連本帶利,持續回饋給這個機構,而「VC」裡的每個LP 都能分到相應的收益。

The DAO 這種完全憑藉智能合約運行的方式得到了社區追捧。項目在2016 年4 月底開啟募資,不到一個月時間,就吸引了11000 名投資者參與,最終成功募集了1150 萬枚以太坊,這麼多數量的ETH,占到了當時以太坊全網15%的流通量,總價值超1.5 億美元。也讓The DAO 成為了加密史上募集到以太坊數量最多項目。

但危險的種子,在項目融資大獲成功的消息傳出時,就悄悄埋下了。

當時,連團隊都沒想到,項目能融到那麼多錢,自信的他們,把所有的ETH 都放在一個地址裡。這是一件非常可怕的事情,稍微有點常識的人都知道,如果你手上有巨額Token,最好是把Token 分散存到多個地址,即便丟失了一部分,也不至於蕩然無存。

木秀於林風必摧之。 The DAO 成了別有用心的黑客攻擊的「靶子」。

事實上,早在2016 年5 月份,以太坊團隊成員就曾呼籲過,這類DAO 項目可能存在安全問題,並給出了幾種可能的攻擊方案。 6 月11 日,以太坊另一個項目也發現合約就存在這樣的問題,所幸處置及時,沒造成損失。

不過,即使團隊也收到同樣的安全報告後,他們還是沒引起重視,以為漏洞不會產生威脅。另外,當時已經有數十個提案等著投票,如果合約暫停進行查驗,估計社區也不能接受。

就在所有人自以為萬事大吉的時候,危險降臨了。

黑客非常聰明,他先在6 月15 日悄無聲息地寫了一個攻擊合約,安靜地埋伏兩天,直到6 月17 日才開始行動。利用合約的漏洞,黑客從主合約中成功轉出了超360 萬枚ETH,轉入了一個child DAO 中,這是一種遞歸式分割的方式,最終將收集到的幣單次轉走了。

出現問題的是下面兩行代碼:代碼沒錯,就是順序反了。

有人分析,如果程序員把兩行代碼的順序上下換個位置,各個功能沒有變化,但卻能避免漏洞產生,沒準The DAO 就成功了。

當然,這也只是美好的幻想,黑客就是利用了這個漏洞,成功轉移了3 百多萬枚ETH,引起了加密社區的軒然大波。

這次攻擊,讓項目丟失了360 萬枚ETH,按照當時的價格,總價值超過6000 萬美金,如果按ETH 歷史最高價計算,這筆丟失的資產近175 億美金。這個消息很快影響到二級市場,以太坊價格從20 美金,跌破13 美元,下跌幅度超30%。

不過,狡猾的黑客沒想到,因為child DAO 的合約還處在創建階段,有27 天的鎖定期,所以,他在短時間內也轉不走這筆錢。

留給所有人的時間只有短短二十幾天,大家必須在這筆錢被轉走之前作出決策。

攻擊發生後,Vitalik 發了文章,還原了The DAO 被攻擊細節,同時也給出了解決方案。他提議社區對以太坊區塊鏈進行一次軟分叉,把與之相關的交易認做無效交易,避免攻擊者提走被盜的ETH。之後,再發起一場硬分叉投票,再將這筆ETH 找回來。

幣還沒轉走,以太坊社區就放出了這麼一個大招,黑客坐不住了。

6 月18 日,這位自稱主導了這場攻擊的黑客現身,堂而皇之地發了一封致The DAO 和以太坊社區的公開信,他表示,自己對社區定義他的行為是「盜竊」非常失望,聲稱他獲得的ETH 是合法並正當的,「我的律師事務所表示這樣的行為完全符合法律」。

不過有人發現,他留下的簽名是假的,所以這封公開信可能是有人偽造。

6 月19 日,一位名為「daoattacker」的用戶還在討論該事件的slack channel 出沒,在一場匿名對話中,他表示會採取措施暫停有組織地對他財產的「盜竊」行為,「很快我們就會制定一個智能合約獎勵那些不支持軟分叉的礦工,共計100 萬枚以太幣和100 枚比特幣。」試圖慫恿礦工不支持分叉。有意思的是,他還給討論區留下地址的人發了幾枚btc。

「黑客」的意思很清楚:不認可以太坊分叉。不過,對於他的辯護,社區大多數人可不會理睬。

很快,以太坊社區發起了一項是否支持硬分叉的投票,近97% 的ETH 持有者投出了贊成票,只有少數人不同意分叉,最終硬分叉方案一致通過。

2016 年7 月15 日,具體硬分叉方案公佈,退幣合約開始建立,由於7 月21 日是最終期限,硬分叉執行的最終期限確定,超過85% 的算力支持硬分叉,以太坊硬分叉成功。

如今,我們在回顧這起加密世界的黑客攻擊事件時,會發現這場攻擊,不僅擊垮了The DAO,還有另一個更糟糕「副作用」:很多人開始懷疑,去中心化自治組織是不是空想,「Code is Law」到底是不是空中樓閣?以太坊社區確實是出於挽回大多數投資者損失的目前,發起了硬分叉投票,並終止了一場攻擊的發生。

但從某個角度來看,「黑客」說的不無道理:The DAO 本身就是個智能合約,它的仲裁人是自己,任何其他外部節點都不能改變已經制定好的規則。而以太坊官方的做法則推翻了這種規則。

很多時候,引發黑客攻擊的事件可以在開發者編寫代碼的過程中盡量避免,但加密世界的黑客,能利用的可不僅是一行行代碼,還有人為治理中的漏洞。