999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于區塊鏈的智能合約技術與應用綜述

2018-11-13 05:06:40賀海武陳澤華
計算機研究與發展 2018年11期
關鍵詞:智能

賀海武 延 安 陳澤華

1(中國科學院計算機網絡信息中心 北京 100190) 2(太原理工大學信息工程學院 太原 030024) 3 (太原理工大學大數據學院 太原 030024) (hehaiwu@gmail.com)

區塊鏈是比特幣的基礎支撐技術,隨著近年來比特幣的快速發展與普及,引起了多方的廣泛關注.2016年1月,英國政府發布區塊鏈專題研究報告[1];同年12月,中國政府將區塊鏈技術列入《“十三五”國家信息化規劃》[2],旨在加強新技術的基礎研發和前沿布局.區塊鏈被認為是繼大型機、個人電腦、互聯網、移動社交網絡之后的第五次顛覆式創新,是人類信用進化史上繼血親信用、貴金屬信用、央行紙幣信用后的第4個里程碑[3].

區塊鏈技術的應用發展有3個階段:1)區塊鏈1.0,即可編程貨幣,如比特幣;2)區塊鏈2.0,即可編程金融[3],其中智能合約是其代表性應用;3)區塊鏈3.0,即可編程社會,如去中心化應用(decentralized application)、去中心化自組織(decentralized auto-nomous organization)[4-5].目前,區塊鏈已經開始超越區塊鏈1.0時代,進入到區塊鏈1.5時代,并向可編程金融,即智能合約時代過渡.

2016年以來,以以太坊(Ethereum)[6]為代表的智能合約技術成為各界關注的熱點,引起了政府部門、金融機構、科技企業的廣泛關注.2016年12月,首屆智能合約專題研討會在微軟紐約市總部舉行,分析與探討了智能合約的應用場景.2017年2月,歐洲議會在《區塊鏈如何改變我們的生活》[7]報告中指出,智能合約技術是最具潛力的區塊鏈應用;同月,企業以太坊聯盟(Enterprise Ethereum Alliance)成立,致力于將以太坊開發成企業級區塊鏈,其成員既有摩根大通、荷蘭銀行等大型金融機構,也有微軟、Intel等科技企業.

“智能合約”(smart contract)的概念產生于1995年,由密碼學家Szabo[8]首次提出,他指出“智能合約通過使用協議和用戶接口來促進合約的執行”.從本質上講,智能合約是由事件驅動的、具備狀態的、部署于可共享的分布式數據庫上的計算機程序,現存智能合約的工作原理類似于其他計算機程序的If-Then語句[9].智能合約只是以這種方式與真實世界的資產進行交互.當一個預先設定的條件被觸發時,智能合約執行相應的合同條款.

Szabo指出,計算機在某一天可以代替人力、機械設備等進行更加復雜的數字資產交易.未來的某一天,這些自動執行的程序可能取代某些處理特定金融交易的專家或機構.智能合約的發展雖然處于初級階段,但其潛能顯而易見,它將合約參與者、合約協議以及參與者與協議之間的復雜關系程序化了.目前基于區塊鏈的智能合約技術的發展呈現出技術產業創新驅動的態勢,但在學術方面的研究相對滯后,截至2017年7月,以萬方知識服務平臺為中文數據源,以EI Village為英文數據源的檢索顯示,目前標題包含“智能合約/smart contract”且與區塊鏈技術相關的學術論文僅有中文9篇和英文27篇.

本文的內容有6方面:1)簡要介紹了智能合約的底層技術基礎——區塊鏈技術,概述了智能合約的定義、全生命周期、優點及分類;2)凝練總結了智能合約的基本架構、關鍵技術;3)簡要介紹了智能合約的主要技術平臺;4)闡述了智能合約的發展現狀與應用場景;5)概要總結了智能合約現存的問題并搭建了以太坊實驗環境,開發了一個眾籌智能合約系統;6)總結與展望.

1 智能合約背景知識

1.1 區塊鏈技術簡介

區塊鏈技術起源于2008年,由一位化名為“中本聰”(Satoshi Nakamoto)的學者提出,其在文獻中所描述的區塊鏈是一種按照時間順序將數據區塊以鏈條的方式組合成特定數據結構,并以密碼學方式保證的不篡改和不可偽造的去中心化共享總賬(decentralized shared ledger)[10].比特幣是最早的區塊鏈應用場景,其本質是由基于區塊鏈技術的分布式網絡利用密碼學算法生成的數字加密貨幣.數字加密貨幣領域一直面臨著兩大難題:雙重支付問題和拜占庭將軍問題(Byzantine generals problem)[11].而區塊鏈技術的出現,為解決這兩大難題提供了有效的途徑.雙重支付問題是指用“同一筆錢”在兩次或多次交易中完成支付.拜占庭將軍問題是指在缺少可信任中心節點的情況下,分布式系統如何達成共識和建立互信的問題[12].區塊鏈技術,在不需要第三方信用機構的前提下,通過分布式數據庫、數字加密技術和獨特的共識算法解決了去中心化系統的雙重支付問題,實現了一個無需信任單個節點的去中心化的可信任系統.區塊鏈的共識算法的理論基礎是拜占庭容錯(Byzantine fault tolerant, BFT).常見的共識算法有工作量證明(proof of work, PoW)[13]、權益證明(proof of stake, PoS)[14]、授權權益證明(delegated proof of stake, DPoS)[15]、實用拜占庭容錯(practical Byzantine fault tolerance, PBFT)[16]、授權拜占庭容錯(delegated Byzantine fault tolerance, DBFT)[17]等.

狹義的區塊鏈是去中心化系統中各節點共享的數據賬本,區塊結構如圖1所示,每個區塊分為區塊頭和區塊體兩部分,涉及鏈式結構、Hash算法、Merkle樹和時間戳等技術要素[18].

Fig. 1 Structure of block圖1 區塊結構

