以太幣驚天大劫案
2016年6月13日(農(nóng)歷2016年5月9日),以太幣驚天大劫案。以太幣驚天大劫案2016年6月13日,某黑客盜取了價(jià)值5500萬(wàn)美元的以太幣,本文嘗試將這段歷史重現(xiàn)于公眾面前。一、第666行代碼夏天感冒最痛苦不過,艾明·古恩·薩若(EminGünSirer)從他1歲的兒子那里傳染上了感冒病毒。于是,2016年6月13日,這位康納爾大學(xué)計(jì)算機(jī)科學(xué)副教授,發(fā)現(xiàn)自己不得不在病床上一邊流眼淚擦鼻涕,一邊抱著筆記本電腦跟代碼漏洞死磕——他懷疑某行代碼中的缺陷有可能導(dǎo)致2.5億美元有被盜風(fēng)險(xiǎn)。這不是什么無足輕重的代碼,這是區(qū)塊鏈相關(guān)軟件設(shè)計(jì)最新突破里的核心代碼,而區(qū)塊鏈?zhǔn)莿?chuàng)新組合了去中心化計(jì)算和密碼學(xué),在2009年締造了虛擬貨幣比特幣的核心技術(shù)。自那以后,區(qū)塊鏈改變眾多行業(yè)生態(tài)系統(tǒng)的前景,吸引了企業(yè)董事會(huì)和政府之類頭頭腦腦的關(guān)注和想象延伸。然而,這位土耳其出生的教授,在那個(gè)周一帶病探索的東西,卻是比特幣的下一個(gè)飛躍——以太坊(ethereum)區(qū)塊鏈。以太坊區(qū)塊鏈不是將比特幣在用戶間流轉(zhuǎn),而是托管被稱為“智慧合約”的全功能計(jì)算機(jī)程序——基本上靠代碼而非法庭執(zhí)行的協(xié)議。這意味著可以自動(dòng)化債券付款生命周期,或者醫(yī)藥公司可以驗(yàn)證藥品來源。不過,智慧合約還很新,基本未經(jīng)檢驗(yàn),且與所有軟件一樣,可靠性由其編碼決定——而古恩非常確定他在代碼中發(fā)現(xiàn)了大問題。晚上7:30的時(shí)候,在一封發(fā)給他門下研究生的郵件中,古恩指出,他正在審查的智慧合約代碼第666行可能有問題。細(xì)節(jié)決定成敗古恩怕該漏洞可使黑客無限制提款——即使攻擊者賬戶中僅有10美元(攻擊者的身份必需為虛擬貨幣投資人),也可以無限制提出上千萬(wàn)美元。數(shù)量驚人的錢存在于一個(gè)名為“分權(quán)自治組織(DAO)”的程序中。該程序在近1年前編寫建立,由智慧合約監(jiān)管,用于民主化以太坊項(xiàng)目資金支持。數(shù)千名植根于計(jì)算機(jī)科學(xué)前沿的年輕夢(mèng)想家、野心家和開發(fā)者,都投資了DAO。這都是真金白銀,2.5億美元,他們的錢,用來打造更美好的世界的錢,這每一分錢都籠罩了巨大的風(fēng)險(xiǎn)。古恩,這位留著黑色短發(fā),看上去比實(shí)際年齡年輕10歲的45歲教授,一直在跟蹤并公布DAO設(shè)計(jì)中的缺陷。幾周前,5月27號(hào),與兩名同事一起,他敦促投資人在安全漏洞未修復(fù)前別再往DAO里投錢。然而,已經(jīng)太遲了,該程序在第二天繼續(xù)在線。像DAO這樣的智慧合約,一旦在以太坊區(qū)塊鏈上發(fā)布,就完全依賴其代碼了。這意味著,DAO代碼無法修復(fù)。其他區(qū)塊鏈專家,包括比特幣基金會(huì)共同創(chuàng)始人皮特·維賽尼斯,也指出了智慧合約中的安全缺陷,但古恩似乎是首位定位該吞錢漏洞的專家。問題在于,該代碼太新了,沒人知道會(huì)發(fā)生什么,或者說,沒人知道里面有沒有問題。古恩也有自己的疑慮。這甚至不是他的工作。他只是出于興趣而已。戴安也不覺得他們發(fā)現(xiàn)了什么。郵件中,他說:“我們或許進(jìn)退兩難了。”之后不久,在古恩指出666行的錯(cuò)誤時(shí),戴安回復(fù)說:“我不這么認(rèn)為?!惫哦髡f:“我們并不是每次發(fā)現(xiàn)個(gè)可疑漏洞就會(huì)敲響警鐘?!毕喾?,他躺床上去緩解感冒了——這才是他認(rèn)知中真正需要修復(fù)的漏洞。4天后,克里斯托弗·延奇躺在自家地板上,深呼吸,極力保持平靜。二、價(jià)值2.5億美元的虛擬貨幣那是周五早上,西方世界的軟件開發(fā)者們都被延奇創(chuàng)建的DAO遭到攻擊的新聞驚醒了。古恩沒說錯(cuò),真的有漏洞,能把錢吸走的漏洞。延奇一頭黑發(fā)滿臉胡子,與家人住在距捷克邊境不遠(yuǎn)的德國(guó)米特韋達(dá)鄉(xiāng)下。延奇一家的早晨總是一片忙亂,因?yàn)樗退拮拥梦癸枏?歲到9歲不等的5個(gè)小孩,并送他們上學(xué)。然而今天,在接到他哥哥的電話,聽說DAO被黑的消息后,延奇不得不放下他的家庭責(zé)任。他對(duì)妻子說:“你照看孩子,我有急事?!边@是史上最大數(shù)字劫案之一的故事?;蛟S你聽說過去年黑客入侵Swift銀行間消息系統(tǒng),從孟加拉央行盜取8100萬(wàn)美元的事,但DAO攻擊卻是完全不同的類型。它就發(fā)生在眾人眼前,想看就能看見,而且阻止不了。就像5月份WannaCry勒索軟件暴露出計(jì)算機(jī)操作系統(tǒng)漏洞一樣,DAO黑客事件也暴露出智慧合約安全中的早期弱點(diǎn),讓社區(qū)中的很多人震驚于他們竟然沒能及時(shí)發(fā)現(xiàn)這些漏洞。事件余波最終會(huì)導(dǎo)致黑白帽子大戰(zhàn)——在奇怪又充滿未來感的DAO戰(zhàn)爭(zhēng)中。DAO的創(chuàng)意,源于延奇從另一個(gè)互聯(lián)網(wǎng)驅(qū)動(dòng)的現(xiàn)象中借用的概念:眾籌。32歲的延奇是個(gè)理論物理學(xué)家,與幾個(gè)同事一起,于2015年創(chuàng)立了Slock.it。在他們考慮為公司籌資的時(shí)候,延奇采用了很多人都干過的做法——出售數(shù)字貨幣,也就是代幣。但是,為什么每家新初創(chuàng)公司都得研發(fā)自己的初始貨幣產(chǎn)品呢?延奇想,為什么不能是由一個(gè)大基金來監(jiān)管所有的數(shù)字貨幣?2015年11月,在倫敦舉行的DevCon1開發(fā)者大會(huì)上,延奇將自己的想法告訴了全世界?!皠?chuàng)建一家公司的區(qū)塊鏈方法是什么?”延奇問他的聽眾,“顯然,必須是DAO?!彼倪\(yùn)作方式是這樣的:以太幣,作為比特幣一類的虛擬貨幣,被用于在以太坊區(qū)塊鏈上注資并開發(fā)應(yīng)用。這類似于創(chuàng)建像iTunes一樣的音樂App,或是按Uber路線創(chuàng)建拼車服務(wù)。投資人用以太幣購(gòu)買DAO代幣;代幣可用于投票支持自己喜歡的項(xiàng)目。只要支持的App賺到錢,代幣持有者就能分享利潤(rùn)。延奇花了6個(gè)月時(shí)間創(chuàng)建DAO,在此期間,他覺得這東西可以籌集到500萬(wàn)美元。從4月30日到5月28日,DAO眾籌拉來了1.5億美元。這是在以太幣交易價(jià)值略低于12美元的時(shí)候。隨著以太幣價(jià)值在隨后幾周猛漲——到攻擊前日已攀升至20.75美元,DAO的價(jià)值也水漲船高,來到了驚人的2.5億美元。延奇從未想過自己創(chuàng)建的這個(gè)東西竟是帶著致命原罪來到世間的,如此巨大的價(jià)值無疑也是個(gè)巨大的標(biāo)靶?!拔覀兿M@東西能成為去中心化共享經(jīng)濟(jì)的核心?!毖悠嫒缃窈苁呛蠡诋?dāng)初沒給籌資設(shè)個(gè)上限:“相對(duì)這么大個(gè)實(shí)驗(yàn)來說,一切都還太早了?!惫舭l(fā)生后的幾周,延奇和以太坊社區(qū)的其他人,都將忙于設(shè)法應(yīng)付自身危機(jī)——縮小版的2008銀行和政府救市。“它太大了,不能倒?!薄斑@是我遭遇過最瘋狂的事。這是幾乎任何人能遭遇到的最瘋狂的事?!钡?,為什么會(huì)有人投資DAO呢?這與以太坊社區(qū)固有的數(shù)字自由主義有關(guān)——類似導(dǎo)致了比特幣誕生的那套信仰??梢詫⒈忍貛趴醋鍪讉€(gè)不能被政府或公司阻止使用的全球貨幣;最重要的是,比特幣幾乎不可能被黑。以太坊,則又是另一個(gè)層面的事了。這就是一臺(tái)不可審查的全球計(jì)算機(jī)。前所未見和超級(jí)神奇之外,以太坊還有點(diǎn)可怕。誕生之后,DAO便點(diǎn)燃了極度渴求它的社區(qū)的投資熱情。習(xí)慣了工作到深夜以與在北美的同事保持聯(lián)系,延奇通過慢跑或在附近的喬保河劃皮劃艇,來釋放壓力恢復(fù)精神。但在那個(gè)周五早晨,他有更緊迫的任務(wù),必須把自己從地板上拖起來,去處理攻擊?!拔疫M(jìn)入了緊急狀態(tài):別試圖救回DAO了。一切都結(jié)束了?!比欢?,遠(yuǎn)未結(jié)束。三、史上最大數(shù)字貨幣劫案數(shù)小時(shí)后,地球的另一邊,位于里約熱內(nèi)盧科帕卡巴納海灘附近的公寓里,亞歷克斯·范·德·桑德依然醒著。這位娃娃臉的以太坊開發(fā)者,出生于巴西巴伊亞地區(qū)圣克魯斯-卡布拉利亞的一個(gè)小漁村,在3歲的時(shí)候隨父母搬到了里約。他在Reddit和推特的網(wǎng)名叫“avsa”。在電話聯(lián)系一通,了解為什么Skype上都炸了之后,他對(duì)妻子說:“記得我告訴過你的那一大筆不會(huì)被黑的錢嗎?”她點(diǎn)了點(diǎn)頭。“現(xiàn)在那筆錢被黑了。”他的第一反應(yīng)是取出自己的DAO代幣。他持有大約10萬(wàn)個(gè),當(dāng)時(shí)價(jià)值1.5萬(wàn)美元。他是以太坊錢包App的主要設(shè)計(jì)者,該錢包App可讓用戶與區(qū)塊鏈互動(dòng)。范·德·桑德火速登錄,然而他的口令不起作用。只是出了點(diǎn)小故障,而當(dāng)他努力解決時(shí),他的恐慌平息了下來。他意識(shí)到,自己不應(yīng)該放棄DAO,而應(yīng)該嘗試拯救它。而要做到這一點(diǎn),他需要格里夫。格里夫·格林,身兼數(shù)職的洛杉磯按摩師和西雅圖社區(qū)組織者,是全球少數(shù)幾個(gè)擁有數(shù)字貨幣碩士學(xué)位的人。當(dāng)然,他的學(xué)位是從尼科西亞大學(xué)在線獲取的。這個(gè)自我描述為“夢(mèng)想家”的32歲男人,是最接近以太坊市市長(zhǎng)這類人物的人。格林認(rèn)識(shí)以太坊社區(qū)的每個(gè)人;事實(shí)上,他就是第一個(gè)將攻擊消息傳給西蒙的人。西蒙是延奇的哥哥,同時(shí)也是Slock.it的共同創(chuàng)始人。當(dāng)時(shí)格林已經(jīng)在Slock.it做了6個(gè)月了,那天早上他是在延奇媽媽位于米特韋達(dá)的房子里醒來的。延奇有8個(gè)兄弟姐妹,所以他媽媽有空余的臥室供格林暫住。利用他廣闊的人脈,格林開始盡可能地確認(rèn)都有誰(shuí)在操作DAO,甚至要求陌生人發(fā)送照片或掃描他們的身份證——試圖鑒別出內(nèi)部隱藏的敵人。然后,奇怪的事情發(fā)生了:攻擊停止了。攻擊開始后6小時(shí)里,盜賊成功竊得DAO120萬(wàn)以太幣中的30%——當(dāng)時(shí)價(jià)值5500萬(wàn)美元?!拔覀兩踔敛幻靼诪槭裁茨侨送J至??!比缃?,格林忙于保護(hù)尚未被攻擊者偷走的剩下70%。四、合法的“搶銀行”?在德國(guó),范·德·桑德一與格林取得聯(lián)系,便連同其他兩三個(gè)人,構(gòu)建了后來被稱為羅賓漢小組的基礎(chǔ)——大膽反搶DAO剩余資金的白帽黑客集合。為拯救DAO,他們不得不盜取剩余的以太幣,然后歸還給其合法擁有者。然而,在周五的一片硝煙狼藉中,團(tuán)隊(duì)內(nèi)部冒出了些微疑慮?!昂诘羰裁礀|西到底意味著什么?”范·德·桑德問道。沒人知道他們將要做的合不合法。而且,他們的黑客行動(dòng)難道不是跟他們?cè)噲D阻止的盜竊活動(dòng)一模一樣嗎?然后,很現(xiàn)實(shí)的問題?!罢l(shuí)拍板動(dòng)手?”這么做將開啟他們的反擊,驚動(dòng)社區(qū)?!氨仨氂腥碎_第一槍?!惫羟耙沟囊蕴珟艃r(jià)格,升到了歷史新高的20美元多一點(diǎn)。被黑的消息一出,周五晚間即暴跌至15美元,蒸發(fā)掉近5億美元市值。在那個(gè)價(jià)格點(diǎn)上,DAO依然持有1.25億美元價(jià)值,羅賓漢小組擔(dān)心攻擊會(huì)卷土重來。如果攻擊重現(xiàn),他們就是第一道防線,因此,范·德·桑德同時(shí)使用他的DAO代幣發(fā)動(dòng)反擊,成為該小組的公眾形象。這時(shí)候,不妨將DAO看做《異形》中雷普麗啟動(dòng)自毀程序之后的那艘宇宙飛船。想逃脫,她就得使用逃生艙。DAO投資人必須啟動(dòng)類似的程序,來部署那可將以太幣救出DAO的逃生艙。支配逃生艙動(dòng)作的代碼,就是漏洞存在的地方。所以,為盜出剩余DAO資金,羅賓漢小組得進(jìn)入艙內(nèi)利用該漏洞——而由于延奇編寫DAO的方式,他們只有極短的時(shí)間窗口和少量幾個(gè)可供挑選的逃生艙。發(fā)動(dòng)攻擊前幾分鐘,范·德·桑德在小組Skype聊天中開玩笑說:“去搶銀行咯!”沒人笑?!安皇敲總€(gè)人都能理解其中的笑點(diǎn)?!痹诳婆量ò图{的公寓里,范·德·桑德已經(jīng)準(zhǔn)備好按下筆記本上發(fā)動(dòng)攻擊的按鍵了。但突然之間,他連不上網(wǎng)了。他的路由器宕機(jī)了?!拔液?jiǎn)直想罵娘!”他說。他只剩30分鐘來執(zhí)行羅賓漢黑客行動(dòng)。他瘋狂撥打自己的巴西互聯(lián)網(wǎng)服務(wù)提供商N(yùn)ET公司,但始終停留在自動(dòng)語(yǔ)音客服階段。機(jī)器人的聲音告訴他:“我們知道您的社區(qū)發(fā)生了互聯(lián)網(wǎng)問題?!痹谒砩铣浞煮w現(xiàn)出現(xiàn)實(shí)的嘲諷:他正試圖從機(jī)器人那里盜取千萬(wàn)美元,卻被另一個(gè)機(jī)器人給伏擊了。“然后我們就錯(cuò)過了機(jī)會(huì)。”窗口關(guān)閉了。他從正要拯救DAO的情緒高點(diǎn),跌落到了他們的國(guó)際聯(lián)系被NET的故障強(qiáng)行切斷的崩潰邊緣。他去遛了遛狗,然后爬上床睡覺,滿身挫敗感。第二天是周六,范·德·桑德試圖再次召集羅賓漢小組,潛入另一個(gè)逃生艙。但伙計(jì)們都很忙,聚集不起來了?!拔覀兏杏X自己好像是史上最糟糕的黑客。我們被糟糕的互聯(lián)網(wǎng)服務(wù)和家庭責(zé)任給拖住了?!蔽?、誰(shuí)是真兇?到底,誰(shuí)是他們對(duì)抗的敵人?沒人真的知道,但線索還是有的。攻擊者使用的其中一個(gè)地址是0xF35e2cC8E6523d683eD44870f5B7cC785051a77D。明白了嗎?就像區(qū)塊鏈中的其他東西一樣,用戶地址也是一串匿名字符。但每個(gè)地址都在區(qū)塊鏈中留下了可供檢查的歷史。99.9%的人都看不懂,但格林能理解。為實(shí)施搶劫,攻擊者需要?jiǎng)?chuàng)建一個(gè)可與DAO互動(dòng)的合約。他在6月15日創(chuàng)建了合約,并在2天后的凌晨時(shí)分進(jìn)行了部署。一旦被激活,攻擊合約便開始經(jīng)由攻擊者的賬戶,以每3到4分鐘一筆的速度,發(fā)送價(jià)值4000美元左右的以太幣掏干DAO。但原始啟動(dòng)資金是從哪里來的呢?為與以太坊區(qū)塊鏈互動(dòng),每個(gè)合約都必須由一定量的以太幣驅(qū)動(dòng)。該攻擊合約受到2個(gè)地址的支持,但進(jìn)一步追蹤變得有點(diǎn)棘手。這是因?yàn)?,第二個(gè)地址使用了被稱為ShapeShift的交易,在6月14號(hào)向其賬戶發(fā)送了52以太幣。ShapeShift不收集任何用戶信息,并能在10秒鐘之內(nèi)將一種虛擬貨幣,比如比特幣,轉(zhuǎn)換成另一種,比如以太幣。盡管有正當(dāng)理由使用ShapeShift,它依然是清洗數(shù)字資產(chǎn)以掩蓋痕跡的絕佳方法。攻擊合約停止工作后,竊賊需要重新部署。他嘗試過,卻失敗了,幾個(gè)交易過后,黑客行動(dòng)邁向尾聲。(攻擊停止的一個(gè)可能原因是,黑客的代幣損壞,沒辦法再利用漏洞。)從區(qū)塊鏈公共記錄得到的信息有限,且是單方面的。數(shù)字資產(chǎn)交易所雙方都能看到。某個(gè)這樣的交易所進(jìn)行的內(nèi)部調(diào)查發(fā)現(xiàn),DAO攻擊者有可能是位于瑞士的一個(gè)組織,不是獨(dú)狼。交易所地位特殊,可以分析其客戶的交易活動(dòng),因?yàn)樗麄兦宄蛻舳际钦l(shuí)——即便在區(qū)塊鏈中是匿名的。透露信息的交易所高管稱,分析結(jié)果已共享給了FBI波士頓分部——盡管自去年10月其便沒有了進(jìn)一步聯(lián)系。古恩稱,他還與FBI波士頓辦事處、紐約辦事處,以及紐約州總檢察長(zhǎng)辦公室聯(lián)系過?!跋氩涣艉圹E地協(xié)調(diào)發(fā)起此類攻擊是非常難的?!彼膭?lì)FBI查看以太坊測(cè)試網(wǎng),那里是程序員們?cè)诎踩h(huán)境下執(zhí)行代碼挑出毛病的地方。古恩告訴聯(lián)邦官員,攻擊者不會(huì)不經(jīng)測(cè)試就直接發(fā)起這么一個(gè)復(fù)雜的黑客行動(dòng),政府可以從中獲得攻擊者身份的線索。古恩還向他們指出了與攻擊者有關(guān)的幾個(gè)地址,比如上面提到過的,由他的研究生戴安在博客里列出的那個(gè)。(FBI拒絕發(fā)表評(píng)論。)Slock.it的第三位共同創(chuàng)始人史蒂芬·圖爾詰問道:“我真的被震驚了。為什么沒人追回并找出真兇?這事兒至今困擾著我,因?yàn)槟莻€(gè)人所做的非常之不道德?!绷?、無休止的戰(zhàn)斗周四,初始攻擊發(fā)生4天后,黑客殺了個(gè)回馬槍。羅賓漢小組早就擔(dān)心這一刻的到來,并做好了準(zhǔn)備。周日早晨,他們終于在線集結(jié),成功滲透了一個(gè)逃生艙,但卻叫停了反擊。如今,他們已別無選擇。該小組面臨打擊之一,是他們相互之間的距離——一個(gè)人在里約,其他人分布?xì)W洲各地。協(xié)同行動(dòng)非常重要,正如《霹靂嬌娃》中展現(xiàn)的那樣,他們各自具備不同的專長(zhǎng):格林是社區(qū)組織者,范·德·桑德是公眾形象,其他人編寫羅賓漢小組攻擊合約。因此,范·德·桑德需要一步步審查他們打算發(fā)動(dòng)的整個(gè)黑客行動(dòng)過程,因?yàn)檫@不是他的專業(yè)領(lǐng)域。格林說:“老實(shí)講,我挺興奮。這是我遭遇過最瘋狂的事。這是幾乎任何人遭遇過的最瘋狂的事。”行動(dòng)是否合法,仍舊是懸而未決的問題。編程專家維賽尼斯說:“區(qū)塊鏈上確實(shí)有黑客在戰(zhàn)斗。他們做的是基本上都是非法的,但他們宣稱是為了大多數(shù)人的利益。”如今,輪到范·德·桑德來讓社區(qū)知道,羅賓漢小組的反擊開始了。他選擇了推特,在上面以大寫英文字母寫道“DAO正被安全地清空。別恐慌。”向希區(qū)柯克經(jīng)典電影《銀河系漫游指南》致敬,他“別恐慌”的請(qǐng)求,遭遇了推特所能處理的所有怪誕和顯示的關(guān)注。一名用戶回復(fù):“沒什么比全用大寫更令人恐慌的了?!绷硪幻脩舭l(fā)推:“現(xiàn)實(shí)生活比《機(jī)器人先生》更刺激!!”而隨著羅賓漢小組攻擊的加快,他們注意到有奇怪而令人擔(dān)憂的事情發(fā)生——每個(gè)逃生艙里都有攻擊者的身影。“我們逃離了母艦,但現(xiàn)在我們跟異形一起飄蕩在太空中?!狈丁さ隆ど5抡f。這是個(gè)大問題。由于延奇寫代碼的方式,羅賓漢小組不得不等待數(shù)周才可以保護(hù)他們找回的以太幣。而一旦攻擊者就跟該小組一起待在逃生艙里,他可以跟著他們——所謂尾隨攻擊。如果黑客尾隨羅賓漢小組,以太幣也就不安全了。范·德·桑德說:“只有其中一方退出爭(zhēng)斗,游戲才會(huì)終止?!边@基本上就是DAO戰(zhàn)爭(zhēng)的核心,這場(chǎng)永不停歇的戰(zhàn)斗將不得不進(jìn)行,以保證恢復(fù)出的以太幣安全。要是有一種方法能徹底扭轉(zhuǎn)這種盜竊行為就好了。接下來發(fā)生的事,是區(qū)塊鏈早期歷史中最奇怪、最具爭(zhēng)議的一段。七、重塑歷史康奈爾大學(xué)本部所在地,紐約伊薩卡,迎來了7月20號(hào)清涼晴朗的早晨。一周的以太坊校園訓(xùn)練營(yíng)將全球各地的開發(fā)者和程序員吸引到了這座小城。氣氛高漲,但不是因?yàn)檠杏憰?huì)即將開始,而是因?yàn)檫@一天是以太坊社區(qū)決定重塑歷史的日子。DAO黑客事件后的幾周里,開發(fā)者、投資人、程序員和其他社區(qū)成員,在如何巡回被盜以太幣問題上爭(zhēng)論不休。因?yàn)榱_賓漢小組基本是私下里對(duì)戰(zhàn)攻擊者,公開爭(zhēng)論正愈演愈烈。白帽子黑客不是唯一試圖拯救DAO的群體。延奇幾乎是徹夜不眠地工作,處理成百上千的DAO投資人質(zhì)詢。維塔利克·巴特林,未滿20歲之時(shí)就創(chuàng)建了以太坊區(qū)塊鏈的23歲男生,因引導(dǎo)社區(qū)做出抉擇,而成為了核心任務(wù)。簡(jiǎn)言之,他們能做的,就是修改以太坊區(qū)塊鏈以修復(fù)DAO,但只有稱作以太坊區(qū)塊鏈網(wǎng)絡(luò)的絕大多數(shù)計(jì)算機(jī)同意軟件更新才行。實(shí)現(xiàn)了這個(gè),攻擊就像從未發(fā)生過一樣了。這就是所謂的“硬分叉”。該決定引發(fā)了強(qiáng)烈的反向,以致1年后仍存爭(zhēng)議,以太坊社區(qū)和堅(jiān)持比特幣歷史永遠(yuǎn)不應(yīng)該被篡改的比特幣用戶,都反對(duì)該決定。10月的一次采訪中,巴特林毫不后悔推動(dòng)了該改變?!澳承┍忍貛庞脩魧⒂卜植嬉暈槟撤N程度上違反了他們最基本的價(jià)值觀。我個(gè)人認(rèn)為,這些被推向極端的基礎(chǔ)價(jià)值觀,很傻。”至少,在以太坊社區(qū)內(nèi)部,巴特林的觀點(diǎn)在那一天勝出,全世界的計(jì)算機(jī)節(jié)點(diǎn)都接受了分叉。在接受DAO修復(fù)的1,920,000區(qū)塊中,它只干了一件事——如果你曾投資其中,現(xiàn)在你可以拿回了。但是,為什么攻擊者沒有拿走他偷到的錢呢?都已經(jīng)過了1個(gè)多月了。將DAO暴露在竊賊眼前的同一段代碼,最終幫助人們找回了被盜的以太幣。對(duì)DAO所做的一切,僅僅是設(shè)置參數(shù)而已:規(guī)則、條件語(yǔ)句,以及在程序釋放前全部實(shí)現(xiàn)的更多規(guī)則。其中一個(gè)參數(shù)聲明:任何想要從DAO取出以太幣的用戶,都必須等待一定的時(shí)間——初始請(qǐng)求后先等27天,然后再等7天。“我們盡了一切努力避免發(fā)生這種事,但現(xiàn)在,我們被拖回了這場(chǎng)戰(zhàn)爭(zhēng)?!毖悠婢帉懙倪@個(gè)故障保護(hù)措施,也被應(yīng)用到了攻擊者身上。所以,即便某人真搶了以太幣銀行,他也得等足34天才能卷款潛逃。在竊賊等待的期間里,那些錢是可以再被偷回來的。1個(gè)月過去之后,這名以太幣大盜連個(gè)鋼镚兒都沒剩下?;氐娇的螤柎髮W(xué)校園,以太坊訓(xùn)練營(yíng)參加者們開始慶祝。第二天的課上,古恩拿來了香檳。他在酒瓶標(biāo)簽外面貼了張刀叉的圖片,說:“致我們成功的分叉!”以太幣驚天大劫案八、區(qū)塊鏈的野生世界然后,不曾預(yù)料到的事情發(fā)生了。原始以太坊區(qū)塊鏈,也就是DAO攻擊合約存在其中的那個(gè),仍在繼續(xù)增長(zhǎng)??梢詫⒂卜植嫦胂蟪蓮拇髽渲鞲赡┒松龅囊粋€(gè)分支,伸向另一個(gè)方向。原本的主干應(yīng)該在硬分叉后凋零的,但因?yàn)橛幸恍〔糠钟脩衾^續(xù)用該版本的區(qū)塊鏈處理交易,這主枝竟然還在繼續(xù)生長(zhǎng)。這就演變成了第二種形式的以太坊,很快被命名為經(jīng)典以太坊,搭配上如今具備價(jià)值的數(shù)字貨幣。即便是在科幻小說似的區(qū)塊鏈?zhǔn)澜?,這也是前所未有的大反轉(zhuǎn)。這意味著,那名DAO攻擊者被稱為DarkDAO的賬戶上,突然之間擁有了大約360萬(wàn)以太坊經(jīng)典以太幣,而且還在慢慢增加價(jià)值。羅賓漢小組持有大約840萬(wàn)經(jīng)典以太幣,因?yàn)樵谶@個(gè)平行世界里,他們依然控制著70%的DAO資金。羅賓漢小組簡(jiǎn)直不敢相信?!拔覀儽M了一切努力避免發(fā)生這種事,但現(xiàn)在,我們被拖回了這場(chǎng)戰(zhàn)爭(zhēng)?!爆F(xiàn)在,認(rèn)為硬分叉破壞了區(qū)塊鏈核心價(jià)值的比特幣支持者,可以通過買入經(jīng)典以太坊來支持自己的信仰了。這也正是比特幣圈子里的重量級(jí)人物,企業(yè)家巴里·希爾伯特所做的?!耙?,最初的鏈就是經(jīng)典以太坊。而分叉是以太坊。”言行合一,希爾伯特的公司GrayscaleInvestments,最近發(fā)布了一篇投資論文,指出經(jīng)典以太坊對(duì)比以太坊的優(yōu)勢(shì)所在。某章標(biāo)題總結(jié)了其理論基礎(chǔ):“DAO與原則的死亡?!眮喠宋魉埂ち_素,瑞士數(shù)字貨幣代理商Bity.com共同創(chuàng)始人,仍對(duì)硬分叉的后遺癥和區(qū)塊鏈野生世界驚嘆不已?!斑@是傳統(tǒng)金融界絕不會(huì)發(fā)生的事。即使蘋果公司出了什么事,你也不會(huì)馬上就弄個(gè)克隆版蘋果出來。”九、漏洞代碼的細(xì)節(jié)DAO攻擊事發(fā)已1年,足以盤點(diǎn)到底是哪里出了錯(cuò)了。范·德·桑德渴望繼續(xù)前行?!斑@真的只是個(gè)變故。我們已經(jīng)準(zhǔn)備好放下包袱,繼續(xù)前行?!备窳衷诓邉澖衲晗奶煸趦?nèi)華達(dá)沙漠的火人節(jié)上搞一個(gè)以太坊大會(huì)。他調(diào)侃了一下當(dāng)年的DAO被黑事件,“羅賓漢小組只是一場(chǎng)秀。我希望電影能比真實(shí)演得更好點(diǎn)兒?!敝劣诼┒幢旧?,明顯有很多聰明人都在古恩之前就審查過代碼了,只是都看漏了一個(gè)重大漏洞而已。代碼中的指令順序,讓DAO代幣持有者可以從自己的投資中提取任意數(shù)量的盈利。漏洞代碼行是“withdrawRewardFor(msg.sender)”,而且,令人難以置信地,在下一行加了句注釋“不錯(cuò),拿取回報(bào)吧。”這就是第667行——不妨稱之為“野獸漏洞的鄰居”如果提款代碼行是在下面這幾行代碼之后出現(xiàn):totalSupply-=balances`msg.sender`;balances`msg.sender`=0;paidOut`msg.sender`=0;returntrue;攻擊就不可能發(fā)生了。但如果代碼是按這種正確的順序?qū)懙?,回?bào)參數(shù)也就起不了作用了。從注釋上看,這行代碼應(yīng)該是想讓投資人取出任意盈利的——他們的投資所賺到的“回報(bào)”數(shù)額之內(nèi)。然而,卻變成了黑客歷史上最大的后門。還不如在被我們比作逃生艙的DAO分割函數(shù)里就不支付回報(bào)呢。在延奇對(duì)該漏洞一無所知的時(shí)候做出的另一個(gè)決定,也顯示出了代碼的古怪無情程度?!暗?66行的大寫字母‘T’是個(gè)小寫的‘t’,黑客事件也就不會(huì)發(fā)生了。”延奇悔不當(dāng)初,但堅(jiān)稱,沒人注意到666-667行中的特定問題(其他觀察者曾指出別的代碼行中的錯(cuò)誤,不僅僅是這里)?!凹幢阌懈嗟娜藢彶檫^,情況也沒什么不同。如果你不知道安全審計(jì)應(yīng)該查看哪里,你也是不會(huì)找到漏洞的?!鄙踔琳页隽寺┒吹墓哦?,也選擇了放過。他說:“我還是錯(cuò)過了。”格林至今對(duì)古恩頗有情緒?!拔艺娴暮芑鸫?。他開始吹噓他是怎么找到漏洞的。但不告訴任何人他找到的東西就太不負(fù)責(zé)了?!辈贿^,格林還是很尊敬古恩的,稱他們此后做出了補(bǔ)救。十、共生共存當(dāng)被請(qǐng)求重述去年6月他在病床上的那個(gè)晚上發(fā)生的事時(shí),古恩說:“我當(dāng)時(shí)覺得可能有點(diǎn)問題。”但他咨詢了自己的研究生戴安。戴安說這漏洞不會(huì)被利用。古恩承認(rèn),但凡他確認(rèn)了風(fēng)險(xiǎn),他都會(huì)告訴世人的。戴安在攻擊當(dāng)晚發(fā)布的博客中解釋了DAO劫案的機(jī)制,并在致謝中向古恩喊話:“古恩,我們是如此接近真相——很遺憾接近得還不夠?!敝劣诠粽?無論是他或她還是他們)和經(jīng)典以太坊,古恩稱:“很好,很不錯(cuò),他應(yīng)該套現(xiàn)。”硬分叉證明了,不僅DAO需要修復(fù),以太坊區(qū)塊鏈本身也需要?!跋到y(tǒng)層面就存在有錯(cuò)誤。”但是,對(duì)智慧合約和以太坊區(qū)塊鏈太過聰明的恐懼,也僅在DAO攻擊之后一段時(shí)間里甚囂塵上,現(xiàn)在已經(jīng)平息消散了。至少,從以太幣的價(jià)格來看,這是市場(chǎng)做出的裁決。攻擊之后,以太幣在9個(gè)月間價(jià)格穩(wěn)定在10-12美元之間。然后,3月份迎來了猛漲,到6月12日,交易價(jià)格已升至341.19美元。(DAO因此價(jià)值41億美元。)經(jīng)典以太坊也隨之增長(zhǎng),如今交易價(jià)格是18.71美元。換句話說,兩個(gè)版本的以太幣都存活得好好的。竊賊掌控其中一個(gè),修正派握有另一個(gè)。展望未來,選擇在于:你信哪個(gè)?由于硬分叉,攻擊者拐走了他的經(jīng)典以太坊。這意味著,如果沒被賣掉的話,他相當(dāng)于卷走了6740萬(wàn)美元。真不算少了。