產(chǎn)業(yè)觀察 | 以太坊智能合約被爆有巨大漏洞考杉,新技術(shù)落地恐怕要“遲到”

來源: DeepTech深科技? (今日頭條)

對區(qū)塊鏈技術(shù)稍有了解的人都知道,區(qū)塊鏈存在的基礎(chǔ)是系統(tǒng)中參與交易的所有人要對數(shù)字資產(chǎn)的歸屬達成共識揭斧。而從整體上看莱革,區(qū)塊鏈則是一種將系統(tǒng)內(nèi)交易進行編碼的可附加賬本,除了要達成數(shù)字資產(chǎn)歸屬權(quán)共識外讹开,基于區(qū)塊鏈技術(shù)的任何應(yīng)用要生效盅视,還要滿足很重要的兩點,一是每次交易必須有效旦万,二是過往交易歷史不能篡改闹击。

然而,要保證交易有效成艘,就必須遵循某一事先約定的規(guī)則∩桶耄現(xiàn)實世界中,各類交易都有相關(guān)的法律條款甲乙約束淆两。而在計算機世界里断箫,正如美國著名學(xué)者勞倫斯·萊斯格當年所提出的“代碼即規(guī)則”(code is law)——一旦代碼被編寫出來并開始執(zhí)行,就永遠不能回收了秋冰。這多少能解釋區(qū)塊鏈在某些具體應(yīng)用場景下面臨的情況仲义。

以比特幣客戶端為例,目前該客戶端擁有約 3 萬行代碼,而目前的工業(yè)標準允許每一百行代碼中存在一個 bug埃撵。理論上說赵颅,哪怕比特幣客戶端存在 300 個 bug 也是符合行業(yè)規(guī)則的。但事實并非如此暂刘,2010 年 8 月那個利用整數(shù)溢出漏洞憑空創(chuàng)造出 1840 億個比特幣的黑客(比特幣設(shè)計之初的限額僅為 2100 萬個)饺谬,差點就徹底毀滅了比特幣。

所以鸳惯,在區(qū)塊鏈技術(shù)中商蕴,由于缺乏統(tǒng)一的外部技術(shù)說明文檔,“代碼即規(guī)則”往往會失效芝发,甚至被認為有史以來最安全的以太坊架構(gòu),也面臨同樣的問題苛谷。

以太坊雖然僅僅誕生了四年辅鲸,但是隨著人們越來越多地了解區(qū)塊鏈技術(shù),以太坊的熱度逐漸增加腹殿。甚至在 2017 年時独悴,以太坊被認為是區(qū)塊鏈 2.0 時代最重要的底層開源系統(tǒng)。然而锣尉,最新的研究顯示刻炒,基于以太坊架構(gòu),被稱作是“最安全自沧、最可靠坟奥、最方便”的智能合約技術(shù)卻漏洞百出。

最新研究揭露智能合約存在巨大漏洞

眾所周知拇厢,智能合約被存放于以太坊的區(qū)塊鏈上爱谁。但這也就意味著,一旦區(qū)塊鏈發(fā)生問題孝偎,智能合約所涉及的交易信息也會受到牽連访敌。區(qū)塊鏈本質(zhì)上是一個共享賬本,它使用密碼技術(shù)以及計算機網(wǎng)絡(luò)來確保交易信息不會出差錯衣盾。

然而寺旺,在執(zhí)行智能合約的過程中,如果賬戶是 NULL(即沒有賬戶)势决,那么智能合約則會為此次交易創(chuàng)建一個賬戶阻塑,并將合約寫到該項目下。虛擬機則通過執(zhí)行合約中的二進制字節(jié)碼實現(xiàn)合約的執(zhí)行徽龟。也就是說叮姑,智能合約可以被用來創(chuàng)建加密貨幣。比如火幣網(wǎng)的 HT,就是用以太坊智能合約創(chuàng)建的。

