周近 葉歷平 倪藝洋 焦嬌


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