區塊鏈技術的本質是它在網絡空間建立了一種分布式的一致性標準,對所有的數字事件在分布式數據庫上創建確切的無法篡改的記錄并且使得區塊鏈中的所有參與方都能確切、可信地了解所發生的數字事件.

區塊鏈技術出現后,其去中心化、去信任、規則透明、集體維護、不可篡改等特性,恰好為智能合約提供了安全可靠的記錄載體和執行環境.首先,區塊鏈技術采用純數學的方法,在不犧牲隱私性,也無需第三方信用機構參與的條件下,可以對所有過去、當前的數字事件(如行為、資產等),建立分布式的一致性表達[19].其次,區塊鏈提供了可供用戶進行編程的腳本系統,進一步增強了區塊鏈應用的靈活性,如在以太坊中,具備圖靈完備、功能強大的腳本系統,使得基于智能合約的更為高級的分布式應用得以實現.

1.2 智能合約概述

智能合約有許多非形式化的定義,Szabo[8]創造性地提出,“智能合約就是執行合約條款的可計算交易協議”;以太坊的智能合約是基于區塊鏈的數字資產控制程序[6].狹義來講,智能合約是涉及相關商業邏輯和算法的程序代碼,把人、法律協議和網絡之間的復雜關系程序化了.廣義來講,智能合約是一種計算機協議,一旦部署就能實現自我執行和自我驗證,已經不僅僅局限于金融領域,并且在分布式計算、物聯網等領域都有廣闊的應用前景.

類似于傳統合約,智能合約全生命周期包括:合約生成、合約發布、合約執行3個部分,如圖2所示:

Fig. 2 The whole life cycle of smart contract圖2 智能合約全生命周期圖

合約生成,主要包含合約多方協商、制定合約規范、進行合約驗證、獲得合約代碼4個環節.具體實現過程為:由合約參與方進行協商,明確各方的權利與義務,確定標準合約文本并將文本程序化,經驗證后獲得標準合約代碼.其中涉及2個重要環節:合約規范和合約驗證.合約規范需要由具備相關領域專業知識的專家和合約方進行協商制定.合約驗證在基于系統抽象模型的虛擬機上進行,它是關乎到合約執行過程安全性的重要環節,必須保證合約代碼和合約文本的一致性.

合約發布與交易發布類似,經簽名后的合約通過P2P的方式分發至每一個節點,每個節點會將收到的合約暫存在內存中并等待進行共識.共識過程的實現:每個節點會將最近一段時間內暫存的合約打包成一個合約集合,并計算出該集合的Hash值,最后將這個合約集合的Hash值組裝成一個區塊并擴散至全網的其他節點;收到該區塊的節點會將其中保存的Hash值與自己保存的合約集合的Hash值進行比較驗證;通過多輪的發送與比較,所有節點最終會對新發布的合約達成共識,并且達成共識的合約集合以區塊的形式擴散至全網各節點,如圖3所示.其中每個區塊包含以下信息:當前區塊的Hash值、前一區塊的Hash值、時間戳、合約數據以及其他描述信息.

Fig. 3 Blockchain diagram of smart contract圖3 智能合約的區塊鏈示意圖

智能合約的執行是基于“事件觸發”機制的.基于區塊鏈的智能合約都包含事務處理和保存機制以及一個完備的狀態機,用于接受和處理各種智能合約.智能合約會定期遍歷每個合約的狀態機和觸發條件,將滿足觸發條件的合約推送至待驗證隊列.待驗證的合約會擴散至每一個節點,與普通區塊鏈交易一樣,節點會首先進行簽名驗證,以確保合約的有效性,驗證通過的合約經過共識后便會成功執行.整個合約的處理過程都由區塊鏈底層內置的智能合約系統自動完成,公開透明,不可篡改.

智能合約的實現,本質上是通過賦予對象(如資產、市場、系統、行為等)數字特性,即將對象程序化并部署在區塊鏈上,成為全網共享的資源,再通過外部事件觸發合約的自動生成與執行,進而改變區塊鏈網絡中數字對象的狀態(如分配、轉移)和數值.智能合約可以實現主動或被動的接受、存儲、執行和發送數據,以及調用智能合約,以此實現控制和管理鏈上數字對象.目前已經出現的智能合約技術平臺,如以太坊、Hyperledger等,具備圖靈完備的開發腳本語言,使得區塊鏈能夠支持更多的金融和社會系統的智能合約應用.

現今,雖然智能合約尚未得到廣泛應用,但其技術優點已經得到研究人員的廣泛認可.總體來說,智能合約具有7個優點:

1) 確定性.智能合約在不同的計算機或者在同一臺計算機上的不同時刻多次運行,對于相同的輸入能夠保證產生相同的輸出.對于區塊鏈上的智能合約,確定性是必然要求,因為非確定性的合約可能會破壞系統的一致性.

2) 一致性.智能合約應與現行合約文本一致,必須經過具備專業知識的人士制定審核,不與現行法律沖突,具有法律效應[20].

3) 可終止性.智能合約能在有限的時間內運行結束.區塊鏈上的智能合約保證可終止性的途徑有非圖靈完備(如比特幣)、計價器(如以太坊)、計時器(如Hyperledger Fabric)等.

4) 可觀察和可驗證性.智能合約通過區塊鏈技術的數字簽名和時間戳,保證合約的不可篡改性和可溯源性.合約方都能通過一定的交互方式來觀察合約本身及其所有狀態、執行記錄等,并且執行過程是可驗證的.

5) 去中心化.智能合約的所有條款和執行過程都是預先制定好的,一旦部署運行,合約中的任何一方都不能單方面修改合約內容以及干預合約的執行.同時,合約的監督和仲裁都由計算機根據預先制定的規則來完成,大大降低了人為干預風險.

6) 高效性和實時性.智能合約無需第三方中心機構的參與,能自動地實時響應客戶需求,大大提升了服務效率.

7) 低成本.智能合約自我執行和自我驗證的特征,使其能夠大大降低合約執行、裁決和強制執行所產生的人力、物力成本.