然而,在倫敦大學(xué)學(xué)院(University College London,UCL)計算機科學(xué)系副教授伊利亞·謝爾蓋最新的研究論文《Finding The Greedy , Prodigal , and Suicidal Contractsat Scale》中功戚,通過對將近 100 萬份智能合約進行每份合約 10 秒分析時間的分析后發(fā)現(xiàn)氢架,這其中有 34200 份智能合約很容易受到黑客攻擊。同時他們又對 3759 份智能合約抽樣調(diào)查似将,在這之中,3686 份智能合約有 89% 的概率含有漏洞。

論文下載地址:https://arxiv.org/pdf/1802.06038.pdf

此外狂秘,研究也證明,以太坊的 Parity 錢包漏洞使得用戶電子財產(chǎn)會鎖死在以太坊躯肌,全以太坊被鎖死的財產(chǎn)總額已經(jīng)達到 2 億美元者春。事實上,在 2017 年 11 月時就有媒體爆料清女,因為一些以太坊智能合約使用者的誤操作钱烟,導(dǎo)致了 3 億美元永久被凍結(jié)在以太坊之中。

研究人員發(fā)現(xiàn)嫡丙,這些漏洞分別為:

浪子合約交易資金因為漏洞返還給所有者拴袭、交易者過去發(fā)送給以太網(wǎng)的地址,以及特定地址曙博。這種漏洞就像是空手套白狼拥刻,買家得到商品,而賣家無法得到加密貨幣父泳。

自殺合約智能合約的擁有者可以在以太坊發(fā)生故障時選擇退回般哼,類似于微信中的撤回選項。但是這個指令也可以被其他人執(zhí)行尘吗,使得交易失敗逝她。

貪婪合約這是指那些永遠停留在以太坊的智能合約,上述的 Parity 漏洞正是一種貪婪合約睬捶,它會把智能合約所涉及的商品以及加密貨幣鎖定在以太坊中黔宛,交易雙方均無法得到,也不能取消擒贸。

遺囑合約在那些已完成或者被關(guān)閉的智能合約中臀晃,雖然他們的代碼和全局變量被清楚了,但是其中一部分仍然在繼續(xù)執(zhí)行介劫。遺囑合約和貪婪合約一樣徽惋,均是由以太坊的錯誤引起,目前并不能被黑客利用座韵。

圖丨 MAIAN 工具

這四種漏洞是最具代表性的险绘,不過他們并不是以太坊智能合約的全部漏洞踢京。研究人員們雖然通過自制的 MAIAN 工具檢測出了包含這四種漏洞的智能合約,然而他們并沒有找到解決方案宦棺。

那么這樣看來瓣距,即使傳統(tǒng)金融交易模式比智能合約要麻煩,但是它能最大程度地避免漏洞代咸,使得交易更加安全可靠蹈丸。

什么是智能合約?

接著呐芥,DT 君給各位讀者做個科普逻杖。以太坊是一個基于公鏈的分布式計算平臺,同時思瘟,它還提供了一個去中心化的虛擬主機荸百。以太坊一共分為五層:

數(shù)據(jù)層層如其名,數(shù)據(jù)層包含了以太坊中最基本的數(shù)據(jù)結(jié)構(gòu)以及賬戶加密算法潮太,而該層也是以太坊的基礎(chǔ)組成部分管搪。

網(wǎng)絡(luò)層用于校驗以太坊中各個節(jié)點數(shù)據(jù)傳輸。

共識層用于保存基于作量的共識機制铡买。

激勵層用于保存激勵機制,主要負責激勵節(jié)點自主挖礦霎箍,維持以太坊運行奇钞。

合約層以太坊獨有結(jié)構(gòu),是一臺封裝了可以執(zhí)行圖靈完備腳本語言的虛擬機漂坏,可以通過編寫腳本語言作為智能合約部署到以太坊區(qū)塊鏈中景埃,以此實現(xiàn)應(yīng)用的去中心化。

