第四章智能合約[20]

一、智能合約的起源

彼特·托德(Peter Todd)是比特幣核心開發者之一。他總結了智能合約(Smart contract)的現狀[21],認為「智能合約討論的結論是:沒有人理解智能合約究竟是什麼。如果我們要實施智能合約,應該需要預言機(oracles)」。

確實,要想闡明智能合約的理念和本質並非易事。

我們從智能合約理念的起源開始。「智能合約」概念由計算機科學家、加密大師尼克·薩博(Nick Szabo)於1993年左右提出來。1994年他寫成了《智能合約》(Smart contracts)論文,是智能合約的開山之作[22]。

尼克·薩博對智能合約的闡述以一個自動售貨機的例子開始。我們可以認為智能合約的原始祖先,是不起眼的自動售貨機。在經過潛在的、損失有限的評估後,自動售貨機使錢箱裡的錢遠遠少於破壞者付出的代價。售貨機根據顯示的商品價格收取投幣,通過一個簡單的機制形成了最初的計算機設計科學,並且有限自動、根據投幣金額傳遞變化和產品。自動售貨機是一種搬運合約:任何持有硬幣的人都可以與供應商交易。鎖定錢箱和其他安全機制保護售貨機儲藏的硬幣和貨物不被破壞,從而支撐在各種各樣的區域部署自動售貨機,並且產生盈利。

在自動售貨機概念的基礎上,尼克·薩博給出智能合約的定義如下:

「智能合約超越了自動售貨機中嵌入各種有價屬性的範疇,通過數字方式控制合約。智能合約涉及具有動態性、頻繁主動執行屬性的財產,且提供更好的觀察和驗證點,其中主動積極的措施必須絲毫不差。」

尼克·薩博告訴我們的是,智能合約本質上的抽像概念是在個人、機構和財產之間形成關係的一種公認工具,是一套形成關係和達成共識的協定。智能合約的條款(如抵押品、產權劃分等)可以嵌入到處理硬件和軟件中,以這樣的方式使違約成本非常昂貴(甚至令人望而卻步)。例如,為房屋而設計出的數字保障智能合約,根據智能合約設計策略,持續完善房屋抵押品協議以便其更充分地嵌入到處理合約條款中。根據合約條款,這些協議將使加密密鑰完全控制在具有操作屬性的人手中,而此人也將正當地擁有該房屋財產。最簡單地,為了防止偷竊,使用者需要完成正確的解鎖過程,否則房屋將切換至不可使用狀態,比如門禁失效和設施失效等。在傳統方式中,如果房屋被用做還貸,有一個令債權人頭痛的問題是很難查收賴賬的房屋,需要通過頻繁溝通才能收回房屋鑰匙等。為了解決這一問題,我們可以創建一個智能扣押權協議:如果物主不交費,智能合約調用扣押權協議,把房屋鑰匙的控制權交給銀行。該協議可能會比僱傭追債人更便宜、更有效。

同時,尼克·薩博提出了智能合約的三要素:

1一把可以允許業主同時排除非法第三方的鎖;

2一個允許債權人秘密接入的後門;

3後門只在違約且沒有付款的一段時間被打開;最後的電子支付完成後將永久地關閉後門。

從本質上講,這些智能合約的工作原理類似於計算機程序的if-then語句。智能合約以這種方式與真實世界的財產進行交互。當一個預先定義的條件被觸發時,智能合約就執行相應的合同條款。尼克·薩博關於智能合約的工作理論遲遲沒有實現,是因為缺乏天生能夠支持可編程合約的數字系統。如果金融機構仍然需要手動批准資產的轉移,那麼智能合約的目標就沒有實現。瑞波實驗室的市場和交易主管菲利·拉波波特(Phil Rapoport)說[23],「實現智能合約的一大障礙是現在計算機程序不能真正地觸發支付」。區塊鏈技術的出現和被廣泛使用,正在改變阻礙智能合約實現的現狀,從而使尼克·薩博的理念有了實現的機會。智能合約技術現在正建立在區塊鏈基礎之上,因為區塊鏈本身就是一個計算機程序,智能合約能夠與它進行交互,就像它能與其他程序進行交互一樣。