就當前發展而言,以區塊鏈技術為基礎的智能合約大致分為3類:1)“Chaincode”,即常說的鏈上代碼,如金融活動由交換數據變為交換代碼;2)“智能法律合約”,包括不同方面所產生的權利和義務,并且在法律上可執行,通常以復雜的法律文本來表達,不僅涵蓋個人行為,還可能涉及時間依賴和次序依賴等一系列依賴關系,例如PrimaveradeFilippi加密賬本交易法律框架[21],用鏈上智能合約來補充或代替現有法律合同,成為智能合約代碼和傳統法律語言的結合;3)“智能應用合約”, 即在區塊鏈上部署基于智能合約的分布式鏈上應用,創建有商業價值的全新合約形式,如M2M(機器對機器)商業模式.

2 智能合約基本架構與關鍵技術

Fig. 4 Basic framework of the smart contract圖4 智能合約基本架構

智能合約基本架構如圖4所示.總體來說,區塊鏈智能合約包含數據層、傳輸層、智能合約主體、驗證層、執行層以及合約之上的應用層這6個要素.數據層包括鏈上數據和鏈下數據,它們是智能合約運行的必要數據源.傳輸層則封裝了用于支持“鏈上-鏈上”和“鏈上-鏈下”進行通信、數據傳輸的協議.智能合約主體包括協議和參數.驗證層主要包含一些驗證算法,用于保證合約代碼和合約文本的一致性.執行層主要封裝了智能合約運行環境的相關軟件.應用層則是基于前5個要素的基礎產生的相對高級的各種應用,它主要是為智能合約與其他計算機、應用程序通信服務的.本節將從智能合約主體、數據加載方式、執行環境、驗證方法和擴展性的實現5個方面探討智能合約的關鍵技術.

2.1 合約主體

智能合約主體為基于標準化的合約應用提供了復雜的協議框架,可以通過識別智能合約的關鍵參數來識別合約的行為和狀態.智能合約主體主要包括協議和參數2個部分:

1) 協議是由標準機構發布的合法文本的程序化描述[22].協議包括合法的標準文本和標準參數,其中每個參數都有一個標識,分別代表一種類型.可以說,協議是一個完全實例化的模板.

2) 參數包括業務邏輯模塊(主要參數)和各種附件模塊,如數據管理模塊、用戶管理模塊、合約管理模塊等.業務邏輯模塊包括定制的合法文本和參數,是對應用領域專業知識的程序化描述,由合約參與方協商產生,涉及多方的權利與義務.業務邏輯模塊的合法文本和參數來自協議部分的標準文本和參數,但根據應用場景而有所不同.附件模塊在業務邏輯的基礎上,結合具體應用場景的需要,實現對智能合約的補充和完善.數據管理模塊,封裝了實現數據接收、暫存、計算、清除等功能的代碼程序;用戶管理模塊,主要實現了合約用戶的權限管理、安全認證、信譽管理等功能;合約管理模塊,主要功能是當合約被調用時,結合用戶需求,實現合約的生成、驗證發布、部署執行、狀態查詢以及風險處理等功能.各模塊根據應用需求,可以定制子協議和子標準,如計算安全標準、風險預警標準、模塊交互協議等.所有參數都是合約的關鍵部分,因為它們不僅直接反映了各方之間的業務關系而且影響合約的自動執行.

2.2 數據加載方式

數據層包括狀態數據、交易數據、合約代碼、應用數據等,出于可觀察和可驗證的目的,狀態數據和交易數據一般都采用鏈上存儲方式.應用數據和合約代碼的加載方式則分為鏈上和鏈下2種.目前絕大多數區塊鏈系統均采用鏈上方式,將代碼和應用數據發布到鏈上,然后再從鏈上加載數據和代碼并執行,其缺點是代碼和應用數據將永久地存在于區塊鏈中,不利于更新維護,占用節點存儲資源,隨著時間的積累將帶來巨大的存儲負擔.鏈下方式是指將智能合約的散列值存儲于鏈上,并通過以散列值為索引的存儲網絡或可信賴的數據源來保存完整的合約代碼,如IPFS(inter planetart file system)系統、Tower Crier平臺[23].散列值是由合約代碼內容計算而得,這樣既可以保證合約的不可篡改性,又可以節約節點大量的存儲空間和加強合約的隱私性.

2.3 執行環境

目前主流的智能合約執行環境的設計主要分為2種:虛擬機和容器(docker).無論是虛擬機還是容器,它們的作用都是在一個沙箱中執行合約代碼,并對合約所使用的資源進行隔離和限制.虛擬機通常是指通過軟件模擬的具備完整硬件功能的、能像真實機器一樣執行程序的計算機的軟件實現,如VMware.出于降低資源開銷、提升性能和兼容性的目的,絕大多數區塊鏈會采用輕量級的虛擬機結構,如以太坊虛擬機(Ethereum virtual machine, EVM).

容器通常是指借助容器引擎,讓開發者可以打包其應用以及依賴包到一個可移植的容器中,也可以實現虛擬化.容器使用沙箱機制,相互之間不會有任何接口,如Hyperledger Fabric使用Docker作為智能合約的執行環境.Docker本身沒有采用虛擬化技術,程序是直接運行在底層操作系統上,代碼執行的效率很高.但與輕量級虛擬機相比,其過于龐大的架構,使得部署和啟動Docker本身需要消耗大量的時間和計算資源.

我們在1.2節已經提到,智能合約本質上是區塊鏈上可執行的代碼,那么在智能合約的執行過程中,我們需要關注2個問題,即指令的執行速度和運行環境的啟動速度.對于智能合約而言,運行環境的啟動速度比指令的執行速度更加重要[24].這是因為,針對輕量化的虛擬機或容器,智能合約的代碼中很少會涉及到IO相關的指令,所以這些指令代碼易于優化.而智能合約的每次調用,都必須在一個新的虛擬機或容器中進行,因此運行環境啟動時間對整個智能合約系統影響較大.

2.4 驗證方法

