袁 政, 葛 斌, 任 萍
(安徽理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
隨著區(qū)塊鏈技術(shù)的發(fā)展,智能合約[1]數(shù)量爆發(fā)式增長(zhǎng),同時(shí)帶來(lái)諸多安全問(wèn)題,龐氏騙局合約就是其中之一[2]。龐氏騙局合約以高回報(bào)為噱頭騙取后入投資者資金用于回報(bào)先前投資者,該類型騙局合約已造成上千萬(wàn)美元資金的流失[3],嚴(yán)重影響區(qū)塊鏈環(huán)境健康。眾多學(xué)者針對(duì)此類型合約的檢測(cè)展開研究,Massimo Bartoletti等人[3]以待檢測(cè)合約與龐氏騙局合約字節(jié)碼的相似度來(lái)判斷其是否為龐氏騙局合約。該方法以歸一化萊文斯坦距離作為判斷依據(jù),但是閾值設(shè)置未經(jīng)過(guò)科學(xué)證明,說(shuō)服力不足,檢測(cè)精度不高。龐氏騙局合約賬戶具有區(qū)別于普通合約賬戶的明顯特征,為更加精準(zhǔn)檢測(cè)龐氏騙局合約,更多學(xué)者開始結(jié)合賬戶特征對(duì)合約進(jìn)行檢測(cè)。Weili Chen等人[4]通過(guò)將提取操作碼特征和賬戶特征相結(jié)合的方法,利用極端梯度提升(eXtreme Gradient Boosting,XGBoost)檢測(cè)龐氏騙局合約。Weili Chen等人[4]為進(jìn)一步提升檢測(cè)精度,采取相同的特征提取方法,而后通過(guò)訓(xùn)練隨機(jī)森林(Random Forest,RF)檢測(cè)合約。Shuhui Fan[6]通過(guò)有序目標(biāo)統(tǒng)計(jì)處理賬戶和操作碼特征,結(jié)合有序增強(qiáng)思想基于決策樹(Decision Tree,DT)構(gòu)造一個(gè)無(wú)偏殘差模型,用來(lái)檢測(cè)合約?,F(xiàn)有方法大多結(jié)合代碼特征和賬戶特征,通過(guò)訓(xùn)練傳統(tǒng)機(jī)器學(xué)習(xí)模型進(jìn)行檢測(cè)合約。該方法結(jié)合賬戶特征提升檢測(cè)精度,對(duì)不存在賬戶特征的初步部署合約檢測(cè)效果一般。對(duì)此,提出一種新的檢測(cè)方法。首先,將合約操作碼作為唯一數(shù)據(jù)源;改進(jìn)合成少數(shù)類過(guò)采樣技術(shù),解決現(xiàn)存數(shù)據(jù)集的正常合約與龐氏合約分布不均衡問(wèn)題。然后,創(chuàng)新性引入卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)龐氏騙局合約,改進(jìn)卷積神經(jīng)網(wǎng)絡(luò),更加充分提取操作碼的特征,提升檢測(cè)精度。仿真實(shí)驗(yàn)表明,該方法較現(xiàn)有龐氏騙局合約檢測(cè)方法具有更高檢測(cè)精度。
實(shí)驗(yàn)采用的數(shù)據(jù)來(lái)自中山大學(xué)團(tuán)隊(duì)的以太坊龐氏騙局智能合約公開數(shù)據(jù)集[4]。
數(shù)據(jù)集中龐氏騙局合約樣本占樣本總數(shù)比例較小,采用樣本類分布不均衡數(shù)據(jù)集訓(xùn)練模型,少數(shù)類檢測(cè)準(zhǔn)確率較低。
傳統(tǒng)合成少數(shù)類過(guò)采樣技術(shù)(Synthetic Minority Oversampling Technique,SMOTE)存在合成樣本質(zhì)量問(wèn)題,合成樣本有概率分布在樣本邊界及正常多數(shù)類樣本范圍,破壞數(shù)據(jù)集正確性,影響檢測(cè)精度。
改進(jìn)SMOTE算法,提出小范圍合成少數(shù)類過(guò)采樣技術(shù),用于生成高質(zhì)量樣本。
數(shù)據(jù)集s={(xi,yi)|i=1,2,…,n},xi為合約操作碼,yi為標(biāo)簽。yi=0,xi則為正常樣本;yi=1,xi為龐氏合約樣本。sn為正常樣本集,sf龐氏合約樣本集。
對(duì)sf中所有樣本,利用k鄰近(k-Nearest Neighbor)算法得到該樣本的k個(gè)最鄰近樣本。
利用公式(1),判斷xi屬性為safe或danger,用所有xi=safe構(gòu)造小范圍安全少數(shù)類樣本集ss.
(1)
從ss中隨機(jī)選擇xi,按照采樣倍率j,選擇j個(gè)xi的最鄰近樣本xij,利用公式(2)合成yi=1的樣本xnew.
xnew=xi+rand(0,1)×(xij-xi)
(2)
式(2)中,rand(0,1)為范圍零至一的隨機(jī)數(shù)。
智能合約的操作碼由操作指令和操作數(shù)據(jù)構(gòu)成,操作指令為官方定義指令集中指令,具有一定的規(guī)范性,操作數(shù)據(jù)由地址等數(shù)據(jù)組成沒(méi)有規(guī)律性,需要對(duì)智能合約操作碼進(jìn)行數(shù)據(jù)清洗。合約操作碼沒(méi)有固定長(zhǎng)度,需要對(duì)其進(jìn)行統(tǒng)一化處理,將超過(guò)指定長(zhǎng)度的合約進(jìn)行截取,對(duì)長(zhǎng)度不足的合約進(jìn)行補(bǔ)零。對(duì)處理后的合約樣本進(jìn)行詞頻統(tǒng)計(jì),共計(jì)64種操作指令,構(gòu)建詞典和詞頻矩陣。
創(chuàng)新性引入卷積神經(jīng)網(wǎng)絡(luò)[7](Convolutional Neural Network,CNN)用于龐氏騙局合約的檢測(cè)。
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò),采用單一通道對(duì)數(shù)據(jù)進(jìn)行特征提取,數(shù)據(jù)特征獲取不夠充分。
為更充分獲取合約操作碼特征,提升檢測(cè)精度,改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)。改變傳統(tǒng)單通道卷積,使用不同尺寸卷積核,采用不平衡雙路卷積,對(duì)操作碼進(jìn)行更加充分的特征提取。雙通道特征提取后在融合層使用系列特征融合。
圖1為改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)圖,C1,C2一維卷積核,P1,P2為池化層。
圖2為檢測(cè)龐氏騙局合約方法的框架。
首先通過(guò)以太坊瀏覽器(etherscan.io)對(duì)合約字節(jié)碼進(jìn)行獲取,通過(guò)以太坊虛擬機(jī)反匯編規(guī)則,將合約的字節(jié)碼反匯編成操作碼。根據(jù)改進(jìn)SMOTE方法解決樣本不均衡分布問(wèn)題。對(duì)完善后的數(shù)據(jù)集進(jìn)行劃分,以一比三的比例劃分后,分別用于測(cè)試和模型的訓(xùn)練。改進(jìn)CNN模型經(jīng)訓(xùn)練后對(duì)測(cè)試集合約進(jìn)行檢測(cè),得到檢測(cè)結(jié)果。
計(jì)算機(jī)處理器為AMD R7 4800H,顯卡RTX2060(6G),內(nèi)存16G,操作系統(tǒng)WIN10,開發(fā)工具為Anaconda3,深度學(xué)習(xí)框架為TensorFlow。
分別選用尺寸為3和4的一維卷積核,池化層選擇最大池化,選擇ReLU作為神經(jīng)元激活函數(shù),批尺寸為128,隨機(jī)失或率為0.2,二元交叉熵作為損失函數(shù),sigmoid作為輸出層激活函數(shù),采用k折驗(yàn)證對(duì)改進(jìn)的模型進(jìn)行訓(xùn)練。
圖3為訓(xùn)練、驗(yàn)證準(zhǔn)確率和迭代次數(shù)關(guān)系,圖4為訓(xùn)練、驗(yàn)證的損失和迭代次數(shù)關(guān)系。初始設(shè)置訓(xùn)練輪數(shù)為40。由圖,在訓(xùn)練20輪后,訓(xùn)練準(zhǔn)確率和損失趨于穩(wěn)定,驗(yàn)證準(zhǔn)確率緩慢下降,損失逐漸增加,出現(xiàn)過(guò)擬合現(xiàn)象,訓(xùn)練輪數(shù)定為20輪。
將訓(xùn)練20輪后的模型作為最終的合約檢測(cè)模型,用于后續(xù)的合約檢測(cè)。
在相同實(shí)驗(yàn)環(huán)境下,分別使用支持向量機(jī)、決策樹、極端梯度提升和模型在原始數(shù)據(jù)集以及模型在改進(jìn)數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試。每組實(shí)驗(yàn)進(jìn)行十次,取平均值,作為最終實(shí)驗(yàn)結(jié)果。評(píng)標(biāo)指標(biāo)為查準(zhǔn)率(Precision),查全率(Recall),F(xiàn)-score三項(xiàng)。
表1為五組實(shí)驗(yàn)的最終實(shí)驗(yàn)結(jié)果。
表1 實(shí)驗(yàn)對(duì)比圖
從實(shí)驗(yàn)結(jié)果來(lái)看,實(shí)驗(yàn)?zāi)P驮谠紨?shù)據(jù)集上,傳統(tǒng)模型支持向量機(jī)和本文模型的準(zhǔn)確率都達(dá)到0.94,對(duì)合約的檢測(cè)都有較高的準(zhǔn)確率,極端梯度提升略低,決策樹最低只有0.64,表現(xiàn)較差。有較高查準(zhǔn)率的支持向量機(jī)模型的查全率最低為0.43,有大量龐氏騙局合約未能檢測(cè)出,F(xiàn)-score同樣最低為0.59整體表現(xiàn)較差。本文模型相比支持向量機(jī)、決策樹和極端梯度提升在查準(zhǔn)率等三項(xiàng)指標(biāo)上均更高表現(xiàn)更好,有更好的檢測(cè)精度。
模型在改進(jìn)數(shù)據(jù)集的表現(xiàn)上相比原始數(shù)據(jù)集,查準(zhǔn)率提升1%,查全率提升4%,對(duì)合約檢測(cè)具有更高的精度。
針對(duì)現(xiàn)有方法對(duì)初步部署龐氏騙局合約檢測(cè)精度低問(wèn)題,提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的龐氏騙局合約檢測(cè)方法。首先,考慮到初步部署合約不存在賬戶特征,選擇操作碼作為唯一特征提取源。然后,改進(jìn)SMOTE算法,生成人工樣本解決樣本類不均衡問(wèn)題;創(chuàng)新性引入卷積神經(jīng)網(wǎng)路用于檢測(cè)合約,改進(jìn)采用雙路不均衡卷積后特征融合,提升檢測(cè)精度。最后,通過(guò)仿真實(shí)驗(yàn)表明,該方法對(duì)初步部署龐氏騙局合約有較好檢測(cè)精度。
佳木斯大學(xué)學(xué)報(bào)(自然科學(xué)版)2022年5期