智能合約則是一種編碼顶别,在合約層有著可以自動運行的業(yè)務(wù)邏輯谷徙,并依靠以太坊的虛擬機而運行。智能合約代碼基于堆棧的字節(jié)碼低級語言驯绎,每一種字節(jié)代表著不同的操作完慧。通常來講,代碼的執(zhí)行過程中是無限循環(huán)的剩失,只有代碼完成執(zhí)行屈尼、中斷指令等才能停止其工作。

圖丨去中心化架構(gòu)

以太坊虛擬機是執(zhí)行交易代碼的引擎拴孤,這也是以太坊區(qū)塊鏈和其他區(qū)塊鏈最大的不同之處脾歧。它并不是像沙盒一樣完全獨立的,這意味著智能合約代碼在虛擬機中運行時演熟,不需要網(wǎng)絡(luò)和文件系統(tǒng)鞭执。

另外,在智能合約的執(zhí)行過程中,合約賬戶的作用也非常關(guān)鍵兄纺。該賬戶的地址取決于合約建立的時間大溜,當以太坊虛擬機運行時,賬戶的計算狀態(tài)可以通過 block_state囤热、transaction 等元組來定義猎提。通過程序執(zhí)行時對元組數(shù)據(jù)的修改(block_state 包含所有賬戶的全局信息),從而實現(xiàn)智能合約的執(zhí)行過程旁蔼。

從應(yīng)用方面來講锨苏,智能合約是一項能夠改善傳統(tǒng)金融模式的技術(shù),它通過上述的網(wǎng)絡(luò)架構(gòu)以及虛擬電子貨幣簡化了價值轉(zhuǎn)移的過程棺聊。大概可以被理解為三步:

1伞租、A 向區(qū)塊鏈發(fā)送一條信息,并在信息中定義了一筆交易限佩;

2葵诈、B 通過網(wǎng)絡(luò)廣播接受該交易信息;

3.祟同、區(qū)塊鏈網(wǎng)絡(luò)驗證作喘,完成交易。

也就是說晕城,智能合約和“把大象裝進冰箱”的原理差不多泞坦。在傳統(tǒng)金融模式中,交易雙方都需要通過監(jiān)管中心砖顷,而智能合約則可以利用區(qū)塊鏈的分布式賬本來跳過金融監(jiān)管贰锁,以達到便捷交易的目的,這也是所謂的“去中心化”滤蝠。

在以太坊中豌熄,智能合約由二進制字節(jié)碼組成,其使用的編程語言為 Solidity物咳。以太坊將智能合約編譯后锣险,存儲于區(qū)塊鏈中,從而實現(xiàn)了上述的信息中定義交易所森。

智能合約能否實現(xiàn)囱持?

實際上,以太坊也在日益進步焕济。想要開發(fā)一個完善的智能合約纷妆,還需要時間磨礪。

以太坊去中心化的核心是其可以運行圖靈完備的腳本語言晴弃,而開發(fā)以太坊智能合約則有四種語言:Serpent掩幢、Solidity逊拍、Mutan、LLL际邻。這些語言都是面向底層設(shè)計的語言芯丧。目前來看,Solidity 是首選語言世曾,這是由于它內(nèi)置了 Serpent 語言的所有特性缨恒,語法類則似于使用廣泛的 JavaScript。再加上 Solidity 的語言特性較少轮听,該語言則可以更簡單地實現(xiàn)完備的智能合約體系骗露。

區(qū)塊鏈去中心化的應(yīng)用程序通常為 DApp,它由智能合約和后端代碼構(gòu)成血巍。在 DApp 中萧锉,所有的服務(wù)和邏輯都運行于區(qū)塊鏈上,也就意味著 DApp 不僅需要設(shè)計前端應(yīng)用述寡,還要開發(fā)基于以太坊的智能合約代碼柿隙。

圖丨 DApp 與智能合約的關(guān)系