智能合約是對某領域專業知識的程序語言描述,對合約所涉及的核心利益(如資產)的安全性、合約代碼的邏輯正確性有了更高的要求,必須保證合約文本與合約代碼的一致性,合約驗證是保證這些要求的重要途徑.目前,形式化驗證是智能合約領域的主流驗證方式.形式化方法是基于數學的描述和推理計算機系統性質的技術,常用于軟件的規范、開發和驗證[25].形式化方法主要包括形式歸約和形式驗證.形式驗證是建立在形式歸約的基礎上,驗證已有程序是否滿足其歸約要求[26].目前常見的形式驗證方法主要有2種:演繹驗證和模型檢測.演繹驗證是基于定理證明的思想,采用邏輯公式描述系統,優點是可以處理無限狀態的問題但做不到完全自動化,如STeP.模型檢測是基于狀態搜索的思想,主要針對有窮狀態系統,如SPIN.模型檢測可以實現完全自動化,并且在驗證性質得不到滿足時,搜索終止可以給出反例,這種信息往往反映了系統設計中的錯誤.

智能合約的形式化驗證主要包括4個部分:代碼生成、形式化描述、形式化驗證和一致性測試.代碼生成,是指用編程語言對合約文本進行程序化描述.形式化描述,是指通過建模語言和建模工具對形式化合約文檔進行建模[27].一致性測試強調被測系統與給定標準的一致性,通過測試的合約代碼實現的外部特性與標準合約文本一致[28].形式化驗證法可以檢查智能合約的很多屬性,如可達性、公平性、死鎖等.將形式化驗證法應用于智能合約,使得合約的生成和執行有了規范性約束,保證了合約的可信性.

2.5 擴展性的實現

可擴展性通常是指如何處理更大規模的業務.對于一個系統的擴展性,我們通常有2種方法,即垂直擴展和水平擴展.與水平擴展相比,垂直擴展是基于單臺設備最大處理能力的串行系統的擴展性,容易較快觸及成本、技術的極限,因此水平擴展是當下的主流措施,即將串行系統改造成并行系統,對指令進行并行處理.

區塊鏈本質上是一個分布式數據庫,存儲著各種數據以及數據間進行交換和計算的規則,而智能合約就是這些規則的代碼實現.因此,實現智能合約的并發執行,將成為提高區塊鏈系統擴展性的重要途徑,如以太坊提出的分片(sharding)方案,即架構中的全球驗證程序集合中的節點被隨機分配到特定的“碎片”,其中每個碎片并行處理全局狀態的不同部分,從而確保工作是跨節點分布處理.

3 智能合約主要技術平臺

以太坊和Hyperledger Fabric[29]是目前較為成熟且極具代表性的智能合約技術平臺.本節將以以太坊和Hyperledger Fabric為例介紹智能合約技術平臺.

3.1 以太坊

以太坊是一個基于區塊鏈數據結構的、可實現智能合約的、開源的底層系統,在2013年由Buterin[6]在他的文章“以太坊:下一代加密貨幣和分散應用平臺”中提出.以太坊的目標是基于腳本語言、數字加密貨幣和鏈上元協議(on-chain meta-protocol)概念進行整合和提高,使得開發者能夠創建任意的基于共識的、可擴展的、標準化的、特性完備的、易于開發和協調的分布式應用.

以太坊虛擬機(EVM)是在以太坊智能合約及其應用的運行環境,提供了一種圖靈完備的腳本語言——Ethereum virtual machine code,這使得任何人都能夠創建智能合約及其去中心化應用,并在其中自由定義所有權規則、交易方式和狀態轉換函數.以太坊智能合約的核心要素如圖5所示,主要包括賬戶、交易、Gas、日志、指令集、消息調用、存儲和代碼庫8個部分.

Fig. 5 The core elements of Ethereum smart contract圖5 以太坊智能合約核心要素

賬戶是以太坊的核心操作對象,主要分為2類:外部賬戶和合約賬戶.外部賬戶類似于一般區塊鏈電子貨幣賬戶,并且外部賬戶有能力創建并部署智能合約.合約賬戶由外部賬戶創建,其地址由合約創建者的地址和該地址發出過的交易數量計算得到.合約賬戶既含有貨幣余額狀態還有合約存儲狀態.EVM的指令集被刻意保持在最小規模,以盡可能避免可能導致共識問題的錯誤出現.指令集具備常用的算術、位、邏輯和比較操作,以及條件和無條件跳轉.

以太坊智能合約旨在實現4個目的:1)存儲對其他合約或外部實體有意義的值或狀態;2)作為具有特殊訪問策略的外部賬戶;3)映射和管理多個用戶之間的關系;4)為其他合約提供支持.基于這4個目的,以太坊智能合約有著廣泛應用,如儲蓄錢包、云計算、版權管理系統[30]、身份和信譽系統、去中心化存儲以及去中心化自治社會(decentralized autonomous society)[31]等.

截至2017年5月,全球已有200多個以太坊應用誕生,如分布式眾籌平臺Betfunding[32].以太坊公有鏈和開源架構的特性,使得以太坊成為了最流行的智能合約及其分布式應用開發平臺之一.

3.2 Hyperledger Fabric

Hyperledger[33]是Linux基金會于2015年12月發起的旨在推動各方協作,共同打造基于區塊鏈的企業級分布式賬本底層技術,用于構建支撐業務的行業應用平臺.Fabric[29]是Hyperledger的一個子項目,目標是實現一個通用的許可鏈(permissioned chain)的底層基礎框架,其采用模塊化架構提供可切換和可擴展的組件,包括共識算法、加密算法、數字資產、智能合約等服務.超級賬本的設計原則是“用例驅動”,目前,Fabric項目主要支持5種用例:數字支付[34]、金融資產管存、供應鏈、主數據管理和共享經濟[35].

Fabric的邏輯架構如圖6所示,由成員資格服務、策略服務、區塊鏈服務和智能合約服務4個部分構成.Fabric智能合約實質上是在驗證節點(verifi-cation node)上運行的分布式交易程序,用以自動執行特定的業務規則,最終更新賬本的狀態.Fabric智能合約分為公開、保密和訪問控制3種類型,分別由擁有不同權限的成員發起.