在已提出智能合約理念的基礎上,結合近幾年區塊鏈技術的不斷發展,我們將試圖給出對智能合約更為具體和詳細的闡述。

二、智能合約的定義

智能合約是一套以數字形式定義的承諾,承諾控制著數字資產並包含了合約參與者約定的權利和義務,由計算機系統自動執行。

承諾定義了智能合約的本質和目的。以一個銷售合約為例:賣家承諾發送貨物,買家承諾支付合理的貨款。數字形式意味著合約需要被寫入計算機可執行的代碼中,只要參與者達成協定,智能合約建立的權利和義務,就由一台計算機或者計算機網絡執行。

我們舉個簡單的例子,形象化地描述智能合約。

If Event_X_Happened:

Send(愛麗絲, 1000$)

Else:

Send(鮑伯, 1000$)

意思是:如果事件X發生,則合約給愛麗絲發送1000美元;否則,給鮑伯發送1000美元。

這就是最簡單的合約。

如圖4-1所示是一個智能合約模型示意,其中各組成部分的定義如下。

1合約參與者:執行智能合約的相關參與者。

2合約資源集合:智能合約執行涉及的參與者資源,比如參與各方賬戶、擁有的數字財產等。

3自動狀態機:智能合約下一步執行的關鍵,包括當前資源狀態判斷、下一步合約事務執行選擇等。

4合約事務集合:智能合約的下一步動作或行為集合,控制著合約資產並對接收到的外界信息進行回應。

圖4-1 智能合約模型示意圖

智能合約程序不只是一個可以自動執行的計算機程序,它本身就是一個系統參與者,對接收到的信息進行回應,可以接收和儲存價值,也可以向外發送信息和價值。這個程序就像一個可以被信任的人,可以臨時保管資產,總是按照事先的規則執行操作。

智能合約的實現需要底層協議支持,選擇哪個協議取決於許多因素,最重要的因素是在合約履行期間被交易資產的本質。再次以銷售合約為例。假設參與者同意貨款以比特幣支付,選擇的協議很明顯將會是比特幣協議。在此協議上,智能合約被實施。因此,合約必須要用到的數字形式就是比特幣腳本語言。比特幣腳本語言是一種非圖靈完備的、命令式的、基於棧的編程語言。

三、智能合約與傳統合約的區別

智能合約與傳統合約(如法律合約)有相似之處,比如均需要明確合約參與者的權利、義務,違約方均會受到懲罰等。但是智能合約與傳統合約存在著顯著的區別,表4-1為兩者的對比[24]。

表4-1 智能合約與傳統合約對比

1自動化維度。智能合約可以自動判斷觸發條件,從而選擇相應的下一步事務;而傳統合約需要人工判斷觸發條件,在條件判斷準確性、及時性等方面均不如智能合約。

2主客觀維度。智能合約適合客觀性請求的場景,傳統合約適合主觀性請求的場景。智能合約中的約定、抵押及懲罰需提前明確;而主觀性判斷指標很難納入合約自動機中進行判斷,也就很難指導合約事務的執行。

3成本維度。智能合約的執行成本低於傳統合約,合約執行權利、義務條件被寫入計算機程序中自動執行,在狀態判斷、獎懲執行、資產處置等方面均具有低成本優勢。

4執行時間維度。智能合約屬於事前預定、預防執行模式;而傳統合約採用的是事後執行,根據狀態決定獎懲的模式。

5違約懲罰維度。智能合約依賴於抵押品、保證金、數字財產等具有數字化屬性的抵押資產,一旦違約,參與者的資產將遭受損失;而傳統合約的違約懲罰主要依賴於刑罰,一旦違約,可以採用法律手段維權。

6適用範圍維度。智能合約技術可全球採用,適用於全球範圍;而傳統合約受限於具體轄區,不同國際地區的法律、人文等因素均影響著傳統合約的執行過程。

四、智能合約與區塊鏈

(一)智能合約與區塊鏈的關係

