智能合約從入門到精通:智能合約的前世今生

簡介:區塊鏈技術由來已久。2008年,神祕的日裔美國人中本聰天才設計出來的電子貨幣系統:比特幣,爲人類打開了區塊鏈的大門。2009年,他發佈了首個比特幣軟件,並正式啓動了比特幣金融系統。依靠POW算法的比特幣隨着人們認知,2016年以後區塊鏈也爲人們所追捧。而以太坊的快速發展,區塊鏈已經進化出智能合約、DApp等新的技術,區塊鏈2.0、3.0時代也正在來臨。本文將詳細介紹智能合約是什麼。
區塊鏈是分佈式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學算法。這套理論由中本聰在2008年提出,並在2009年發佈了首個比特幣軟件。
比特幣基於Pow算法:通過與或運算,計算出一個滿足規則的隨機數,即獲得本次記賬權,發出本輪需要記錄的數據,全網其它節點驗證後一起存儲,以工作量證明其價值。雖然其完全去中心化的特點是區塊鏈的核心思想,也暴露出比特幣Pow共識算法的弊端:資源大量浪費、共識達成的週期較長和易分叉。
於是,以太坊以Pos+Pow相結合公式算法給出區塊鏈更大的發展空間,也應運而生出智能合約這一概念。
那什麼又是智能合約呢?

首先,我們希望大家瞭解智能合約的本質。同時,在人們瞭解智能合約的時候,也解除大家對區塊鏈在法律上面的誤解。

智能合約不是一個新的概念。“智能合約”(smart contract)這個術語至少可以追溯到1995年,是由多產的跨領域法律學者尼克·薩博(Nick Szabo)提出來的。他在發表在自己的網站的幾篇文章中提到了智能合約。他的定義如下:
智能合約(英語:Smart contract )是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易。這些交易可追蹤且不可逆轉。
承諾
一套承諾指的是合約參與方同意的(經常是相互的)權利和義務。這些承諾定義了合約的本質和目的。以一個銷售合約爲典型例子。賣家承諾發送貨物,買家承諾支付合理的貨款。
 