Fig. 6 Fabric project architecture diagram圖6 Fabric項目架構圖

Fig. 7 Diagram of smart contract execution of Fabric圖7 Fabric智能合約代碼執行示意圖

Fabric智能合約代碼的執行過程圖如圖7所示,分為6個步驟:①客戶端發送執行請求給任意一個驗證節點;②驗證節點收到請求后,向本地賬本發送啟動智能合約的指令;③驗證節點創建隔離的運行環境,啟動合約代碼;④合約執行過程中,更新本地賬本的狀態;⑤合約調用完成后,驗證節點向本地賬本確認交易;⑥驗證節點向其他驗證節點廣播交易.

與以太坊不同,Fabric雖然也是開源的,但是Fabric主要是為聯盟鏈服務的,其更加強調商業需求和實際應用需要.

4 智能合約研究現狀與應用場景

4.1 國外研究現狀

從國外發展來看,在科研領域,截至2017年7 月31日,以EI Village為數據源,標題中包含“block-chain”的外文文獻有152篇,標題中包含“smart contract”且與區塊鏈技術相關的外文文獻有27篇,如圖8所示.從圖8可以看出,國外在區塊鏈和智能合約的研究與探索方面起步較早.以康奈爾大學為代表,Emin Gun Sirer教授所在的IC3研發團隊推出了Solidus協議、區塊鏈保密查詢工具Town Crier等理論科研成果,與其合作的企業包括微軟、花旗銀行和區塊鏈技術公司Chain等.

Fig. 8 Search result of EI Village圖8 EI Village檢索結果

2015年被稱為區塊鏈元年,自這一年以來,區塊鏈掀起了前所未有的熱潮,全球金融機構和各大銀行爭相展開對區塊鏈技術的研究.據《2015年度全球數字貨幣(區塊鏈)創業投資報告》顯示,2015年度共發生全球數字貨幣及區塊鏈相關投資65起,總金額達4.9億美元.其中,涉及智能合約和商業應用等方面的投資有21起,總金額達5 628萬美元.其中,智能合約平臺Symboiont和Mirror獲得700萬美元和1 280萬美元投資.2016年,RSK公司Rooststock智能合約平臺相繼獲得110萬美元投資,同年5月DAO(分布式自治組織)作為主攻智能合約的區塊鏈項目,自眾籌金額高達2.45億美元.更詳細的國外主要智能合約項目如表1所示:

Table 1 Main Foreign Smart Contract Projects表1 國外主要智能合約項目

4.2 國內研究現狀

從國內發展來看,區塊鏈技術起步較晚.在科研領域,截至2017年7月31日,以萬方數據庫為數據源,標題中包含“區塊鏈”的中文文獻有352篇,標題中包含“智能合約”且與區塊鏈技術相關的中文文獻有9篇,如圖9所示.從圖9可以看出,自2016年以來,區塊鏈技術在國內呈現出爆發式的發展態勢,但智能合約技術尚處在發展初期.蔡維德教授所在的北航區塊鏈實驗室致力于區塊鏈、智能合約、數字社會等技術的研究與探索,理論成果涉及共識算法、應用問題、架構問題等多個方面,如雙鏈并發模型[36]、并行拜占庭協議、“金絲猴”分布式鏈網模型等;馬小峰教授所在的同濟金融科技研究院推出了“中國銀聯-同濟區塊鏈測評標準體系”,“基于區塊鏈的信用校園”等多項區塊鏈技術與應用;中國科學院軟件所發布了區塊鏈基礎組件RepChain(reactive permission chain),是一種采用響應式編程實現的自主可控的許可鏈,以推動區塊鏈與行業應用結合為目標,具有標準化、模塊化、可視化的特點.除此之外,2015年國內各地開始紛紛成立研究聯盟,共同推動區塊鏈技術的發展.2015年10月首屆全球區塊鏈峰會“區塊鏈——新經濟藍圖”在上海舉辦.2015年12月,中國區塊鏈應用研究中心(北京)成立.2016年1月,中國區塊鏈研究聯盟在北京成立,致力于推動區塊鏈的相關學術研討和實踐工作.

Fig. 9 Search result of Wanfang Data圖9 萬方數據庫檢索結果

國內基于區塊鏈的智能合約應用探索還處于早期研究階段.據《全球區塊鏈+創投報告》,截至2017年4月底,全球總共455家區塊鏈公司累計獲得融資額為19.47億美元,其中中國共有61家位列全球第2.2016年5月騰訊聯合發起金融區塊鏈合作聯盟,推出騰訊云的聯盟鏈云服務;同年6月百度戰略投資Circle;同年7月,阿里系的螞蟻金服在全球XIN公益大會上表示其區塊鏈技術即將上線,旨在打造基于區塊鏈的公益平臺;同年9月,中國銀聯與IBM合作,預演“使用區塊鏈技術的跨行積分兌換系統”;2017年5月,小蟻區塊鏈發布智能合約2.0,從數字資產平臺全面升級為智能經濟平臺.更詳細的國內主要智能合約項目如表2所示:

Table 2 Main Domestic Smart Contract Projects表2 國內主要智能合約項目

4.3 智能合約的應用場景

智能合約具有確定性、實時性、自治性、可觀察、可驗證、去中心化等特點,在數字支付、金融資產處置、云計算、物聯網、共享經濟等方面有著廣闊的應用前景.

1) 數字身份.智能合約可以讓用戶擁有和控制自己的數字身份,構建以用戶為中心的個人網絡,例如個人數字信譽和數字資產[37]等;同時還可以指定哪些個人數據可以或不可以與他人進行共享.

2) 數字記錄.智能合約可以實現合規性的自動化,提高數據的透明度,降低服務費用,實現記錄的自動處理.例如利用智能合約技術進行臨床試驗數據的管理,可以提高數據的透明度[38].