尼克·薩博關於智能合約的工作理論遲遲沒有實現,一個重要原因是因為缺乏能夠支持可編程合約的數字系統和技術。區塊鏈技術的出現解決了該問題,不僅可以支持可編程合約,而且具有去中心化、不可篡改、過程透明可追蹤等優點,天然適合於智能合約。因此,也可以說,智能合約是區塊鏈技術的特性之一。

如果說區塊鏈1.0是以比特幣為代表,解決了貨幣和支付手段的去中心化問題,那麼區塊鏈2.0就是更宏觀地對整個市場去中心化,利用區塊鏈技術轉換許多不同的數字資產而不僅僅是比特幣,通過轉換創建不同資產的價值。區塊鏈技術的去中心化賬本功能可以被用來創建、確認、轉移各種不同類型的資產及合約。幾乎所有類型的金融交易都可以被改造成在區塊鏈上使用,包括股票、私募股權、眾籌、債券和其他類型的金融衍生品如期貨、期權等。

智能合約看上去就是一段計算機執行程序,滿足可準確自動執行即可,那麼為什麼用傳統的技術很難實現,而需要區塊鏈技術等新技術呢?傳統技術即使通過軟件限制、性能優化等方法,也無法同時實現區塊鏈的特性:一是數據無法刪除、修改,只能新增,保證了歷史的可追溯,同時作惡的成本將很高,因為其作惡行為將被永遠記錄;二是去中心化,避免了中心化因素的影響。

基於區塊鏈技術的智能合約不僅可以發揮智能合約在成本效率方面的優勢,而且可以避免惡意行為對合約正常執行的干擾。將智能合約以數字化的形式寫入區塊鏈中,由區塊鏈技術的特性保障存儲、讀取、執行整個過程透明可跟蹤、不可篡改。同時,由區塊鏈自帶的共識算法構建出一套狀態機系統,使智能合約能夠高效地運行。

(二)智能合約工作原理

基於區塊鏈的智能合約包括事務處理和保存的機制,以及一個完備的狀態機,用於接受和處理各種智能合約,而且事務的保存和狀態處理都在區塊鏈上完成。事務主要包含需要發送的數據,而事件則是對這些數據的描述信息。事務及事件信息傳入智能合約後,合約資源集合中的資源狀態會被更新,進而觸發智能合約進行狀態機判斷。如果自動狀態機中某個或某幾個動作的觸發條件滿足,則由狀態機根據預設信息選擇合約動作自動執行。

智能合約系統根據事件描述信息中包含的觸發條件,當滿足觸發條件時,從智能合約自動發出預設的數據資源,以及包括觸發條件的事件;整個智能合約系統的核心就在於智能合約以事務和事件的方式經過智能合約模塊的處理,輸出還是一組事務和事件;智能合約只是一個事務處理模塊和狀態機構成的系統,它不產生智能合約,也不會修改智能合約;它的存在只是為了讓一組複雜的、帶有觸發條件的數字化承諾能夠按照參與者的意志,正確執行。

基於區塊鏈的智能合約構建及執行分為如下幾步。

1多方用戶共同參與制定一份智能合約。

2合約通過P2P網絡擴散並存入區塊鏈。

3區塊鏈構建的智能合約自動執行。

步驟1「多方用戶共同參與制定一份智能合約」的過程,包括如下步驟:

A.用戶必須先註冊成為區塊鏈的用戶,區塊鏈返給用戶一個公鑰和私鑰;公鑰作為用戶在區塊鏈上的賬戶地址,私鑰作為操作該賬戶的唯一鑰匙。

B.兩個以及兩個以上的用戶根據需要,共同商定了一份承諾,承諾中包含了雙方的權利和義務;這些權利和義務以電子化的形式,編程機器語言;參與者分別用各自私鑰進行簽名,以確保合約的有效性。

C.簽名後的智能合約,將會根據其中的承諾內容,傳入區塊鏈網絡中。

步驟2「合約通過P2P網絡擴散並存入區塊鏈」的過程,包括如下步驟:

