宋麗華,李濤,王伊蕾,2
1.魯東大學(xué) 信息與電氣工程學(xué)院,煙臺(tái) 264025
2.曲阜師范大學(xué) 信息科學(xué)與工程學(xué)院,日照 276826
博弈論(game theory)主要研究整個(gè)博弈中激勵(lì)結(jié)構(gòu)件的相互作用,根據(jù)是否可以達(dá)成具有約束力的協(xié)議,博弈可以分為合作博弈(cooperate game)和非合作博弈(non-cooperate game)[1].合作博弈指的是博弈環(huán)境中的某些(或者全部)參與者以同盟、合作的方式進(jìn)行博弈,研究的是參與者的收益分配問(wèn)題.非合作博弈則把所有參與者的行為都看作是單獨(dú)的行為,與環(huán)境中的其他參與者無(wú)關(guān),研究的是參與者在利益相互影響的局勢(shì)中如何選擇決策使自己的收益最大,即策略選擇問(wèn)題.現(xiàn)實(shí)中的絕大多數(shù)博弈會(huì)包含參與者之間的合作和沖突行為,因此通常看作是合作博弈與非合作博弈的混合物.博弈論廣泛應(yīng)用于經(jīng)濟(jì)學(xué)、管理學(xué)、社會(huì)學(xué)、政治學(xué)、軍事科學(xué)等領(lǐng)域.近年來(lái),博弈論在密碼學(xué)領(lǐng)域引起了研究學(xué)者的重視,催生了博弈密碼學(xué)的新興交叉學(xué)科:理性密碼學(xué)[2-5].例如,傳統(tǒng)密碼協(xié)議中的參與者被分為誠(chéng)實(shí)參與者,半誠(chéng)實(shí)參與者和惡意參與者,而理性密碼協(xié)議中參與者被認(rèn)為是理性的.博弈論在密碼學(xué)領(lǐng)域的研究主要集中在理性多方安全計(jì)算領(lǐng)域,利用理性參與者最大化其收益的特性,約束他們的行為,促使他們選擇合適的策略保證協(xié)議的安全性,多數(shù)情況下用來(lái)解決公平性[6-8].然而,理性多方安全計(jì)算中最大的一個(gè)瓶頸就是理性參與者的動(dòng)機(jī),即收益函數(shù)的定義.目前大多數(shù)理性協(xié)議中理性收益函數(shù)都來(lái)源于某個(gè)已知博弈(例如囚徒困境博弈、連鎖店博弈),然后再根據(jù)具體協(xié)議定義每個(gè)參與者的收益函數(shù).這些收益函數(shù)的定義詬病在于,缺乏足夠的經(jīng)濟(jì)動(dòng)機(jī)作為理性參與者收益函數(shù)的支撐.
安全多方計(jì)算中公平性指的是敵手和誠(chéng)實(shí)參與者同時(shí)獲得輸出,然而Cleve指出,當(dāng)敵手控制的參與者超過(guò)半數(shù)以上時(shí),公平性是不可能實(shí)現(xiàn)的[9].因此,針對(duì)公平性實(shí)現(xiàn)的研究一直被忽視.博弈論的引入解決這個(gè)問(wèn)題,收益函數(shù)為理性參與者提供了誠(chéng)實(shí)參與安全多方計(jì)算的動(dòng)機(jī),納什均衡將理性參與者的策略約束在協(xié)議允許范圍內(nèi),使得誠(chéng)實(shí)參與者都可以獲得輸出,實(shí)現(xiàn)公平性.然而,理性安全多方計(jì)算中的收益函數(shù),貌似專門為實(shí)現(xiàn)公平性精心設(shè)計(jì)的,缺乏真實(shí)的背景環(huán)境支撐.為了解決這個(gè)問(wèn)題,學(xué)者們從經(jīng)濟(jì)學(xué)角度出發(fā),將比特幣(Bitcoin)[10,11]中的經(jīng)濟(jì)激勵(lì)引入安全多方計(jì)算中,為參與者參與安全多方計(jì)算協(xié)議提供了充分而又真實(shí)的動(dòng)機(jī),基于比特幣的安全多方計(jì)算也可以實(shí)現(xiàn)公平性[12].另外,比特幣本身就是一種貨幣,用博弈論來(lái)分析其中的激勵(lì)機(jī)制是一種必然的方式.博弈論中的合作博弈和非合作博弈可以用來(lái)分析礦池策略的設(shè)計(jì).總之,博弈論、比特幣和安全多方計(jì)算之間聯(lián)系緊密、互相滲透,其連接紐帶就是參與者的動(dòng)機(jī),他們之間的關(guān)系如圖1所示.
理性安全多方計(jì)算(rational secure multi-party computation,RSMPC)是博弈論和安全多方計(jì)算的一個(gè)綜合,利用博弈論中的一些概念和方法解決安全多方計(jì)算中的某些問(wèn)題[13-15].在RSMPC中,參與者被看作是理性的或自私的,稱為理性參與者(rational parties),以追求利益最大化為行為的動(dòng)機(jī).按照博弈論的方法,參與者的“利益”用所謂“效用函數(shù)”描述,理性安全多方計(jì)算協(xié)議的執(zhí)行,就是理性參與者根據(jù)其效用函數(shù)的定義,以最大化效用為目的,使用各自的策略進(jìn)行多輪交互的過(guò)程.傳統(tǒng)的“誠(chéng)實(shí)參與者”和“敵手”均可看作是特殊的理性參與者.換句話說(shuō),協(xié)議的執(zhí)行就是理性參與者采取一系列策略的過(guò)程,理性參與者可以遵循協(xié)議,也可以偏離協(xié)議.遵循協(xié)議或偏離協(xié)議都取決于他們能否最大化其效用.協(xié)議設(shè)計(jì)的最終目標(biāo)是:每個(gè)參與者都遵循協(xié)議,都沒(méi)有偏離協(xié)議的動(dòng)機(jī).從博弈論的角度解釋這一目標(biāo)就是:每個(gè)參與者都遵循協(xié)議可以達(dá)到納什均衡(Nash equilibrium),沒(méi)有一個(gè)參與者可以通過(guò)偏離它而獲得更高的效用.
圖1 比特幣、博弈論和安全多方計(jì)算之間的關(guān)系Figure 1 Relationship among Bitcoin,game theory,and secure multi-party computation
比特幣作為一種電子貨幣可以解決參與者的動(dòng)機(jī)問(wèn)題[16,17],其中理性參與者參與多方計(jì)算的動(dòng)機(jī)可以理解為要么獲得計(jì)算結(jié)果,要么獲得一些經(jīng)濟(jì)補(bǔ)償(例如比特幣).Bentov和Kumaresan[18]定義了幾個(gè)理想元語(yǔ)(ideal primitive):認(rèn)領(lǐng)或退款函數(shù)性(claim-or-refund functionality)[19],帶懲罰的安全計(jì)算(secure computation with penalties)和帶懲罰的安全彩票(secure lottery with penalties).他們構(gòu)造的多方計(jì)算協(xié)議只需要調(diào)用常數(shù)次即可.Kumaresan和Bentov研究了如何使用比特幣激勵(lì)參與者實(shí)現(xiàn)正確計(jì)算[20],他們的工作包括四個(gè)方面:
(1)可驗(yàn)證云計(jì)算(verifiable computation):委托人把一個(gè)計(jì)算外包給云服務(wù)器,如果云返回了正確的計(jì)算結(jié)果,委托人就支付給云服務(wù)器一定的酬勞.他們?cè)O(shè)計(jì)了一個(gè)協(xié)議可以實(shí)現(xiàn)公開(kāi)和私有驗(yàn)證機(jī)制.
(2)帶有限制泄露的安全計(jì)算(secure computation with restricted leakage):基于Huang et al[21]的工作他們提供了一個(gè)高效的安全計(jì)算協(xié)議,一旦惡意敵手被發(fā)現(xiàn)試圖獲得1比特的信息,都會(huì)受到懲罰(例如扣除比特幣).
(3)公平安全計(jì)算(fair secure computation):當(dāng)參與者提前中斷協(xié)議時(shí),會(huì)受到金錢方面的懲罰.他們?cè)诒忍貛啪W(wǎng)上構(gòu)造了一個(gè)常數(shù)輪的理想交易函數(shù)性(ideal transaction functionality),并且基于該函數(shù)性設(shè)計(jì)了一個(gè)混合世界下的常數(shù)輪安全計(jì)算協(xié)議.
(4)非交互式懸賞(non-interactive bounty):他們提供了一個(gè)基于比特幣網(wǎng)絡(luò)的非交互式捐款機(jī)制,使得領(lǐng)賞人只要完成既定任務(wù)就可以領(lǐng)到賞金.
Kumaresan等還討論了如何利用Bitcoin實(shí)現(xiàn)去中心化撲克[22].2017年Kumaresan等又分別對(duì)CRYPTO 2014[18]和CCS 2015[22]中的方案進(jìn)行了改進(jìn)[23],提出如何利用懲罰機(jī)制優(yōu)化安全計(jì)算模型.Kiayias等提出了使用區(qū)塊鏈來(lái)實(shí)現(xiàn)公平且具有健壯性的多方計(jì)算協(xié)議[24].他們的工作包括以下三個(gè)方面:(1)提出了一個(gè)帶有補(bǔ)償?shù)陌踩喾接?jì)算的形式化模型;(2)該模型是UC安全的[25];(3)首次提出了一個(gè)常數(shù)輪健壯性多方計(jì)算協(xié)議.
從經(jīng)濟(jì)學(xué)角度上看,比特幣中的激勵(lì)機(jī)制解決了挖礦者的動(dòng)機(jī)問(wèn)題,而博弈論在經(jīng)濟(jì)學(xué)領(lǐng)域的應(yīng)用已經(jīng)非常成熟,因此從博弈論的角度分析比特幣和區(qū)塊鏈中的一些問(wèn)題水到渠成,更加方便.眾所周知,比特幣中最重要的一個(gè)機(jī)制就是挖礦(mining).Tschorsch和Scheuermann給出了比特幣的基本概念和工作流程[26].礦工想要獲得比特幣就需要解決特定的數(shù)學(xué)難題,即,找到一個(gè)比特幣區(qū)塊,礦工就可以獲得12.5個(gè)比特幣.截止到2018年12月23日,一個(gè)比特幣的價(jià)值為27 706.77元人民幣.因此,挖礦的收益還是很可觀的,這為礦工提供了最足夠的挖礦動(dòng)機(jī).然而解決這些難題需要具備一定的計(jì)算能力,通常單個(gè)礦工需要花費(fèi)幾個(gè)月甚至幾年才能挖到一個(gè)比特幣區(qū)塊.然而比特幣網(wǎng)絡(luò)大概10分鐘就會(huì)出現(xiàn)一個(gè)新的區(qū)塊,所以大部分的礦工徒勞無(wú)獲.為此,部分礦工組成礦池(mining pool),將他們的計(jì)算能力作為一個(gè)整體,如果在合適時(shí)間內(nèi)挖到一個(gè)有效區(qū)塊,他們就按照每個(gè)人的計(jì)算能力分享挖礦所得的獎(jiǎng)勵(lì).然而,從博弈論的角度出發(fā),如果激勵(lì)機(jī)制設(shè)計(jì)有漏洞,導(dǎo)致偏離礦池策略能夠帶來(lái)更大的收益,理性的礦工都有偏離礦池策略的動(dòng)機(jī),這與博弈論中合作博弈與非合作博弈相似.
Schrijvers等從博弈論角度出發(fā),在單個(gè)礦池中定義了一個(gè)礦池支付函數(shù)[27].礦池中的礦工一旦挖到一個(gè)區(qū)塊,可以選擇何時(shí)向礦池管理員報(bào)告.他們定義了支付函數(shù)的三個(gè)特性:激勵(lì)相容(incentive compatibility),按比例支付(proportional payments)和預(yù)算平衡(budget balanced).Schrijvers等分析了目前幾種礦池分配策略的支付函數(shù)是否滿足這幾個(gè)特性.按算力比例分配的支付函數(shù)(proportional reward function,記為Rprop)指的是按照每個(gè)礦工的計(jì)算能力來(lái)分配收益,這是一種較早的礦池分配策略.然而Rprop滿足按比例支付和預(yù)算平衡的特性,但它不是激勵(lì)相容的.按份額比例分配的支付函數(shù)(per-per-share reward function,記為Rpps)滿足激勵(lì)相容的特性,但不滿足預(yù)算平衡的特性.因此Schrijvers等提出了一個(gè)新的激勵(lì)相容支付函數(shù)(incentive compatible reward function,記為RIC),該支付函數(shù)不僅考慮到每個(gè)礦工的份額還考慮到發(fā)現(xiàn)區(qū)塊者的身份,使得收益分配更加合理.他們證明RIC滿足激勵(lì)相容,按比例支付和預(yù)算平衡這三個(gè)特性.但是礦工不允許加入到其他礦池或者獨(dú)立挖礦,他只能在礦池中貢獻(xiàn)自己的份額,也沒(méi)有考慮礦工的合謀問(wèn)題.Eyal和Sirer研究了比特幣協(xié)議的激勵(lì)相容問(wèn)題[28],在允許礦工合謀的情況下,理性礦工(rational miner)最終會(huì)變成自私礦工(selfish miner),這些自私礦工合謀組成一個(gè)自私礦池(selfish pool),能夠吸引越來(lái)越多的自私礦工加入,最后礦池會(huì)變成控制超過(guò)多數(shù)礦工的一個(gè)礦池,比特幣又變成了一種中心化貨幣,這違背了比特幣的初衷.也就是說(shuō)任何一個(gè)自私礦池都可以發(fā)展為一個(gè)控制絕大多數(shù)礦工的自私礦池,從而破壞比特幣的去中心化.這種攻擊稱為自私挖礦攻擊(selfish mining attack).為了抵御這種攻擊,他們提出了一個(gè)比特幣協(xié)議的改進(jìn)版本,這個(gè)新版本是逆向兼容的(backwards-compatible).當(dāng)?shù)V工發(fā)現(xiàn)區(qū)塊有兩個(gè)相同長(zhǎng)度的分叉(fork)時(shí),同時(shí)在全網(wǎng)廣播他們并且隨機(jī)均勻地在這兩個(gè)分支上繼續(xù)挖礦.改進(jìn)版本的比特幣協(xié)議可以阻止那些控制少于1/4資源的自私礦池成為一個(gè)控制絕大多數(shù)資源的礦池,優(yōu)于改進(jìn)之前的門限值0.Nayak等擴(kuò)展了挖礦策略的空間[29],其中包括了“頑固”策略(“stubborn”strategies),他們證明了對(duì)于較大規(guī)模的策略空間來(lái)說(shuō)自私挖礦并不是一個(gè)好的策略.Nayak等主要研究了兩類挖礦攻擊:類自私挖礦攻擊(“selfish-mining”-style)和網(wǎng)絡(luò)層次的攻擊,又稱之為日食攻擊(eclipse attack).一個(gè)礦工可以將挖礦供給和網(wǎng)絡(luò)層次的日食攻擊結(jié)合起來(lái)增大他的收益.也就是說(shuō),當(dāng)給定最優(yōu)策略時(shí),某些日食攻擊的受害者可以在攻擊過(guò)程中受益.
Heilman引入了首選重置(freshness preferred,FP)機(jī)制[30],該機(jī)制通過(guò)使用不可偽造時(shí)間戳來(lái)懲罰那些不及時(shí)釋放區(qū)塊的自私礦工.他們將Eyal和Sirer[28]中的門限由0.25提升至0.32.然而該機(jī)制不是激勵(lì)相容的,而且對(duì)于可偽造的時(shí)間戳不具備健壯性.也就是說(shuō)FP機(jī)制的實(shí)現(xiàn)依賴于不可偽造的時(shí)間戳,但是不可偽造的時(shí)間戳又很難實(shí)現(xiàn)[31,32],因此該機(jī)制的實(shí)現(xiàn)具有一定的局限性.Solat和Potop-Butucaru針對(duì)自私挖礦攻擊和截留攻擊(withholding attack)提出了一個(gè)解決方案:ZeroBlock[33],該方案不需要使用時(shí)間戳(timestamp)技術(shù),因?yàn)闀r(shí)間戳可以被偽造.在ZeroBlock方案中,如果一個(gè)自私礦工持有區(qū)塊的時(shí)間超過(guò)幅度間隔(mat interval),例如,最大的可接受一個(gè)新區(qū)塊的等待時(shí)間,那么誠(chéng)實(shí)礦工就會(huì)拒絕接受這個(gè)新區(qū)塊.
Sapirshtein等擴(kuò)展了文獻(xiàn)[28]的工作,提出了一個(gè)高效算法[34],該算法可以計(jì)算ε-optimal的自私挖礦策略,其中ε>0.他們證明了算法的正確性,并分析了其誤差范圍.使用這種高效算法,礦工可以計(jì)算自私挖礦策略獲得更大的收益,而且自私礦工需要控制的資源也少于1/4,也就是說(shuō)攻擊者及時(shí)控制的資源少于1/4也有利可圖,這樣就增加了攻擊者的能力,使他們有機(jī)可乘.他們還證明如果考慮區(qū)塊在網(wǎng)絡(luò)傳播中的延遲,門限值又變?yōu)?,即,攻擊者不論控制多少資源,總存在一個(gè)自私挖礦策略,其帶來(lái)的收益高于誠(chéng)實(shí)挖礦的收益.最后他們總結(jié)了自私挖坑和雙花(double spending)之間的相互作用.文獻(xiàn)[27,28,34]討論的都是一個(gè)礦池對(duì)誠(chéng)實(shí)礦工的攻擊.Eyal討論了兩個(gè)礦池之間的攻擊[35],兩個(gè)礦池之間存在個(gè)人理性與集體理性的矛盾,這類似于公共地悲劇博弈.Eyal提出了兩個(gè)礦池之間的截留攻擊,一個(gè)攻擊礦池(attacking pool)的管理者首先在另一個(gè)受害礦池(victim pool)注冊(cè)為正常礦工,他從受害礦池接受若干任務(wù)并把這些任務(wù)指派給攻擊礦池中的滲透礦工(稱之為infiltrating miners),滲透礦工在攻擊礦池中的比例稱之為滲透率(infiltration rate).攻擊礦池會(huì)把滲透礦工的部分工作能力提交給受害礦池,讓受害礦池評(píng)估滲透礦工的能力,當(dāng)滲透礦工提交完全的工作證明時(shí),攻擊礦池忽略這些工作.截留攻擊的缺陷在于受害礦池的總體計(jì)算能力沒(méi)有增加(滲透礦工不工作),但是它的平均預(yù)算卻降低了.一方面攻擊礦池分出一部分計(jì)算能力給受害礦池,其自身的計(jì)算能力也受到了損害.因此,總體來(lái)說(shuō)截留攻擊降低了整個(gè)網(wǎng)絡(luò)的計(jì)算能力.對(duì)于兩個(gè)礦池來(lái)說(shuō),采取截留攻擊是唯一的納什均衡,然而如果雙方都不采取截留攻擊,他們的收益會(huì)更大.從博弈論角度分析,是否采取截留攻擊對(duì)礦池來(lái)說(shuō)是一個(gè)礦工的困境(miner’s dilemma),礦工不斷的挖礦過(guò)程就類似與一個(gè)重復(fù)囚徒困境博弈.Rosenfeld建議修改區(qū)塊結(jié)構(gòu)來(lái)解決這一問(wèn)題[36].
在挖礦過(guò)程中,除了是否構(gòu)建自私礦池以及合適釋放新挖區(qū)塊等問(wèn)題,還有很多更加細(xì)致的問(wèn)題有待探索.如果礦工在一個(gè)區(qū)塊中包含更多的交易,一旦他挖出一個(gè)新的區(qū)塊,他獲得的交易費(fèi)就會(huì)更多.但是如果他們的區(qū)塊中包含較少的交易,他們的區(qū)塊在整個(gè)網(wǎng)絡(luò)中傳播的時(shí)間就會(huì)較低,這可以提高他們區(qū)塊到達(dá)其他節(jié)點(diǎn)的速度.因此包含多少交易對(duì)于礦工來(lái)說(shuō)也是一個(gè)難題.Houy在礦工之間定義了一個(gè)比特幣挖礦博弈(Bitcoin mining game)[37],假設(shè)包含在一個(gè)區(qū)塊中的交易(transaction)條數(shù)是一個(gè)博弈的結(jié)果(outcome),研究了博弈的納什均衡.Houy討論了從經(jīng)濟(jì)學(xué)角度研究交易費(fèi)對(duì)比特幣區(qū)塊規(guī)模(block size)的影響[38],任何一個(gè)擁有固定交易費(fèi)的情況,都可以等價(jià)轉(zhuǎn)化為設(shè)置一個(gè)區(qū)塊允許的最大規(guī)模(maximum block size)問(wèn)題.而且給交易規(guī)定一個(gè)固定交易費(fèi)就相當(dāng)于給每一個(gè)交易強(qiáng)制收稅,這無(wú)疑會(huì)破壞比特幣的經(jīng)濟(jì)生態(tài)環(huán)境.但是如果不對(duì)每個(gè)區(qū)塊的最大規(guī)模加以限制,交易費(fèi)又會(huì)降為0,這樣礦工都沒(méi)有挖礦的動(dòng)機(jī).當(dāng)一個(gè)礦工試圖挖掘新區(qū)塊時(shí),交易已經(jīng)存在于網(wǎng)絡(luò)中,這種情況下,礦工類似于斯塔克伯格博弈(Stackelberg game)中的跟隨者,在自己有限的區(qū)塊規(guī)模中,為了最大化自己的收益,礦工的動(dòng)機(jī)是在區(qū)塊中包括盡可能多的交易1關(guān)于比特幣安全的詳細(xì)內(nèi)容,讀者可以參閱文獻(xiàn)[39]..
1996年尼克·薩博(Nick Szabo)提出了智能合約的概念,“一個(gè)智能合約是一套以數(shù)字形式定義的承諾(promises),包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議.”事前合約參與方制定承諾,智能合約在滿足觸發(fā)條件后自動(dòng)執(zhí)行,事后任何參與方都無(wú)法更改合同承諾.智能合約能夠自動(dòng)執(zhí)行,無(wú)需事前審查和預(yù)付高昂違約成本,避免了合同糾紛等棘手問(wèn)題[40].但是因?yàn)槿狈π兄行У募夹g(shù)支撐和信任平臺(tái),智能合約遲遲未能應(yīng)用到實(shí)際產(chǎn)業(yè)中.以太坊(Ethereum)借鑒了區(qū)塊鏈技術(shù)去中心化、不可篡改性、過(guò)程透明可追蹤等特性,為智能合約提供了一個(gè)可實(shí)施的開(kāi)發(fā)平臺(tái)[41].以太坊提供了圖靈完備(Turing complete)的腳本語(yǔ)言,能夠嵌入更多額外信息.因此,任何智能合約一旦被精確定義,就可以在以太坊上構(gòu)建并自動(dòng)實(shí)施.在以太坊系統(tǒng)的支持下,智能合約迅速應(yīng)用到數(shù)字社會(huì)的各個(gè)領(lǐng)域.2016年12月由數(shù)字商務(wù)商會(huì)(Chamber of Digital Commerce)和智能合約聯(lián)盟(Smart Contracts Alliance)共同發(fā)布的“智能合約:12種商業(yè)及其他使用案例”(Smart Contracts:12 Use Case for Business & Beyond)白皮書(shū)中指出,智能合約可以應(yīng)用在包括抵押貸款、物聯(lián)網(wǎng)[42]、醫(yī)療研究等諸多領(lǐng)域[43].
智能合約的安全問(wèn)題可以概括為兩個(gè)方面:內(nèi)部安全和外部攻擊.Luu等介紹了一種新的智能合約安全問(wèn)題,并且提出了一種加強(qiáng)智能合約魯棒性的方案[44].Kosba等提出了一個(gè)去中心化系統(tǒng):Hawk,該系統(tǒng)主要解決智能合約內(nèi)容的隱私性問(wèn)題[45].Bhargavan等將智能合約編譯成F*語(yǔ)言,驗(yàn)證了智能合約中的運(yùn)行時(shí)間安全和智能合約的正確性問(wèn)題[46].Atzei等針對(duì)以太坊上的智能合約進(jìn)行了總結(jié)[47],他們主要關(guān)注了合約的健壯性,并且分類敘述了程序中的陷阱(programming pitfalls).Dika對(duì)所有已知合約的脆弱性進(jìn)行了分類總結(jié)[48],他們還分析了以太坊上的智能合約(例如Oyente,Security和SmartCheck)中代碼安全問(wèn)題.最近,Nikolic等對(duì)近百萬(wàn)份智能合約進(jìn)行了分析[49],發(fā)現(xiàn)其中有34 200份智能合約本身具有一些脆弱性,很容易受到黑客的攻擊.另外,他們還利用MAIAN這個(gè)工具對(duì)智能合約的有效性進(jìn)行了分析.在對(duì)3759份智能合約抽樣調(diào)查后發(fā)現(xiàn),其中有3686份智能合約含有漏洞,包含漏洞的概率高達(dá)89%.智能合約的漏洞還會(huì)造成客戶電子財(cái)產(chǎn)被鎖死在以太坊中,在2017年11月就有媒體爆料,因?yàn)橐恍┮蕴恢悄芎霞s使用者的誤操作,導(dǎo)致了約3億美元永久被凍結(jié)在以太坊之中.
除了智能合約本身具有一些安全問(wèn)題外,專門針對(duì)智能合約的攻擊也有很多.Velner等介紹了一種基于智能合約的攻擊模型[50],攻擊者通過(guò)智能合約可以破壞礦池的正常工作.Juels等提出了犯罪智能合約(criminal smart contract)的概念[51],犯罪分子可以利用智能合約實(shí)施一些違法活動(dòng),例如非法售賣盜版影片.他們著重討論了刑事智能合約的可行性以及危害性,文章的最后他們呼吁出臺(tái)相關(guān)的法律政策以及提高技術(shù)防范措施.Alharby和van Moorsel甚至認(rèn)為目前沒(méi)有合適的方法阻止犯罪智能合約[52].目前的研究加劇了人們對(duì)智能合約所帶來(lái)危害的擔(dān)憂,學(xué)者們?cè)噲D尋找其他方法研究如何抵御智能合約帶來(lái)的負(fù)面作用.Bigi等綜合了博弈論和形式化分析方法(formal method)驗(yàn)證了智能合約的有效性[53].他們主要分析了由智能合約引入的保證金(deposit)對(duì)系統(tǒng)帶來(lái)的不確定性,進(jìn)而研究了如何提高智能合約的有效性.
盡管智能合約還不完美,存在各種安全問(wèn)題,但是它的應(yīng)用范圍依然很廣泛.在服務(wù)外包云服務(wù)中,如果試圖付費(fèi)最小,委托人(client)通過(guò)付費(fèi)(pay as you go)的形式把服務(wù)外包給一個(gè)云計(jì)算.例如,委托人將自己的輸入x發(fā)送給云,云負(fù)責(zé)計(jì)算f(x).云誠(chéng)實(shí)計(jì)算f(x),計(jì)算的花費(fèi)是c,隨后云將結(jié)果返回給委托人,委托人支付酬勞r.至此為止,云計(jì)算的外包服務(wù)結(jié)束,云的收益是r-c.云計(jì)算正常結(jié)束的前提條件是云是誠(chéng)實(shí)的,一旦云是惡意的或者被其他實(shí)體腐敗(corrupted),外包服務(wù)的安全性就存在隱患.例如,云為了最大化其收益,令f(x)等于一個(gè)隨機(jī)數(shù)并將其返回給委托人.委托人無(wú)法驗(yàn)證返回值的正確性,因此委托人默認(rèn)返回值為正確的,此時(shí)云得到收益r,大于正確計(jì)算時(shí)得到的收益.也就是說(shuō)如果將計(jì)算外包給一個(gè)云,該云為了最大化其收益,具有欺騙委托人的動(dòng)機(jī).為了解決這個(gè)問(wèn)題,可以采用Set@Home的方法,將計(jì)算委托給多個(gè)云,每個(gè)云返回一個(gè)計(jì)算值,當(dāng)大多數(shù)云的返回結(jié)果達(dá)到一致時(shí),委托人認(rèn)為該值是正確的,支付給每個(gè)云一個(gè)費(fèi)用.這種方法可以很好地解決計(jì)算結(jié)果正確性的問(wèn)題.但是存在兩個(gè)問(wèn)題:(1)委托人的花費(fèi)較高;(2)一旦大多數(shù)云合謀,委托人仍然無(wú)法得到正確值.
Dong等針對(duì)這個(gè)問(wèn)題[54],結(jié)合智能合約和博弈論,提出了可驗(yàn)證云計(jì)算中抗合謀的智能合約.他們假設(shè)委托人和云都是理性的參與者,委托人在保證計(jì)算結(jié)果正確性的前提條件下,力爭(zhēng)最大化其收益.因此他把計(jì)算外包給盡可能少的云以減少其支出,在這里Dong等選擇了兩個(gè)云做相同的計(jì)算.在云和委托人之間建立一個(gè)囚徒智能合約(記為Prisoners’smart contract),它的主要作用是完成保證金和報(bào)酬的交易,從而保證兩個(gè)云誠(chéng)實(shí)地完成計(jì)算.然而從兩個(gè)云的角度考慮,他們有充分的動(dòng)機(jī)達(dá)成合謀,因?yàn)楹现\的收益明顯大于不合謀的情形.如果雙方希望達(dá)成合謀,就需要簽訂一個(gè)合謀智能合約(Colluders’smart contract),一旦有一方違反合約,將會(huì)受到懲罰.他們可以成功地用一個(gè)隨機(jī)數(shù)合謀欺騙委托人.委托人最終花較高費(fèi)用得到一個(gè)隨機(jī)數(shù),與此同時(shí),兩個(gè)云不需要任何計(jì)算就可以獲得酬勞.這對(duì)委托人來(lái)說(shuō)顯然不公平,因此委托人需要采取一些措施阻止兩個(gè)云的合謀.Dong等在委托人和某個(gè)云之間構(gòu)造了一個(gè)背叛智能合約(Traitors’smart contract),通過(guò)給某個(gè)云提供一些獎(jiǎng)勵(lì)機(jī)制,阻止兩個(gè)云之間的合謀.至此,在囚徒智能合約、合謀智能合約和背叛智能合約的相互作用下,給定合適的參數(shù)設(shè)置,兩個(gè)云沒(méi)有合謀的動(dòng)機(jī),最終誠(chéng)實(shí)地完成計(jì)算.
Juels等提出的犯罪智能合約的概念[51],其中包括一個(gè)智能合約PublicLeaks,不法分子可以利用該合約出售一些非法文件,例如盜版影片.PublicLeaks首先將影片割分成若干小片段,為了驗(yàn)證依賴于智能合約收集捐款,當(dāng)捐款金額達(dá)到一定數(shù)量時(shí),釋放影片的所有權(quán).Juels等人分析了PublicLeaks,分析了這個(gè)智能合約的可行性,但是他們沒(méi)有討論P(yáng)ublicLeaks的運(yùn)行條件.例如,他們規(guī)定當(dāng)捐款金額達(dá)到一定數(shù)量時(shí),Dealer可以非法售賣盜版影片.但是他們沒(méi)有討論觀眾的捐款動(dòng)機(jī),有沒(méi)有涉及在什么條件下捐款金額能夠達(dá)到一定數(shù)量,觀眾的捐款動(dòng)機(jī)對(duì)于智能合約的執(zhí)行有何影響,有什么因素對(duì)PublicLeaks的可行性產(chǎn)生影響.為了解決這個(gè)問(wèn)題,我們借鑒文獻(xiàn)[53]的思路結(jié)合形式化方法,在PublicLeaks中引入了一些隨機(jī)變量,重新構(gòu)造了一個(gè)智能合約Random-PublicLeaks.隨機(jī)變量的含義如表1所示.
表1 Random-PublicLeaks中的變量列表Table 1 Parameters list of Random-PublicLeaks
智能合約Random-PublicLeaks的詳細(xì)流程如圖2所示.
圖2 智能合約Random-PublicLeaks的基本流程Figure 2 Basic flow of Random-PublicLeaks
(1)狀態(tài)S1:Dealer將影片film分割成n個(gè)片段filmi(i∈[1,n]),他使用密鑰ski把每一個(gè)片段加密.與此同時(shí)Dearer需要提交部分保證金,如果他不提交保證金(假設(shè)概率為0.01),狀態(tài)就維持在S1,否則就轉(zhuǎn)入狀態(tài)S2.
(2)狀態(tài)S2:感興趣的觀眾下載所有的加密片段c={ci}i∈[1,n]={Encki(fi)}i∈[1,n].
(3)狀態(tài)S3:合約隨機(jī)地在[1,n]中選擇一個(gè)子集n′,然后Dealer被要求解密n′所對(duì)應(yīng)的片段.如果Dealer不能夠正確解密這些片段,那么合約就轉(zhuǎn)入最終狀態(tài)Sfail.否則轉(zhuǎn)入狀態(tài)S5.
(4)狀態(tài)Sfail:Dealer的保證金被扣除,智能合約終止.
(5)狀態(tài)S5:一旦Dealer正確解密n′所對(duì)應(yīng)的片段(說(shuō)明Dealer擁有解密整個(gè)影片的能力),觀眾選擇捐款或者不捐款.如果不捐款就轉(zhuǎn)入狀態(tài)S6,否則轉(zhuǎn)入狀態(tài)S7.
(6)狀態(tài)S6:觀眾不捐款,轉(zhuǎn)入狀態(tài)S8.
(7)狀態(tài)S7:觀眾捐款amt,轉(zhuǎn)入狀態(tài)S8.
(8)狀態(tài)S8:假設(shè)捐款觀眾數(shù)為k,Dealer從他們那里收集到總的捐款額為Donation=k×amt.捐款額和影片價(jià)值之間滿足關(guān)系Donation≤vfilm,則轉(zhuǎn)向狀態(tài)S9,否則轉(zhuǎn)向狀態(tài)S10.
(9)狀態(tài)S9:Dealer沒(méi)有解密影片的動(dòng)機(jī),轉(zhuǎn)向狀態(tài)Sfail.
(10)狀態(tài)S10:Dealer解密影片,轉(zhuǎn)向狀態(tài)Suni.然而對(duì)于非理性的Dealer來(lái)說(shuō),他仍然會(huì)以很小的概率(例如1-Pdc)錯(cuò)誤地解密影片,導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)入S11.
(11)狀態(tài)S11:返還Dealer的保證金,合同終止.
(12)狀態(tài)Suni:Dealer得到捐款并且返還了保證金,觀眾(不論捐贈(zèng)與否)可以解密所有片段.
我們采用PRISM進(jìn)行了方針,PRISM是一款用于概率模型檢測(cè)(probabilistic model checking,PMC)的開(kāi)源工具,PMC是一種驗(yàn)證存在隨機(jī)行為系統(tǒng)的分析技術(shù),可以應(yīng)用在安全領(lǐng)域,例如概率合約簽署、概率公平交換和博弈論,例如市場(chǎng)投資預(yù)測(cè)、穩(wěn)定匹配.Bigi等綜合了博弈論和形式化分析方法利用這個(gè)工具對(duì)智能合約中Deposit進(jìn)行了仿真[53],討論了如何設(shè)置Deposit的值來(lái)促進(jìn)合約的執(zhí)行.本文也利用這個(gè)工具,對(duì)于各個(gè)隨機(jī)參數(shù)對(duì)于犯罪智能合約的有效性進(jìn)行了仿真.當(dāng)給定Pr=0.9,Pp=0.7,amt=30,vfilm=30,k=10時(shí),智能合約單次運(yùn)行時(shí)各個(gè)參數(shù)的變化情況如表2所示.
表2 智能合約運(yùn)行過(guò)程中參數(shù)的變化情況Table 2 Parameters in smart contract
從表2可知,因?yàn)榇嬖陔S機(jī)變量,合約運(yùn)行到每個(gè)狀態(tài)的情況不同,導(dǎo)致每次參數(shù)有波動(dòng).即使捐款額達(dá)到一定金額,Dealer的余額也會(huì)發(fā)生波動(dòng),這是因?yàn)槊總€(gè)狀態(tài)對(duì)于余額的處理不同,Dealer余額隨時(shí)間變化的情況如圖3所示.
圖3 Dealer余額隨時(shí)間的變動(dòng)情況Figure 3 Fluctuation of balance
Juels等的研究結(jié)果表明[51],Dealer可以通過(guò)犯罪智能合約非法賣掉盜版影片.也就是說(shuō),智能合約達(dá)到狀態(tài)Suni,但是他們沒(méi)有研究到達(dá)這個(gè)狀態(tài)的概率.本文研究了在各個(gè)參數(shù)下,智能合約Random-PublicLeaks到達(dá)狀態(tài)Suni的最大概率.我們首先設(shè)定Pr=0.8,Pdc=0.8,amt=10,vfilm=200,Donation=k×10,仿真結(jié)果如圖4所示,當(dāng)Pp固定時(shí),能否到達(dá)12的最大概率只與k的值有關(guān).而當(dāng)k值固定時(shí),Pp越大,到達(dá)12的概率也越大,最大是65%.剛剛超過(guò)50%,所以說(shuō),即使所有的參與者都捐贈(zèng),也未必一定能達(dá)到狀態(tài)Suni.因此可以看出Dealer使用智能合約販賣盜版影片的成功率較低,犯罪智能合約的有效性制約了其應(yīng)用.
圖4 到達(dá)狀態(tài)Suni的最大概率Figure 4 Maximum probability when reaching state Suni
區(qū)塊鏈技術(shù)是一種全新的分布式基礎(chǔ)架構(gòu)與計(jì)算方式,它主要利用塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)驗(yàn)證和存儲(chǔ)數(shù)據(jù),通過(guò)分布式節(jié)點(diǎn)之間的共識(shí)算法產(chǎn)生和更新數(shù)據(jù).同時(shí)為了保證數(shù)據(jù)傳輸和訪問(wèn)的安全性,還引入了密碼學(xué)技術(shù).另外,區(qū)塊鏈還利用由自動(dòng)化腳本代碼組成的智能合約來(lái)編程和操作數(shù)據(jù).區(qū)塊鏈技術(shù)的去中心化的特性引起了各行業(yè)的廣泛關(guān)注,其中的激勵(lì)機(jī)制設(shè)計(jì)是區(qū)塊鏈技術(shù)的瓶頸問(wèn)題.本文探討了博弈論與區(qū)塊鏈的交叉研究現(xiàn)狀,分析了博弈論在比特幣的激勵(lì)機(jī)制設(shè)計(jì)中的若干問(wèn)題.討論了智能合約中內(nèi)部和外部的安全隱患,并應(yīng)用智能合約解決了可驗(yàn)證云計(jì)算問(wèn)題,利用博弈論的思想,為云計(jì)算中的委托人設(shè)計(jì)了抗合謀的智能合約.最后還通過(guò)引入隨機(jī)參數(shù)的方法,驗(yàn)證犯罪智能合約的有效性,降低了犯罪智能合約成功的概率.區(qū)塊鏈技術(shù)方興未艾,區(qū)塊鏈3.0,其中包括:區(qū)塊鏈自洽組織(DAO)、區(qū)塊鏈自洽公司(DAC),是今后的發(fā)展方向.如何利用博弈論設(shè)計(jì)更加合理的激勵(lì)機(jī)制仍然是區(qū)塊鏈與博弈論交叉學(xué)科的研究熱點(diǎn).另外,區(qū)塊鏈在大社會(huì)中的應(yīng)用,例如,科學(xué)領(lǐng)域,醫(yī)療領(lǐng)域,教育領(lǐng)域等,也為區(qū)塊鏈技術(shù)產(chǎn)業(yè)化提供了更多的發(fā)展契機(jī).