3) 證券.基于智能合約實現數字化終端到終端的證券工作流程,用于資本化股權結構表管理能夠極大地簡化其工作流程,如幫助私人公司自動股息支付、股票分割和負債管理等流程,區塊鏈證券公司Symbiont已經開始推動股票證書向使用加密區塊鏈簽名轉變.

4) 金融貿易.智能合約可以推動簡化全球商品轉移,帶來更高資產流動性.實現信譽證明和貿易支付流程的自動化發起,可以在客戶、供應商和金融機構之間創建一種更高效、風險更小的流程.

5) 物聯網.利用智能合約在設備之間創建服務市場,創建分散的、共享的經濟應用程序,兼顧隱私性與數字資產的價值性,促進服務和資源的共享,如Blockchain-IoT[39].

6) 供應鏈.智能合約能夠為供應鏈的每一個環節提供更高的可見性,簡化多重機構系統,與物聯網設備進行協調,跟蹤被管理的資產和產品,降低欺詐和盜竊風險.例如Everledger與IBM已經將區塊鏈用于供應鏈以提升其可見性.

7) 保險.智能合約體系下的保險合同都是數字化的,被保存在區塊鏈賬本之中,無法篡改;同時可以自動化保險索賠流程,提供接近瞬時的處理、驗證和付款服務.基于智能合約的保險業務,可以提供智能定制服務,可根據投保種類、時間、期限、理賠記錄等自動匹配最佳投保方案,大大降低傳統保險業的服務成本.

8) 分布式計算.基于區塊鏈技術,利用智能合約實現的分布式計算有著廣闊的應用前景和現實意義.在全面進入區塊鏈1.0時代后,全球有數以萬計的具備算力的節點接入數字貨幣網絡(如比特幣網絡)從事挖礦工作.利用智能合約實現的分布式計算,是實現將閑置節點作為計算資源供應商與客戶(計算資源需求方)進行智能匹配,充分開發與利用現行網絡計算資源,簡化計算服務流程,降低計算服務成本,例如iEx.ec[40]旨在提供一個可擴展、安全、易于交互的數據集和計算資源的分布式應用程序.

5 智能合約的現存問題

雖然基于區塊鏈的智能合約技術以其獨特的優勢吸引了眾多研究者,但區塊鏈智能合約技術還處在發展初期,存在諸多問題.除此之外,如何協調去中心化、低能耗、安全三者之間的關系,還有待進一步的研究.本節將從效率、隱私、安全、標準不統一4個方面,探討和分析區塊鏈智能合約技術發展中有待解決的問題.

5.1 效率問題

效率是影響智能合約可用性的重要因素.

1) 數據存儲問題.智能合約區塊鏈記錄了整個區塊鏈網絡從誕生至當前時間點的一切狀態改變記錄,并要求每個節點保存一份數據備份,這對日益增長的海量數據的存儲和同步來說是極為困難的.例如以太坊區塊鏈,完全同步自創世區塊以來的全部區塊數據需要約180 GB的存儲空間,新添加進網絡的節點完全同步區塊鏈數據所花費的時間就長達1周.雖然以太坊數據區塊中既包含智能合約代碼,也包含交易數據等,但其從誕生到現在不過3年多的時間,即使將智能合約單獨成鏈,按照以太坊愈加活躍的走勢和時間累積效應,其區塊鏈數據庫過于龐大是一個急需解決的問題.盡管輕量化區塊鏈可以部分解決此問題,但大部分區塊鏈的輕量化都是以犧牲可靠性和安全性為代價的,因此如何協調輕量化與可靠性、安全性之間的關系還有待進一步的研究.同時,適用于工業級的解決方案仍有待開發[41].

2) 狀態確認的效率問題,這主要涉及2個問題:雙重確認和閉鎖問題.當具備訪問權限的不同節點修改同一智能合約的同一個狀態時,由于確認過程時間差的存在,將面臨“雙重確認”問題,即同一個狀態被寫入2次或多次,這有可能導致智能合約中的某個狀態被錯誤地修改或覆蓋.如節點1先于節點2提交修改申請,但由于確認過程時間差的存在,節點2的申請可能先于節點1被確認,而當節點1被確認時又會覆蓋之前節點2的修改.“閉鎖問題”,即優先獲得確認的狀態會產生閉鎖合約的效果,使合約拒絕其他節點的訪問.以太坊目前每秒能處理10~20筆交易,而確定交易則要等待下一個區塊的生成,平均時間為12 s.因此如何提高區塊鏈處理事務的能力,是區塊鏈智能合約技術亟待解決的重要問題.目前,研究者已經開始嘗試解決此類問題,例如數據分片技術和索引技術.區塊鏈技術平臺Zilliqa[42]提出了一種基于分享協議的區塊鏈,其采用分片技術,在測試網上每秒能處理近1 400筆交易.雖然相比以太坊區塊鏈,其交易效率有了極大的改善,但對于部署一個面向世界所有人共同參與的大規模智能合約項目,處理大規模交易的抗壓能力問題,仍然欠缺全面解決效率問題的方法.

5.2 隱私問題

智能合約風險管理和危機應對場景尚不完善.目前智能合約的隱私保護是基于非對稱密碼學的原理,具有很高的安全性,但隨著數學研究和量子計算機技術的進一步發展,未來非對稱加密算法存在被破解的可能,智能合約在隱私和安全方面仍然存在薄弱環節.

首先,區塊鏈智能合約中的各用戶并非完全匿名,準確地說,應該是假名性.智能合約、個人賬戶等都是通過一種地址標識(例如以太坊公私鑰地址)來實現在區塊鏈網絡上的數據傳輸[43].但是,一旦當用戶和現實世界的事務發生關聯,如數字貨幣錢包代理商等,用戶的地址標識就會變為網絡代號(例如論壇的網名),雖不知道用戶具體身份,但任何與用戶相關的數據和行為都可以關聯到這個代號上.同時,隨著反匿名身份甄別技術的發展,智能合約用戶的匿名性將難以保證.其次,區塊鏈上的數據是公開透明的,通過各種數據挖掘技術,可以發現很多地址的互相關系,一旦真實身份泄露,用戶的所有信息都將公開.因此,智能合約風險管理方面的預案及相應技術手段的不完善,將成為影響智能合約應用發展的關鍵因素.

