亚洲h色精品,亚洲精品久久久久,欧美激情一二三区,成人影院入口

學術咨詢服務,正當時......期刊天空網是可靠的職稱工作業績成果學術咨詢服務平臺!!!

區塊鏈智能合約安全研究

發布時間:2020-01-19所屬分類:科技論文瀏覽:1

摘 要: 摘要區塊鏈是通過去中心化、去信任化的方式維護的分布式賬本,其發展可以劃分為3個階段:區塊鏈1.0,2.0和3.0.區塊鏈1.0以比特幣為代表,提供了非圖靈完備的腳本語言;區塊鏈2.0以以太坊為代表,在比特幣的基礎上引入了智能合約的概念,提供了圖靈完備的可編

  摘要區塊鏈是通過去中心化、去信任化的方式維護的分布式賬本,其發展可以劃分為3個階段:區塊鏈1.0,2.0和3.0.區塊鏈1.0以比特幣為代表,提供了非圖靈完備的腳本語言;區塊鏈2.0以以太坊為代表,在比特幣的基礎上引入了智能合約的概念,提供了圖靈完備的可編程語言Solidity,使得區塊鏈的應用范圍從單純的貨幣領域拓展到其他領域;區塊鏈3.0將會是可編程世界,社會各行各業都以自治的方式運轉.智能合約作為區塊鏈2.0最為顯著的特點,在構建去中心化應用中發揮了重要的作用.但近年來,智能合約安全事件頻發,給項目方和投資方帶來了巨大損失,智能合約的安全問題逐漸引來多方的關注.首先介紹了區塊鏈的基本概念,接著闡述了以太坊相關知識,然后對智能合約作了全面的介紹,包括運行環境、構成、部署流程和工作原理.主體對現存已知的智能合約漏洞進行分類總結,并且對每一類漏洞都給出解決方法.