A.合約通過P2P的方式在區塊鏈全網中擴散,每個節點都會收到一份;區塊鏈中的驗證節點會將收到的合約先保存到內存中,等待新一輪的共識時間,觸發對該份合約的共識和處理。

B.共識時間到了,驗證節點會把最近一段時間內保存的所有合約,一起打包成一個合約集合(set),並算出這個合約集合的Hash值,最後將這個合約集合的Hash值組裝成一個區塊結構,擴散到全網;其他驗證節點收到這個區塊結構後,會把裡面包含的合約集合的Hash取出來,與自己保存的合約集合進行比較;同時發送一份自己認可的合約集合給其他的驗證節點;通過這種多輪的發送和比較,所有的驗證節點最終在規定的時間內對最新的合約集合達成一致。

C.最新達成的合約集合會以區塊的形式擴散到全網,如圖4-2所示。每個區塊包含以下信息:當前區塊的Hash值、前一區塊的Hash值、達成共識時的時間戳以及其他描述信息;同時區塊鏈最重要的信息是帶有一組已經達成共識的合約集;收到合約集的節點,都會對每條合約進行驗證,驗證通過的合約才會最終寫入區塊鏈中,驗證的內容主要是合約參與者的私鑰簽名是否與賬戶匹配。

圖4-2 合約區塊鏈示意圖

步驟3「區塊鏈構建的智能合約自動執行」的過程,包括如下步驟:

A.智能合約會定期檢查自動機狀態,逐條遍歷每個合約內包含的狀態機、事務以及觸發條件;將條件滿足的事務推送到待驗證的隊列中,等待共識;未滿足觸發條件的事務將繼續存放在區塊鏈上。

B.進入最新輪驗證的事務,會擴散到每一個驗證節點,與普通區塊鏈交易或事務一樣,驗證節點首先進行簽名驗證,確保事務的有效性;驗證通過的事務會進入待共識集合,等大多數驗證節點達成共識後,事務會被成功執行並通知用戶。

C.事務執行成功後,智能合約自帶的狀態機會判斷所屬合約的狀態,當合約包括的所有事務都順序執行完後,狀態機會將合約的狀態標記為完成,並從最新的區塊中移除該合約;反之將標記為進行中,繼續保存在最新的區塊中等待下一輪處理,直到處理完畢;整個事務和狀態的處理都由區塊鏈底層內置的智能合約系統自動完成,全程透明、不可篡改。

五、智能合約應用案例

基於區塊鏈的智能合約應用範圍很廣,應用案例數不勝數,以下僅僅列出一些典型應用。

(一)房屋租賃

假設用戶愛麗絲(Alice)與用戶鮑伯(Bob)需要構建一個區塊鏈智能合約,目的是愛麗絲將其房屋租賃給鮑伯,租金為1000元一個月,每月支付,租期為一年。假設愛麗絲房屋門鎖可通過互聯網控制,其開鎖密鑰為Key(每月生成一次),愛麗絲的銀行賬戶為MA,鮑伯的銀行賬戶為MB。智能合約的執行包括如下步驟:

1愛麗絲與鮑伯提交合約構建申請給智能合約服務器,生成合約並由服務器發佈到區塊鏈生效。

2愛麗絲將Key以及MA提供給智能合約服務器。

3鮑伯通過MB向智能合約服務器支付1000×12=12000元的資金作為抵押,或者鮑伯通過第三方機構的擔保,僅向智能合約服務器支付少量資金。

4合約開始執行,智能合約服務器將Key發送到鮑伯,並從鮑伯的抵押資金中扣除1000元,發送到愛麗絲的賬戶,並生成參與對像記錄存入區塊鏈。

5每個月智能合約都會定期檢查,如果合約未到期,則繼續從鮑伯的抵押資金中扣除1000元發送到愛麗絲的賬戶並發送Key給鮑伯,並生成參與對像記錄存入區塊鏈。

6整個過程受到第三方機構的監控,所有參與者、第三方機構都可以通過區塊鏈查詢合約執行情況。

7租約期限到後,智能合約服務器生成一條合約記錄,標示合約終止並發佈到區塊鏈,合約執行即終止。

