• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于欠采樣和源代碼圖表征的以太坊龐氏騙局檢測(cè)

      2024-01-04 06:26:28龔曉元劉冬明師自通
      關(guān)鍵詞:龐氏源代碼騙局

      龔曉元,劉冬明,高 峰,師自通

      (中北大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原 030051 )

      0 引 言

      自2008年中本聰首次提出去中心化的支付方案,并發(fā)行了第一種加密貨幣比特幣[1]以來(lái),區(qū)塊鏈作為一種新興技術(shù),得到了蓬勃的發(fā)展。以太坊[2]作為區(qū)塊鏈領(lǐng)域的大型金融交易平臺(tái)之一,因其智能合約的存在而被廣泛應(yīng)用。由于其匿名性和監(jiān)管困難,以太坊的健康發(fā)展仍然面臨諸多難題,欺詐問(wèn)題也日益頻發(fā),龐氏騙局便是其中之一。以太坊龐氏騙局是一種利用智能合約投資活動(dòng)進(jìn)行非法集資的詐騙行為,該騙局通常會(huì)以種種宣傳術(shù)語(yǔ)來(lái)掩蓋其真實(shí)目的,以高額的回報(bào)率不斷地吸引投資者投入資金,來(lái)維持自身運(yùn)轉(zhuǎn),當(dāng)后來(lái)的投資者試圖取回他們的投資時(shí),通常會(huì)發(fā)現(xiàn)他們的資金已經(jīng)被騙取。TRM Labs發(fā)布的2022年非法加密生態(tài)系統(tǒng)報(bào)告[3]顯示加密貨幣龐氏騙局已經(jīng)給投資者造成將近78億美元的損失。因此,智能合約龐氏騙局的檢測(cè)對(duì)于以太坊區(qū)塊鏈的健康發(fā)展和投資者的財(cái)產(chǎn)安全至關(guān)重要。

      當(dāng)前,針對(duì)智能合約龐氏騙局的檢測(cè)研究仍然非常有限,且基本都是從字節(jié)碼層面和交易信息層面提取合約特征。Bartoletti等[4]提出基于標(biāo)準(zhǔn)化Levenshtein距離的方法來(lái)檢測(cè)以太坊網(wǎng)絡(luò)中的龐氏騙局。該方法通過(guò)蒙特卡洛算法[5]估算以太坊網(wǎng)絡(luò)中兩個(gè)任意智能合約的標(biāo)準(zhǔn)化Levenshtein距離,并作為智能合約相似度的判斷依據(jù),但是,臨界值的設(shè)置缺乏科學(xué)證明,誤報(bào)率很高。Chen等[6-7]利用以太坊區(qū)塊鏈公開(kāi)透明的特點(diǎn),從用戶賬戶和智能合約操作碼兩方面提取特征,基于數(shù)據(jù)挖掘的思路,充分利用區(qū)塊鏈上的信息,使用隨機(jī)森林(Random Forest,RF)和極端梯度提升(eXtreme Gradient Boosting,XGBoost)的方式大幅度提升了檢測(cè)精度,并通過(guò)人工檢查的方式貢獻(xiàn)了一個(gè)龐氏騙局合約數(shù)據(jù)集XBlock。但是,前者的缺陷是由于從操作碼中提取特征而無(wú)法獲取智能合約豐富的語(yǔ)義結(jié)構(gòu)信息和程序依賴信息,并且詐騙者可以通過(guò)調(diào)整合約編寫(xiě)方式來(lái)控制操作碼的頻率,從而繞過(guò)檢測(cè); 后者的缺陷是由于缺乏交易信息而無(wú)法在騙局合約部署伊始就進(jìn)行主動(dòng)檢測(cè)。為了在智能合約全生命周期內(nèi)有效檢測(cè)龐氏騙局,Peng等[8]基于操作碼的功能,通過(guò)系統(tǒng)化的建模逐步實(shí)現(xiàn)了智能龐氏騙局的高效自動(dòng)檢測(cè)模型,并且可以在智能合約部署初期進(jìn)行檢測(cè)工作。Shen等[9]將龐氏騙局檢測(cè)問(wèn)題轉(zhuǎn)化為異常檢測(cè)問(wèn)題,將字節(jié)碼轉(zhuǎn)化為高維矩陣,使用孤立森林(Isolation Forest,Iforest)算法來(lái)識(shí)別智能合約中的龐氏騙局。Zhang等[10]創(chuàng)新地提取了字節(jié)碼特征,并將其與用戶交易和操作碼頻率相結(jié)合,獲取了更全面的特征,提出一種基于改進(jìn)LightGBM算法的智能合約龐氏騙局識(shí)別方法,對(duì)模型訓(xùn)練速度與模型性能均有顯著提升。

      在深度學(xué)習(xí)領(lǐng)域,Liang等[11]提出了一個(gè)數(shù)據(jù)驅(qū)動(dòng)的龐氏騙局檢測(cè)系統(tǒng)DSPSD,根據(jù)操作碼和交易數(shù)據(jù),直接預(yù)測(cè)合約是否為龐氏騙局。Jin等[12]提出了一個(gè)通用的異構(gòu)特征增強(qiáng)模塊,通過(guò)學(xué)習(xí)輔助異構(gòu)交互圖中基于元路徑的行為特征,并將異構(gòu)特征聚合到執(zhí)行檢測(cè)方法的同構(gòu)圖中的對(duì)應(yīng)賬戶節(jié)點(diǎn),進(jìn)而捕獲與賬戶行為模式相關(guān)的異構(gòu)信息。He等[13]提出的Ethereum-CTRF方法,提取了合約代碼的詞特征、序列特征以及交易特征,并對(duì)數(shù)據(jù)進(jìn)行了簡(jiǎn)單隨機(jī)過(guò)采樣處理,并構(gòu)造了多粒度的網(wǎng)絡(luò)模型,但這樣容易過(guò)度擬合。Wang等[14]使用N-gram算法來(lái)提取更全面的操作碼特征,同時(shí)引入自適應(yīng)合成采樣處理類別不平衡的數(shù)據(jù),最終使用AdaBoost分類器進(jìn)行騙局合約檢測(cè)。

      以上文獻(xiàn)大多基于以太坊虛擬機(jī)層面的字節(jié)碼特征、操作碼特征和交易特征,但是,以太坊龐氏騙局作為使用Solidty高級(jí)語(yǔ)言[15]人為編寫(xiě)的以太坊智能合約,在高級(jí)語(yǔ)言層面包含豐富的語(yǔ)義語(yǔ)法信息、控制依賴關(guān)系和數(shù)據(jù)依賴關(guān)系,而字節(jié)碼和操作碼不能充分體現(xiàn)智能合約龐氏騙局的關(guān)鍵特征,且交易信息依賴合約的運(yùn)行積累,阻礙了合約檢測(cè)的時(shí)效性。同時(shí),現(xiàn)有的檢測(cè)方法在處理類別不平衡的數(shù)據(jù)空間方面存在不足,騙局合約在所有智能合約中的比例很低,在數(shù)據(jù)不平衡時(shí),分類器模型更傾向于多數(shù)類樣本,對(duì)少數(shù)騙局合約的敏感度較低,從而導(dǎo)致騙局合約檢測(cè)的召回率較低。針對(duì)類別不平衡問(wèn)題,Modha等[16]利用K-Means算法將多數(shù)類的樣本進(jìn)行聚類,合并聚類中心,以替換多數(shù)類樣本,這種方法可以達(dá)到平衡數(shù)據(jù)集并且保留多數(shù)類樣本特征的目的。

      綜上所述,針對(duì)現(xiàn)有方法存在類別不平衡、特征來(lái)源單一且不能完整表達(dá)智能合約語(yǔ)義語(yǔ)法信息和程序依賴信息的問(wèn)題,本文提出了一種基于欠采樣和源代碼圖表征的檢測(cè)方法:首先使用基于代碼相似度的聚類算法在數(shù)據(jù)層面解決智能合約類別不平衡問(wèn)題,再通過(guò)改進(jìn)構(gòu)圖算法從Solidty源代碼層面挖掘能夠區(qū)分龐氏騙局的關(guān)鍵特征,最后使用圖神經(jīng)網(wǎng)絡(luò)模型提高對(duì)智能合約龐氏騙局的檢測(cè)效果。

      1 龐氏騙局檢測(cè)方法

      1.1 總體框架

      本文提出的智能合約龐氏騙局檢測(cè)方法的整體框架如圖1 所示,首先根據(jù)數(shù)據(jù)集中的合約地址,使用爬蟲(chóng)工具從以太坊瀏覽器(etherscan.io)中爬取智能合約源代碼和字節(jié)碼,將所爬取源代碼和字節(jié)碼按照7∶3的比例分為訓(xùn)練集與測(cè)試集,其次使用Levenshtein算法和K-Means算法對(duì)字節(jié)碼訓(xùn)練集中的正常合約進(jìn)行欠采樣處理,得到重組后的合約編號(hào),使用合約編號(hào)重組源代碼訓(xùn)練集,再利用重組后的源代碼訓(xùn)練集和測(cè)試集進(jìn)行合約圖構(gòu)建并對(duì)合約圖進(jìn)行標(biāo)準(zhǔn)化處理,然后訓(xùn)練圖神經(jīng)網(wǎng)絡(luò)模型,并使用訓(xùn)練好的模型對(duì)測(cè)試集合約進(jìn)行檢測(cè)分類。

      1.2 基于代碼相似度的欠采樣方法

      本文基于代碼相似度的欠采樣方法,利用Levenshtein算法計(jì)算訓(xùn)練集中多數(shù)類智能合約之間的距離,進(jìn)而通過(guò)K-Means算法對(duì)多數(shù)類智能合約進(jìn)行聚類,有選擇地丟棄多數(shù)類合約,保證了訓(xùn)練集騙局合約和正常合約類別的相對(duì)平衡。

      1.2.1 Levenshtein算法

      Bartoletti等[4]使用Levenshtein距離來(lái)計(jì)算以太坊網(wǎng)絡(luò)中兩個(gè)任意智能合約的相似度。1965年,俄國(guó)科學(xué)家Vladimir Levenshtein率先提出了Levenshtein算法,它采用動(dòng)態(tài)規(guī)劃思想來(lái)計(jì)算兩個(gè)字符串之間的編輯距離,即對(duì)于給定的兩個(gè)字符串S和T,由S轉(zhuǎn)換為T(mén),需要的最小編輯次數(shù)。該算法允許的編輯操作有:1) Insert,在被編輯的字符串中插入一個(gè)字符; 2) Delete:在被編輯的字符串中刪除一個(gè)字符; 3) Swap,在被編輯的字符串中替換一個(gè)字符。Levenshtein算法的實(shí)現(xiàn)步驟如下:

      算法 1:Levenshtein算法

      輸入:長(zhǎng)度為a的字符串A,長(zhǎng)度為b的字符串B。

      輸出:字符串A與字符串B之間的距離distance。

      步驟 1:初始化一個(gè)(a+1)×(b+1)階的編輯距離矩陣,記為DA,B(i,j),初始化第一行[0,b],第一列[0,a]。其計(jì)算公式為

      DA,B(i,j)=

      (1)

      式中:A[i]≠B[j]是一個(gè)指示函數(shù),當(dāng)A[i]≠B[j]時(shí),其值為1,否則為0。

      步驟 2:比較字符串A和字符串B的字符。

      步驟 3:根據(jù)式(1)填充距離矩陣。

      步驟 4:重復(fù)步驟2和3直到DA,B[a+1,b+1]被填充。

      步驟 5:得到Ldistance=DA,B[a+1,b+1]。Levenshtein距離可以作為智能合約相似度的表征,距離越小,合約特征越相近,反之,合約特征差異越大。

      1.2.2 K-Means算法與多數(shù)類樣本篩選

      多數(shù)類樣本篩選是指在多數(shù)類智能合約欠采樣過(guò)程中,對(duì)不同智能合約的字節(jié)碼進(jìn)行聚類,距離相近的合約成為一類,去掉相似度高的合約樣本,使得被選擇的樣本仍然能夠很好地表征正常合約的多數(shù)特征。

      K-Means算法的核心思想是將智能合約字節(jié)碼劃分為多個(gè)聚類,使得每個(gè)聚類中智能合約到該聚類中心的Levenshtein距離的平方和最小。K-Means算法的評(píng)價(jià)準(zhǔn)則是誤差平方和準(zhǔn)則,計(jì)算公式為

      (2)

      式中:SSE為誤差平方和;k為簇的數(shù)量;Ldistance為算法1中提出的Levenshtein距離。

      以下為多數(shù)類樣本選擇算法的過(guò)程:

      算法 2:多數(shù)類樣本選擇算法

      輸入:多數(shù)類智能合約樣本,

      輸出:重組后的多數(shù)類智能合約樣本。

      步驟 1:隨機(jī)選擇k個(gè)樣本作為智能合約的初始聚類中心;

      步驟 2:使用算法1計(jì)算其余合約到各聚類中心的Levenshtein距離,并將其分配到Levenshtein距離最近的簇中;

      步驟 3:通過(guò)計(jì)算各簇的距離均值,更新聚類中心;

      步驟 4:計(jì)算SSE;

      步驟 5:重復(fù)步驟2,3,4,直到SSE收斂(不再變化);

      步驟 6:從每個(gè)簇中隨機(jī)抽取單個(gè)樣本,構(gòu)造重組后的多數(shù)類智能合約樣本。

      1.3 源代碼圖表征

      圖作為計(jì)算機(jī)科學(xué)中的一種復(fù)雜數(shù)據(jù)結(jié)構(gòu),以抽象的方式表現(xiàn)了數(shù)據(jù)或?qū)嶓w間某種多對(duì)多的復(fù)雜關(guān)系。這些數(shù)據(jù)或?qū)嶓w被稱為節(jié)點(diǎn),而不同節(jié)點(diǎn)間的相關(guān)關(guān)系被稱為邊。Zhuang等[17]提出了一種能夠保存程序語(yǔ)義語(yǔ)法信息、控制依賴關(guān)系和數(shù)據(jù)依賴關(guān)系的智能合約構(gòu)圖方法,把智能合約中的某些函數(shù)和變量抽取為節(jié)點(diǎn),把程序執(zhí)行可能穿過(guò)的路徑設(shè)置為邊,將智能合約源代碼提取為合約圖。

      1.3.1 構(gòu)圖方法改進(jìn)

      智能合約龐氏騙局檢測(cè)問(wèn)題的關(guān)鍵在于如何對(duì)智能合約源代碼進(jìn)行特征提取。Zhuang等[17]的方法應(yīng)用于漏洞檢測(cè)時(shí),龐氏騙局合約與漏洞合約的不同之處在于,前者在程序規(guī)則上合法,程序行為完全符合語(yǔ)義語(yǔ)法規(guī)則,而后者會(huì)利用程序漏洞使程序產(chǎn)生語(yǔ)義語(yǔ)法規(guī)則以外的結(jié)果。因此,本文結(jié)合人工分析騙局合約源代碼,在前人的基礎(chǔ)上改進(jìn)了合約圖構(gòu)圖算法,讓圖神經(jīng)網(wǎng)絡(luò)捕獲并學(xué)習(xí)圖的拓?fù)浣Y(jié)構(gòu)關(guān)系、節(jié)點(diǎn)間的控制依賴和數(shù)據(jù)依賴等信息,進(jìn)而在保留源代碼語(yǔ)義信息的同時(shí)對(duì)蘊(yùn)藏其中的行為特征進(jìn)行充分挖掘,提高模型對(duì)騙局合約的識(shí)別能力。改進(jìn)后的構(gòu)圖算法有如下變化:

      1) 去除回退節(jié)點(diǎn)。因?yàn)镕allback()函數(shù)作為智能合約定義的安全默認(rèn)函數(shù),盡管其作為節(jié)點(diǎn)特征在智能合約漏洞檢測(cè)中極其重要,但是龐氏騙局合約本質(zhì)上是一種特征的欺詐合約模式,在程序規(guī)則上是合法的。因此,騙局合約與漏洞合約并非同一層面的安全問(wèn)題,故本文方法取消設(shè)置回退節(jié)點(diǎn),同時(shí)取消與其相連的回退邊。

      2) 將賬戶(用戶)余額這一關(guān)鍵變量設(shè)置為核心節(jié)點(diǎn)。通過(guò)人工分析騙局合約源代碼,可以發(fā)現(xiàn)用于表示合約賬戶余額的變量在用戶投資和返利方面比較活躍,所以本文方法將其設(shè)置為核心節(jié)點(diǎn),讓神經(jīng)網(wǎng)絡(luò)可以自行學(xué)習(xí)其變化特征。

      3) 刪除向前邊??紤]到向前邊實(shí)質(zhì)上并不包含語(yǔ)義語(yǔ)法信息,而且這種冗余的特征還會(huì)干擾神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效果,故將其取消。

      1.3.2 節(jié)點(diǎn)表征

      合約圖包含兩類節(jié)點(diǎn):核心節(jié)點(diǎn)(Core Node,簡(jiǎn)稱C)和普通節(jié)點(diǎn)(Normal Node,簡(jiǎn)稱N)。

      核心節(jié)點(diǎn)C代表對(duì)騙局合約檢測(cè)具有重要影響的關(guān)鍵函數(shù)調(diào)用和關(guān)鍵變量:

      1) 用來(lái)發(fā)送以太幣的call.value()、send()和transfer()三個(gè)內(nèi)置函數(shù)。

      2) 對(duì)前述三個(gè)轉(zhuǎn)賬函數(shù)調(diào)用的函數(shù)W和對(duì)W進(jìn)行調(diào)用的函數(shù)V。

      3) 用于表示合約賬戶余額的變量,Balance[msg.sender],players[wating]等。

      普通節(jié)點(diǎn)N代表函數(shù)W和函數(shù)V中沒(méi)有被提取為核心節(jié)點(diǎn)的變量。

      1.3.3 邊表征

      合約圖包含兩類有向邊:控制流邊(Control Edge,CE)和數(shù)據(jù)流邊(Date Edge,DE)。表1 詳細(xì)記錄了兩種有向邊的類型及其語(yǔ)義信息??刂屏鬟厑?lái)源于控制合約執(zhí)行路徑的程序語(yǔ)句,例如循環(huán)控制和條件判斷。數(shù)據(jù)流邊來(lái)源于賦值語(yǔ)句和控制訪問(wèn),例如賦值、比較和運(yùn)算語(yǔ)句。

      表1 有向邊的分類和表示

      按照上述節(jié)點(diǎn)表征方式和邊表征方式,對(duì)智能合約源代碼進(jìn)行靜態(tài)掃描,生成合約圖,如圖2 所示。

      (a) 龐氏騙局合約片段

      1.4 合約圖標(biāo)準(zhǔn)化

      (3)

      圖3 是對(duì)圖2(b) 合約圖進(jìn)行聚合優(yōu)化后的標(biāo)準(zhǔn)化合約圖。

      圖3 合約圖標(biāo)準(zhǔn)化

      2 實(shí)驗(yàn)分析

      2.1 數(shù)據(jù)集

      本文使用Chen等[6]給出的智能合約龐氏騙局?jǐn)?shù)據(jù)集XBlock,該數(shù)據(jù)集具體包括3 793個(gè)智能合約地址及其標(biāo)簽。其中:共有200個(gè)龐氏騙局合約地址和3 593個(gè)非龐氏騙局合約地址,在這3 593個(gè)非龐氏騙局合約里,有2個(gè)廢棄合約和3個(gè)錯(cuò)誤標(biāo)簽合約,將這些合約排除后,剩下3 788個(gè)可用合約,騙局合約與正常合約的比例接近1∶18; 龐氏騙局的標(biāo)簽為1,非龐氏騙局合約的標(biāo)簽為0。

      2.2 實(shí)驗(yàn)?zāi)P团c評(píng)價(jià)指標(biāo)

      本文實(shí)驗(yàn)選用圖卷積神經(jīng)網(wǎng)絡(luò)(Graph Convolutional Network,GCN),采用one-hot編碼,并為每一類特征都維護(hù)一個(gè)one-hot字典,將最終提取到的合約圖特征與其字典對(duì)照,然后將離散特征的取值擴(kuò)展到歐氏空間,最后進(jìn)行拼接,實(shí)現(xiàn)對(duì)合約圖特征的向量化表示,將其作為GCN模型的輸入。實(shí)驗(yàn)環(huán)境參數(shù)如表2 所示。

      表2 實(shí)驗(yàn)環(huán)境參數(shù)

      實(shí)驗(yàn)采用XBlock數(shù)據(jù)集,迭代次數(shù)epoch=30,學(xué)習(xí)率設(shè)置為0.002,dropout設(shè)置為0.7,批大小為32,GCN模型參數(shù)如表3 所示。

      表3 GCN模型參數(shù)

      表4 為智能合約龐氏騙局檢測(cè)混淆矩陣。

      表4 智能合約龐氏騙局檢測(cè)的混淆矩陣

      智能合約龐氏騙局檢測(cè)時(shí),由于騙局合約的數(shù)量很少,如果模型認(rèn)定測(cè)試集中所有合約都為正常合約,那么模型的準(zhǔn)確率指標(biāo)也會(huì)很高。所以,本文在選取智能合約龐氏騙局檢測(cè)的評(píng)價(jià)指標(biāo)時(shí),放棄使用準(zhǔn)確率(Accuracy),最終選取了精確率、召回率和F1值來(lái)評(píng)價(jià)模型的分類性能,計(jì)算過(guò)程如下:

      (4)

      (5)

      (6)

      式中:NTP為實(shí)際騙局合約被檢測(cè)為騙局合約的數(shù)量;NFP為實(shí)際正常合約的合約代碼被檢測(cè)為騙局合約的數(shù)量;NFN為實(shí)際騙局合約被檢測(cè)為正常漏洞的數(shù)量;P為精確率,反映了模型所預(yù)測(cè)的騙局合約是否準(zhǔn)確;R為召回率,反映了模型是否能夠檢測(cè)出所有騙局合約;F1綜合了騙局合約檢測(cè)的精確率與召回率,全面反映了模型對(duì)于智能合約的分類效果。對(duì)于騙局合約檢測(cè),本文的預(yù)期效果是在保證精確率的前提下提高召回率,找出更多騙局合約,以減少其帶來(lái)的危害。

      2.3 欠采樣倍率選擇實(shí)驗(yàn)

      重組后訓(xùn)練集的類別比例取決于欠采樣倍率,并且會(huì)最終影響模型的性能,因?yàn)榍凡蓸訒?huì)造成信息缺失,即將正常合約丟棄可能會(huì)導(dǎo)致模型丟失正常合約的重要信息。

      在不同欠采樣倍率下,不同類別比例的重組訓(xùn)練集對(duì)本文方法所得P、R和F1的影響如圖4 所示。

      圖4 不同采樣倍率的實(shí)驗(yàn)結(jié)果

      由圖4 可得,當(dāng)重組訓(xùn)練集比例為1∶3時(shí),模型的召回率和F1值最高,而精度略低,主要原因是丟棄掉太多的正常合約樣本,使得模型將正常合約誤判為騙局合約,并且隨著比例的增大,模型的性能會(huì)快速下降,因?yàn)樵跀?shù)據(jù)極度不平衡時(shí),模型受到權(quán)重的影響而對(duì)騙局合約的敏感度降低,從而使檢測(cè)性能下降。

      由于在真實(shí)以太坊網(wǎng)絡(luò)中騙局合約遠(yuǎn)少于正常合約,所以本文選擇較低的精確率,而選擇更高的召回率,最終使用了重組后比例為1∶3的訓(xùn)練集所對(duì)應(yīng)的網(wǎng)絡(luò)模型,提高了智能合約龐氏騙局的檢測(cè)效果。

      2.4 消融實(shí)驗(yàn)

      為了驗(yàn)證本文方法對(duì)于智能合約龐氏騙局檢測(cè)的有效性,進(jìn)行了消融對(duì)比實(shí)驗(yàn),主要是將本文方法與以下兩種方法進(jìn)行了比較:① 重組前訓(xùn)練集和改進(jìn)構(gòu)圖算法相結(jié)合的方法; ② 重組后訓(xùn)練集和原始構(gòu)圖算法相結(jié)合的方法。

      如圖5 所示,本文方法與方法①的對(duì)比證明了本文基于代碼相似度的欠采樣方法的有效性,通過(guò)采用Levenshtein距離算法+K-Means算法對(duì)特征相近的正常合約進(jìn)行了聚類,丟棄一部分正常合約,使得重組后的訓(xùn)練集相對(duì)平衡,提高了模型對(duì)騙局合約的關(guān)注度,從而顯著提高了騙局合約的召回率; 本文方法與方法②的對(duì)比證明了本文針對(duì)龐氏騙局合約改進(jìn)的智能合約構(gòu)圖方法的有效性,通過(guò)去掉冗余的節(jié)點(diǎn)和有向邊,將源代碼中表示合約余額的關(guān)鍵變量設(shè)置為新的核心節(jié)點(diǎn),改進(jìn)了源代碼表征方式,使得網(wǎng)絡(luò)模型能夠更好地學(xué)習(xí)騙局合約的關(guān)鍵特征,提升了對(duì)于騙局合約的關(guān)注度和敏感程度,因此可以找出更多的騙局合約,將召回率提高了33%,從而極大地提升了模型的性能。

      圖5 消融實(shí)驗(yàn)結(jié)果

      2.5 智能合約龐氏騙局檢測(cè)的對(duì)比實(shí)驗(yàn)

      為了進(jìn)一步驗(yàn)證本文方法對(duì)智能合約龐氏騙局檢測(cè)的有效性,綜合認(rèn)可度,分別選取傳統(tǒng)機(jī)器學(xué)習(xí)方法、改進(jìn)機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法,將本文方法與SVM,XGBoost,RF[7],IForest[9],DSPSD[11],Ethereum-CTRF[13],AdaBoost[14]進(jìn)行實(shí)驗(yàn)對(duì)比,結(jié)果如表5 所示。

      表5 不同分類方法的結(jié)果對(duì)比

      通過(guò)對(duì)比表5 中各分類方法的評(píng)價(jià)指標(biāo),可以看出,在前4種機(jī)器學(xué)習(xí)方法中,孤立森林(IForest)方法對(duì)智能合約龐氏騙局檢測(cè)的性能最優(yōu),精確率為99%,召回率為80%,F1值為88%,僅次于深度學(xué)習(xí)方法DSPSD。本文方法的精確率為91%,非常接近其余5種方法; 本文方法的召回率和F1值分別為98%和94%,明顯優(yōu)于其余5種方法。在騙局合約識(shí)別中,本文方法期望在保證精確率的前提下提高召回率,盡可能多地找出更多騙局合約,以減少其帶來(lái)的危害。綜上所述,本文方法對(duì)智能合約龐氏騙局的檢測(cè)效果有所提升。

      3 結(jié) 論

      本文針對(duì)以太坊龐氏騙局合約檢測(cè)進(jìn)行了研究,通過(guò)分析源代碼的特點(diǎn),提出了一種基于欠采樣和源代碼圖表征的智能合約龐氏騙局檢測(cè)方法,使用Levenshtein算法和K-Means算法,在數(shù)據(jù)層面解決了智能合約類別不平衡的問(wèn)題,避免了模型的過(guò)度擬合。本文首次引入了高級(jí)語(yǔ)言構(gòu)圖方法用于龐氏騙局合約的源代碼構(gòu)圖,同時(shí)改進(jìn)了構(gòu)圖算法,以便于從Solidty源代碼層面挖掘能夠區(qū)分龐氏騙局的關(guān)鍵特征,從而提升了網(wǎng)絡(luò)模型對(duì)龐氏騙局合約的敏感程度。實(shí)驗(yàn)結(jié)果表明,本文方法在XBlock數(shù)據(jù)集上,在犧牲少許精度的情況下,顯著提升了智能合約龐氏騙局的召回率和F1值。本文方法在進(jìn)行智能合約類別不平衡處理時(shí),只關(guān)注了字節(jié)碼之間的編輯距離,沒(méi)有考慮其具體含義,今后的研究工作應(yīng)在智能合約聚類時(shí)關(guān)注其語(yǔ)義語(yǔ)法信息,引入更加嚴(yán)格的量化指標(biāo)來(lái)進(jìn)行核心節(jié)點(diǎn)選取,并將合約類別和交易信息等特征引入模型訓(xùn)練,以進(jìn)一步提高模型的檢測(cè)性能。

      猜你喜歡
      龐氏源代碼騙局
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      揭秘光的折射形成的“騙局”
      別被騙局牢牢關(guān)??!
      基于TXL的源代碼插樁技術(shù)研究
      軟件源代碼非公知性司法鑒定方法探析
      勻加速騙局
      二十四孝之涌泉躍鯉
      天上不會(huì)掉餡餅 地下不會(huì)長(zhǎng)黃金 “龐氏”金融騙局啟示錄:天下沒(méi)有無(wú)風(fēng)險(xiǎn)的高收益
      大社會(huì)(2016年3期)2016-05-04 03:41:08
      揭秘龍湖產(chǎn)品“源代碼”
      涌泉躍鯉
      兰溪市| 南部县| 互助| 平湖市| 上林县| 互助| 札达县| 峨眉山市| 绍兴市| 芒康县| 涿州市| 浦江县| 宁化县| 陇南市| 九寨沟县| 景东| 江源县| 弥勒县| 诏安县| 滁州市| 广元市| 甘肃省| 凭祥市| 体育| 财经| 泸溪县| 阳山县| 厦门市| 讷河市| 双峰县| 遵义市| 土默特右旗| 珲春市| 东港市| 鹤庆县| 阜新市| 雅安市| 玉山县| 长宁区| 澳门| 新龙县|