周近 葉歷平 倪藝洋 焦嬌
【摘要】? ? 在2008年,由中本聰提出設(shè)計的比特幣,為人類打開了區(qū)塊鏈的大門。2016年,區(qū)塊鏈已經(jīng)成為世界熱門技術(shù),生活中越來越多的應(yīng)用都離不開區(qū)塊鏈。智能合約被認(rèn)為是區(qū)塊鏈2.0的代名詞之一,在1995年被尼克·薩博首次提出[1],受限于當(dāng)時的技術(shù)發(fā)展,智能合約并沒有得到廣泛的應(yīng)用。隨著區(qū)塊鏈的發(fā)展,智能合約結(jié)合區(qū)塊鏈技術(shù)已經(jīng)成為許多應(yīng)用場景的核心技術(shù)。本文結(jié)合國內(nèi)外區(qū)塊鏈發(fā)展的最新趨勢,對智能合約的基本特點、關(guān)鍵技術(shù)進行了介紹與展望,論述了現(xiàn)有智能合約的應(yīng)用場景以及存在的問題,為后續(xù)對區(qū)塊鏈的研究提供參考。
【關(guān)鍵詞】? ? 智能合約? ? 區(qū)塊鏈? ? 綜述? ? 應(yīng)用
Abstract: In 2008, Satoshi Nakamoto put forward the concept of Bitcoin which offers a gateway to blockchain. In 2016, blockchain has been widely used in life which attracts more and more attention. Intelligent contract is considered as one of the key technologies for blockchain 2.0 era. With the development of blockchain, the combination of intelligent contract and blockchain technology has become the core technology of many application scenarios. This paper focus on the intelligent contract of blockchain. We introduce the characteristics, key technologies and future directions of intelligent contract. From the aspects of the application, we investigate the application scenarios and important challenging which provides the reference for the follow-up study.
Key words: intelligent contract; block chain; review; application
一、區(qū)塊鏈概述
2008年,由中本聰發(fā)表的《比特幣:一種點對點的電子現(xiàn)金系統(tǒng)中》提出比特幣的技術(shù)概念,由此區(qū)塊鏈作為比特幣的核心技術(shù)開始發(fā)展起來。2016年1月,英國政府發(fā)布了區(qū)塊鏈的專題研究報告[2],預(yù)示著區(qū)塊鏈成為人類信用進化史上的第四個里程碑[3]。經(jīng)歷了區(qū)塊鏈1.0-數(shù)字貨幣時代、區(qū)塊鏈2.0-數(shù)字資產(chǎn)和智能合約時代,未來將迎來區(qū)塊鏈3.0-區(qū)塊鏈自治組織(DAO)、區(qū)塊鏈自治公司(DAC)以及區(qū)塊鏈大社會時代[4]。廣義上,區(qū)塊鏈就是一個分布式存儲的數(shù)據(jù)庫,這種分布式節(jié)點通過共識算法來生成和更新鏈上的交易信息,以及使用自動化腳本代碼(即智能合約)來編程并且操作數(shù)據(jù)完成無第三方的信任交易。狹義上,區(qū)塊鏈?zhǔn)前凑諘r間順序?qū)?shù)據(jù)信息存儲在區(qū)塊中并以鏈條的方式通過特定的數(shù)據(jù)結(jié)構(gòu)鏈接在一起,使用密碼學(xué)方式保證其不可篡改、不可偽造、可驗證、匿名的去中心化共享賬本。
區(qū)塊鏈有著廣闊的應(yīng)用場景,不僅僅局限于金融、數(shù)字貨幣等領(lǐng)域,還可以應(yīng)用到能源、醫(yī)療、管理等生活應(yīng)用中[5]。未來,區(qū)塊鏈將成為人類生活生產(chǎn)中必不可少的部分,實現(xiàn)理想中完全去中心化的區(qū)塊鏈社會[6]。
二、智能合約概述
其實,早在1995年多產(chǎn)的跨領(lǐng)域法律學(xué)者尼克·薩博就已經(jīng)提出了智能合約的理念[7],他的定義是“一個智能合約是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”,但此時,不懂得編程的他并沒有能力去實現(xiàn)這一超前的理念。直到2009年首個比特幣軟件系統(tǒng)的推出,讓智能合約有了新的發(fā)展平臺—區(qū)塊鏈。2016年,國務(wù)院發(fā)表了《“十三五”國家信息化規(guī)劃》[8],首次確定了以區(qū)塊鏈為首,大數(shù)據(jù)、人工智能以及機器深度學(xué)習(xí)等新技術(shù)為國家布局重點。同年,以以太坊為代表的智能合約技術(shù)成為了業(yè)界的新熱點,引起了各個領(lǐng)域廣泛的關(guān)注。
2019年10月24日,中共中央總書記習(xí)近平在中央政治局第十八次集體學(xué)習(xí)時明確強調(diào)要將區(qū)塊鏈作為核心技術(shù)自主創(chuàng)新的重要突破口加大投入力度,加快推動區(qū)塊鏈技術(shù)和產(chǎn)業(yè)的創(chuàng)新發(fā)展。
智能合約是區(qū)塊鏈中每一筆交易之間重要的“合同”,這份合同包含了眾多對交易雙方的約束規(guī)則,交易前只需預(yù)置好合同內(nèi)容,就可保證交易的安全性和不可逆性。
智能合約的單線程執(zhí)行、資源消耗約束、難以獲取鏈外資源等特點使得目前的智能合約生態(tài)多以鏈上資源為主要方式。由此,不難看出目前智能合約的廣泛應(yīng)用還缺乏相關(guān)技術(shù)支撐,但大量科研人員已開始致力于智能合約的研究。毋庸置疑的是,智能合約將會占據(jù)業(yè)界的重要地位,開啟一個新的區(qū)塊鏈時代。? 相較于傳統(tǒng)APP開發(fā)需要繁瑣復(fù)雜的流程以及大量的資金儲備,基于智能合約的去中心化應(yīng)用(DAPP)不再局限于某個APP的開發(fā)公司,一個團隊甚至一個人都可進行開發(fā),更具靈活性與開放性。在DAPP中,APP作為前端負(fù)責(zé)用戶交互工作,智能合約作為后端負(fù)責(zé)和區(qū)塊鏈交互,如圖1所示。
目前,DAPP大多數(shù)以PC端網(wǎng)頁的形式或者智能合約接口調(diào)用的形式得以應(yīng)用,由于技術(shù)局限性,移動端的普及率相對較低。未來,隨著更多科研力量的投入、更安全的操作系統(tǒng)的出現(xiàn),DAPP的發(fā)展將成為必然。
三、智能合約基本架構(gòu)與運行機制
3.1合約基礎(chǔ)架構(gòu)模型
智能合約的本質(zhì)其實是一段代碼,通過一定的事件驅(qū)動,利用協(xié)議和用戶接口完成合約的自動執(zhí)行。在協(xié)議制定和部署完后,無需任何外設(shè)或人為干預(yù),即可實現(xiàn)自我執(zhí)行和驗證[9]。尼克·薩博所定義的智能合約包含了承諾、數(shù)字形式、協(xié)議等關(guān)鍵詞,其中承諾即為合約的本質(zhì)和目的,是合約的雙方都同意的權(quán)利或者義務(wù);數(shù)字形式便是利用計算機形成的代碼,只要合約雙方啟動這段代碼,計算機通過網(wǎng)絡(luò)就可直接執(zhí)行這段代碼,并在執(zhí)行后會產(chǎn)生相應(yīng)的可被驗證的證據(jù),以確保合約的有效性。
智能合約一般包括三個基本屬性:協(xié)議、形式化和執(zhí)行。
1)協(xié)議:主要是智能合約的技術(shù)實現(xiàn),當(dāng)參與雙方制定協(xié)議時,需要記錄下來作為合約的證據(jù),合約雙方的承諾被實現(xiàn)還取決于多個因素,其中最重要的是合約履行期間的交易本質(zhì)。2)形式化:智能合約的形式化一般指的是數(shù)字形式,這意味著合約能夠被寫入計算機形成計算機可讀代碼,參與雙方一旦達成協(xié)定,智能合約就會在此臺電腦上通過網(wǎng)絡(luò)來實現(xiàn)并執(zhí)行。3)執(zhí)行:當(dāng)智能合約在一臺電腦上部署下來,參與雙方達成統(tǒng)一后,合約就會自動按照代碼一步一步執(zhí)行,在此過程中,任何人都不能篡改或反悔協(xié)議的內(nèi)容。
智能合約的基礎(chǔ)架構(gòu)模型[10]如圖2所示,包括應(yīng)用層、表現(xiàn)層、智能層、運維層、合約層和基礎(chǔ)設(shè)施層應(yīng)用層封裝了目前智能合約的應(yīng)用領(lǐng)域,驗證了區(qū)塊鏈與智能合約可應(yīng)用于各行各業(yè)。表現(xiàn)層封裝了智能合約在實際應(yīng)用中的幾種具體表現(xiàn)形式,為區(qū)塊鏈2.0時代的到來奠定了基礎(chǔ)。智能層封裝了多種智能算法,智能合約的智能在以后可能會替代人類生活中的一些高級行為。運維層封裝了一系列對合約層中靜態(tài)合約數(shù)據(jù)的操作,運維層是智能合約 按照設(shè)計者意愿正確、安全、高效運行的保障。合約層封裝了一些必不可少的合約數(shù)據(jù),相當(dāng)于是智能合約的靜態(tài)數(shù)據(jù)庫。基礎(chǔ)設(shè)施層封裝了支持智能合約及其衍生應(yīng)用實現(xiàn)的所有基礎(chǔ)設(shè)施,這些設(shè)施的選擇在一定程度上影響了智能合約的設(shè)計模式和合約屬性。
3.2智能合約工作原理
智能合約的工作過程包括構(gòu)建、部署、輸入、執(zhí)行等四個步驟。由開發(fā)語言編寫完成后,交由以太坊特有的二進制格式的虛擬機來進行編譯,形成字節(jié)碼后完成部署,再通過P2P網(wǎng)絡(luò)上傳到本次合約相關(guān)的區(qū)塊鏈上,廣播到各個網(wǎng)絡(luò)節(jié)點,在這之后的每次合約調(diào)用都會在虛擬機上被執(zhí)行,具體過程如下:1)構(gòu)建:智能合約的構(gòu)建主要是將合同或者業(yè)務(wù)規(guī)劃以代碼的形式呈現(xiàn)出來,包括條件、輸入?yún)?shù)、執(zhí)行邏輯、輸出結(jié)果等內(nèi)容。2)部署:在進行智能合約部署時,首先需要編寫合約代碼文件,并交由智能合約編譯器進行編譯,轉(zhuǎn)換為在虛擬機(EVM)上執(zhí)行的字節(jié)碼;接著,向區(qū)塊鏈節(jié)點接口發(fā)送創(chuàng)建請求交易,驗證通過后檢查輸入數(shù)據(jù),再進入交易池;隨后,由“礦工”打包該交易,并生成新的區(qū)塊廣播到P2P網(wǎng)絡(luò),節(jié)點在接收到區(qū)塊信息后對交易進行處理,為合約創(chuàng)建EVM環(huán)境,生成智能合約特有的賬戶地址,并將該區(qū)塊添加到區(qū)塊鏈上;最后,應(yīng)用程序編程接口獲取到該交易的收據(jù),得到賬戶地址,完成智能合約的部署。3)輸入:智能合約的輸入是整個工作過程的重點,為智能合約代碼提供了可信的數(shù)據(jù)輸入,作為該合約的基本信息源,是智能合約成功與否的關(guān)鍵。4)執(zhí)行:合約的執(zhí)行基于輸入并保證確定的邏輯關(guān)系,執(zhí)行成功后會反饋正確可信的執(zhí)行結(jié)果。
四、智能合約應(yīng)用
4.1眾籌項目管理
眾籌指的是大眾籌資,當(dāng)一個項目開發(fā)人員有了創(chuàng)造能力,卻因為資金鏈不足,無法啟動項目時,可以將該項目的具體信息發(fā)布到平臺上進行籌資,即尋找對該項目感興趣并且有足夠的資金支持的人[11]。眾籌的每個項目必須要設(shè)定明確的籌資目標(biāo)和籌資天數(shù),項目在時間內(nèi)籌集目標(biāo)資金后進行開發(fā),投資者會獲得一定的報酬。若超過設(shè)定的天數(shù),還未籌集目標(biāo)金額,則該項目視為籌資失敗,已經(jīng)獲得的資金將會全部返還給投資者,該項目視為作廢。
由于眾籌的門檻較低,出現(xiàn)的問題也較多。第一,眾籌作為金融業(yè)務(wù)中的一部分,必須滿足金融機構(gòu)業(yè)務(wù)的所有信用條件,需要給定完整可靠的方案賬本。對于線上眾籌項目,需要提供大量的可信資料以贏得公眾的信任,確保發(fā)起方和支持者雙方的利益保障。第二,傳統(tǒng)的眾籌平臺并沒有嚴(yán)格管控的監(jiān)督機構(gòu),導(dǎo)致引起問題糾紛,因此根據(jù)網(wǎng)絡(luò)模型提供監(jiān)督是建立眾籌制度的關(guān)鍵問題。第三,眾籌平臺必定會與銀行等金融實體機構(gòu)實現(xiàn)對接,當(dāng)平臺項目的規(guī)模擴張,實體性問題(生產(chǎn)壓力、缺乏創(chuàng)業(yè)指導(dǎo)、投資人不夠?qū)I(yè)等)接踵而至,大大影響了項目的成功率。
基于區(qū)塊鏈的智能合約技術(shù)可以解決上述問題,區(qū)塊鏈通過使用密碼學(xué)方法來生成相關(guān)聯(lián)的區(qū)塊,每個區(qū)塊都包含了交易的時間、具體信息、驗證信息等,且不可篡改,提高了眾籌業(yè)務(wù)的效率和可信度。并且區(qū)塊鏈將具有不同權(quán)限的節(jié)點放置在了不同的用戶地址,用戶實行參與或部分參與管理以及發(fā)布權(quán)威認(rèn)證消息,實現(xiàn)了所有信息的可追溯性。由于區(qū)塊鏈?zhǔn)且粋€分布式數(shù)據(jù)庫,鏈上每一個小小的變化都將引起整個狀態(tài)的改變,但是區(qū)塊鏈技術(shù)能惡狗快速找到并糾正它,保證了數(shù)據(jù)的真實性和可靠性,所以對于眾籌問題需要用到的高可信度平臺,使用區(qū)塊鏈技術(shù)是非常有必要的。
4.2醫(yī)療管理
傳播病人的醫(yī)療記錄的泄露會給患者的隱私帶來多中風(fēng)險,并可能引起患者的嚴(yán)重?fù)p失或聲譽、財產(chǎn)等,基于這個問題,XIA等人提出了MeDShare系統(tǒng)[12],該系統(tǒng)采用了智能合約和訪問控制機制來進行有效地跟蹤數(shù)據(jù)行為,為大數(shù)據(jù)實體之間的云存儲庫中的共享數(shù)據(jù)提供來源、審計和控制,在此系統(tǒng)中,數(shù)據(jù)轉(zhuǎn)換從一個實體共享到另一個實體,以及所有操作都以防篡改的方式進行記錄,并在違反數(shù)據(jù)權(quán)限的情況下撤銷對微觀實體的訪問,解決了醫(yī)療大數(shù)據(jù)保管人在無心信任環(huán)境中共享醫(yī)療數(shù)據(jù)的問題。
4.3 版權(quán)管理
互聯(lián)網(wǎng)的發(fā)展使得網(wǎng)絡(luò)上的各種作品都能夠最大限度地展現(xiàn)在每一個人的眼前,給具有創(chuàng)新創(chuàng)作的人才帶來了更多的機會,抄襲行為屢禁不止,給原創(chuàng)作者們帶來了無盡的煩惱,版權(quán)保護問題成為了熱點。在版權(quán)登記時,可以利用區(qū)塊鏈技術(shù)的不可篡改性,對不同的作品生成唯一的識別碼,將這個識別碼視為作品的代表方式進行關(guān)聯(lián),則會在一定程度上解決這個問題。并且還可以設(shè)置監(jiān)督機制,在合約中增加時間戳,及時掌握用戶訪問文件的相關(guān)信息作者的身份會得到證明,為版權(quán)保護提供了極大的便利。
五、智能合約應(yīng)用中面臨的挑戰(zhàn)
5.1編碼問題
以太坊智能合約都是依靠于程序語言來實現(xiàn),然而在代碼的編輯過程中,難免錯誤的出現(xiàn)。例如以太坊的眾籌項目The DAO是因為智能合約代碼的遞歸調(diào)用產(chǎn)生漏洞而遭到攻擊,造成了巨大的損失,雖然最后通過硬分叉追回了損失,但該項目還是宣布開發(fā)失敗了。
5.2安全問題
鑒于應(yīng)用于智能合約的開發(fā)程序語言并不成熟,合約存在較大的安全漏洞,使得惡意的人有空子可鉆。并且,在區(qū)塊鏈這個公共的大環(huán)境下,鏈上的所有用戶都可以看到基于區(qū)塊鏈的智能合約,已部署上鏈的合約不可逆轉(zhuǎn),一旦合約遭到攻擊,若開發(fā)人員不能迅速修復(fù),必將造成難以挽回的經(jīng)濟損失與嚴(yán)重的安全問題。
5.3 法律問題
從“合約”二字中推斷出智能合約一定是與法律概念中的合約有著千絲萬縷的聯(lián)系,但是從法律的角度來看,這是錯誤的推測。然而,不可否認(rèn)的是智能合約必須被歸類為與法律相關(guān)的行為,所有可能的經(jīng)濟交易都被法律管理和控制著,智能合約就相當(dāng)于是組織經(jīng)濟交易的一種工具,類似于智能合同[13]。智能合約中責(zé)任及風(fēng)險的歸屬等問題仍需深入研究。同時,智能合約的開展還將存在諸多不可預(yù)見的情形,真實性缺乏實際考察等??紤]到這些問題是否會記錄進法律條文來實施對智能合約項目開發(fā)的保護。
5.4 性能問題
智能合約目前依賴于區(qū)塊鏈平臺的分布式賬本及其關(guān)鍵技術(shù),在一定程度上受到了一些限制導(dǎo)致合約的執(zhí)行性能和數(shù)據(jù)處理性能較低,隨著智能合約的發(fā)展,區(qū)塊鏈上的合約數(shù)量在逐步的增加,區(qū)塊鏈系統(tǒng)將會出現(xiàn)無法擴展規(guī)模的問題。同時,智能合約在區(qū)塊鏈系統(tǒng)中是按順序來執(zhí)行的,每秒能夠執(zhí)行的合約數(shù)量受到限制,在性能上成為了大大的阻礙。Hyperledger提出了多通道的方案,但目前的區(qū)塊鏈平臺還是以單鏈為主;Dickerson等人提出了一種智能合約的并行執(zhí)行框架,希望允許非沖突的合約同時進行,從而來提高系統(tǒng)吞吐量,改善智能合約的執(zhí)行性能,以上解決問題的方法目前還在積極研發(fā)中,在不久的將來肯定能夠很好地解決智能合約的執(zhí)行性能問題。
六、總結(jié)與展望
智能合約是在上世紀(jì)被提出的創(chuàng)世紀(jì)技術(shù),在區(qū)塊鏈的浪潮下又煥發(fā)出了新的生機,又由于智能合約在生活中的廣泛應(yīng)用,極大地促進了區(qū)塊鏈的發(fā)展。在目前看來,智能合約已經(jīng)立足于世界的某一個技術(shù)頂點,成為全球經(jīng)濟的基本構(gòu)件,并且任何人都有可能依靠智能合約找到自己的經(jīng)濟支點??偠灾?,智能合約為靜態(tài)的底層區(qū)塊鏈數(shù)據(jù)賦予了靈活可編程的機制和算法,并為構(gòu)建區(qū)塊鏈2.0和3.0時代的可編程金融系統(tǒng)與社會系統(tǒng)奠定了基礎(chǔ)。但是,就目前的生態(tài)而言,智能合約對現(xiàn)實世界的影響力是有限的,但是事物總是在發(fā)展中的,毋庸置疑的是智能合約將會扮演著越來越重要的角色,隨著以太坊2.0的落地,也許會開創(chuàng)一個新的區(qū)塊鏈時代,有更多智能合約應(yīng)用等著我們?nèi)ド钊胙芯俊?/p>
參? 考? 文? 獻
[1]張杰. 區(qū)塊鏈安全綜述. 西安文理學(xué)院學(xué)報 (自然科學(xué)版)2020, 3: 42–55.
[2] Hancock M, Vaizey E. Technical report by the UK government chief scientific adviser [EB/OL]. [2017-07-19].
[3] SwanM. Blockchain:Blue print for a New Economy [M]. Sebastopol, CA: OReilly Media, Inc, 2015.
[4]朱建明, 付永貴. 區(qū)塊鏈應(yīng)用研究進展[J]. 科技導(dǎo)報, 2017, 35(13):70-76.
[5]袁勇, 王飛躍. 區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J]. 自動化學(xué)報, 2016, 42(4): 481-494.
[6] Buterin V.? Anextgeneration smart contract and decentralized application platform.? White paper? ? (2014).
[7] Nakamoto S. Bitcoin: A peer-to-peer electronic cash system [OL]. [2018-01-31].? (http://bition.org/bitcoin.pdf)
[8]趙國宏. 軍事區(qū)塊鏈研究[J] 指揮與控制學(xué)報. vol. 5, no. 4, pp. 259-268.
[9] Mourouzis, T. , and Tandon, J. Introduction to decentralization and smart contracts, 03? 2019.
[10]歐陽麗煒, 王帥, 袁勇, 倪曉春, 王飛躍. 智能合約: 架構(gòu)及進展[J]. 自動化學(xué)報. 2019, 45(3): 445?457.
[11]黃潔華, 高靈超, 徐玉壯. 眾籌區(qū)塊鏈上的智能合約設(shè)計. 信息安全研究. (2017).
[12]賀海武, 延安, 陳澤華. 基于區(qū)塊鏈的智能合約技術(shù)與應(yīng)用綜述. 計算機研究與發(fā)展 55, 11(2018), 112-126.
[13]賀小苗. 區(qū)塊鏈技術(shù)的應(yīng)用: 智能合約及法律問題前瞻. 現(xiàn)代商業(yè)000, 16(2018), 153–154.