(二)差價合約

金融衍生品是智能合約最普遍也最易於用代碼實現的應用之一。實現金融合約的主要挑戰是其中大部分需要參照一個外部的權威價值發佈器。例如,一個大需求應用是用來對沖密碼學貨幣相對美元或歐元價格波動的智能合約,但該合約需要知道密碼學貨幣相對美元或歐元的價格。最簡單的方法是通過由某特定金融機構維護的數據提供合約進行,該合約的設計使該機構能夠根據需要更新合約,並提供一個接口使其他合約能夠通過發送一個消息給該合約以獲取包含價格信息在內的回復,從而支撐智能合約的運行。根據前文描述的智能合約和示例,可以很容易地構建出差價智能合約,在此不再贅述合約內容。

(三)代幣系統

基於智能合約的代幣系統非常容易實現。其中的關鍵點是所有的貨幣或者代幣系統,從根本上來說是一個帶有如下操作的數據庫:從A中減去X單位數據並把它加到B上。其前提條件是:

1 A在交易之前至少有X單位數據。

2A批准了進行該交易。

實施一個代幣系統就是把這樣一個邏輯應用到一個合約中去即可。區塊鏈上的代幣系統應用不少,從美元資產到公司股票等。單獨的代幣具有智能資產、不可偽造的優惠券、與傳統價值完全沒有聯繫的積分獎勵等多種形式。

(四)儲蓄錢包

假設愛麗絲想確保資金安全,但擔心資金丟失或者被黑客盜走私鑰。於是,她把數字貨幣放到和鮑伯簽訂的一個合約裡:

1愛麗絲單獨一人每天最多可提取3%的資金。

2鮑伯單獨一人每天最多可提取3%的資金,但愛麗絲可以用她的私鑰創建一個交易取消鮑伯的提現權限。

3愛麗絲和鮑伯一起可以提取任意數額的資金。

正常情況下,每天3%的資金對愛麗絲而言足夠了。如果愛麗絲想提現更多,她可以聯繫鮑伯尋求幫助。如果愛麗絲的私鑰不幸被盜,她可以找到鮑伯把她的資金轉移到一個新合同裡。此外,如果愛麗絲弄丟了她的私鑰,鮑伯也可以慢慢地把錢提出給愛麗絲。但是如果鮑伯表現出了惡意,愛麗絲可以關掉鮑伯的提現權限,從而保護自己的資金不受損失。

(五)作物保險

很容易且直觀的,可以用天氣情況作為數據輸入創建一個金融衍生品作物保險合約,該合約不是由任何價格指數決定的。如果一個浙江的農民購買了一個基於浙江省的降雨情況進行反向賠付的金融衍生品,那麼如果遇到乾旱,該農民將自動地收到賠付資金;而如果有足量的降雨,即使沒有賠付資金,他也會很開心,因為作物收成會良好。而上述過程利用智能合約可以很方便地實現。

(六)金融借貸

想想看,許多常規的金融交易,律師和銀行的工作其實就是重複性地處理一些簡單的任務。但是我們還不得不向律師提供的管理工作或者銀行提供的抵押貸款工作支付大量的資金作為報酬。

智能合約能夠使這些處理過程自動化和非神秘化,使普通人可以節省時間和金錢,而不用擔心被騙。此外,假設你購買房產,可以通過一家銀行獲得抵押貸款,但通常不會持有長達三十年的貸款。銀行只是成為你每月還款的處理者,向投資者支付大頭資金,小部分資金用於交稅,更小部分資金用於房主的保險。如果貸款還款由智能合約處理,那麼貸款處理費用將被取消,省下來的錢可以返還給消費者。最終的結果就是使獲得房屋所有權的成本更加低,有利於消費者。

(七)設立遺囑

雖然智能合約仍然處於初始階段,但是其潛力顯而易見。想像一下分配立遺囑者的遺產,決定誰得到多少遺產只需簡單一列就可實現。如果開發出足夠簡單的用戶交互界面,就能夠解決設立遺囑過程的許多法律難題。一旦智能合約確認觸發條件,也就是立遺囑者已經死亡,智能合約就將開始執行,立遺囑者的財產將被分割。

