歐陽麗煒 王帥 袁勇 倪曉春 王飛躍
智能合約的概念最早于1994年由美國計算機(jī)科學(xué)家Nick Szabo提出并定義為“一套以數(shù)字形式指定的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”[1],其設(shè)計初衷是在無需第三方可信權(quán)威的情況下,作為執(zhí)行合約條款的計算機(jī)交易協(xié)議,嵌入某些由數(shù)字形式控制具有價值的物理實體,擔(dān)任合約各方共同信任的代理,高效安全履行合約并創(chuàng)建多種智能資產(chǎn).自動販賣機(jī)、銷售點情報管理系統(tǒng)(Point of sales,POS)、電子數(shù)據(jù)交換系統(tǒng)(Electronic data intercharge,EDI)都可看作是智能合約的雛形.囿于當(dāng)時計算場景的限制,很長一段時間內(nèi)智能合約沒有得到廣泛的應(yīng)用.
直到 2008年,化名為“中本聰”(Satoshi Nakamoto)的學(xué)者提出了一種無需信任即可進(jìn)行點對點交易的加密數(shù)字貨幣系統(tǒng)–比特幣[2],人們發(fā)現(xiàn)其底層技術(shù)區(qū)塊鏈與智能合約天然契合:區(qū)塊鏈可借助智能合約的可編程性封裝分布式節(jié)點的復(fù)雜行為;智能合約可借助區(qū)塊鏈的去中心化基礎(chǔ)架構(gòu)在去信任、可執(zhí)行環(huán)境中有效實現(xiàn).自此,智能合約重?zé)ㄐ律?區(qū)塊鏈逐漸成為智能合約最主要的計算場景,智能合約也被賦予了新的含義.
目前業(yè)內(nèi)尚未形成公認(rèn)的智能合約定義,我們認(rèn)為:狹義的智能合約可看作是運行在分布式賬本上預(yù)置規(guī)則、具有狀態(tài)、條件響應(yīng)的,可封裝、驗證、執(zhí)行分布式節(jié)點復(fù)雜行為,完成信息交換、價值轉(zhuǎn)移和資產(chǎn)管理的計算機(jī)程序.廣義的智能合約則是無需中介、自我驗證、自動執(zhí)行合約條款的計算機(jī)交易協(xié)議.按照其設(shè)計目的可分為:旨在作為法律的替代和補充的智能法律合約,旨在作為功能型軟件的智能軟件合約以及旨在引入新型合約關(guān)系的智能替代合約(如在物聯(lián)網(wǎng)中約定機(jī)器對機(jī)器商業(yè)行為的智能合約)[3].本文主要研究運行在區(qū)塊鏈上的智能合約,它們具有區(qū)塊鏈數(shù)據(jù)去中心化、去信任、不可篡改、匿名可溯源等一般特性.
基于比特幣圖靈不完備字節(jié)碼語言O(shè)PRETURN的比特幣腳本是最早應(yīng)用于區(qū)塊鏈的智能合約,由于OP-RETURN的計算能力非常有限,不支持循環(huán)語句,只能實現(xiàn)基本的算術(shù)、邏輯運算及驗證加密功能,早期的智能合約通常無法具有復(fù)雜邏輯[4].以太坊作為世界上首個內(nèi)置了圖靈完備編程語言并正式引入智能合約概念的公有區(qū)塊鏈,是目前最為流行的智能合約開發(fā)平臺.以太坊的核心是可執(zhí)行任意復(fù)雜算法編碼的以太坊虛擬機(jī)(Ethereum virtual machine,EVM),所有部署在以太坊上的智能合約都將被編譯成EVM字節(jié)碼,在礦工本地隔離的EVM中執(zhí)行[5].用戶可以按照自身意愿在以太坊平臺上高效快速地開發(fā)出包括加密貨幣在內(nèi)的多種智能合約和建立在智能合約上的去中心化應(yīng)用(Decentralized applications,DApps).以太坊的出現(xiàn)改變了區(qū)塊鏈及智能合約的應(yīng)用格局,使其不再局限于數(shù)字貨幣,開始有機(jī)會構(gòu)建更宏觀的金融系統(tǒng)并應(yīng)用到其他社會領(lǐng)域.
盡管近年來智能合約發(fā)展迅猛,其仍面臨著許多不可忽視的挑戰(zhàn).以眾所周知的“The DAO”事件為例,2016年6月,攻擊者就通過調(diào)用眾籌項目“The DAO”中智能合約的可重入性函數(shù)竊取了價值大約6000萬美元的以太幣,由于智能合約不可篡改的特性,以太坊最終被迫執(zhí)行硬分叉挽回?fù)p失,而又因其匿名性,攻擊者目前仍逍遙法外[6].除類似的安全漏洞外,智能合約還存在缺乏可信數(shù)據(jù)源、隱私問題、性能問題和法律問題等其他挑戰(zhàn)亟待解決.考慮到在智能合約的產(chǎn)業(yè)應(yīng)用如火如荼展開的同時,行業(yè)內(nèi)尚缺乏統(tǒng)一的技術(shù)標(biāo)準(zhǔn)和研究框架,本文致力于以區(qū)塊鏈智能合約為研究對象,對已有的研究成果進(jìn)行全面的梳理,首次提出智能合約的基礎(chǔ)架構(gòu)模型,并以此為基礎(chǔ)概述了智能合約的運行機(jī)制、研究挑戰(zhàn)及進(jìn)展、應(yīng)用領(lǐng)域和發(fā)展趨勢等,以期為智能合約的后續(xù)研究提供參考.
本文的組織結(jié)構(gòu)為:第1節(jié)系統(tǒng)概述智能合約,包括區(qū)塊鏈技術(shù)簡介、智能合約運行機(jī)制及主流開發(fā)平臺總結(jié),首次提出并詳細(xì)闡述了智能合約的基礎(chǔ)架構(gòu)模型;第2節(jié)結(jié)合智能合約基礎(chǔ)架構(gòu)模型歸納了智能合約的研究挑戰(zhàn)及進(jìn)展,包括隱私問題、法律問題、安全問題、機(jī)制設(shè)計與性能問題和智能合約的形式化驗證等;第3節(jié)以金融、管理、醫(yī)療、物聯(lián)網(wǎng)與供應(yīng)鏈為例,介紹了智能合約的典型應(yīng)用領(lǐng)域;第4節(jié)展望了智能合約未來可能的發(fā)展趨勢;第5節(jié)總結(jié)了本文內(nèi)容.
區(qū)塊鏈?zhǔn)且环N將數(shù)據(jù)區(qū)塊按照時間順序組合成的鏈?zhǔn)浇Y(jié)構(gòu),是去中心化系統(tǒng)中各節(jié)點共享且共同維護(hù)的分布式數(shù)據(jù)賬本[7],具體的:各節(jié)點由P2P組網(wǎng)方式相互連通和交互,受激勵機(jī)制激勵貢獻(xiàn)自身算力,根據(jù)數(shù)據(jù)驗證機(jī)制及傳播協(xié)議,執(zhí)行、驗證并傳播一段時間內(nèi)生成的有效交易數(shù)據(jù),同時利用Merkle樹、哈希算法、時間戳等技術(shù)加密、生成數(shù)據(jù)區(qū)塊,依據(jù)共識算法爭奪記賬權(quán),最終獲得記賬權(quán)的節(jié)點(礦工),將其生成的數(shù)據(jù)區(qū)塊鏈接到區(qū)塊鏈主鏈上并獲得相應(yīng)獎勵,其余節(jié)點更新區(qū)塊鏈賬本.
區(qū)塊鏈具有去信任、去中心化、開放自治、匿名可溯源、信息不可篡改等特性,自問世以來就顯示出廣闊的應(yīng)用前景,吸引了學(xué)術(shù)界和工業(yè)界的大量關(guān)注,目前區(qū)塊鏈技術(shù)已被應(yīng)用于醫(yī)療、金融、物聯(lián)網(wǎng)、能源等諸多領(lǐng)域.一般來說,區(qū)塊鏈可按許可權(quán)限分為公有區(qū)塊鏈、聯(lián)盟區(qū)塊鏈和私有區(qū)塊鏈,其中,公有鏈面向全球所有用戶,任何人都可以在其中讀取數(shù)據(jù)和發(fā)送交易;聯(lián)盟鏈由若干業(yè)務(wù)相關(guān)的機(jī)構(gòu)共同參與管理,每個機(jī)構(gòu)都運行著一個或多個節(jié)點,讀寫權(quán)限僅對聯(lián)盟內(nèi)的節(jié)點有限度地開放;私有鏈的讀寫權(quán)限由某個組織或機(jī)構(gòu)控制,參與節(jié)點的資格被嚴(yán)格限制.
基于區(qū)塊鏈的分布式架構(gòu)、共識算法等,智能合約允許相互不信任的用戶在不需要任何第三方可信中介或權(quán)威的情況下完成交易,同時,數(shù)字形式的智能合約可靈活嵌入各種有形或無形的資產(chǎn)、交易和數(shù)據(jù)中,實現(xiàn)主動或被動的資產(chǎn)、信息管理與控制,逐步構(gòu)建可編程的智能資產(chǎn)、系統(tǒng)及社會.
圖1 智能合約的運行機(jī)制Fig.1 The operating mechanism of smart contracts
智能合約的運行機(jī)制如圖1所示,智能合約一般具有值和狀態(tài)兩個屬性,代碼中用If-Then和What-If語句預(yù)置了合約條款的相應(yīng)觸發(fā)場景和響應(yīng)規(guī)則,智能合約經(jīng)多方共同協(xié)定、各自簽署后隨用戶發(fā)起的交易(Transaction,Txn)提交,經(jīng)P2P網(wǎng)絡(luò)傳播、礦工驗證后存儲在區(qū)塊鏈特定區(qū)塊中,用戶得到返回的合約地址及合約接口等信息后即可通過發(fā)起交易來調(diào)用合約.礦工受系統(tǒng)預(yù)設(shè)的激勵機(jī)制激勵,將貢獻(xiàn)自身算力來驗證交易,礦工收到合約創(chuàng)建或調(diào)用交易后在本地沙箱執(zhí)行環(huán)境(如以太坊虛擬機(jī))中創(chuàng)建合約或執(zhí)行合約代碼,合約代碼根據(jù)可信外部數(shù)據(jù)源(也稱為預(yù)言機(jī),Oracles)和世界狀態(tài)的檢查信息自動判斷當(dāng)前所處場景是否滿足合約觸發(fā)條件以嚴(yán)格執(zhí)行響應(yīng)規(guī)則并更新世界狀態(tài).交易驗證有效后被打包進(jìn)新的數(shù)據(jù)區(qū)塊,新區(qū)塊經(jīng)共識算法認(rèn)證后鏈接到區(qū)塊鏈主鏈,所有更新生效.
由于區(qū)塊鏈種類及運行機(jī)制的差異,不同平臺上智能合約的運行機(jī)制也有所不同,以太坊和超級賬本是目前應(yīng)用最廣泛的兩種智能合約開發(fā)平臺,它們的智能合約運行機(jī)制最具代表性,以下將以這兩種平臺為例,闡述智能合約的運行機(jī)制.
1)以太坊
以太坊在整體上可看作是一個基于交易的狀態(tài)機(jī):起始于一個創(chuàng)世(Genesis)狀態(tài),然后隨著交易的執(zhí)行,狀態(tài)逐步改變一直到最終狀態(tài),這個最終狀態(tài)就是以太坊世界的權(quán)威版本[5].以太坊中引入了賬戶的概念以取代比特幣未花費交易輸出(Unspent transaction output,UTXO)模型,賬戶分為外部賬戶和合約賬戶兩類,兩類賬戶都具有與之關(guān)聯(lián)的賬戶狀態(tài)和賬戶地址,都可以存儲以太坊專用加密貨幣以太幣,區(qū)別在于外部賬戶由用戶私鑰控制,沒有代碼與之關(guān)聯(lián),合約賬戶由合約代碼控制,有代碼與之關(guān)聯(lián).
用戶只能通過外部賬戶在以太坊中發(fā)起交易,交易可以包含二進(jìn)制交易負(fù)載數(shù)據(jù)(Payload)和以太幣,交易執(zhí)行過程中可能產(chǎn)生一系列消息調(diào)用.當(dāng)交易或消息調(diào)用的接收者為以太坊指定地址?時,創(chuàng)建合約.新合約賬戶地址由合約創(chuàng)建者的地址和該地址發(fā)出過的交易數(shù)量Nonce計算得到,創(chuàng)建合約交易的Payload被編譯為EVM字節(jié)碼執(zhí)行,執(zhí)行的輸出作為合約代碼被永久存儲.當(dāng)接收者為合約賬戶時,合約賬戶內(nèi)代碼被激發(fā)在本地EVM 中執(zhí)行,Payload作為合約的輸入?yún)?shù),可信數(shù)據(jù)源則為合約提供必要外部世界信息.所有執(zhí)行結(jié)束后,返回執(zhí)行結(jié)果,完整交易經(jīng)礦工廣播驗證后和新的世界狀態(tài)一起存入?yún)^(qū)塊鏈.
考慮到以太坊交易伴隨帶寬消耗,存儲消耗,計算消耗等,為了激勵全球算力的投入和合理分配使用權(quán),避免系統(tǒng)因惡意程序走向失控,以太坊中所有程序的執(zhí)行都需要支付費用.各種操作費用以Gas為單位計算,任意的程序片段都可以根據(jù)規(guī)則計算出消耗的燃料數(shù)量,完整交易的發(fā)起者需支付所有執(zhí)行費用.交易完成后,剩余的燃料以購買時的價格退回到交易發(fā)送者賬戶,未退回的費用作為挖出包含此交易區(qū)塊的礦工的獎勵.若交易執(zhí)行過程中發(fā)生燃料不足(Out of gas,OOG)、堆棧溢出、無效指令等異常而中止,交易將成為無效交易,已消耗Gas仍作為礦工貢獻(xiàn)其計算資源的獎勵.
2)超級賬本
超級賬本(Hyperledger fabric)最早是由國際商業(yè)機(jī)器公司(International business machines corporation,IBM)牽頭發(fā)起的致力于打造區(qū)塊鏈技術(shù)開源規(guī)范和標(biāo)準(zhǔn)的聯(lián)盟鏈,2015年起成為開源項目并移交給Linux基金會維護(hù).不同于比特幣、以太坊等全球共享的公有鏈,超級賬本只允許獲得許可的相關(guān)商業(yè)組織參與、共享和維護(hù),由于這些商業(yè)組織之間本身就有一定的信任基礎(chǔ),超級賬本被認(rèn)為并非完全去中心化.
超級賬本使用模塊化的體系結(jié)構(gòu),開發(fā)者可按需求在平臺上自由組合可插拔的會員服務(wù)、共識算法、加密算法等組件組成目標(biāo)網(wǎng)絡(luò)及應(yīng)用.鏈碼(Chaincode)是超級賬本中的智能合約,開發(fā)者利用鏈碼與超級賬本交互以開發(fā)業(yè)務(wù)、定義資產(chǎn)和管理去中心化應(yīng)用.聯(lián)盟鏈中每個組織成員都擁有和維護(hù)代表該組織利益的一個或多個Peer節(jié)點,聯(lián)盟鏈由多個組織的Peer節(jié)點共同構(gòu)成.Peer節(jié)點是鏈碼及分布式賬本的宿主,可在Docker容器中運行鏈碼,實現(xiàn)對分布式賬本上鍵–值對或其他狀態(tài)數(shù)據(jù)庫的讀/寫操作,從而更新和維護(hù)賬本.
超級賬本的運行過程包含三個階段[8]:
提議(Proposal):應(yīng)用程序創(chuàng)建一個包含賬本更新的交易提議(Proposal),并將該提議發(fā)送給鏈碼中背書策略指定的背書節(jié)點集合(Endorsing peers set)作簽名背書.每個背書節(jié)點獨立地執(zhí)行鏈碼并生成各自的交易提議響應(yīng)后,將響應(yīng)值、讀/寫集合和簽名等返回給應(yīng)用程序.當(dāng)應(yīng)用程序收集到足夠數(shù)量的背書節(jié)點響應(yīng)后,提議階段結(jié)束.
打包(Packaging):應(yīng)用程序驗證背書節(jié)點的響應(yīng)值、讀/寫集合和簽名等,確認(rèn)所收到的交易提議響應(yīng)一致后,將交易提交給排序節(jié)點(Orderer).排序節(jié)點對收到的眾多交易進(jìn)行排序并分批打包成數(shù)據(jù)區(qū)塊后將數(shù)據(jù)區(qū)塊廣播給所有與之相連接的Peer節(jié)點.
驗證(Validation):與排序節(jié)點相連接的Peer節(jié)點逐一驗證數(shù)據(jù)區(qū)塊中的交易,確保交易嚴(yán)格依照事先確定的背書策略由所有對應(yīng)的組織簽名背書.驗證通過后,所有Peer節(jié)點將新的數(shù)據(jù)區(qū)塊添加至當(dāng)前區(qū)塊鏈的末端,更新賬本.需要注意的是,此階段不需要運行鏈碼,鏈碼僅在提議階段運行.
本節(jié)將結(jié)合區(qū)塊鏈上智能合約的設(shè)計流程、應(yīng)用現(xiàn)狀及發(fā)展趨勢,歸納智能合約生命周期并提出智能合約基礎(chǔ)模型,該模型一方面囊括智能合約全生命周期中的關(guān)鍵技術(shù),另一方面對智能合約技術(shù)體系中的關(guān)鍵要素進(jìn)行劃分,體現(xiàn)智能合約核心的研究方向和發(fā)展趨勢,為智能合約研究體系的建立與完善提供參考,奠定基礎(chǔ).
智能合約的生命周期根據(jù)其運行機(jī)制可概括為協(xié)商、開發(fā)、部署、運維、學(xué)習(xí)和自毀六個階段,其中開發(fā)階段包括合約上鏈前的合約測試,學(xué)習(xí)階段包括智能合約的運行反饋與合約更新等.圖2所示為智能合約的基礎(chǔ)架構(gòu)模型,模型自底向上由基礎(chǔ)設(shè)施層、合約層、運維層、智能層、表現(xiàn)層和應(yīng)用層組成,以下將分層進(jìn)行闡述.
基礎(chǔ)設(shè)施層:封裝了支持智能合約及其衍生應(yīng)用實現(xiàn)的所有基礎(chǔ)設(shè)施,包括分布式賬本及其關(guān)鍵技術(shù)、開發(fā)環(huán)境和可信數(shù)據(jù)源等,這些基礎(chǔ)設(shè)施的選擇將在一定程度上影響智能合約的設(shè)計模式和合約屬性.
1)分布式賬本及其關(guān)鍵技術(shù):智能合約的執(zhí)行與交互需要依靠共識算法、激勵機(jī)制及P2P通信網(wǎng)絡(luò)等區(qū)塊鏈關(guān)鍵技術(shù)實現(xiàn),最終執(zhí)行結(jié)果將記入由全體節(jié)點共同維護(hù)的分布式賬本.不同的共識算法和激勵機(jī)制將影響智能合約的設(shè)計模式、執(zhí)行效率和安全性能.以激勵機(jī)制為例,以太坊中智能合約的開發(fā)需要額外考慮燃料消耗問題,設(shè)計合約時需避免出現(xiàn)燃料耗盡異常(OOG)和死代碼(Dead code)、無用描述、昂貴循環(huán)等高耗燃操作.
2)開發(fā)環(huán)境:狹義的智能合約可看作是運行在區(qū)塊鏈上的計算機(jī)程序,作為計算機(jī)程序,智能合約的開發(fā)、部署和調(diào)用將涉及到包括編程語言、集成開發(fā)環(huán)境(IDE)、開發(fā)框架、客戶端和錢包等多種專用開發(fā)工具.以錢包為例,除作為存儲加密貨幣的電子錢包外,通常還承擔(dān)啟動節(jié)點,部署合約、調(diào)用合約等功能.
3)預(yù)言機(jī)(Oracles):為保證區(qū)塊鏈網(wǎng)絡(luò)的安全,智能合約一般運行在隔離的沙箱執(zhí)行環(huán)境中(如以太坊的EVM 及超級賬本的Docker容器等),除交易的附加數(shù)據(jù)外,預(yù)言機(jī)可提供可信外部數(shù)據(jù)源供合約查詢外部世界的世界狀態(tài)或觸發(fā)合約執(zhí)行.同時,為保持分布式節(jié)點的合約執(zhí)行結(jié)果一致,智能合約也通過查詢預(yù)言機(jī)實現(xiàn)隨機(jī)性.
圖2 智能合約基礎(chǔ)架構(gòu)模型Fig.2 A basic framework of smart contracts
合約層:封裝了靜態(tài)的合約數(shù)據(jù),包括合約各方達(dá)成一致的合約條款、合約條款代碼化后的情景–應(yīng)對型規(guī)則和合約創(chuàng)建者指定的合約與外界以及合約與合約之間的交互準(zhǔn)則等.合約層可看作是智能合約的靜態(tài)數(shù)據(jù)庫,封裝了所有智能合約調(diào)用、執(zhí)行、通信規(guī)則.
以智能合約從協(xié)商、開發(fā)到部署的生命周期為順序,合約各方將首先就合約內(nèi)容進(jìn)行協(xié)商,合約內(nèi)容可以是法律條文、商業(yè)邏輯和意向協(xié)定等.此時的智能合約類似于傳統(tǒng)合約,立契者無需具有專門的技術(shù)背景,只需根據(jù)法學(xué)、商學(xué)、經(jīng)濟(jì)學(xué)知識對合約內(nèi)容進(jìn)行談判與博弈,探討合約的法律效力和經(jīng)濟(jì)效益等合約屬性.隨后,專業(yè)的計算機(jī)從業(yè)者利用算法設(shè)計、程序開發(fā)等軟件工程技術(shù)將以自然語言描述的合約內(nèi)容編碼為區(qū)塊鏈上可運行的“If-Then”或“What-If”式情景–應(yīng)對型規(guī)則,并按照平臺特性和立契者意愿補充必要的智能合約與用戶之間、智能合約與智能合約之間的訪問權(quán)限與通信方式等.
運維層:封裝了一系列對合約層中靜態(tài)合約數(shù)據(jù)的動態(tài)操作,包括機(jī)制設(shè)計、形式化驗證、安全性檢查、維護(hù)更新、自毀等.智能合約的應(yīng)用通常關(guān)乎真實世界的經(jīng)濟(jì)利益,惡意的、錯誤的、有漏洞的智能合約會帶來巨大的經(jīng)濟(jì)損失,運維層是保證智能合約能夠按照設(shè)計者意愿正確、安全、高效運行的關(guān)鍵.
以智能合約從協(xié)商到自毀的全生命周期為序,機(jī)制設(shè)計利用信息和激勵理論幫助合約高效實現(xiàn)其功能.形式化驗證與安全性檢查在合約正式部署上鏈前以嚴(yán)格的數(shù)學(xué)方法證明合約代碼的正確性和安全性,保證合約代碼完全按照創(chuàng)建者的本意執(zhí)行.維護(hù)更新在合約部署上鏈后維護(hù)合約正常運行并在合約功能難以滿足需求或合約出現(xiàn)可修復(fù)漏洞等必要時升級合約.最后,當(dāng)智能合約生命周期結(jié)束或出現(xiàn)不可修復(fù)的高危漏洞時,合約可以進(jìn)行自毀操作以保障網(wǎng)絡(luò)安全.需要注意的是,合約的更新與自毀將僅體現(xiàn)在新區(qū)塊的區(qū)塊數(shù)據(jù)中,歷史區(qū)塊鏈數(shù)據(jù)始終存在且不可篡改.
智能層:封裝了各類智能算法,包括感知、推理、學(xué)習(xí)、決策和社交等,為前三層構(gòu)建的可完全按照創(chuàng)建者意愿在區(qū)塊鏈系統(tǒng)中安全高效執(zhí)行的智能合約增添了智能性.需要指出的是,當(dāng)前的智能合約并不具備智能性,只能按照預(yù)置的規(guī)則執(zhí)行相應(yīng)的動作.但是,我們認(rèn)為未來的智能合約將不僅可以按照預(yù)定義的“If-Then”式語句自動執(zhí)行,更可以具備未知場景下“What-If”式智能推演、計算實驗,以及自主決策等功能.
運行在區(qū)塊鏈上的各類智能合約可看作是用戶的軟件代理(或稱軟件機(jī)器人),由于計算機(jī)程序具有強大的可操作性,隨著認(rèn)知計算、強化學(xué)習(xí)、生成式對抗網(wǎng)絡(luò)(Generative adversarial network,GAN)等人工智能技術(shù)的快速發(fā)展,這些軟件代理將逐漸具備智能性:一方面,代理個體將從基礎(chǔ)的感知,推理和學(xué)習(xí)出發(fā)逐步實現(xiàn)任務(wù)選擇,優(yōu)先級排序,目標(biāo)導(dǎo)向行為(Goal-directed behaviors),自主決策等功能:另一方面,代理群體將通過彼此間的交互通信、協(xié)調(diào)合作、沖突消解等具備一定的社交性.這些自治軟件代理在智能層的學(xué)習(xí)、協(xié)作結(jié)果也將反饋到合約層和運維層,優(yōu)化合約設(shè)計和運維方案,最終實現(xiàn)自主自治的多代理系統(tǒng),從自動化合約轉(zhuǎn)變?yōu)檎嬲饬x上的智能化合約.
表現(xiàn)層:封裝了智能合約在實際應(yīng)用中的各類具體表現(xiàn)形式.包括去中心化應(yīng)用(Decentralized application,DApp)、去中心化自治組織(Decentralized autonomous organization,DAO)、去中心化自治企業(yè)(Decentralized autonomous corporation,DAC)和去中心化自治社會(Decentralized autonomous society,DAS)等.
區(qū)塊鏈?zhǔn)蔷哂衅者m性的去中心化技術(shù)架構(gòu),可封裝節(jié)點復(fù)雜行為的智能合約相當(dāng)于區(qū)塊鏈的應(yīng)用接口,幫助區(qū)塊鏈的分布式架構(gòu)植入不同場景.通過將核心的法律條文、商業(yè)邏輯和意向協(xié)定存儲在智能合約中,可產(chǎn)生各種各樣的去中心化應(yīng)用(DApp),而利用前四層構(gòu)建的多代理系統(tǒng),又可逐步演化出各類去中心化自治組織(DAO,亦稱去中心化自治企業(yè),DAC)和去中心化自治社會(DAS),這些表現(xiàn)形式有望改進(jìn)傳統(tǒng)的商業(yè)模式和社會生產(chǎn)關(guān)系,為可編程社會奠定基礎(chǔ),并最終促成分布式人工智能的實現(xiàn).以DAO為例,只需將組織的管理制度和規(guī)則以智能合約的形式預(yù)先編碼在區(qū)塊鏈上,即可實現(xiàn)組織在無中心或權(quán)威控制干預(yù)下的自主運行.同時,由于DAO中的成員可以通過購買股份、代幣(Token),或提供服務(wù)的形式成為股東并分享收益,DAO被認(rèn)為是一種對傳統(tǒng)“自頂向下”金字塔式層級管理的顛覆性變革,可有效降低組織的運營成本,減少管理摩擦,提高決策民主化.
應(yīng)用層:封裝了智能合約及其表現(xiàn)形式的具體應(yīng)用領(lǐng)域.理論上,區(qū)塊鏈及智能合約可應(yīng)用于各行各業(yè),金融、物聯(lián)網(wǎng)、醫(yī)療、供應(yīng)鏈等均是其典型應(yīng)用領(lǐng)域.我們將在第3節(jié)詳細(xì)討論.
需要特別指出的是,由于智能合約的研究和應(yīng)用尚處于早期階段,此處提出的智能合約架構(gòu)模型是一個理想模型.模型中部分要素(特別是智能層中自主自治的多智能體等)仍在探索之中,尚未完全實現(xiàn).但考慮到他們是智能合約未來重要的發(fā)展方向,本文仍將其納入模型中,以提供一定的前瞻性.
作為一種快速發(fā)展的新興技術(shù),智能合約存在一些可能制約其發(fā)展的問題亟待解決.本節(jié)將結(jié)合上節(jié)提出的智能合約基礎(chǔ)架構(gòu)模型,從隱私、法律、安全、機(jī)制設(shè)計、性能等問題出發(fā),概述智能合約技術(shù)的研究挑戰(zhàn)與最新進(jìn)展.
根據(jù)智能合約運行機(jī)制,智能合約的隱私問題可分為可信數(shù)據(jù)源隱私問題和合約數(shù)據(jù)隱私問題兩類,涉及到基礎(chǔ)架構(gòu)模型中的基礎(chǔ)設(shè)施層和合約層.
區(qū)塊鏈的匿名性并沒有完全解決智能合約的隱私問題.區(qū)塊鏈數(shù)據(jù)通常是完全公開透明的(尤其是對公有鏈),任何人都可經(jīng)由公開查詢獲取賬戶余額、交易信息和合約內(nèi)容等,以金融場景為例,股票交易常被視為機(jī)密信息,完全公開的股票交易智能合約將難以保證用戶的隱私.Meiklejohn等曾利用比特幣找零地址推算出部分大宗客戶以及這些客戶間的交易行為[9],Ron等則通過分析比特幣交易圖譜,獲取了某些用戶行為的統(tǒng)計特征[10].另外,某些智能合約在執(zhí)行時需要向區(qū)塊鏈系統(tǒng)請求查詢外部可信數(shù)據(jù)源,這些請求操作通常是公開的,用戶隱私也將因此受到威脅.這些隱私問題可能導(dǎo)致攻擊者對區(qū)塊鏈或智能合約的去匿名攻擊.
為此,Kosba等提出了一個旨在保護(hù)用戶隱私的智能合約開發(fā)框架Hawk[11].在Hawk中,所有財務(wù)交易信息不會被顯式地記錄在區(qū)塊鏈上,智能合約分為私密合約和公共合約,私人數(shù)據(jù)和相關(guān)財務(wù)信息寫入私密合約后只有合約擁有者可見.Zhang等提出了一種可信數(shù)據(jù)輸入系統(tǒng)Town Crier[12],Town Crier允許用戶發(fā)送私密數(shù)據(jù)請求,具體地,合約在發(fā)送請求之前用Town Crier的公鑰加密請求,Town Crier收到請求后利用私鑰解密,從而保證區(qū)塊鏈中其他用戶無法查看請求內(nèi)容.
智能合約的法律問題主要體現(xiàn)在合約層中傳統(tǒng)合約向智能合約的轉(zhuǎn)化:傳統(tǒng)合約中法律條文(濕代碼)和智能合約中技術(shù)規(guī)則(干代碼)間存在巨大的語言鴻溝,前者為了對各種無法精確預(yù)見的新案例或邊緣案例實現(xiàn)高度的通用性,常使用一些微妙的、模糊的和靈活的語言在更高的抽象層次起草,而后者為了降低系統(tǒng)的安全風(fēng)險,須使用嚴(yán)格而正式的語言描述定義明確的類別、預(yù)先定義的條件和精確規(guī)定的方法,兩者在轉(zhuǎn)化時將不可避免地存在翻譯誤差繼而影響智能合約的法律效力.
常見的智能合約法律問題包括:1)智能合約意思表示真實性不足.智能合約的編碼偏差或立契時的欺詐行為將導(dǎo)致智能合約無法反映立契者真實意愿,我國《合同法》規(guī)定基于重大誤解的合同為可撤銷合同,而智能合約一般不可撤銷.2)智能合約存在不可預(yù)見情形.現(xiàn)階段智能合約只能處理預(yù)定義代碼,無法應(yīng)對不可預(yù)料的情勢變更或邊緣案例.3)智能合約難以追責(zé)或事后救濟(jì).智能合約具有匿名性,立契者可能為無行為能力或限制行為能力人,惡意合約或因編碼偏差導(dǎo)致重大誤解時,各方責(zé)任難以界定而短時間內(nèi)難以補救等.針對這些法律問題,更具體的法律條文表述、更全面的技術(shù)規(guī)則補充、規(guī)范的語言轉(zhuǎn)化方法以及有效的合約法律審計都是可行的解決方案.此外,智能層構(gòu)建的多代理系統(tǒng)中具備感知、推理、學(xué)習(xí)、決策和社交能力的軟件代理也有望結(jié)合人工智能技術(shù)積累法律案例經(jīng)驗,模仿現(xiàn)實世界的法官和律師,應(yīng)對未知場景下的辯論和審判[13].
運維層中的安全問題是制約智能合約發(fā)展的主要問題:已部署上鏈的智能合約是不可逆轉(zhuǎn)的,其潛在的安全問題一旦引發(fā)就難以被修復(fù),由此造成的經(jīng)濟(jì)損失將難以挽回,同時,區(qū)塊鏈的匿名性可能為惡意用戶提供便利,繼而引發(fā)現(xiàn)實世界的安全問題.因此,本文將智能合約的安全問題分為漏洞合約安全問題和惡意合約安全問題兩類.
1)漏洞合約.設(shè)計一個安全的智能合約的難點在于所有網(wǎng)絡(luò)參與者都可能出于自身利益攻擊或欺騙智能合約,設(shè)計者必須預(yù)見一切可能的惡意行為并設(shè)置應(yīng)對措施,而傳統(tǒng)的程序開發(fā)人員很難具備如此完美的編程能力和縝密的經(jīng)濟(jì)思維.
以太坊上智能合約的12種安全漏洞可分為Solidity編程語言漏洞,EVM 虛擬機(jī)執(zhí)行漏洞和區(qū)塊鏈系統(tǒng)漏洞三個層次[14].交易順序依賴(Transaction ordering dependence,TOD)、時間戳依賴(Timestamp dependence)、可重入性(Reentrancy vulnerability)和處理異常(Mishandled exceptions)是其中常見的四種漏洞,攻擊者可通過更改交易順序、修改時間戳、調(diào)用可重入函數(shù)、觸發(fā)處理異常等影響智能合約執(zhí)行結(jié)果或竊取資金.為此,Luu等提出了一種可檢查上述4種潛在安全漏洞的符號執(zhí)行工具Oyente[15],經(jīng)Oyente檢查發(fā)現(xiàn),在19366個以太坊智能合約中,有8833個存在上述至少一種安全漏洞.
此外,無可信數(shù)據(jù)源和待優(yōu)化智能合約也將帶來一定經(jīng)濟(jì)損失,攻擊者可通過向合約輸入虛假數(shù)據(jù)獲取經(jīng)濟(jì)效益,用戶則需為無用代碼額外付費.Chen等提出了一個名為Gasper的智能合約高耗燃操作檢測工具[16],可自動發(fā)現(xiàn)死代碼、無用描述和昂貴的循環(huán)操作等.利用Gasper,他們發(fā)現(xiàn)在以太坊中部署的超過80%的智能合約(4240個智能合約)至少存在上述一種高耗燃操作,而這些高耗燃操作一旦被大量調(diào)用就可能引發(fā)拒絕服務(wù)攻擊.
2)惡意合約.區(qū)塊鏈及智能合約的去中心化、匿名性同樣可能助長惡意合約的產(chǎn)生.違法者可通過發(fā)布惡意的智能合約對區(qū)塊鏈系統(tǒng)和用戶發(fā)起攻擊,也可利用合約實現(xiàn)匿名的犯罪交易,導(dǎo)致機(jī)密信息的泄露、密鑰竊取或各種真實世界的犯罪行為.Juels等提出了一種惡意智能合約—PwdTheft,用于盜取用戶密碼并保證立契者和違法者之間的公平交易[17].“絲綢之路”是一個匿名的國際線上市場,它通常作為一個隱藏服務(wù)運作,并使用比特幣作為支付媒介[18].絲綢之路上銷售的大部分商品都是現(xiàn)實世界中被控制的商品,如毒品、槍支等.智能合約將使這些地下市場交易更加便捷,最終對社會造成危害.
除上述幾種常見的研究挑戰(zhàn)之外,智能合約的機(jī)制設(shè)計問題和性能問題也不容忽視,完善合理的機(jī)制設(shè)計和優(yōu)秀穩(wěn)定的合約性能是智能合約“殺手級應(yīng)用”得以落地,智能合約應(yīng)用范圍得以擴(kuò)大,智能合約促成的分布式人工智能和可編程社會得以實現(xiàn)的重要支撐.
機(jī)制設(shè)計:機(jī)制設(shè)計理論是研究在自由選擇、自愿交換、信息不完全及決策分散化的條件下,通過設(shè)計一套機(jī)制(規(guī)則或制度)來達(dá)到既定目標(biāo)的理論[19].眾所周知,非對稱信息容易造成資源配置的帕累托無效率,這是組織設(shè)計中的核心難題.借助于機(jī)制設(shè)計理論,設(shè)計者可以通過設(shè)計一組激勵機(jī)制來減少或避免效率損失,從而使得參與者的個體利益與組織或社會的整體利益相一致,實現(xiàn)整體系統(tǒng)的激勵相容.對于智能合約而言,機(jī)制設(shè)計可以決定智能合約實現(xiàn)其目標(biāo)功能的方式,不同的制度安排和組織結(jié)構(gòu)在交易費用、激勵效果和資源配置效率等方面將產(chǎn)生重要影響,合理的機(jī)制設(shè)計需充分應(yīng)用經(jīng)濟(jì)學(xué)、商學(xué)、法學(xué)等多學(xué)科交叉知識,對合約立契者專業(yè)背景具有極高的要求,有必要對此進(jìn)行深入研究.
性能問題:智能合約的性能問題可分為合約層設(shè)計導(dǎo)致的合約本身性能問題和基礎(chǔ)設(shè)施層導(dǎo)致的區(qū)塊鏈系統(tǒng)性能問題兩類.待優(yōu)化的合約機(jī)制設(shè)計和待優(yōu)化的智能合約將增加合約執(zhí)行成本,降低合約執(zhí)行效率,區(qū)塊鏈系統(tǒng)本身存在的吞吐量低、交易延遲、能耗過高、容量和帶寬限制等性能問題也將在一定程度上限制智能合約的性能[20].以區(qū)塊鏈系統(tǒng)的吞吐量限制為例,現(xiàn)行的區(qū)塊鏈系統(tǒng)中,智能合約是按順序串行執(zhí)行的,每秒可執(zhí)行的合約數(shù)量非常有限且不能兼容流行的多核和集群架構(gòu),難以滿足廣泛應(yīng)用的需求.Dickerson等針對此提出了一種智能合約并行執(zhí)行框架[21],允許獨立非沖突的合約同時進(jìn)行,從而提高系統(tǒng)吞吐量,改善智能合約執(zhí)行性能.
為使行文清晰,圖3總結(jié)了第2.1~2.4節(jié)中所述智能合約研究挑戰(zhàn)、典型問題、涉及到的模型要素和要素層次等.
運維層中的形式化驗證是解決智能合約安全問題的重要手段,也是智能合約的重要研究方向.智能合約的形式化驗證是指利用精確的數(shù)學(xué)手段和強大的分析工具在合約的設(shè)計、開發(fā)、測試過程中驗證智能合約是否滿足公平性、正確性、可達(dá)性、有界性和無二義性等預(yù)期的關(guān)鍵性質(zhì),以規(guī)范合約的生成和執(zhí)行,提高合約的可靠性和執(zhí)行力,支持規(guī)?;悄芎霞s的高效生成[22].
智能合約的形式化驗證是解決智能合約安全問題的重要思路.在合約上鏈前進(jìn)行形式化驗證可避免一些常見的安全漏洞,目前已有一些針對合約靜態(tài)或動態(tài)分析的安全性檢查工具,如Oyente和Mythril[23],他們都是將合約字節(jié)碼繪制成控制流圖后分析常見的安全漏洞,美中不足的是,這種方式無法驗證合約的功能正確性,可檢測的安全漏洞有限且可能引發(fā)錯誤的警報.Bhargavan等提出了一種針對以太坊Solidity合約功能正確性驗證框架[24],它將Solidity語言和EVM 字節(jié)碼轉(zhuǎn)換為F?語言后驗證代碼的各種屬性,既可排除漏洞也可計算合約消耗Gas限制.類似的智能合約形式化驗證工具還有ZEUS[25]、Manticore[26]、Securify[27]、Solgraph[28]等.目前這些驗證工具大多停留在試驗階段,尚未在真實系統(tǒng)中證明其可靠性,市場中仍亟需完備的、規(guī)范的、有指導(dǎo)意義的形式化驗證框架,這將促使形式化驗證成為未來智能合約的重要發(fā)展方向.
隨著區(qū)塊鏈技術(shù)的逐漸興起,智能合約的應(yīng)用日益廣泛,本節(jié)以金融、管理、醫(yī)療、物聯(lián)網(wǎng)和供應(yīng)鏈為例,介紹其應(yīng)用優(yōu)勢及應(yīng)用方向.
區(qū)塊鏈天然的賬本屬性使得智能合約在金融領(lǐng)域有顯著的技術(shù)優(yōu)勢:區(qū)塊鏈提供的點對點、去信任交易環(huán)境和強大的算力保障可簡化金融交易的流程,確保金融交易的安全,可追溯、不可篡改、公開透明的分布式賬本可便于金融機(jī)構(gòu)對交易行為進(jìn)行監(jiān)管[29],在此基礎(chǔ)上,智能合約不僅可以利用自動執(zhí)行的代碼封裝節(jié)點復(fù)雜的金融行為以提高自動化交易水平,而且可以將區(qū)塊鏈上的任意資產(chǎn)寫入代碼或進(jìn)行標(biāo)記以創(chuàng)建智能資產(chǎn),實現(xiàn)可編程貨幣和可編程金融體系.
圖3 智能合約的研究挑戰(zhàn)Fig.3 The research challenges of smart contracts
基于這些技術(shù)優(yōu)勢,由高盛、摩根大通等財團(tuán)組成的R3區(qū)塊鏈聯(lián)盟率先嘗試將智能合約應(yīng)用于資產(chǎn)清算領(lǐng)域,利用智能合約在區(qū)塊鏈平臺Corda上進(jìn)行點對點清算,以解決傳統(tǒng)清算方式需要涉及大量機(jī)構(gòu)完成復(fù)雜審批和對賬所導(dǎo)致的效率低下問題.目前,已有超過200家銀行、金融機(jī)構(gòu)、監(jiān)管機(jī)構(gòu)和行業(yè)協(xié)會參與了Corda上的清算結(jié)算測試[30?31].此外,智能合約也可為保險行業(yè)提供高效、安全、透明的合約保障,提高索賠處理的速度,降低人工處理索賠的成本.Gatteschi等與Bertani等設(shè)計了一種旅行保險智能合約,一旦合約檢測到如航班延誤等滿足要求的賠償條件即可自動補償旅客[32?33].智能合約還可應(yīng)用于電子商務(wù),智能合約降低了合約的簽訂成本,合約雙方無需支付高昂的中介費用,且可利用智能合約自動完成交易.ECoinmerce是一種去中心化的數(shù)字資產(chǎn)交易市場,借助智能合約,任何用戶可在ECoinmerce上創(chuàng)建、購買、出售和轉(zhuǎn)租他們的數(shù)字資產(chǎn)[34].類似的應(yīng)用還有Slock.it,它允許用戶基于區(qū)塊鏈出租房地產(chǎn)、汽車、智能設(shè)備、路由器等有形資產(chǎn),這些資產(chǎn)經(jīng)智能合約編碼獲得身份認(rèn)證后即可作為智能資產(chǎn)直接完成復(fù)雜協(xié)議[35].
傳統(tǒng)的組織管理是自上而下的“金字塔型”架構(gòu),容易產(chǎn)生機(jī)構(gòu)臃腫、管理層次多、管理成本高、責(zé)任界定不明、信息傳遞不暢、權(quán)力集中在上層而下層自主性小、創(chuàng)新潛能難以有效釋放等問題.智能合約和DAO將對管理領(lǐng)域帶來革命性影響.智能合約可以將管理規(guī)則代碼化,代碼設(shè)定完成后,組織即可按照既定的規(guī)則自主運行.組織中的每個個體,包括決策的制定者、執(zhí)行者、監(jiān)督者等都可以通過持有組織的股份權(quán)益,或提供服務(wù)的形式來成為組織的股東和參與者(即前文所述的DAO).DAO使得每個個體均參與到組織的治理,從而充分激發(fā)個體的創(chuàng)造性,提高組織決策民主化.此外,編碼在智能合約上的各項管理規(guī)則均公開透明,也有助于杜絕各類腐敗和不當(dāng)行為的產(chǎn)生.
目前,智能合約在管理領(lǐng)域的應(yīng)用尚處于初級階段,典型應(yīng)用包括業(yè)務(wù)流程管理、選舉投票、存證和版權(quán)管理等.業(yè)務(wù)流程管理是指對跨部門/組織的業(yè)務(wù)流程(如生產(chǎn)流程、各類行政申請流程、財務(wù)審批流程、人事處理流程)等進(jìn)行自動化設(shè)計、執(zhí)行和監(jiān)控.Beck等和Weber等指出,隨著區(qū)塊鏈技術(shù)的發(fā)展,絕大多數(shù)業(yè)務(wù)流程的控制流以及業(yè)務(wù)邏輯將會被編碼為智能合約,從而使得業(yè)務(wù)流程相關(guān)的程式/項目/運營管理等愈加去中心化和安全可信[36?37].在選舉投票領(lǐng)域,智能合約通過預(yù)先設(shè)置好的規(guī)則可以低成本、高效率地實現(xiàn)政治選舉、企業(yè)股東投票、預(yù)測市場[38]等應(yīng)用,同時區(qū)塊鏈保障了投票結(jié)果的真實和不可篡改性.McCorry等提出一種運行在以太坊上的E-voting智能合約實施方案[39].Horizon State、Ropsten等DApp亦支持類似應(yīng)用.在存證和版權(quán)管理領(lǐng)域,Rosa等提出應(yīng)用智能合約來對知識產(chǎn)權(quán)進(jìn)行存在性證明以及著作權(quán)認(rèn)證[40].legalXchain開發(fā)的開放式平臺—IP360數(shù)據(jù)權(quán)益保護(hù)平臺可以對各類形態(tài)電子數(shù)據(jù)提供確權(quán)、云監(jiān)測、區(qū)塊鏈追蹤溯源、云取證、司法通道、維權(quán)等服務(wù)[41].
醫(yī)療技術(shù)的發(fā)展高度依賴歷史病例、臨床試驗等醫(yī)療數(shù)據(jù)的共享,由于醫(yī)療數(shù)據(jù)不可避免地包含大量個人隱私數(shù)據(jù),其訪問和共享一直受到嚴(yán)格的限制.患者個人難以控制自己的醫(yī)療數(shù)據(jù)訪問權(quán)限,隱私性難以保證,醫(yī)療工作者需花費大量時間精力向相關(guān)部門提交申請進(jìn)行權(quán)限審查并在數(shù)據(jù)使用前完成數(shù)據(jù)校驗保證可靠性,工作效率很低,并且存在醫(yī)療數(shù)據(jù)被篡改、泄露以及數(shù)據(jù)傳輸不安全等風(fēng)險.
基于區(qū)塊鏈的醫(yī)療智能合約可有效解決上述問題,在區(qū)塊鏈去中心化、不可篡改、可追溯的網(wǎng)絡(luò)環(huán)境中,醫(yī)療數(shù)據(jù)可被加密存儲在區(qū)塊鏈上,患者對其個人數(shù)據(jù)享有完整的控制權(quán),通過智能合約設(shè)置訪問權(quán)限,用戶可實現(xiàn)高效安全的點對點數(shù)據(jù)共享,無需擔(dān)心數(shù)據(jù)泄露與篡改,數(shù)據(jù)可靠性得到充分保障.三種較為典型的醫(yī)療智能合約有:1)醫(yī)療信息存儲和共享,例如,MeDShare[42]為共享醫(yī)療數(shù)據(jù)提供溯源及審計服務(wù),其設(shè)計采用了智能合約和訪問控制機(jī)制,可有效追蹤數(shù)據(jù)行為,并在違規(guī)實體違反數(shù)據(jù)權(quán)限時撤銷訪問;MedRec[43]是一個去中心化的電子病歷管理系統(tǒng)(Electronic medical records management system),可以實現(xiàn)患者、衛(wèi)生管理當(dāng)局、醫(yī)療研究機(jī)構(gòu)之間高效的數(shù)據(jù)分享.2)醫(yī)學(xué)研究型智能合約,Kuo等提出了名為ModelChain的框架[44],該框架基于區(qū)塊鏈進(jìn)行醫(yī)療預(yù)測建模.每個參與者都可對模型參數(shù)估計做出貢獻(xiàn),而不需要透露任何私人健康信息.3)藥品溯源及打假,如醫(yī)療藥品聯(lián)盟鏈MediLedger[45],電子處方平臺BlockMedx[46]等可用于加強對處方類藥物的溯源能力.
得益于智能設(shè)備、信息技術(shù)和傳感技術(shù)的快速發(fā)展,近年來物聯(lián)網(wǎng)技術(shù)發(fā)展迅猛,傳統(tǒng)的中心化互聯(lián)網(wǎng)體系已經(jīng)難以滿足其發(fā)展需求.首先,物聯(lián)網(wǎng)將產(chǎn)生海量數(shù)據(jù),中心化的存儲方式需要投入并維護(hù)大量的基礎(chǔ)設(shè)施,成本高昂;其次,將數(shù)據(jù)匯總至單一的中心控制系統(tǒng)將不可避免地產(chǎn)生數(shù)據(jù)安全隱患,一旦中心節(jié)點被攻擊損失難以估計;最后,由于物聯(lián)網(wǎng)應(yīng)用將涉及諸多領(lǐng)域,不同運營商、自組織網(wǎng)絡(luò)的加入將造成多中心、多主體同時存在,只有當(dāng)各主體間存在互信環(huán)境,物聯(lián)網(wǎng)才可協(xié)調(diào)工作.
由此可見,物聯(lián)網(wǎng)與去中心化去信任的區(qū)塊鏈架構(gòu)的結(jié)合將成為必然的發(fā)展趨勢,智能合約將在此過程中實現(xiàn)物聯(lián)網(wǎng)復(fù)雜流程的自動化,促進(jìn)資源共享,保證安全與效率,節(jié)約成本.Dorri等提出了一種基于區(qū)塊鏈及智能合約的智能家居模型[47?48],探討了模型中的各種交互流程,并通過仿真實驗證明了此模型將顯著降低物聯(lián)網(wǎng)設(shè)備的日常管理費用.Zhang等提出了一種物聯(lián)網(wǎng)電子商務(wù)模型,利用基于智能合約的點對點交易實現(xiàn)物聯(lián)網(wǎng)上智能資產(chǎn)和付費數(shù)據(jù)的交易[49].Zhang等提出了基于智能合約的物聯(lián)網(wǎng)設(shè)備訪問控制模型,該模型由多個訪問控制合約、一個決策合約和一個注冊合約組成,可實現(xiàn)對物聯(lián)網(wǎng)系統(tǒng)的分布式可信任訪問控制[50].IoTeX則是一個以隱私為中心區(qū)塊鏈驅(qū)動的去中心化物聯(lián)網(wǎng)網(wǎng)絡(luò),支持包括共享經(jīng)濟(jì)、智能家居、身份管理與供應(yīng)鏈在內(nèi)的多種物聯(lián)網(wǎng)生態(tài)系統(tǒng)[51].
與物聯(lián)網(wǎng)類似,供應(yīng)鏈通常包含許多利益相關(guān)者,如生產(chǎn)者、加工者、批發(fā)商、零售商和消費者等,其相關(guān)合約將涉及到復(fù)雜的多方動態(tài)協(xié)調(diào),可見性有限,各方數(shù)據(jù)難以兼容,商品跟蹤成本高昂且存在盲點.通過將產(chǎn)品從生產(chǎn)到出售的全過程寫入智能合約,供應(yīng)鏈將具有實時可見性,產(chǎn)品可追溯可驗證,欺詐和盜竊風(fēng)險降低,且運營成本低廉.其代表性的應(yīng)用有棉花供應(yīng)鏈[52],醫(yī)療藥品供應(yīng)鏈[53]等.
首先在法律層面,考慮到智能合約意思表示真實性不足、存在不可預(yù)見情形、難以追責(zé)、缺乏事后救濟(jì)等法律問題,在很長一段時間內(nèi),智能合約將與傳統(tǒng)合約互為補充,協(xié)同進(jìn)步:對智能合約來說,為充分保障其法律效力,智能合約將逐步深入對法律法規(guī)的理解,建立智能合約條款語言的審查和轉(zhuǎn)化標(biāo)準(zhǔn),減少語言轉(zhuǎn)化過程中的翻譯誤差并形成規(guī)范的合約法律審計標(biāo)準(zhǔn);對傳統(tǒng)合約來說,為應(yīng)對智能合約催生的新型法律應(yīng)用場景,需對現(xiàn)行法律進(jìn)行補充、調(diào)整,以《民商法》、《合同法》為例,今后需明確在何種情況下可認(rèn)定智能合約由當(dāng)事人意思表示一致、合意達(dá)成.
其次在性能和隱私層面,目前智能合約受到區(qū)塊鏈系統(tǒng)本身性能限制,尚無法處理復(fù)雜邏輯和高吞吐量數(shù)據(jù),缺乏隱私保護(hù),更無法實現(xiàn)跨鏈,第二層擴(kuò)展解決方案(Layer 2 scaling solution,Layer 2)[54]是大幅改善區(qū)塊鏈及智能合約性能的可行辦法,以Taxa[55]區(qū)塊鏈為例,它們的基本思路是通過可信硬件為智能合約創(chuàng)造隔離的鏈下執(zhí)行環(huán)境,公有鏈作為“共識層”記錄最終的通證(Token)支付和合約狀態(tài)轉(zhuǎn)換結(jié)果,借此將智能合約的執(zhí)行與公有鏈的共識機(jī)制分離,實現(xiàn)部分鏈上操作的鏈外管理,促成高性能、高隱私、可跨鏈的智能合約.
再次在智能層面,目前的智能合約僅是一系列的“If-Then”式情景–應(yīng)對型規(guī)則,并不具備真正意義上的智能性.我們相信,隨著以深度學(xué)習(xí)、認(rèn)知計算為代表的人工智能技術(shù)的發(fā)展,未來的智能合約將具備感知、學(xué)習(xí)、推理等傳統(tǒng)意義上智能,即這些智能體可由BDI(信念Belief、愿望Desire和意圖Intention)模型來表述.更進(jìn)一步,眾多智能合約智能體通過協(xié)作和演化形成復(fù)雜社會系統(tǒng),該系統(tǒng)具有高度的社會復(fù)雜性和工程復(fù)雜性,因此不可避免地具有“默頓系統(tǒng)”不確定性、多樣性和復(fù)雜性等特性[56].區(qū)塊鏈技術(shù)有望實現(xiàn)軟件定義的去中心化社會系統(tǒng),特別地,可以利用智能合約將各項管理規(guī)則、獎懲標(biāo)準(zhǔn)等以程序化代碼的形式部署上鏈,任何組織和個體均需在既定規(guī)則下行事,否則將會承擔(dān)相應(yīng)后果.如此一來,就有望將“默頓”社會系統(tǒng)轉(zhuǎn)化為可全面觀察、可主動控制、可精確預(yù)測的“牛頓”社會系統(tǒng)[57].
ACP方法(人工社會Artificial systems、計算實驗Computational experiments和平行執(zhí)行Parallel execution)方法是迄今為止平行社會管理領(lǐng)域唯一成體系化、完整的研究框架[58].我們認(rèn)為,ACP方法可以自然地與區(qū)塊鏈及其智能合約相結(jié)合,實現(xiàn)智能合約驅(qū)動的平行組織/社會管理.首先,區(qū)塊鏈中的每個節(jié)點都是分布式系統(tǒng)中的一個自主、自治的智能體,眾多智能體將通過智能合約構(gòu)成各類形態(tài)的DApp,形成特定組織形式的DAO/DAC,并最終聚合成為DAS[59].其次,智能合約的智能性使其可進(jìn)行各種“What-If”類型的虛擬實驗設(shè)計、智能推演以及結(jié)果評估,從而觀察和評估各類參數(shù)配置、功能模塊和體系架構(gòu)在不同實驗場景下的性能表現(xiàn),并預(yù)測其演化規(guī)律[60].在該階段,平行學(xué)習(xí)[61]、知識自動化[56]等將發(fā)揮重要作用.最后,區(qū)塊鏈與物聯(lián)網(wǎng)結(jié)合所形成的智能資產(chǎn)使得聯(lián)通現(xiàn)實物理世界與虛擬網(wǎng)絡(luò)空間成為可能,并通過真實和人工社會系統(tǒng)的虛實互動和平行調(diào)諧,實現(xiàn)社會管理和決策的協(xié)同優(yōu)化.袁勇和王飛躍提出了平行區(qū)塊鏈的概念框架、基礎(chǔ)理論和研究方法體系,平行區(qū)塊鏈致力于通過實際區(qū)塊鏈系統(tǒng)與人工區(qū)塊鏈系統(tǒng)的平行互動與協(xié)同演化,實現(xiàn)描述、預(yù)測、引導(dǎo)相結(jié)合的區(qū)塊鏈系統(tǒng)管理與決策[62].
最后,區(qū)塊鏈網(wǎng)絡(luò)上大量自治節(jié)點的自主運行以及節(jié)點間通過智能合約的互動協(xié)作,使得該分布式系統(tǒng)健壯的同時兼?zhèn)漭^高的靈活性.譬如,未來DAO中的軟件代理將會在得到授權(quán)后替代人類經(jīng)理人負(fù)責(zé)組織協(xié)調(diào)和業(yè)務(wù)決策,并向其他的軟件代理學(xué)習(xí)并彼此展開競爭.一定周期后,軟件代理還會自動評估收益率并對決策做出調(diào)整.這將有助于區(qū)塊鏈技術(shù)適應(yīng)各類復(fù)雜多變的應(yīng)用場景,進(jìn)一步促進(jìn)分布式人工智能的發(fā)展,為未來可編程社會奠定基礎(chǔ).
隨著區(qū)塊鏈技術(shù)的普及和應(yīng)用不斷深入,新興的智能合約技術(shù)在學(xué)術(shù)界和產(chǎn)業(yè)界吸引了廣泛的關(guān)注.智能合約去中心化、去信任、自治自足、不可篡改等特性允許合約各方在無需任何信任基礎(chǔ)或第三方可信權(quán)威的情況下完成交易,同時,其可嵌入的數(shù)字形式有望促成各類可編程的智能資產(chǎn)、系統(tǒng)和社會,深入變革金融、管理、醫(yī)療、物聯(lián)網(wǎng)等諸多傳統(tǒng)領(lǐng)域.在大量商業(yè)應(yīng)用不斷涌現(xiàn)的同時,相關(guān)學(xué)術(shù)研究特別是基礎(chǔ)理論研究還處于早期階段,行業(yè)內(nèi)尚缺乏方向性研究框架和共同的話語體系.為此,本文對智能合約技術(shù)的運行機(jī)制、主流平臺、關(guān)鍵技術(shù)、應(yīng)用領(lǐng)域、研究挑戰(zhàn)與進(jìn)展進(jìn)行了全面的梳理,討論了智能合約的發(fā)展趨勢,特別地,我們首先歸納了智能合約的生命周期,并以此為序首次提出了智能合約基礎(chǔ)架構(gòu)模型,該模型自底向上分為六個層次,充分體現(xiàn)了智能合約的核心研究方向.本文研究工作以期為未來智能合約研究提供有益的啟發(fā)與參考.