根據區塊鏈技術的特點,區塊鏈的隱私保護機制可分為3類:網絡層的隱私保護、交易層的隱私保護和應用層的隱私保護[44].目前,隱私保護主要是通過增加惡意節點檢索、獲取和解讀區塊鏈數據的難度來實現的,如斯雪明教授團隊[45]推出的擬態防御技術,以及網絡層數據混淆技術、數據失真技術.隨著區塊鏈技術發展的日新月異,隱私保護問題將愈加突出,但目前的隱私保護方案都存在一定的不足,還有待進一步的研究.

5.3 安全問題

傳統合約是基于自然語言描述的;而智能合約是用計算機代碼來闡述、驗證和執行合約,對保證數字資產和資源的安全性提出了更高的要求.智能合約最終會取代合約實體,但正如2.4節所述,智能合約涉及復雜的時間依賴和次序依賴關系,合約代碼的不確定性和不一致性將導致智能合約本身存在漏洞,進而導致合約執行結果的不確定性,最終會導致法律責任的不確定性[46].2016年5月,史上最大的一個眾籌項目The DAO由于智能合約在設計之初就存在漏洞,攻擊者利用DAO.sol代碼中“splitDAO”函數在遞歸發送模式上存在的漏洞盜取了大量以太幣[47].2017年7月19日,Parity Wallet的多重簽名錢包“multi-sig”代碼中發現一個漏洞,即多重簽名錢包的創建過程是無保護的,使得攻擊者可以任意重置現有錢包的所有權和使用參數,這致使Parity Wallet中的3個大額以太幣賬戶被盜取.因此,智能合約必須保證其邏輯屬性的正確性以及合約代碼和合約文本的一致性,并且能夠自動生成可信任的執行代碼.目前已有學者或團體提出了關于智能合約的驗證方法,如OYENTE語義符號工具[48],但尚不完善,仍有眾多關于智能合約的邏輯完整性、可驗證性、安全性上的問題有待深入研究與探索.

5.4 標準不統一問題

智能合約和其相關平臺的構建以及監管的標準是智能合約面臨的一個重大挑戰.當前,關于智能合約的標準有多個版本,主要由分散的智能合約應用聯盟創建,如2015年5月Chain和花旗銀行等金融機構發布了區塊鏈方面的開放標準.2016年末以來,智能合約已經不僅局限于金融領域,基于智能合約的高級應用開始蓬勃發展,如iEx.ec.雖然各大商業聯盟的標準正在逐步建立和完善,但在全球層面或國家層面仍然缺乏一個統一的技術開發標準,制約了智能合約及其應用的可擴展性和兼容性.

6 基于智能合約的眾籌系統

本節基于智能合約相關理論,搭建了以太坊私有鏈實驗環境,實現了一個眾籌項目.本次實驗環境為:CPU為Inter?CoreTMi5-4210 M,主頻為2.60 GHz,內存為8 GB,操作系統為Windows 8,編程語言為Solidity.

眾籌智能合約,是在股權眾籌發起的初始階段,由發起人、平臺、領投人等多方共同簽署的一份合約.這份合約用于約定各成員的責任和義務,并且存在于區塊鏈中,在無第三方中心機構的條件下,由區塊鏈實現合約的自動運行、監管以及保證合約的不可篡改性.眾籌智能合約一般存在3個特征:眾籌目標(如4 000 ether)、眾籌時間(如20 d)和不同眾籌結果所對應的操作(如目標失敗退回全款、目標成功時受益人獲得加密代幣).

眾籌智能合約系統的實現主要包括3部分:實驗環境的搭建、私有鏈的創建和智能合約系統的開發.

上述智能合約系統的實驗環境是基于以太坊客戶端Go-Ethereum[49]搭建的,該實驗環境所需的支持軟件如表3所示:

Table 3 Support Software of Experiment Environment表3 支持軟件

私有鏈的創建是通過配置創世區塊和啟動節點來實現的.

創世區塊的配置實際上是區塊參數的配置.創世區塊本質是一個json文件,其關鍵參數如表4所示.同一個區塊鏈網絡中,各個節點的創世區塊必須是相同的,否則各個節點無法聯通.為了便于本系統區塊的快速生成,其區塊參數的配置較為簡單,這樣有利于合約的快速部署與驗證.創世區塊的具體參數配置為

{

"config":{

"chainId":10;

"homesteadBlock":0;

"eip155Block":0;

"eip158Block":0;

}

"coinbase":"0x000000000000000000000000000

0000000000000";

"difficulty":"0x40000";

"extraData":"";

"gasLimit":"0x2fefd8";

"nonce":"0x0000000000000042";

"mixhash":"0x000000000000000000000000000

000000000000000000000000000000

0000000";

"parentHash":"0x000000000000000000000000

000000000000000000000000000

0000000000000";

"timestamp":"0x00";

"alloc":{};

}

Table 4 The Parameter of the Block表4 區塊參數

在此系統中,啟動節點的配置是通過編寫啟動文件來實現的.啟動文件因實驗設備、區塊鏈網絡結構的不同而略有差異.啟動文件的關鍵參數如表5所示.

本文開發的眾籌智能合約系統主要由支付模塊、安全計算模塊、緊急事件處理模塊、權限管理模塊、眾籌模塊、數字代幣模塊TTC(test test coin)構成.其中,支付模塊、安全計算模塊、緊急事件處理模塊、眾籌模塊的詳細介紹如表6~9所示.

Table 5 Parameter of the Boot File表5 啟動文件的參數

Table 6 Function of the Payment Module表6 支付模塊功能函數表

Table 7 Function of the Security Calculation Module表7 安全計算模塊功能函數表

Table 8 Function of the Emergency Management Module

Table 9 Function of the Crowdsale Module表9 眾籌模塊功能函數

智能合約的眾籌算法如算法1所示:

算法1. 眾籌算法.

輸入:最大眾籌金額maxGap、最小眾籌金額minGap、時間Time_crowdsale、最小投資金額minInvest;

輸出:若眾籌成功,則調用函數finalize,按規則發放數字代幣;若眾籌失敗,則調用函數receive-Approval,根據投資記錄退回所有資金.

部署智能合約并調用函數start();

crowdsaleClosed=False;

WhilecrowdsaleClosed=False do

IfreceiveInvestRequest=False then

continue;

End If

IfTime_crowdsale

IfTTC_total

bonus();

receiveETH();

Else

crowdsaleClosed=True;

emitRLC();

finalize();

End If

Else IfTTC_total

receiveApproval();

Else

crowdsaleClosed=True;

emitRLC();

finalize();

End If

End If

End While

智能合約的投資算法如算法2所示:

算法2. 投資算法.

輸入:投資金額gapSender;

輸出:若投資成功,則調用函數sendInvest-Request,發送投資請求;若投資失敗,則結束本次訪問.

訪問智能合約并開始投資;

InputgapSender;

IfcrowdsaleClosed=True then

break;

Else

IfTime_crowdsale

IfgapSender>minInvestthen

IfTTC_total+gapSender≤maxGap

then

IfSenderBalance>gapSenderthen

輸入支付密碼;

sendInvestRequest();

End If

End If

End If

End If

End If

7 總結與展望

自2009年比特幣誕生以來,以其為代表的區塊鏈技術迅速崛起,已經成為學術界和產業界的熱點研究課題.經歷了以數字貨幣為代表的區塊鏈1.0時代,未來幾年的區塊鏈的研究方向將以“區塊鏈2.0應用為主,區塊鏈3.0應用為輔”.區塊鏈2.0是智能合約時代,可以適應更為復雜的應用場景和更為高級的功能需求,使其在金融和社會系統中具有廣泛的應用前景;同時,基于智能合約的其他高級應用也具備蓬勃的發展潛力,智能合約技術有望成為實現物聯網、大交易量區塊鏈、去中心化云存儲和去中心化域名服務器的一個有效途徑.

目前,智能合約技術的基礎理論和技術研究尚處于起步階段,仍缺乏對基礎理論、關鍵技術以及對行業發展至關重要的科學問題的研究與探索.該領域存在的挑戰性問題較多,詳見第5節介紹的4個方面.需要指出的是,對于智能合約所面臨的挑戰性問題,本文僅僅只是選擇其中具有代表性的一部分給予介紹或歸納,并不涵蓋所有的研究方向與問題.

本文系統地介紹了智能合約技術的全生命周期、基本架構、關鍵技術、研究現狀、主要技術平臺和應用場景以及探討了可能存在的問題,是對目前智能合約技術研究成果的一個總結和歸納.同時,開發了一個眾籌合約系統,探索和實踐了智能合約的相關理論.本文介紹這個研究領域的初衷是希望展現智能合約技術的研究現狀與前沿性問題,以便能為相關領域的學者提供參考和借鑒.

猜你喜歡
智能
智能與自主
讓紙變得智能
一種智能微耕機的研發
智能制造 反思與期望
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
智能制造·AI未來
商周刊(2018年18期)2018-09-21 09:14:46
爭渡智能石化
能源(2018年4期)2018-05-19 01:53:44
主站蜘蛛池模板: 波多野结衣久久高清免费| www亚洲天堂| 国产网友愉拍精品| 不卡色老大久久综合网| 国产亚洲精品97AA片在线播放| 欧美三级不卡在线观看视频| 国产熟女一级毛片| 动漫精品啪啪一区二区三区| 色综合成人| 中文字幕无码制服中字| 精品国产自在在线在线观看| 精品一区二区三区中文字幕| 久操线在视频在线观看| 国产呦精品一区二区三区网站| 999国产精品| 91蜜芽尤物福利在线观看| 99ri国产在线| 一级片一区| a天堂视频| 澳门av无码| 日本欧美视频在线观看| 精品三级网站| 日韩成人午夜| 四虎成人精品在永久免费| jizz亚洲高清在线观看| 色精品视频| 欧美翘臀一区二区三区| 88国产经典欧美一区二区三区| 中文字幕不卡免费高清视频| 亚洲男人在线天堂| 五月婷婷丁香综合| 黄色一及毛片| 黄片一区二区三区| 亚洲黄色激情网站| 亚洲成人播放| 伊在人亞洲香蕉精品區| 国产全黄a一级毛片| 97亚洲色综久久精品| 国产在线拍偷自揄观看视频网站| 日本手机在线视频| 欧美一区二区三区国产精品| 久久综合伊人77777| 亚洲无码在线午夜电影| 亚洲v日韩v欧美在线观看| 亚洲成aⅴ人在线观看| 欧美区一区| 啪啪啪亚洲无码| 国产一级在线观看www色| 欧美午夜一区| 天堂在线www网亚洲| 日本尹人综合香蕉在线观看| 中国一级毛片免费观看| 日韩黄色在线| 亚洲一区波多野结衣二区三区| 丁香五月激情图片| 亚洲视频一区在线| av在线手机播放| 婷婷综合亚洲| 日本不卡免费高清视频| 精品视频一区二区三区在线播| 久久久久国产精品免费免费不卡| 亚洲视频无码| 久久久久人妻精品一区三寸蜜桃| 国产网站免费观看| 午夜国产精品视频| 国产精品自在拍首页视频8| 亚洲女同欧美在线| 日本欧美中文字幕精品亚洲| 亚洲成人动漫在线观看 | 毛片手机在线看| 在线精品亚洲一区二区古装| 日韩资源站| 亚洲欧洲自拍拍偷午夜色| 午夜国产大片免费观看| 夜夜操天天摸| 人人看人人鲁狠狠高清| 亚洲天堂久久新| 亚洲国产欧洲精品路线久久| 成年网址网站在线观看| 久久福利片| 人妻少妇乱子伦精品无码专区毛片| 综合色亚洲|