區塊鏈智能合約安全研究

  關鍵詞區塊鏈;以太坊;智能合約;安全;漏洞

  區塊鏈是隨著比特幣等數字加密貨幣的日益普及而逐漸興起的一種全新的去中心化基礎架構與分布式計算范式[1],它運用鏈式數據結構、分布式共識算法、時間戳、數據加密等多項核心技術構建了一個無需信任、去中心化的分布式賬本系統,解決了傳統中心化系統成本高、效率低、數據存儲過于集中容易造成單點故障等問題.近年來,區塊鏈技術研究呈現爆發的態勢,被認為是繼大型機、個人電腦、互聯網、移動?社交網絡之后計算范式的第5次顛覆式創新,是人類信用進化史上繼血親信用、貴金屬信用、央行紙幣信用之后的第4個里程碑[2].

  比特幣系統是區塊鏈技術首次成功應用的案例,它的出現標志著第1個點對點數字貨幣支付系統的誕生[3],但它的功能較為單一,限制了它在其他領域的應用.以太坊的出現彌補了比特幣系統的短板,它創造性地引入了智能合約的概念,結合底層可信的運行環境,可以很方便地構建去中心化應用,拓展了區塊鏈的應用范圍[4].

  智能合約的概念由跨領域專家Szabo[5]于1994年提出,它是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議.由于沒有可信的運行環境,一直沒有得到廣泛的關注和研究,直到以太坊的出現,智能合約重新進入到公眾的視野[6].

  區塊鏈不可篡改的特性使得智能合約一旦部署便無法更改,即使智能合約本身存在漏洞,加之智能合約本身承載著巨大的經濟價值,愈發成為黑客的攻擊目標.基于區塊鏈加密數字貨幣引發的安全問題來源于區塊鏈自身機制安全、生態安全和使用者3個方面.在區塊鏈自身機制安全方面,智能合約的安全性至關重要[7].據統計,當前全球Top100市值的虛擬幣中,92%都是基于以太坊開發的.有數據顯示,89%的智能合約皆存在安全漏洞,保守估計因智能合約漏洞所造成的損失已超過20億美元[8].

  1區塊鏈基本概念

  1.1區塊鏈定義

  區塊鏈是比特幣系統的底層支撐技術,它的概念是隨著中本聰在2008年在論壇上發表的一篇名為“Bitcoin:Apeer-to-peerelectroniccashsystem”而誕生的.從數據的角度來看,它是一種區塊加鏈的鏈式數據結構,并由所有節點存儲的分布式賬本[9];從協議的角度來看它可以作為價值互聯網的底層協議;從技術的角度來看它是多種成熟技術的融合體,而非新興的技術[10].

  1.2區塊結構

  圖1區塊結構不同的區塊鏈區塊結構可能會有些許差異,但大致相同.拿比特幣來說,每個區塊由區塊頭和區塊體2個部分組成,區塊頭存放了父區塊頭的哈希值、版本號、時間戳、隨機數、目標哈希、Merkle根等信息[11],區塊體則包含了區塊創建過程中所發生的交易記錄,如圖1所示:

  1.3區塊鏈架構分層

  區塊鏈架構分層如圖2所示.一般來說,區塊鏈架構主要分為6層,分別為數據層、網絡層、共識層、激勵層、合約層和應用層[12],數據層存儲了區塊數據及其鏈式數據結構,時間戳、哈希函數、Merkle樹、非對稱加密作為支撐技術來保證數據的不可篡改性和歷史可查性;網絡層由P2P分布式網絡支撐,完成節點之間數據傳播和交易驗證的任務[13];共識層由一些共識算法構成,目的在于使分布式節點在數據一致性上達成共識;激勵層作為共識層的衍生層,通過發行機制和分配機制等經濟激勵措施來輔助節點之間達成共識;合約層是腳本代碼、算法機制和智能合約的聚集地,構成了區塊鏈可編程的基礎[14];應用層則包含了區塊鏈技術的各種應用場景.

  1.3.1數據層

  每隔一段時間全網都會選取一個節點來對交易進行打包,并通過在區塊頭中包含父區塊頭的哈希值與父區塊鏈接起來,這意味著如果想要修改某個區塊上的內容,那么必須得重新計算之后的所有區塊,并且要趕上主鏈產生區塊的速度,理論上來說這是很難完成的,除非擁有全網51%的算力,否則無法修改區塊數據.鏈式的數據結構不僅保證了數據的完整性,而且也可以快速復現歷史交易數據.

  1.3.2網絡層

  采用分布式P2P網絡進行組網,網絡中的每個節點的地位都是平等的,不存在任何特殊節點,節點之間可以直接進行價值轉移并且可以自由進出,每個節點都具有路由發現、廣播交易、廣播區塊、發現新節點等功能[15].節點會時刻監聽網絡上的動態,一旦收到鄰居節點發送過來的區塊信息或者交易信息,會對其有效性進行驗證,驗證通過的區塊會被鏈接到本地區塊鏈,而交易則被加入到各節點所維護的交易池.

  1.3.3共識層

  系統分散程度越高達成共識的時間越長,效率越低.比特幣和以太坊都采用極度依賴算力的工作量證明(PoW)共識算法來高效地對數據一致性達成共識[16].節點通過解決一道復雜但驗證起來非常簡單的數學難題來競爭區塊記賬權,最快獲得題解的節點將獲得打包區塊的權利和相應的獎勵,解題的過程是從0開始不斷地遞增隨機數,直到找到一個合適的隨機數,使得與區塊頭部的雙哈希值小于目標哈希值.

  1.3.4激勵層

  在共識階段,最快找到題解的節點可以獲取相應的獎勵,通過這樣的經濟激勵措施來吸引更多的節點加入到挖礦中來,從而可以有效地提高區塊鏈的安全性和穩定性.隨著挖礦節點和難度的增加,一些節點會選擇加入礦池,通過貢獻自己的算力從而獲得相應比例的獎勵.

  1.3.5合約層

  如果說數據層、網絡層、共識層構成區塊鏈的底層基礎設施,那么合約層就是建構在其上的邏輯代碼和算法,它是實現區塊鏈可編程性和操作數據的基礎.

  1.3.6應用層

  應用層主要包含基于區塊鏈的各種應用場景,囊括了可編程貨幣、可編程金融、可編程社會[17]的方方面面.

  1.4區塊鏈核心技術

  區塊鏈通過對多種成熟的技術進行整合,形成了一種前所未有的數據存儲方式,主要包括非對稱加密算法、SHA256算法、P2P網絡、時間戳、Merkle樹等.

  1.4.1非對稱加密算法

  加密和解密的過程需要2種類型的密鑰,分別為公鑰和私鑰,缺一不可.私鑰是通過調用底層操作系統隨機數生成器生成的[18],長度為256b,公鑰則是經過橢圓曲線加密算法和一系列的哈希函數生成的.在加密信息的過程中既可以選擇公鑰也可以選擇私鑰,如果用公鑰對信息加密,那么相應地就要用私鑰對其進行解密,反之也一樣,也就是說加密和解密不是使用相同的密鑰.與對稱加密算法相比提高了安全性,但同時也降低了加解密的效率.

  1.4.2SHA256算法

  在區塊鏈中到處都可以看到SHA256算法的身影:區塊鏈中并沒有對原始的交易數據進行存儲,而是對其經過SHA256算法運算后得到固定長度的交易數據指紋再進行存儲[19];在共識的過程中,SHA256被用作尋找題解的工具;區塊頭指紋、公鑰和Merkle樹的形成也離不開SHA256算法的參與.SHA256算法具有輸出長度固定、單向性、定時性、抗碰撞性等特點.

  1.4.3P2P網絡協議

  P2P網絡是一個無中心化服務器管理的分布式網絡,網絡中的每個節點既充當客戶端獲取其他節點提供的服務也作為服務器對外提供服務.P2P網絡協議有很多,比特幣網絡采用了無結構的gossip協議,而以太坊則采用了結構化的Kademlia協議.

  1.4.4時間戳

  每一個區塊在被加入到區塊鏈之前都要在區塊頭處加蓋時間戳,標識該區塊產生的時間,作為區塊存在性證明的一部分,時間戳使得區塊鏈具有時序性、不可篡改性、不可偽造性.

  1.4.5Merkle樹

  Merkle樹是二叉樹結構,葉子節點存儲了交易數據指紋,非葉子節點存儲的是相鄰的2個孩子節點拼接后的哈希值,最終我們可以得到一個根哈希.采用這種數據結構來存儲交易數據無需下載整棵樹,就可以很方便快捷地對某一塊數據完整性進行驗證,這為輕節點(SPV)提供了技術保障.

  1.5區塊鏈工作流程

  不管是對于比特幣系統還是以太坊系統,主要的功能或者說工作流程都是圍繞著交易展開的,只不過以太坊系統不僅包括普通的轉賬交易,還包括特殊的合約呼叫交易.一般來說,區塊鏈的工作流程分為以下6個步驟:交易生成、交易廣播、驗證交易、競爭記賬權、廣播區塊、寫入區塊鏈.如圖3所示:

  ①交易生成.交易發起者用自己的私鑰交易信息進行簽名.

  ②交易廣播.將含有簽名的交易信息向全網進行廣播,確保大部分節點收到該交易信息.

 、垓炞C交易.節點對交易的有效性進行驗證,包括簽名是否由交易發起者本人簽署、賬戶余額是否足夠來發起這筆交易等,驗證通過的交易會被節點放入交易池,等待打包入塊.

 、芨偁幱涃~權.節點通過解一道哈希數學難題來競爭記賬權,首先獲得題解的節點負責將一段時間內所形成的交易打包進區塊.

 、輳V播區塊.節點將打包好的區塊向全網進行廣播,通知其他節點已經找到哈希數學難題的題解.

 、迣懭雲^塊鏈.當節點挖出合法的區塊時,直接將區塊鏈接到本地區塊鏈副本;當節點收到其他節點傳遞過來的區塊時,首先會對區塊的有效性進行檢驗,包括驗證題解是否正確、每筆交易是否有效等,然后再將區塊鏈接到本地區塊鏈副本.

  1.6區塊鏈特點

  區塊鏈具有去中心化、去信任化、可追溯性、集體維護性、安全性、開放性、匿名性、可編程性等特點.

  1)去中心化.整個區塊鏈網絡不存在任何的中心化機構,互不信任的雙方無需協調便可以安全地進行交易,省去了很多傳統中心化結構的中介成本.

  2)去信任化.區塊鏈通過利用數學為信任進行背書,從傳統的對人的信任轉變為對數學嚴謹邏輯的信任,大大減少了失信的行為.

  3)可追溯性.區塊鏈包含了從創世區塊到現在所有的交易記錄,并且每一個區塊的區塊頭都被打上了時間戳,這意味著任何時間的任何一筆交易都能被查詢到.

  4)集體維護性.區塊鏈網絡中的每個節點都維護了一份完整的區塊鏈數據副本,使得區塊鏈系統具有很強的容錯能力,不會因為單點故障而造成大范圍的影響.

  5)安全性.區塊鏈的鏈式數據結構保證了數據的不可篡改;非對稱加密技術使得數據可以在不安全的網絡中進行安全的傳輸;基于PoW的共識算法使得篡改數據的成本非常之高,可以有效抵御外部攻擊.

  6)開放性.區塊鏈數據是公開透明的,任何人都可以查詢到相關的數據.

  7)匿名性.區塊鏈上的數據雖然是公開透明的,但是沒有和現實中的人綁定起來,所有的交易都是在匿名下進行的.

  8)可編程性.通過腳本或智能合約可以在鏈上構建去中心化應用.

  2以太坊初探

  2.1什么是以太坊

  和比特幣系統一樣,以太坊將區塊鏈作為其運行的底層支撐技術,從某種意義來說,它本質上也是一個去中心化的分布式賬本,但它不單單是一個去中心化的貨幣發行和交易系統[20],以太坊通過提供一門圖靈完備的編程語言,使得任何人可以很方便地在鏈上構建去中心化的應用,從而大大拓展了區塊鏈的應用范圍.

  2.2以太坊基本概念

  2.2.1賬戶

  以太坊中包含2種類型的賬戶,分別為普通賬戶和合約賬戶,它們都由20B的地址所唯一標識,普通賬戶由私鑰控制,合約賬戶由代碼控制,每個賬戶都包含以下4個字段:

  1)nonce.限制每個交易僅被處理1次.

  2)balance.賬戶余額.

  3)codeHash.對于普通賬戶來說該字段為空,而對于合約賬戶來說該字段保存的是合約代碼的哈希值.

  4)storageRoot.以太坊采用梅克爾帕特里夏樹來組織和管理賬戶的狀態信息,并按照一定的規則生成樹的根哈希值存儲在此.

  2.2.2ether

  ether是以太坊系統中流通的電子貨幣,礦工挖礦所獲得的獎勵以及執行交易需要耗費的gas都是用ether來計量的,最小的單位為wei,1ether=1018wei.

  2.2.3叔區塊

  以太坊的出塊速度相對于比特幣系統來說更快,平均為12s出1個塊,出塊速率的提高意味著區塊鏈分叉會時常發生,導致大量的孤兒區塊出現,這些孤兒區塊并不會因為沒有價值而被丟棄,礦工可以通過在區塊中引用孤兒區塊獲取額外的獎勵.

  2.2.4gas

  交易執行的每一步都需要耗費一定量的gas,用于支付礦工在執行這些交易時所消耗的系統資源,gas是交易復雜度的衡量標準,交易越復雜需要耗費的gas就越多.gas機制的引入可以有效地防止因無限循環導致以太坊網絡癱瘓的情形.

  2.2.5交易

  以太坊系統是交易驅動的狀態機,交易是狀態發生轉移的必要條件,交易經全網節點確認并執行后打包進區塊,相應的以太坊的全局狀態也由上一個狀態轉變為下一個新的狀態.在以太坊中主要有3種類型的交易,分別為普通轉賬交易、合約創建交易、函數調用交易,它們都由以下字段所構成:

  1)nonce.交易計數器,用于預防重放攻擊.

  2)gasPrice.交易發送者愿意為每單位gas支付多少wei.3)gasLimit.交易所能耗費的gas最大上限.

  4)to.交易接收方的地址,如果為空,則為合約創建交易.

  5)value.交易附帶的ether,可以為0.

  6)data.經過RLP編碼的數據,依不同的交易類型而不同,對于普通轉賬交易該字段為空,對于合約創建交易,此處存儲的是需要部署的合約代碼,對于函數調用交易,此處存儲的是函數簽名和需要傳入的參數.

  7)signature.交易發送者的簽名信息,用于驗證身份真偽.

  相關期刊推薦:《信息安全與技術》雜志是我國信息安全和信息技術領域集學術性、技術性、專業性和權威性為一體的國家級月刊,面向中國信息安全與技術領域,展現學術水平和專業技術成果,創建中國信息安全與技術領域第一交流平臺,以期提高我國信息安全和信息技術的突破。將為工程技術人員提供中、高級職稱評定,為項目申請作證明依據,體現用戶單位管理及技術人員的應用成果,發表科研院所研究人員的研究成果、IT企業的技術突破、工程人員的實施經驗總結,以及有關單位管理經驗的實施性總結。

最新分區查詢入口

SCISSCIAHCI

主站蜘蛛池模板: 蓬莱市| 呼玛县| 霍林郭勒市| 平南县| 红河县| 广水市| 山阴县| 德格县| 八宿县| 德令哈市| 翼城县| 芦溪县| 乌恰县| 五峰| 武陟县| 乌什县| 遂平县| 富宁县| 海城市| 晋江市| 乐昌市| 任丘市| 张掖市| 开阳县| 炉霍县| 随州市| 沁源县| 延安市| 芜湖市| 永修县| 南平市| 鄂托克前旗| 内黄县| 祁门县| 芒康县| 峨眉山市| 迭部县| 保德县| 博客| 揭东县| 封丘县|