亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于網絡度量元的Solidity智能合約缺陷預測

        2023-02-21 14:57:37李顯偉潘偉豐王家樂潘云袁成祥
        計算機應用研究 2023年12期

        李顯偉 潘偉豐 王家樂 潘云 袁成祥

        摘 要:針對現(xiàn)有智能合約缺陷預測方法未考慮合約代碼內部結構對缺陷產生的影響的不足,提出了一種基于網絡度量元的Solidity智能合約缺陷預測方法。首先,通過SolidityAntlr4工具構建Solidity智能合約的抽象語法樹(abstract syntax tree,AST);其次,根據抽象語法樹構建合約網絡,網絡中的節(jié)點代表函數(shù)和屬性,邊代表函數(shù)間的調用關系和函數(shù)對屬性的操作關系;然后,引入復雜網絡領域的知識,構建了一套針對Solidity智能合約的網絡度量元;最后,基于多種回歸模型和分類模型構建智能合約缺陷預測模型,進而比較不同類型的度量元在Solidity智能合約缺陷預測方面的性能。數(shù)據實驗表明,結合了網絡度量元的缺陷預測模型的預測性能比相應沒有結合網絡度量元的模型要好。

        關鍵詞:智能合約;軟件缺陷預測;網絡度量元集;Solidity;抽象語法樹

        中圖分類號:TP311?? 文獻標志碼:A?? 文章編號:1001-3695(2023)12-004-3545-06

        doi:10.19734/j.issn.10013695.2023.04.0174

        Defect prediction for Solidity smart contracts using network metrics

        Abstract:Existing smart contract defect prediction methods are not aware of the impact of the internal structure of contracts on defects prediction.To fill this gap,this paper proposed a novel Solidity smart contract defect prediction method based on a network metric suite.Firstly,it constructed the abstract syntax tree (AST) of the solidity smart contract by using the SolidityAntlr4 tool.Secondly,it built the contract network based on the AST,with nodes representing functions and attributes,and edges representing the functioncall relationship between functions and the operation relationship between functions and attributes.Then,it introduced the theory in the field of complex networks to build a network metric suite for Solidity smart contracts.Finally,it build smart contract defect prediction models based on multiple regression and classification models,and compared the performance of different metric in smart contract defect prediction.Comparative results show that defect prediction models combined with network metric suite outperform corresponding models without the network metric suite.

        Key words:smart contract;software defect prediction;network metrics suite;Solidity;abstract syntax tree

        0 引言

        1994年尼克·薩博提出了智能合約的概念[1],但由于沒有可信的執(zhí)行環(huán)境,使得智能合約并未得到廣泛的應用。隨著以太坊的出現(xiàn)和不斷發(fā)展,以太坊逐漸成為迄今為止最大的智能合約平臺。因此,智能合約的應用范圍越來越廣泛,各種應用也紛紛落地,但是合約的安全問題逐漸顯現(xiàn)并成為研究熱點。TheDAO攻擊[2]導致300多萬以太幣被盜,Parity錢包漏洞[3]導致用戶資產遭受嚴重損失,BEC智能合約的整數(shù)溢出漏洞[4]給交易市場帶來了沉重的打擊。因此,智能合約的安全是一個至關重要的研究問題。

        在傳統(tǒng)軟件的缺陷預測中,基于代碼特征的度量元包括面向對象程序的CK[5]度量元、Halstead復雜度度量元[6]、基于控制流復雜度的McCabe[7]度量元等。不同于基于代碼特征的度量元,軟件網絡將網絡理論和軟件工程相結合,并已經廣泛地應用于軟件系統(tǒng)的復雜性分析中[8]。基于軟件網絡特征的度量元關注于軟件系統(tǒng)內部的依賴關系以及信息流動,在一定程度上反映了軟件的缺陷傾向性。文獻[9,10]則利用基于網絡特征的度量元進行缺陷預測并取得了顯著的效果。

        目前,在智能合約缺陷預測方面的研究主要集中在基于缺陷合約的抽象語法樹相似性匹配和基于設計度量元的缺陷預測方法?;谠O計度量元的缺陷預測方法通過設計與缺陷相關的內在度量元,然后借助機器學習等方法來提前發(fā)現(xiàn)與鎖定缺陷模塊。楊慧文等人[11]類比于傳統(tǒng)面向對象軟件的度量元集的設計,提出了針對Solidity智能合約的SCSol度量元集。但是,該度量元集只考慮了智能合約的代碼特征,并沒有考慮合約的軟件網絡特征對缺陷產生的影響。因此,在智能合約的缺陷預測方面,基于軟件網絡特征的度量元設計成為一個可研究的重要方向。

        鑒于基于網絡特征的度量元在傳統(tǒng)軟件的缺陷預測方面發(fā)揮的顯著效果,本文構建了一套針對Solidity智能合約的網絡度量元集。通過收集大量缺陷Solidity智能合約,基于SolidityAntlr4構建智能合約的抽象語法樹。通過分析抽象語法樹,提取出合約中的函數(shù)調用和函數(shù)對狀態(tài)屬性操作的關系,最終構成合約函數(shù)調用及函數(shù)操作屬性的關系圖。利用生成的合約關系圖,計算網絡特征的度量元對應的網絡指標值,構建智能合約缺陷數(shù)據集并建立缺陷預測模型來驗證網絡度量元集的有效性。

        1 相關工作

        1.1 智能合約缺陷檢測

        智能合約缺陷檢測相關的研究目前主要集中在靜態(tài)分析、動態(tài)分析以及與機器學習和深度學習相結合的方向上。

        在靜態(tài)分析方面,Oyente[12,13]是最早關注到自動化合約漏洞挖掘的研究之一,它將需要分析的合約的字節(jié)碼和當前以太坊的全局狀態(tài)作為輸入,檢測合約是否存在安全問題。Securify[14,15]通過對字節(jié)碼的分析,并根據給定的特征分析合約語義信息是否滿足遵循或違背這些特征,判斷合約是否存在漏洞。不同于Security檢測工具的輸入,Slither[16]將Solidity編譯器生成的AST作為初始輸入,并生成內部表示語言SlithIR,最后根據SlithIR進行代碼分析。在準確性和性能以及魯棒性方面,Slither的表現(xiàn)均比Security優(yōu)秀。

        在動態(tài)分析方面,ContractFuzzer[17]實現(xiàn)了第一個用于檢測智能合約安全漏洞的模糊測試框架。相較于Oyente的符號執(zhí)行和ContractFuzzer的模糊測試技術,sFuzz[18]結合了這兩種互補的技術,并使用了一種高效的自適應策略使得fuzz更加高效,且達到了較高的代碼覆蓋率,可以發(fā)現(xiàn)更多漏洞。

        動態(tài)分析技術由于采用符號執(zhí)行或者模糊測試等技術,使得在漏洞檢測的過程中非常耗時。ContractWard[19]基于機器學習技術,在確保檢測準確性的前提下提高智能合約中漏洞檢測的效率,它能夠根據從訓練樣本中學到的漏洞來快速有效地檢測漏洞。Xu等人[20]利用Solidity智能合約和惡意合約的AST樹的共享節(jié)點來構建特征向量,并使用特征向量訓練模型,然后使用訓練好的模型進行智能合約的缺陷檢測。

        1.2 軟件缺陷預測技術

        軟件缺陷預測是在測試之前對軟件模塊進行缺陷的預測,從而可以更好地分配有限的測試資源。根據缺陷預測結果,對預測缺陷較多的模塊給予更多的關注。軟件缺陷預測過程包括收集缺陷數(shù)據、提取度量元、構建預測模型和評價指標。

        度量元是衡量缺陷外在表現(xiàn)的內在屬性,對缺陷預測性能有著重大的影響。Chidamber等人[5]提出了CK度量元,綜合考慮了面向對象程序中的繼承、耦合性和內聚性等特征。對于面向對象程序中的公有方法數(shù)、數(shù)據訪問、繼承方法比率等特征,Bansiya等人[21]提出了一套度量元集來反映這些特征。HendersonSellers[22]

        關注于方法的凝聚度,提出了LCOM3度量元。針對圈復雜度,McCabe[7]提出了最大圈復雜度Max_cc度量元和平均圈復雜度Avg_cc度量元。由于Solidity具有面向對象的特性,楊慧文等人類比于傳統(tǒng)面向對象軟件的度量元集的設計,提出了針對Solidity智能合約的SCSol度量元集。

        目前智能合約缺陷預測的研究并不充分,而且針對智能合約的缺陷預測數(shù)據集匱乏且不統(tǒng)一。相較于傳統(tǒng)的面向對象的程序,對于智能合約代碼的度量元構建的研究也相對較少。本文根據軟件缺陷預測理論和復雜網絡的知識,設計了一套針對Solidity智能合約的網絡度量元集,對Solidity智能合約的缺陷預測起到了積極的作用。

        2 基于網絡度量元的智能合約缺陷預測方法

        2.1 網絡度量元集設計

        軟件缺陷預測技術可以預測出可能含有缺陷的軟件模塊,使得開發(fā)人員更好地分配資源來重點關注這些可能含有缺陷的軟件模塊。但是預測有缺陷的軟件模塊,需要找到與缺陷有相關關聯(lián)的內在屬性,這些屬性就是度量元。度量元的設計對缺陷預測性能至關重要。Solidity智能合約的缺陷預測的現(xiàn)有度量元集是COOPSCSol[11],該度量元集考慮了Solidity語言面向對象的特點以及Solidity智能合約特有的屬性,但是對于合約內部函數(shù)調用關系以及函數(shù)操作屬性關系的復雜性并沒有過多關注。所以本文設計了針對Solidity智能合約內部函數(shù)調用以及函數(shù)操作屬性關系的網絡度量元集,如表1所示。

        2.2 網絡文件構建步驟

        本節(jié)將詳細地介紹從Solidity智能合約中提取網絡度量元信息的步驟。如圖1所示,首先收集Solidity智能合約源代碼文件,然后利用定制的Parser工具將Solidity智能合約解析成抽象語法樹。進一步地,根據抽象語法樹從中提取函數(shù)之間的調用關系以及函數(shù)對合約狀態(tài)變量操作的關系,從而形成Solidity智能合約的函數(shù)屬性關系圖。最后將每個合約的函數(shù)調用及操作屬性關系圖輸出為網絡文件,根據網絡文件計算每個合約的網絡度量指標值。

        2.3 構建函數(shù)屬性關系網絡圖

        2.3.1 解析合約

        Solidity是一門面向合約的、為實現(xiàn)智能合約而創(chuàng)建的高級編程語言。Solidity是靜態(tài)類型語言,支持繼承、庫和復雜的用戶定義類型等特性。算法1描述了一個簡單的Solidity智能合約。

        算法1 一個簡單的Solidity智能合約例子

        pragma solidity ^0.4.24;

        contract Example {

        using SafeMath for uint256;

        uint private allowance=3;

        function addAllowance(uint value) public{

        allowance.add(value);

        }

        }

        Antlr4是一款開源的語法分析器生成工具,能夠根據語法規(guī)則文件生成對應的語法分析器。利用Antlr4工具,可以使用Solidity語言的規(guī)則文件生成對應的Solidity Parser。Solidity智能合約的版本升級更新非常快,并且每個版本之間的差異性也比較大,針對Solidity語言的規(guī)則文件,也有很大不同。 為了準確提取出需要的信息,需要對Solidity語言的詞法文件和語法文件的規(guī)則進行修改,然后使用Antlr4工具生成對應的Solidity Parser和Listener以及Visitor等相關的Java文件,由此構造專屬的解析器。

        通過定制的解析器對算法1描述的Solidity智能合約代碼進行解析,可以得到整個代碼片段的抽象語法樹。其中addAllowance函數(shù)部分的抽象語法樹如圖2所示。

        2.3.2 提取Solidity智能合約網絡

        通過對Solidity智能合約的解析可以得到每個合約的抽象語法樹,但是通常一個合約文件源代碼包含多個智能合約的定義。本文的研究對象為合約粒度,所以針對Solidity智能合約源代碼文件中的每一個智能合約,都提取一個對應的網絡結構,如圖3所示。為了從抽象語法樹中獲取函數(shù)之間的調用關系和函數(shù)對狀態(tài)變量操作的關系,利用Java實現(xiàn)了一套提取工具。根據Antlr4工具生成的基礎Visitor訪問器和Listener監(jiān)聽器,實現(xiàn)了符合實驗需求的FunctionVisitor、StateVariableVisitor以及RelationListener。FunctionVisitor實現(xiàn)了對每一個智能合約中函數(shù)的收集,StateVariableVisitor則實現(xiàn)了對每一個智能合約狀態(tài)變量的收集。RelationListener是一個監(jiān)聽器,用于對于抽象語法樹中函數(shù)調用節(jié)點的監(jiān)聽以及狀態(tài)變量操作的監(jiān)聽,并記錄下對應的關系。

        在遍歷抽象語法樹的過程中,只需關注狀態(tài)變量節(jié)點和函數(shù)調用節(jié)點,例如圖3中StateVariableDeclaration節(jié)點和FunctionCall節(jié)點。整個遍歷過程只對狀態(tài)變量節(jié)點和調用節(jié)點進行統(tǒng)計和收集,并不涉及缺陷檢測方面的工作。因此,從智能合約抽象語法樹中提取函數(shù)之間的調用關系和函數(shù)對狀態(tài)變量操作的關系的過程是迅速的。

        算法2描述了從Solidity智能合約源代碼文件中提取函數(shù)之間的調用關系和函數(shù)對狀態(tài)變量操作的關系的大致流程。輸入為Solidity智能合約源代碼路徑,從路徑中讀取所有的Solidity智能合約源代碼文件。首先循環(huán)對每一個源代碼文件進行解析,F(xiàn)uncAndStateVisitor包含了FunctionVisitor和StateVariableVisitor,可以從抽象語法樹中提取合約代碼文件中的函數(shù)和狀態(tài)變量集合。然后再次對源代碼文件進行解析并利用算法3進行游走遍歷,記錄合約中的函數(shù)調用關系以及函數(shù)操作屬性的關系,最后并返回。

        算法2 構建Solidity智能合約的網絡文件

        輸入:Solidity智能合約源代碼的路徑。

        輸出:network files。

        獲取路徑path下的所有智能合約源代碼文件并存入集合F中

        初始化FuncAndStateVisitor和RelationListener/*前者用于統(tǒng)計合約方法和狀態(tài)變量;后者用于記錄游走抽象語法樹中的調用關系*/

        for f in F do

        解析合約源代碼文件,構建抽象語法樹

        通過抽象語法樹獲取合約的方法集合和狀態(tài)變量集合

        再次解析合約源代碼文件,構建抽象語法樹

        執(zhí)行算法3

        end for

        return RelationListener.relationCollection

        算法3主要統(tǒng)計合約中函數(shù)之間的調用關系和函數(shù)訪問屬性的關系。通過對傳入的抽象語法樹進行游走遍歷,對每一個關注的節(jié)點使用RelationListener進行監(jiān)聽,根據FuncAndStateVisitor提供的函數(shù)和狀態(tài)變量集合,記錄關注節(jié)點的調用關系。

        算法3 游走抽象語法樹

        輸入:RelationListener和抽象語法樹parseTree。

        for node in parseTree.children do

        relationListener.enterEveryRule(node)/*對符合規(guī)則的節(jié)點進行記錄,比如函數(shù)調用*/

        遞歸執(zhí)行算法3,傳入參數(shù)listener,node

        relationListener.exitEveryRule(node)

        end for

        例如,從數(shù)據集中選取了PlayCoinKey合約(合約地址為0x0f1f5b0aec864262aef8cbe1f89be64b7beb6a39),構建如圖4所示的函數(shù)屬性調用圖。其中黃色的節(jié)點表示函數(shù),褐色的節(jié)點表示合約的狀態(tài)變量(見電子版),邊表示調用關系,節(jié)點的大小表示被依賴的強度。

        2.3.3 計算網絡度量值

        NetworkX[28]是Python的一個工具包,可以用于構建和操作復雜的圖結構,提供分析圖的算法。根據2.3.2節(jié)中構建的智能合約的網絡文件,將其作為輸入。利用NetworkX中提供的方法將網絡文件讀入,形成表示圖的數(shù)據結構G。然后,通過NetworkX提供計算圖的網絡指標的方法,得到圖G的各個網絡度量值。

        例如,構建如圖4 PlayCoinKey合約的網絡文件后,通過NetworkX的read_pajek方法將網絡文件讀入,然后通過NetworkX的degree_centrality方法計算網絡的度中心性度量值。類似地,利用NetworkX提供的方法可以計算出網絡度量元集中PlayCoinKey合約的所有相應的網絡度量值。

        2.3.4 構建網絡指標數(shù)據集

        對于數(shù)據集中的所有智能合約代碼文件執(zhí)行2.3節(jié)中的步驟:先解析合約,然后提取合約網絡,最后計算網絡度量值。在文獻[11]提供的針對Solidity智能合約的缺陷數(shù)據集的基礎上,可以構建合約的網絡指標缺陷數(shù)據集,如表2所示。將該數(shù)據集應用于后續(xù)的缺陷預測模型訓練中,則可以構建智能合約的缺陷預測模型。對于新的智能合約代碼,計算其網絡度量值,然后利用訓練好的預測模型來預測合約的缺陷信息。

        3 實驗設計與結果分析

        3.1 實驗數(shù)據集

        文獻[11]提供的針對Solidity智能合約的缺陷數(shù)據集中包含了合約的地址以及合約對應的缺陷信息,但是并沒有合約對應的源代碼文件。通過Etherscan網站,根據合約地址下載對應的Solidity智能合約源代碼文件。本文一共收集了4 203個Solidity智能合約源代碼文件,共21 138個經過驗證的智能合約或library源代碼。因為合約代碼克隆現(xiàn)象的存在,所以數(shù)據集需要進行去重處理。同時,合約代碼中存在一些沒有函數(shù)實現(xiàn)的抽象合約以及接口,這些合約并不會產生調用關系,所以最終得到了7 279條contract或library信息。在此基礎之上,結合本文提取的Solidity智能合約的網絡度量元信息,構建了一套更豐富的缺陷數(shù)據集。

        類不平衡問題[29]是軟件缺陷預測訓練數(shù)據集中普遍存在的問題,其產生的根源在于大部分缺陷主要集中在少數(shù)的軟件模塊中。無缺陷程序模塊的數(shù)量要遠超過有缺陷程序模塊的數(shù)量,因此模型對少數(shù)類的預測精度較低。對數(shù)據集中存在的類不平衡問題,使用了隨機欠采樣的方法進行處理,來緩解類不平衡問題對模型預測精度的影響。

        3.2 實驗設置及評價指標

        本文研究的是Solidity智能合約的缺陷傾向性和缺陷數(shù)量的預測。由于基于度量元設計的智能合約缺陷預測方面的研究相對較少,且本文主要關注的是網絡度量元集對Solidity智能合約缺陷預測的影響,以及相較于基于代碼特征的度量元集,網絡度量元集能否對Solidity智能合約缺陷預測有著積極的作用,所以本文使用了軟件缺陷預測領域中實證研究總結的基本模型,即五種二分類模型作為Solidity智能合約的缺陷傾向性預測模型和七種回歸模型作為Solidity智能合約的缺陷數(shù)量預測模型來驗證和評估各個度量元集的有效性。性能評價指標是對構建的缺陷預測模型的性能進行評價,以此來判斷構建的缺陷預測模型的好壞。針對缺陷傾向性預測和缺陷數(shù)量預測分別使用不同的評價指標。實驗框架如圖5所示,采用了開源的機器學習庫scikitlearn作為模型的實現(xiàn),模型和采樣方法的超參數(shù)均為缺省值。實驗機器的CPU為i74600U,內存為8 GB,操作系統(tǒng)為64位Windows 10。

        3.2.1 缺陷傾向性預測

        缺陷傾向性預測是一個二分類問題,把要預測的軟件模塊分類為有缺陷或者沒有缺陷。本文使用五種典型的二分類模型:隨機森林分類器(random forest classifier,RFC)、K鄰近分類器(K neighbors classifier,KNNC)、決策樹分類器(decision tree classifier,DTC)、伯努利貝葉斯分類器(Bernoulli naive Bayes,BNB)和支持向量機分類器(support vectors machines classifier,SVC)。

        混淆矩陣是機器學習中總結分類模型預測結果的情形分析,如表3所示。根據混淆矩陣衍生了各種評價指標,主要有precision、recall、F1score、gmean等。precision是模型預測為有缺陷實例中真實類別為有缺陷所占的比例;recall表示召回率,是預測模型預測為有缺陷的實例的數(shù)量占真實有缺陷的實例數(shù)的比例。本文使用F1score和gmean作為針對缺陷傾向性預測的評價指標。

        F1score同時兼顧了分類模型的準確率和召回率,可以看作是模型準確率和召回率的一種加權平均。F1score的計算為

        gmean是正例準確率與負例準確率的綜合指標,評估一個學習算法的綜合性能,公式為

        3.2.2 缺陷數(shù)量預測

        缺陷數(shù)量預測是一個回歸問題,對軟件模塊的缺陷數(shù)量進行預測。本文使用七種典型的回歸模型,即線性回歸(linear regression,LR)、貝葉斯嶺(Bayesian ridge,BR)、決策樹回歸(decision tree regressor,DTR)、隨機森林回歸(random forest regressor,RFR)、K鄰近回歸 (K neighbors regressor,KNNR)、梯度加速回歸(gradient boosting regressor,GBR)和支持向量機回歸 (support vector machines regressor,SVR)。

        本文使用MAE作為針對缺陷數(shù)量預測的評價指標。MAE表示絕對誤差的平均值,能反映預測值誤差的實際情況。取值越小,模型準確度度越高。計算公式如下所示。

        3.3 實驗結果與分析

        對于Solidity智能合約缺陷傾向性預測,本文構建了RFC、KNNC、DTC、BNB和SVC五種二分類模型,將七種度量元集構成的缺陷傾向性預測數(shù)據集應用于構建的五種二分類模型中,并采用F1score和gmean作為評估指標,最終得到了35種不同的預測結果。

        圖6展示了Solidity智能合約缺陷傾向性預測的F1score評估結果。從圖6中可以看出,相較于其他模型,RFC模型在各個度量元集上的表現(xiàn)更好,F(xiàn)1score的平均值最高,為0.684,其次是KNNC(0.655)、DTC(0.648)、SVC(0.643)以及BNB(0.567)。由表4可以看出,RFC和SVC模型的訓練時間遠高于其他模型。在訓練時間上,RFC模型要低于SVC模型,但預測效果上優(yōu)于SVC模型。模型的預測時間均接近于實時預測。同時,在度量元集方面,使用COOPSCSolNetwork度量元集在RFC、KNNC、DTC、SVC四種二分類模型上的F1score均高于其他度量元集,F(xiàn)1score的值越高,代表了預測性能越好,反映了COOPSCSolNetwork度量元集構建的預測模型的預測性能普遍要好。由此可以看出,COOPSCSolNetwork度量元集所構建的預測模型的F1score指標要優(yōu)于其他度量元集所構建的預測模型。

        圖7展示了Solidity智能合約缺陷傾向性預測的gmean評估結果。從圖7中可以看出RFC模型在各個度量元集上的表現(xiàn)更好,gmean的平均值最高,為0.730。其次是KNNC(0.702)、DTC(0.697)、SVC(0.691)以及BNB(0.624)。由表4可以看出,使用COOPSCSolNetwork度量元集在RFC、KNNC、DTC、SVC四種二分類模型上的gmean值均要高于其他度量元集。gmean的值越高,代表預測性能越好,所以使用COOPSCSolNetwork度量元集構建的預測模型能取得較好的結果。

        相較于Solidity智能合約缺陷傾向性預測的問題,Solidity智能合約缺陷數(shù)量預測的問題提供了更加詳細的預測信息。針對Solidity智能合約缺陷數(shù)量的研究,本文構建了七種回歸模型,即SVR、KNNR、RFR、GBR、BR、LR和DTR,并將七種度量元集構成的缺陷數(shù)量預測數(shù)據集應用于構建的七種回歸模型中進行大量的實驗。同時,采用MAE作為評估指標,最終得到了49種不同的預測結果。

        圖8展示了Solidity智能合約缺陷數(shù)量預測的MAE評估結果。從圖8中可以看出,回歸模型SVR表現(xiàn)較為優(yōu)異,在七種度量元集上的平均值最低,為2.608,其次是RFR(2.959)、KNNR(2.996)、GBR(3.237)、DTR(3.526)、BR(3.542)和LR(3.355)。表5展示了不同度量元集的缺陷數(shù)量預測模型的MAE值。MAE的值越低,代表預測的性能越好。從表5中可以得出,SVR和RFR的訓練時間要遠大于其他模型。在度量元集方面,COOPSCSolNetwork在SVR、KNNR、RFR、GBR和DTR上均有較低的MAE值,表明了COOPSCSolNetwork度量元集構建的預測模型的預測性能普遍較好。

        4 結束語

        本文提出一組針對Solidity智能合約的網絡度量元集,該度量元集關注了合約內部函數(shù)和屬性構成的調用網絡的復雜性,并開發(fā)了一套提取Solidity智能合約函數(shù)調用關系圖以及函數(shù)操作屬性關系圖的工具。利用該工具可以將Solidity智能合約源代碼文件轉換為單個合約為粒度的函數(shù)屬性關系圖,從而計算每個合約的網絡度量指標。同時,比較了COOP度量元集、SCSol度量元集以及網絡度量元集在五種缺陷傾向性預測模型和七種缺陷數(shù)量預測模型上的性能差異。實驗結果表明,結合COOP、SCSol和網絡度量指標的COOPSCSolNetwork度量元集在各個模型上具有較好的缺陷預測性能。

        未來的Solidity智能合約缺陷預測工作中可以考慮合約間跨合約調用構成的網絡信息,以及將該方法應用于其他語言編寫的智能合約中,例如Vyper、Rust等。

        參考文獻:

        [1]Szabo N.Smart contracts[EB/OL].(1994)[20230411].https://naka motoinstitute.org/smartcontracts.

        [2]Daian P.Analysis of the DAO exploit[EB/OL].(2016)[20230411].https://hackingdistributed.com/2016/06/18/analysisofthedaoexploit.

        [3]Palladino S.The parity wallet hack explained[EB/OL].(2017)[20230411].https://blog.zeppelin.solutions/ontheparitywalletmultisighack405a8c12e8f7.

        [4]Lai Enmei,Luo Wenjun.Static analysis of integer overflow of smart contracts in Ethereum[C]//Proc of the 4th International Conference on Cryptography,Security and Privacy.New York:ACM Press,2020:110115.

        [5]Chidamber S R,Kemerer C F.A metrics suite for object oriented design[J].IEEE Trans on Software Engineering,1994,20(6):476-493.

        [6]Halstead M H.Elements of software science (operating and programming systems series)[M].USA:Elsevier Science Inc.,1977.

        [7]McCabe T J.A complexity measure[J].IEEE Trans on Software Engineering,1976,SE2 (4):308320.

        [8]ubelj L,Bajec M.Software systems through complex networks science:review,analysis and applications[C]//Proc of the 1st International Workshop on Software Mining.New York:ACM Press,2012:916.

        [9]Chen Lin,Ma Wanwangying,Zhou Yuming,et al.Empirical analysis of network measures for predicting high severity software faults[J].Science China Information Sciences,2016,59(12):118.

        [10]Ma Wanwangying,Chen Lin,Yang Yibiao,et al.Empirical analysis of network measures for effortaware faultproneness prediction[J].Information and Software Technology,2016,69:5070.

        [11]楊慧文,崔展齊,陳翔,等.基于軟件度量的Solidity智能合約缺陷預測方法[J].軟件學報,2022,33(5):15871611.(Yang Huiwen,Cui Zhanqi,Chen Xiang,et al.Defect prediction for Solidity smart contracts based on software measurement[J].Journal of Software,2022,33(5):15871611) .

        [12]Luu L,Chu D H,Olickel H,et al.Making smart contracts smarter[C]//Proc ofACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2016:254269.

        [13]Melon Fund.Oyente[EB/OL].(2018)[20230411].https://github.com/melonproject/oyente.

        [14]Tsankov P,Dan A,DrachslerCohen D,et al.Securify:practical security analysis of smart contracts[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2018:6782.

        [15]SRI Lab.Securify:public version[EB/OL].(2018)[20230411].https://github.com/ethsri/securify.

        [16]Feist J,Grieco G,Groce A.Slither:a static analysis framework for smart contracts[C]//Proc of the 2nd IEEE/ACM International Workshop on Emerging Trends in Software Engineering for Blockchain.Piscataway,NJ:IEEE Press,2019:815.

        [17]Jiang Bo,Liu Ye,Chan W K.ContractFuzzer:fuzzing smart contracts for vulnerability detection[C]//Proc of the 33rd ACM/IEEE International Conference on Automated Software Engineering.New York:ACM Press,2018:259269.

        [18]Nguyen T D,Pham L H,Sun Jun,et al.sFuzz:an efficient adaptive fuzzer for solidity smart contracts[C]//Proc of the 42nd ACM/IEEE International Conference on Software Engineering.New York:ACM Press,2020:778788.

        [19]Wang Wei,Song Jingjing,Xu Guangquan,et al.ContractWard:automated vulnerability detection models for Ethereum smart contracts[J].IEEE Trans on Network Science and Engineering,2020,8(2):11331144.

        [20]Xu Yingjie,Hu Gengran,You Lin,et al.A novel machine learningbased analysis model for smart contract vulnerability[J].Security and Communication Networks,2021,2021:112.

        [21]Bansiya J,Davis C G.A hierarchical model for objectoriented design quality assessment[J].IEEE Trans on Software Engineering,2002,28(1):417.

        [22]HendersonSellers B.Objectoriented metrics:measures of complexity[M].[S.l.]:PrenticeHall Inc.,1995.

        [23]Newman M E J.Assortative mixing in networks[J].Physical Review Letters,2002,89(20):208701.

        [24]Mones E,Vicsek L,Vicsek T.Hierarchy measure for complex networks[J].PLoS One,2012,7(3):e33799.

        [25]Johnson S,DomínguezGarcía V,Donetti L,et al.Trophic coherence determines foodWeb stability[J].Proc of the National Academy of Sciences,2014,111(50):1792317928.

        [26]Saramki J,Kivel M,Onnela J P,et al.Generalizations of the clustering coefficient to weighted complex networks[J].Physical Review E,2007,75(2):027105.

        [27]Latora V,Marchiori M.Efficient behavior of smallworld networks[J].Physical Review Letters,2001,87(19):198701.

        [28]Hagberg A,Swart P,S Chult D.Exploring network structure,dynamics,and function using NetworkX[R].Los Alamos,NM:Los Alamos National Lab,2008.

        [29]Bennin K E,Keung J,Phannachitta P,et al.MAHAKIL:diversity based oversampling approach to alleviate the class imbalance issue in software defect prediction[J].IEEE Trans on Software Engineering,2017,44(6):534-550.

        [30]Chidamber S R,Kemerer C F.A metrics suite for object oriented design[J].IEEE Trans on Software Engineering,1994,20(6):476-493.

        日韩av在线不卡观看| 全部孕妇毛片| 日韩在线免费| 国产又粗又猛又黄色呦呦| 午夜理论片日本中文在线| 亚洲人精品午夜射精日韩| 中文人妻av久久人妻18| 久久中文字幕日韩精品| 日本一区二区三区激视频| 亚洲人成网站18禁止| 国产99视频精品免视看9| 欧美日韩一区二区三区色综合| av在线不卡一区二区三区| 国产亚洲精品一区二区无| 高清偷自拍第1页| 巨臀中文字幕一区二区| 丰满少妇av一区二区三区| 亚洲精品一区二区三区麻豆| 又粗又硬又黄又爽的免费视频| 国产妇女乱一性一交| 网址视频在线成人亚洲| 337p粉嫩日本欧洲亚洲大胆| 成人性生交片无码免费看| 区无码字幕中文色| 精品久久中文字幕系列| 中文字幕日韩一区二区不卡| 色yeye免费视频免费看| 亚洲中文字幕第一第二页| 亚洲av综合av一区二区三区| 7777奇米四色成人眼影| 天天射色综合| 国产美腿丝袜一区二区| 亚洲 卡通 欧美 制服 中文| 无码国产精品一区二区免| 国产精品毛片av一区二区三区| 久久99精品久久久久麻豆| 亚洲精品综合一区二区| 激情亚洲的在线观看| 亚洲国产综合人成综合网站| 偷偷色噜狠狠狠狠的777米奇| 99福利网|