(八)證券登記清算

智能合約狀態可以包含證券所有權的所有信息。如果登記的證券所有者注意到該合約中證券已經出售給了其他的參與者,其他參與者就會把密碼學貨幣發送到擔保賬戶,然後證券登記信息就會更新,貨幣就會被轉發給原來的證券持有者。無論哪個信息先到達,證券或貨幣都會保管在一個擔保賬戶中,以避免雙重使用。當交易取消或過時後,擔保也將取消。以上過程利用智能合約可以輕易實現。

(九)博彩發行

假設對手同意某個在互聯網能夠訪問的數據源,他們就可以對數據源的價值進行衍生合約或博彩。博彩發行方創建博彩信息,如中獎方式、投注方式、投注時間、獎池錢包地址及密鑰,並向該獎池地址充值作為博彩獎池底金;發行方將博彩信息、錢包地址、獎池底金等信息生成博彩智能腳本,寫入區塊鏈,被全網用戶所知;用戶獲取博彩信息,開始投注,確定投注目標,並按照博彩規則向博彩錢包地址充值,產生投注記錄(含自身錢包地址),寫入區塊鏈;產生中獎信息;中獎信息產生後,進行獎金發放以及頒獎記錄發佈。

六、智能合約面臨的問題

智能合約,尤其是基於區塊鏈的智能合約,目前還處在初級階段,尚未有任何實質性突破和應用,同時也面臨著問題與挑戰:一是安全性問題;二是私密性問題;三是意外情景問題。同時,人們對智能合約還存在不少的誤解。

(一)安全性問題

關鍵問題之一是安全性及信任度的問題。這與影響區塊鏈實施的問題類似:智能合約系統都被設計成無須信任的環境,這意味著無法改正出現的錯誤。這是由區塊鏈的不可逆特性決定的。例如,在區塊鏈中,如果你將貨幣發送給某個地址,這個操作是無法撤銷的。因此,如果你與詐騙犯進行交易或者你已經將貨幣發送到錯誤的地址中,那麼很不幸,金錢損失是無法挽回的。在現實生活中,這些事情可以通過中心化的系統來撤銷,但是在智能合約中不行。同樣地,在合約代碼的設計過程中也有欺詐的問題:某人需要設計(編程)合約,在合約設計時就會需要確保沒有欺詐的問題發生。對於去中心化的系統,用戶只能自己承擔相應的風險。

(二)私密性問題

有效利用區塊鏈的一大挑戰就是區塊鏈提供徹底的透明度。例如,如果十家銀行聯合在一起建立一個區塊鏈,其中有兩家進行了一項雙向交易,這項交易將立即在區塊鏈上對其他八家可見。雖然也可以設計緩解這個問題的各種策略,但目前還沒有一種策略可以擊敗簡單有效的中央數據庫,除非能有一個可靠的管理員完全控制參與者的權限。

智能合約尤其是基於區塊鏈的智能合約,同樣存在這樣的問題。每個智能合約都包含了自己的區塊鏈數據庫,並且具有完全控制能力。由於區塊鏈數據庫中所有的讀寫操作都是由合約代碼主導的,所以其他合約無法直接讀取其數據。儘管一個智能合約不能訪問其他合約的數據,即一個智能合約無法讀取其他合約的數據,但是其數據仍然存儲在區塊鏈中的每一個驗證節點上。對於每個區塊鏈的參與者來說,完全可以控制一個系統的存儲器或者磁盤。如果他們想要從自己的系統中閱讀信息,通過計算機手段,是完全可以做到的。

那麼,把智能合約隱藏到網頁數據中去,就像把它隱藏在代碼裡一樣,是否就可以保證隱私了呢?當然,一般的用戶不會看到它,因為它並未顯示在他們的瀏覽器窗口。但是,只需要一個網頁瀏覽器的「查看源文件」功能即可使得隱藏的信息變得普遍可見。同樣,對於隱藏在智能合約中的數據,所需要的只是有人修改區塊鏈軟件顯示合約的代碼,就可以看到隱藏的內容。這種修改只要一個水平高的程序員花很短時間就可以辦到。因此,智能合約的私密性問題目前還是存在的。