這些智能合約代碼以 JsonPRC 的方式提供給應(yīng)用程序進行調(diào)用,而此時鲫凶,智能合約就如以太坊中的轉(zhuǎn)賬操作一樣禀崖,被廣播到所有節(jié)點上,通知這些節(jié)點運行被調(diào)用的智能合約 ABI螟炫,然后這些被調(diào)用的 ABI 會各自運行在該節(jié)點的虛擬機中帆焕。最后通過區(qū)塊鏈的生成將運行過程和結(jié)果打包進區(qū)塊鏈,并通過區(qū)塊鏈的同步實現(xiàn)全網(wǎng)統(tǒng)一不恭。

換句話說,要想實現(xiàn)沒有漏洞的智能合約财饥,開發(fā)步驟則是關(guān)鍵所在换吧。截止至 2018 年 3 月 4 日,開源社區(qū)中比較流行的 DApp 開發(fā)工具是 browser-solidity钥星。聽名字就知道是一款基于瀏覽器的工具沾瓦,用戶可以在線編寫智能合約代碼,同時還能編譯成二進制字節(jié)碼部署到用戶所屬的區(qū)塊鏈中谦炒。

圖丨browser-solidity開發(fā)界面

目前贯莺, Solidity 的版本是 0.4.21,看版本號就知道還處于測試階段宁改。這也就意味著其開發(fā)工具 browser-solidity 也存在不成熟的地方缕探,導(dǎo)致 DApp 出現(xiàn)漏洞,最終影響了智能合約还蹲。不過 Solidity 的更新速度并沒有資本追逐區(qū)塊鏈的速度快爹耗,若過早將智能合約投入使用耙考,勢必會造成大量的經(jīng)濟損失。

另外潭兽,區(qū)塊鏈存在問題的不只是合約層倦始。以共識層為例,以太坊采用的是 PoW 共識機制山卦,需要進行大量的哈希運算才能確保全網(wǎng)共識鞋邑。它會造成算力浪費,并且在聯(lián)盟鏈中账蓉,該機制的可信程度也不怎么高枚碗。

如果真有一天區(qū)塊鏈可以被應(yīng)用于現(xiàn)實中,那么它需要的不是化妝剔猿,而是整容视译。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市归敬,隨后出現(xiàn)的幾起案子酷含,更是在濱河造成了極大的恐慌,老刑警劉巖汪茧,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椅亚,死亡現(xiàn)場離奇詭異,居然都是意外死亡舱污,警方通過查閱死者的電腦和手機呀舔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扩灯,“玉大人媚赖,你說我怎么就攤上這事≈椴澹” “怎么了惧磺?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捻撑。 經(jīng)常有香客問我磨隘,道長,這世上最難降的妖魔是什么顾患? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任番捂,我火速辦了婚禮,結(jié)果婚禮上江解,老公的妹妹穿的比我還像新娘设预。我一直安慰自己,他們只是感情好膘流,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布絮缅。 她就那樣靜靜地躺著鲁沥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耕魄。 梳的紋絲不亂的頭發(fā)上画恰,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音吸奴,去河邊找鬼允扇。 笑死,一個胖子當著我的面吹牛则奥,可吹牛的內(nèi)容都是我干的考润。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼读处,長吁一口氣:“原來是場噩夢啊……” “哼糊治!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罚舱,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤井辜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后管闷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粥脚,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年包个,在試婚紗的時候發(fā)現(xiàn)自己被綠了刷允。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡碧囊,死狀恐怖树灶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糯而,我是刑警寧澤破托,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站歧蒋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏州既。R本人自食惡果不足惜谜洽,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吴叶。 院中可真熱鬧阐虚,春花似錦、人聲如沸蚌卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咸灿,卻和暖如春构订,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背避矢。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工悼瘾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人审胸。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓亥宿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親砂沛。 傳聞我的和親對象是個殘疾皇子烫扼,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容