數字形式
數字形式意味着合約不得不寫入計算機可讀的代碼中。這是必須的,因爲只要參與方達成協定,智能合約建立的權利和義務,是由一臺計算機或者計算機網絡執行的。
更進一步地說明:
(1)達成協定
智能合約的參與方什麼時候達成協定呢?答案取決於特定的智能合約實施。一般而言,當參與方通過在合約宿主平臺上安裝合約,致力於合約的執行時,合約就被發現了。
(2)合約執行
“執行”的真正意思也依賴於實施。一般而言,執行意味着通過技術手段積極實施。
(3)計算機可讀的代碼
另外,合約需要的特定“數字形式”非常依賴於參與方同意使用的協議。
協議
協議是技術實現(technical implementation),在這個基礎上,合約承諾被實現,或者合約承諾實現被記錄下來。選擇哪個協議取決於許多因素,最重要的因素是在合約履行期間,被交易資產的本質。
再次以銷售合約爲例。假設,參與方同意貨款以比特幣支付。選擇的協議很明顯將會是比特幣協議,在此協議上,智能合約被實施。因此,合約必須要用到的“數字形式”就是比特幣腳本語言。比特幣腳本語言是一種非圖靈完備的、命令式的、基於棧的編程語言,類似於Forth。
從理論到實踐
劇透:如果你瞭解比特幣協議、比特幣貨幣和智能財產的概念,你可以跳過這一章節。
當薩博在近二十年以前,在網絡提出了智能合約理論時,實踐一直嚴重地落後於理論。一直沒有如何將這個理念轉變現實的清晰路徑。
現在,技術已經趕上薩博富有遠見的頭腦,智能合約開始變得可行。在這二十年中發生了什麼事情呢?
簡而言之,薩博在他的智能合約定義中建立的協議,已經被進一步開發。它們已經以比特幣協議的形式出現,或者更加一般地說,這些協議能夠實現中本聰共識(Nakamoto consensus)。
在這些協議被開發的同時,我們獲得了另一個必需的構件:第一種真正的、原生的數字資產,即作爲貨幣的比特幣。沒有這種資產,智能合約也將不可行,因爲金融部門在過去的幾十年中,一直對任何創新抱有極端的敵意。
最後,另一個還沒有結出果實的概念是智能財產。我們正在進入一個計算和連接無所不在的時代,通俗地講,就是物聯網。物理實體能夠從互聯網中檢索信息和向互聯網發送信息,它們也能夠通過軟件控制它們自身的使用(想想數字版權管理吧),這使得我們能夠建立薩博所指的嵌入式合約(embedded contracts)。
“智能合約的基本理念是,許多合約條款能夠嵌入到硬件和軟件中。”
薩博認爲嵌入式合約最初的應用實例是自動販賣機、銷售點終端、大公司間的電子數據交換和銀行間用於轉移和清算的支付網絡SWIFT、ACH、FedWire。另一個嵌入式合約的例子是數字內容消費–例如音樂、電影和電子書–領域的數字版權管理機制。
從這個意義上理解,智能合約是賽博空間(虛擬空間)和物理空間(實體空間)之間的橋樑。
智能VS法律
人們對智能合約概念的最多的困惑,源於它的名字和用於描述它的語言。人們似乎從“合約”這一術語中,推斷出智能合約一定與法律概念中的合約有某種聯繫。那麼,根據這個邏輯,智能合約是有法律約束力的協定加上其它因素(X),X使得協定變得“智能”。
從法律的角度,這一推測是錯誤的。根據參與方選擇的智能合約實施,參與雙方或者多方完全可能進入一個不滿足合法的合約所必需條件的“智能合約”。
然而,不可否認的是,智能合約必須被歸類爲與法律相關的行爲。我們生活在一個被法律管理和控制的世界,所有可能的經濟交易也被法律管理和控制。合約法只是組織經濟交易的一種可能的工具。原理圖如下:
智能合約從入門到精通:智能合約的前世今生
Legally relevant behaviour :與法律相關的行爲;  contract law:合約法;  smart contracts:智能合約
讓我們看一下合約法和智能合約的交集部分。我們能否發現一個能夠描述這兩個系統的合約行爲的概括呢?引用薩博的論文:
“合約–一套達成共識的協定–是形成關係的傳統方式。”
薩博告訴我們的是,“合約”的抽象概念是在個人、機構和他們擁有的東西(財產)之間形成關係的一種公認的工具。然而,上面的引用並不清晰,參與方如何達成協定,如何形成協定,沒有講到。
我建議下面這個普遍的合約模型:
智能合約從入門到精通:智能合約的前世今生
Agreement:協定; Formalization:形式化 ;Execution/Enforcement:執行
 
如果這個模型應用到智能合約和法律意義上的合約中,讓我們看看它怎麼起作用。
協定
協定是一個完全的理想情況,從它在正式系統中的實施中抽象而來。當然,事實上這是一個脆弱的抽象。在法律系統中,在許多情況下,具有法律約束力,不要求形成一個協議。與此相反,對智能合約來說,在許多情況下,在形式化以前,沒有事前協定。
 
形式化
形式化在這裏的意思是,在一個正式系統實施理想的協定的行爲。有兩個相關的正式系統。一個是合約法,另一個是你選擇的智能合約系統。這兩個系統都服務於相同的目的:當違約行爲發生時,使得協定能夠執行。
從一般角度理解,對於合約是怎麼形式化的這一問題,有人認爲它只是實施細節。然而,事實證明,合約的實施的確事關重大。
現在有兩種本質上不同的、形成一種合約關係的方式。這兩種方式是截然不同的,因爲它們需要不同的執行方式。
執行
因爲一圖頂千言,所以來看下面這張我從Lawrence Lessig那裏“剽竊”來的信息圖,出於本文的需要,我對圖片做了輕微的修改。
智能合約從入門到精通:智能合約的前世今生
Market:市場 ; contract:合約  ;Norms:慣例、常規 ; Architecture :架構 ; law:法律; ex ante:事前;  ex post:事後
 