(三)意外情景問題

應當承認,在某一層面上,智能合約聽起來確實像一個理想化的場景。如果你不付款,你的汽車將被遠程自動收回,這一過程不需要任何人為干預。但是在理論上,智能合約有利的一面是將使金融機構更加樂意接受窮人帶來的風險,再也不用擔心窮人還不清貸款。如果沒有智能合約,窮人可能得不到金融機構的貸款。因為,遇到最壞的情況,如果借貸人不能償還貸款,那麼收回資產對銀行而言,是件輕而易舉的事。除了增加獲得金融機構貸款的機會外,智能合約也有潛力為沒有優勢的人打開其他壁壘較高行業的大門。沒有智能合約,這些人就沒有機會也沒有可能獲得收益。

儘管在理論上,智能合約聽起來非常好,但如何正確、合適地處理意外場景下的合約執行,是一個問題。比如需要收回的汽車正在高速公路行駛的時候,撤銷汽車的使用權操作將是十分粗魯和危險的,而如何準確判斷汽車的執行狀態也是存在技術難點的。

(四)對智能合約的幾種誤解

1. 智能合約與協議合同一樣

不是這樣的。這在前文智能合約與傳統合約的區別中已經詳細介紹過。根據尼克·薩博對智能合約的定義,智能合約能夠讓違反協議的一方付出昂貴代價,是通過數字形式掌控現實世界的資產。所以,智能合約能通過執行實現一種特定的需求,能夠證明某些條件是否獲得滿足。這些實現過程都會相當的嚴格,例如,如果你沒能按時完成對一輛汽車的付款,汽車將會被智能合約數字鎖定,直到完成支付才會解除。

2.智能合約具有法律效力

不是這樣的。智能合約目前並不能等同於法律,但是它可以代表法律協議的一部分。另外,智能合約合法化工作目前正在進行當中。智能合約的執行結果可以用作審計、追蹤,用來證明法定協議的條款是否可以被執行。

3.智能合約包括人工智能

不是這樣的。智能合約本身並不是真的非常智能,也不能等同於人工智能。智能合約實際上是運行在區塊鏈上的軟件代碼,由一些外部數據來觸發智能合約,外部數據的接收、判斷並非人工智能可以實現。此外,對智能合約中其餘數據的修改也並非是通過人工智能來實現的。

4.智能合約只能為高水平軟件開發者所用

不是這樣的。雖然目前的確如此,但是我們很快就會看到與用戶更加友好的方法或系統出現,允許商業或個人用戶通過圖形界面或者簡單的文本語言輸入來配置智能合約。相信在未來,不需要懂得編程,也能夠制定自己的智能合約並順利執行。

5.智能合約存在應用程序限定

不是這樣的。如HTML、C++一樣,應用程序受到編寫人的控制,智能合約可以成為現實資產、數字資產、智能財產、物聯網、通信網和金融工具相互聯繫的理想方式。智能合約幾乎可以應用到所有狀態隨著時間而改變的事物,並不會受應用程序的限定,參與者類型也多種多樣。

七、智能合約的未來展望

智能合約是區塊鏈最重要的特性之一,也是區塊鏈能夠被稱為顛覆性技術的主要原因,更是各國央行考慮使用區塊鏈技術發行數字貨幣的重要考量因素,是可編程貨幣、可編程金融的技術基礎。智能合約在今後可能會讓人類社會結構產生重大變革,儘管智能合約還有一些需要解決的問題存在。幸運的是,智能合約技術已經從理論走向實踐。全球眾多專業計算機科學人才、金融界人才也在共同努力完善智能合約。

