王 雷,任 南,李保珍
1.江蘇科技大學 經(jīng)濟管理學院,江蘇 鎮(zhèn)江212003
2.南京審計大學 國家審計大數(shù)據(jù)研究中心,南京 211815
雙花問題是指在數(shù)字貨幣系統(tǒng)中,由于數(shù)據(jù)的可復制性,存在同一筆數(shù)字資產(chǎn)因不當操作被重復使用的情況。雙花攻擊曾經(jīng)是傳統(tǒng)在線支付中困擾多年的難題,Nakamoto提出的區(qū)塊鏈技術(shù)通過對每一個區(qū)塊加時間戳保證了交易記錄的真實性,一定程度上減小了雙花攻擊的概率[1]。但在基于POW(Proof Of Work)共識的區(qū)塊鏈中,挖礦節(jié)點通過工作量證明的方式競爭記賬,如果節(jié)點占有超過全網(wǎng)50%的算力,就可以創(chuàng)造一條長于公鏈的側(cè)鏈,使公鏈中的交易被回滾,借此完成雙重花費,這種雙花攻擊也叫51%雙花攻擊[2]。另外,Pinzón(2016)還提出了種族攻擊和芬妮攻擊兩種新的雙花攻擊,前者是通過給向自己支付的交易中加入更多的交易費用實現(xiàn)雙花,后者則是通過控制區(qū)塊的廣播時間實現(xiàn)雙花[3]。隨著算力的市場流動性越來越強,節(jié)點現(xiàn)在可以通過租借、加入礦池等多種方式積攢算力,2018年比特幣黃金B(yǎng)TG(Bitcoin Gold)就遭到了51%雙花攻擊,惡意節(jié)點預先準備了大量算力完成套現(xiàn),最終系統(tǒng)損失超過1 800萬美元。因此雙花攻擊正成為區(qū)塊鏈中不可忽視的安全隱患。
針對這個問題,有學者從攻擊者的動機和平臺的安全防控兩個角度對區(qū)塊鏈中不同的雙花攻擊進行了研究。對于51%雙花攻擊的產(chǎn)生動機,Chaudhary運用時間自動機模型驗證工具證明了比特幣中的51%雙花攻擊成功概率是比較高的[4];Liao提出少數(shù)攻擊者可以通過聯(lián)結(jié)理性節(jié)點的方法增加51%雙花攻擊成功的概率[5];Biais證明在交易價格滿足某些條件時嘗試51%雙花攻擊是有利可圖的,但要求投入大量的算力[6]。對于51%雙花攻擊的防控策略,Budish提出交易成本必須和節(jié)點攻擊可能獲取的最大利益呈正相關(guān)關(guān)系[7]。Westerlund提出通過主節(jié)點和礦工的雙層共識機制消除51%雙花攻擊[8]。Liu研究種族攻擊和芬妮攻擊,他認為這兩種攻擊的對象都是接受零確認的商家,只要在多次確認的基礎(chǔ)上完成交易,便可有效規(guī)避風險[9]。
上述研究并未過多關(guān)注雙花攻擊中節(jié)點間的相互作用以及策略的動態(tài)變化,不過一些學者已經(jīng)嘗試從博弈角度對區(qū)塊鏈中的另外一些安全問題進行過分析。Kiayias曾經(jīng)指出,通過博弈方法研究區(qū)塊鏈中的安全問題,可以更深入的理解不同個體間如何競爭與合作[10]。Sapirstein分析礦工聯(lián)合形成礦池進行的自私采礦攻擊,并對區(qū)塊鏈底層協(xié)議做適當改進[11]。唐長兵主要研究區(qū)塊鏈中的區(qū)塊截留攻擊,并提出基于零行列式的優(yōu)化方法[12]。Liu[13]和Easley[14]則分別把交易費用作為礦工選擇礦池和算力競爭問題中的重要因素進行博弈分析。Abadi構(gòu)建博弈模型證明了POW共識不是激勵兼容的[15]。Liu提到可以基于波動理論和混合策略博弈理論,找到防止區(qū)塊鏈網(wǎng)絡攻擊的最佳策略[16]。
區(qū)塊鏈中的雙花攻擊在本質(zhì)上是一個經(jīng)濟問題,節(jié)點間關(guān)于是否攻擊進行博弈,選擇基于自身收益最大化的策略,節(jié)點的策略選擇相互之間也會產(chǎn)生影響。因此,本文選擇針對雙花攻擊中破壞力較強的51%雙花攻擊,構(gòu)建了節(jié)點群體的進化博弈模型,以揭示節(jié)點策略的動態(tài)演化趨勢,并通過推導進化博弈策略,預測51%雙花攻擊出現(xiàn)的概率;同時,把交易價格和交易費用作為進化博弈模型中的兩個重要變量,探討變量在取值改變時對博弈結(jié)果產(chǎn)生的影響;最后,基于前面得到的結(jié)論,本文從交易費用和交易價格兩個方面提出51%雙花攻擊的防控策略。
傳統(tǒng)博弈論采用“完全理性”的假設,要求參與者有完美的判斷和預測能力,然而事實上個人決定容易犯錯,集體決策也經(jīng)常失準[17]。針對這個問題,Smith[18]和Price結(jié)合達爾文的自然選擇理論創(chuàng)立了進化博弈論,認為參與博弈的個體是“有限理性”的。在進化博弈論中,每個參與人都是重復從群體中隨機抽取對手并進行博弈,參與人既可以通過自己的經(jīng)驗獲得決策信息,也可以通過觀察其他參與人的決策并模仿而獲得決策信息。他們之間的策略均衡不是通過迅速的最優(yōu)化計算得到,而是需要經(jīng)歷一個學習調(diào)整的過程。進化穩(wěn)定策略是進化博弈論中的核心概念,是指如果群體中的大多數(shù)個體選擇進化穩(wěn)定策略,那么小的突變者群體就不可能侵入到這個群體中,也代表系統(tǒng)此時處于進化穩(wěn)定均衡。Taylor[19]之后提出了著名的復制動態(tài)模型,用來描述單群體策略的動態(tài)過程。隨著進化博弈理論研究的深入,該理論在經(jīng)濟學、社會學、生態(tài)學領(lǐng)域都有非常廣泛的應用。
51%雙花攻擊是區(qū)塊鏈中最為典型且破壞力較強的一種雙花攻擊,在這種攻擊中實際上也包含了一個關(guān)于進化博弈的策略選擇和均衡問題。在區(qū)塊鏈系統(tǒng)中,所有節(jié)點組成一個節(jié)點群體,每個節(jié)點關(guān)于是否選擇51%雙花攻擊都擁有一個初始策略,之后節(jié)點重復從群體中隨機選取其他節(jié)點進行博弈,在這個過程中采用策略收益較低的節(jié)點會改變自己的策略,轉(zhuǎn)向模仿有高收益的策略,而低收益的策略逐漸被淘汰,經(jīng)過這樣不斷的學習與調(diào)整后節(jié)點群體最終會達到一個均衡狀態(tài),即群體中的所有節(jié)點都選擇進化穩(wěn)定策略。因此,本文構(gòu)建區(qū)塊鏈中51%雙花攻擊的進化博弈模型,對節(jié)點策略的動態(tài)進化情況進行分析。
首先與實際情況相結(jié)合,對于51%雙花攻擊模型做出如下假設條件:
(1)節(jié)點選擇攻擊時消耗的算力成本足夠大,足以使節(jié)點順利完成攻擊,并且兩個節(jié)點選擇攻擊時的算力成本相同。
(2)當進行博弈的兩個節(jié)點都選擇攻擊時,為了減少各自的算力成本消耗,他們會選擇在同一條側(cè)鏈上合作挖礦。
(3)兩個節(jié)點購買商品的價格,以及挖礦所獲得的交易費用獎勵和新幣獎勵都是相同的。
(4)每個區(qū)塊都只包括一條交易記錄。
(5)不考慮由幣的市價變化引起的節(jié)點收益變化。
另外,本研究模型中的基本參數(shù)包括:參與者節(jié)點i和節(jié)點j;參與雙方的策略Si和Sj,可選的策略集均為{攻擊,不攻擊};初始狀態(tài)下選擇攻擊策略的概率為x(0≤x≤1),則選擇不攻擊策略的概率為1-x,進化穩(wěn)定策略用x*表示;參與雙方的收益函數(shù)分別為Ui(Si,Sj),Uj(Si,Sj);參與雙方與第三方商家的交易分別為i1、j1,發(fā)送給自己的用于雙重支付的交易分別為i2、j2,無i和j參與的其他交易用k表示;第三方商家商品的價格為p;對一個區(qū)塊進行挖礦消耗的算力成本為h;挖礦獲得的獎勵包括:每筆交易中由交易發(fā)起人承擔的交易費用f,每個區(qū)塊產(chǎn)生后由系統(tǒng)發(fā)放的新幣b?;诓┺碾p方不同的策略組合,節(jié)點的收益會是由p、h、f、b組合而成的函數(shù)。
兩個節(jié)點基于是否進行51%雙花攻擊的問題進行博弈,策略組合包括以下四種情況:Si=攻擊,Sj=攻擊;Si=攻擊,Sj=不攻擊;Si=不攻擊,Sj=攻擊;Si=不攻擊,Sj=不攻擊。
(1)當i和j都選擇攻擊時,i從第三方商家購買某商品價格為p,另外支付交易費用f廣播到網(wǎng)絡中,交易會被挖礦節(jié)點記錄到公鏈上;接著i重復利用上筆交易(i1)中的幣p發(fā)送給自己,并投入較高的算力成本h在另一條側(cè)鏈中挖礦,將這筆交易(i2)記錄在側(cè)鏈中,i作為礦工獲得相應的交易費用與新幣獎勵;之后i繼續(xù)在這條側(cè)鏈上挖礦,并獲得相應的獎勵;j也選擇攻擊,并且與i選擇同一條側(cè)鏈,攻擊流程與i完全相同。由于i和j在算力方面的優(yōu)勢,最終通過合作挖礦使側(cè)鏈的長度超過公鏈,兩者第一筆交易消費的金額p都回到自己賬戶,商品也在自己手中,因此i、j分別完成雙花攻擊。具體流程如圖1(a)。
節(jié)點i的收益由以下幾部分組成:交易i1中獲取的商品價格p,支付的交易費用f;交易i2中支付的交易費用f,通過挖礦獲取的交易費用獎勵f和新幣獎勵b,消耗的算力成本h;對網(wǎng)絡中的其他交易k挖礦獲取的獎勵f+b,消耗算力成本h。
綜上,節(jié)點i的收益:Ui(攻擊,攻擊)=p+2b-2h,節(jié)點j的收益與i完全相同:Uj(攻擊,攻擊)=p+2b-2h。
(2)當i選擇攻擊,j選擇不攻擊時,i和j分別從商家購買價格為p的商品,并支付交易費用f后被礦工記錄到公鏈上;接著i重復利用上筆交易(i1)中的幣p發(fā)送給自己,并通過挖礦將這筆交易(i2)記錄在側(cè)鏈中,作為礦工獲得相應的獎勵;之后i繼續(xù)挖礦并將j的交易(j1)和其他交易k記錄在側(cè)鏈中,并獲得相應的獎勵。最終側(cè)鏈長度超過公鏈,i第一筆交易(i1)的金額p回到自己賬戶,i完成雙花攻擊。具體流程如圖1(b)。
節(jié)點i的收益由以下幾部分組成:交易i1中獲取的商品價值p,支付的交易費用f;交易i2支付的交易費用f,通過挖礦獲取的獎勵f+b,消耗算力成本h;交易i1中獲取的獎勵f+b,消耗算力成本h;其他交易k中獲取的獎勵f+b,消耗算力成本h。節(jié)點j的收益包括交易j1中支付的交易費用f。
綜上,節(jié)點i的收益:Ui(攻擊,不攻擊)=p+f+3b-3h,節(jié)點j的收益:Uj(攻擊,不攻擊)=-f。
(3)當i選擇不攻擊,j選擇攻擊時,情況與(2)正好相反。
節(jié)點i的收益:Ui(不攻擊,攻擊)=-f,節(jié)點j的收益:Uj(不攻擊,攻擊)=p+f+3b-3h。
(4)當i和j都選擇不攻擊時,i和j各支付p購買商品,并支付交易費用f后被記錄到公鏈上,具體流程如圖1(c)。
圖1 雙花攻擊博弈流程圖
節(jié)點i的收益:Ui(不攻擊,不攻擊)=-f,節(jié)點j的收益:Uj(不攻擊,不攻擊)=-f。
綜上,節(jié)點i和j的收益矩陣見表1。
表1 51%雙花攻擊節(jié)點收益矩陣
根據(jù)收益矩陣,當節(jié)點選擇攻擊策略時,可以求出其期望收益為:
當節(jié)點選擇不攻擊策略時,其期望收益為:
節(jié)點選擇攻擊策略的概率為x,選擇不攻擊策略的概率為1-x,因此節(jié)點的平均期望收益為:
博弈類型動態(tài)變化的速度取決于兩個因素,即可模仿對象數(shù)量的大?。ㄔ擃愋筒┺姆降谋壤┖湍7聦ο蟮某晒Τ潭龋ㄔ擃愋筒┺姆绞找娉^整體平均收益的幅度)[20]。由式(1)~(3)得到節(jié)點選擇攻擊策略的復制動態(tài)方程為:位圖如圖3。博弈有兩個進化穩(wěn)定策略,即x*1=0和x*2=1,博弈結(jié)果取決于x的大小,如果x位于區(qū)間
圖2 p<h-b時的動態(tài)相位圖
由于在常見的區(qū)塊鏈平臺(比特幣BTC、比特現(xiàn)金B(yǎng)CH)中,新幣獎勵一般幾年才變動一次,因此本模型中假設新幣獎勵b為定值,另外假設算力成本h也是足夠大的定值。將商品價格p和交易費用f作為模型中的兩個變量,根據(jù)p和f的不同取值,節(jié)點的進化穩(wěn)定策略可分以下幾種情況進行討論:不攻擊策略;相反,如果x位于區(qū)間1),則收斂到x*2=1,節(jié)點選擇攻擊策略。分界點越大,節(jié)點選擇攻擊策略的可能性越小。當f≥時,復制動態(tài)相位圖與圖2(c)相同,x*=1是節(jié)點的進化穩(wěn)定策略,節(jié)點在長期都會選
由于在復制動態(tài)相位圖上,復制動態(tài)曲線與橫坐標軸相交并且交點處切線斜率為負的點就是進化穩(wěn)定策略[21]。所以當p<h-b且f≤時,復制動態(tài)相位圖如圖2(a),該博弈有唯一的進化穩(wěn)定策略,即x*=0,表明節(jié)點在長期都會選擇不攻擊策略。當p<h-b且<2h-2b-p時,如圖2(b),x*=是唯一的進化穩(wěn)定策略。表明節(jié)點選擇攻擊策略的比例為,比例越小節(jié)點選擇攻擊策略的可能性就越小。當p<h-b且f>2h-2b-p時,如圖2(c),x*=1是進化穩(wěn)定策略,表示即使有少量節(jié)點選擇不攻擊策略,隨著不斷的學習和調(diào)整,最終所有節(jié)點都會采取攻擊策略。
(2)在h-b<p<2h-2b條件下,分三種情況進行分析,當f<2h-2b-p時,復制動態(tài)相位圖與圖2(a)相同,x*=0是進化穩(wěn)定策略,節(jié)點在長期都會選擇不攻擊策略。當2h-2b-p<f<時,復制動態(tài)相
圖3 h-b<p<2h-2b時的動態(tài)相位圖
(4)在p>3h-3b條件下,無論f的取值是多少,復制動態(tài)相位圖都和圖2(c)相同,x*=1是節(jié)點的進化穩(wěn)定策略,節(jié)點在長期都會選擇攻擊策略。
綜上所述,當交易價格和交易費用處于不同區(qū)間時,節(jié)點的進化穩(wěn)定策略如表2所示。
為了更直觀地體現(xiàn)節(jié)點進行51%雙花攻擊意愿的進化過程,本文使用Matlab軟件進行仿真分析。首先對p、b、h、f進行賦值,根據(jù)進化博弈模型中得到的結(jié)論,并結(jié)合實際情況,本文將算力成本h和新幣獎勵b分別設置為定值200元和80元,然后將交易價格p分為四種情況,在每種情況下交易費用f有多種取值,具體賦值情況如表3所示。
表2 節(jié)點的進化穩(wěn)定策略分類情況
表3 關(guān)鍵參數(shù)賦值情況 元
2.3節(jié)中已經(jīng)得到了節(jié)點選擇策略的復制動態(tài)方程:F(x)==x(1-x)[p+(3-x)b+(x-3)h+(2-x)f],把經(jīng)過賦值的p、b、h、f依次填入該方程形成節(jié)點策略迭代和進化的函數(shù)。
接著在[0,1]區(qū)間內(nèi)以0.05為間隔,取20個不同的節(jié)點攻擊的初始概率值(0、0.05、0.1、0.15……),再設置所觀察節(jié)點攻擊概率變化的時間區(qū)間。根據(jù)節(jié)點策略迭代和進化的函數(shù),以時間t為橫坐標,以節(jié)點選擇攻擊策略的概率x為縱坐標,繪制20種初始條件下節(jié)點攻擊意愿進化情況的曲線。
然后根據(jù)交易價格和交易費用的不同取值對每種情況下節(jié)點攻擊意愿的進化情況進行具體分析。
當交易價格為60時,p小于臨界值h-b。首先當交易費用f=200時,節(jié)點的攻擊意愿進化情況如圖4(a),可以看出進化穩(wěn)定策略是x*=1,所有節(jié)點在長期都會選擇攻擊策略。接著減少交易費用使f<2h-2b-p,當f=170時的節(jié)點攻擊意愿進化情況如圖4(b),進化穩(wěn)定策略是x*=4/5,表明會有4/5的節(jié)點選擇攻擊策略,1/5的節(jié)點選擇不攻擊策略,此時攻擊概率仍然較高。進一步減少交易費用使f=100,節(jié)點攻擊意愿進化情況如圖4(c),此時節(jié)點的進化穩(wěn)定策略變?yōu)閤*=0,無論節(jié)點選擇不同策略的初始比例是多少,最終所有節(jié)點都會選擇不攻擊策略。
圖4 交易價格在最小區(qū)間的攻擊意愿進化情況
當交易價格為200時,p大于臨界值h-b,小于臨界值2h-2b。首先當交易費用f=100時,節(jié)點攻擊意愿進化情況如圖5(a),進化穩(wěn)定策略是x*=1,所有節(jié)點都會選擇攻擊策略。減少交易費用使當f=70時節(jié)點的攻擊意愿進化情況如圖5(b),此時的進化穩(wěn)定策略取決于x的初始值,x<2/5時所有節(jié)點都會選擇不攻擊策略,相反會選擇攻擊策略。進一步減少交易費用,f=20時的節(jié)點攻擊意愿進化情況如圖5(c),可以看出節(jié)點的進化穩(wěn)定策略變?yōu)閤*=0,節(jié)點都會選擇不攻擊策略。
當交易價格為280時,p大于臨界值2h-2b,小于臨界值3h-3b。首先當交易費用f=60時,節(jié)點攻擊意愿進化情況如圖6(a),此時的進化穩(wěn)定策略是x*=1,節(jié)點都會選擇攻擊策略。減少交易費用使f<,f=20時節(jié)點的攻擊意愿進化情況如圖6(b),此時進化穩(wěn)定策略取決于x的初始值,x<2/5時所有節(jié)點都會選擇不攻擊策略,相反會選擇攻擊策略。
當交易價格為400時,p大于臨界值3h-3b,首先當交易費用f=100時節(jié)點攻擊意愿進化情況如圖7(a),此時的進化穩(wěn)定策略是x*=1。減少交易費用至f=50,節(jié)點攻擊意愿進化情況如圖7(b),進化穩(wěn)定策略還是x*=1。因此無論交易費用f為多少,節(jié)點最終都會選擇攻擊策略。
圖5 交易價格在第二區(qū)間的攻擊意愿進化情況
圖6 交易價格在第三區(qū)間的攻擊意愿進化情況
圖7 交易價格在最大區(qū)間的攻擊意愿進化情況
經(jīng)過上述仿真實驗可以看出,當交易價格和交易費用取不同值時,實驗結(jié)果與進化博弈模型中的結(jié)論完全吻合。
通過對區(qū)塊鏈中的51%雙花攻擊進行進化博弈分析,本文揭示了51%雙花攻擊的內(nèi)在機理,基于相關(guān)內(nèi)在機理,嘗試提出如下風險防控策略:
(1)平臺調(diào)控與市場調(diào)節(jié)相結(jié)合
對于比特幣、以太坊這些知名的區(qū)塊鏈平臺,交易費用都是由礦工和交易發(fā)起者自愿決定的,屬于市場調(diào)節(jié)機制,然而這種方法會造成交易費用的極不穩(wěn)定,為節(jié)點進行51%雙花攻擊提供了機會。為了有效抑制51%雙花攻擊的出現(xiàn),平臺需要制定嚴格的交易費用標準。對于不同交易價格的交易,都要設定相應的交易費用最大值,交易發(fā)起者需在規(guī)定的范圍內(nèi)支付交易費用,這樣會使節(jié)點基于收益最大化的考慮趨向于選擇不攻擊策略。此外,考慮到對礦工的激勵,可由礦工來決定每筆交易的最低費用。這種將平臺調(diào)控與市場調(diào)節(jié)相結(jié)合的方法,有利于在提高區(qū)塊鏈安全性的基礎(chǔ)上保證資源配置的效率。
(2)根據(jù)價格區(qū)間劃分相應風險監(jiān)控等級
雖然規(guī)范交易費用可以有效抑制51%雙花攻擊的出現(xiàn),但無法完全消除,因此需要制定平臺的監(jiān)督機制,制約和懲罰節(jié)點的惡意行為。根據(jù)前文得到的結(jié)論,不同交易價格區(qū)間節(jié)點攻擊意愿的進化情況不同,受到抑制的效果也不同。因此可以基于不同價格將平臺中的交易劃分4個風險等級,由低到高分別為:稍有危險、一般危險、高度危險、極其危險。風險等級更高的交易進行攻擊的可能性更大,產(chǎn)生的危害也更大,需要對其進行重點監(jiān)督。在監(jiān)督過程中收集和分析與風險相關(guān)的各種信息,預測可能發(fā)生的風險,及時提出預警。對于已發(fā)生的攻擊行為,立即限制節(jié)點的交易和挖礦活動,并進行處罰。這種方法可以更有效及時地減小51%雙花攻擊產(chǎn)生的危害。