在Lessig的最初版本中,是一個人位於信息圖的中間,不是一個合約。這位了不起的思考者用他的信息圖,努力教給我們這些凡人的是,有四種最基本的約束影響着一個人的一生。這四個約束本質上截然不同的,但是以複雜的方式交織在一起。
我對原版的信息圖做出了修改,用合約取代了人,這裏的合約是指雙方或者多方之間達成的協定。有趣的是,做出修改以後,這個信息圖仍然有效。這四個約束就像管理着人一樣,管理着合約關係。
另外,我着重強調這四個約束中的兩個約束,即架構和法律。這兩個約束是合約能夠被執行的兩個最基本的動力。根據參與方選擇的協定實施的系統,合約將通過法律系統執行,或者通過架構執行。這兩種合約執行模式顯著不同。
Lessig認識到合約執行的兩個特徵,可以幫助我們談論兩種合約執行模式的不同。一個是代理(agency),另一個是時間性(temporality)。在法律意義上,合約的執行,只有當一些人選擇這樣做時,纔會發生。此外,執行只發生在違約以後,例如事後。
智能合約的執行在這兩個方面,本質上不同於傳統合約。爲了理解是如何不同的,我們需要首先理解Lessig所指的架構是什麼意思。
Lessig在他的《代碼:網絡空間的法律》一書中,爲了解釋代碼在賽博空間中的作用,引入了架構的概念。物理空間的形狀,就是你的身體穿梭其中的空間,是由它的架構決定的,例如建築環境(建築物、街道等)。如此類似,賽博空間的形狀是由代碼決定的,人們使用的應用和協議就是建立在這些代碼上面的。因此,代碼是賽博空間的架構。
法律和架構都有方法管理參與方的行爲。法律依賴於個人將規則內化,個人據此調整自己的行爲,或者該系統允許法律追索權(例如法庭)。然而,架構通過塑造空間本身管理行爲。架構不是關於允許什麼,而是什麼是可能的。架構既不依靠個人將規則內化,也不依靠起訴系統。
根據我們衡量合約執行的質量的標準,例如代理和時間性,因此架構明顯地不同於法律。架構執行合約時,不需要任何個人或者組織(代理,agency)決定如何執行合約,你可以稱架構執行爲自我執行(self-enforcing),雖然我不喜歡這種叫法。另外,架構事前執行,違約甚至不可能發生。
安全問題
智能合約是“執行合約條款的計算機交易協議”。區塊鏈上的所有用戶都可以看到基於區塊鏈的智能合約。但是,這會導致包括安全漏洞在內的所有漏洞都可見,並且可能無法迅速修復。
這樣的***難以迅速解決,例如,2016年6月The DAOEther的漏洞造成損失5000萬美元,而開發者試圖達成共識的解決方案。DAO的程序在***刪除資金之前有一段時間的延遲。以太坊軟件的一個硬分叉在時限到期之前完成了***者的資金回收工作。
以太坊智能合約中的問題包括合約編程Solidity、編譯器錯誤、以太坊虛擬機錯誤、對區塊鏈網絡的***、程序錯誤的不變性以及其他尚無文檔記錄的***。
案例
部署智能合約的案例有:
以太坊在其區塊鏈上實施了一種近乎圖靈完備的語言,這是一個突出的智能合約框架。

RootStock(RSK) 是一個智能合約平臺,通過側鏈技術連接到比特幣區塊鏈。 RSK兼容爲以太坊創造的智能合約。
未來展望
有一件事確定無疑:智能合約已經紮下根了。它們是真正的全球經濟的基本構件,任何人都可以接入到這一全球經濟,不需要事前審查和高昂的預付成本。它們從許多經濟交易中,移除了對第三方的信任必要,在其它情況下,將信任轉移到可以信任的人和機構。
智能合約怎樣與合約法共存呢?本質上,它們是解決相同問題–以一種方式形成一種關係,使得承諾可以執行–的兩種不同方法。就這一點而言,智能合約似乎是更好的解決方案:智能合約事前執行,不像法律系統一樣,事後執行。然而,這是一種謬誤。最後一次引用全能的薩博:
“合約法的成功和取代合約法所需的高額成本,使得保存和利用合適的原則,仍然很有價值。但是,數字革命正在劇烈地改變我們能夠擁有的各種關係。在這個賽博時代,我們來之不易的法律傳統中的哪一部分,將仍然具有價值?將這些法律原則應用到我們的線上關係設計,最好的方式是什麼?”
本文內容援引百度百科及http://www.8btc.com/what-are-smart-contracts-in-search-of-a-consensus
關於矩陣元:矩陣元是一家全球領先的下一代計算機構領導廠商,致力於面向下一代價值互聯網的計算架構,解決海量數據、邊緣計算、人工智能技術條件下的數據流動性,推動基於隱私保護與密碼安全的數據交換與協同計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章