毋庸置疑,智能合約已經生根發芽了。智能合約是真正的全球經濟的基本構件,任何人都可以接入到這一全球經濟中,不需要事前審查和高昂的預付成本。在許多經濟交易中,智能合約移除了對第三方的信任,在其他情況下,將信任轉移到可以信任的人或機構中。智能合約意味著區塊鏈交易遠不止買賣貨幣這些交易,將會有更廣泛的指令代碼嵌入到區塊鏈技術中。傳統合約是指雙方或者多方協議做或不做某事來換取某些物品,每一方都必須信任彼此,並須履行義務。而智能合約無須彼此信任,因為智能合約不僅是由代碼進行定義的,也是由代碼強制執行的,完全自動且無法干預。智能合約與傳統合約本質上都是解決相同問題:以一種方式形成一種合約關係,使得承諾可以執行。只不過它們採用了不同的方法。就這一點而言,智能合約似乎是更好的解決方案,因為智能合約事前執行,不像傳統合約一樣,事後執行。多重簽名智能合約也是未來的一個趨勢,比如基於多重簽名的交易合約,部分參與者的私鑰就可以使用合約中的資金。甚至於,合約可以更加細化。比如參與者共有6人,那麼其中的6把私鑰裡集齊5把就可以花全部資金,如果只有4把則每天最多花20%的資金,只有3把就只能每天花1%的資金等。

在這個蓬勃發展的智能合約領域,尤其是基於區塊鏈的智能合約領域,儘管自動化、高效率和低成本的潛力巨大,但還是有明顯的不足。現有區塊鏈技術的一個缺陷就是,智能合約的代碼需要向網絡內所有參與者尤其是驗證者公開。對於很多金融貿易、企業交易來說,這是個巨大的缺陷。因為這就意味著資金投入之後,網絡中非參與者可能會瞭解並積極參與貿易中並給參與者帶來麻煩。這同時意味著區塊鏈智能合約的非參與者可以囤積或出售資產,這將損害參與者的利益。此外,儘管智能合約可能給金融服務業帶來最具顛覆性的改變,就如同曾經的計算機數據處理帶來的變革一樣。但是,在實現這個目標之前,我們首先需要清除一些障礙。幸運的是,自區塊鏈技術出現和取得突破之後,智能合約技術已經離開學術的殿堂並走進了社會生活。全球成千上萬的互聯網金融人才正致力於擴大合約創新的規模,為現代金融機構提供便利。

智能合約的發展可能需要經歷漫長的道路,但是更多的智能合約機制正在被設計出來,更多領域的人才正在加入。目前為止,對來自截然不同的領域,如經濟學、密碼學、網絡科學、金融學的自動化合約執行來說,共同設計研究合約準則是必經之路。如果缺少交叉溝通,無論是對技術的缺乏還是對商業用途模式意識的缺乏,都將造成智能合約的低效。

目前Orisi、Codius、Symboint、Hedgy、BitHalo、Mirror、Hyperledger、Eris Industries、Ethereum、智能坊、小蟻、Colored Coin、IBM等已經致力於智能合約的平台開發及相關研究,相信智能合約的應用前景一片光明。

參考資料

[1]http://www.fastcolabs.com/3035723/app-economy/smart-contracts-could-be-cryptocurrencys-killer-app

[2]https://medium.com/@heckerhut/whats-a-smart-contract-in-search-of-a-consensus-c268c830a8ad

[3] http://www.wtoutiao.com/p/14dyEMP.html

[4]http://www.coindesk.com/smart-contract-myths-blockchain/

[5]http://8btc.com/article-1921-1.html

[6]http://wangxiaoming.com/blog/2016/03/03/blockchain-2-0-he-yue/

[7]http://blockchain.hk/smartcontract/

[8]Vitalik在中國台灣的演講:區塊鏈、智能合約和以太坊

[20] 本章由海濱寫作完成。

[21] https://medium.com/@heckerhut/whats-a-smart-contract-in-search-of-a-consensus-c268c830a8ad.

[22] http://szabo.best.vwh.net/smart_contracts_idea.html.

[23] http://www.fastcolabs.com/3035723/app-economy/smart-contracts-could-be-cryptocurrencys-killer-app.

[24] http://8btc.com/doc-view-376.html.

《區塊鏈:從數字貨幣到信用社會》