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

區塊鏈技術發表於2018-04-13

簡介:區塊鏈技術由來已久。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)計算機可讀的程式碼

另外,合約需要的特定“數字形式”非常依賴於參與方同意使用的協議。

協議

協議是技術實現(technicalimplementation),在這個基礎上,合約承諾被實現,或者合約承諾實現被記錄下來。選擇哪個協議取決於許多因素,最重要的因素是在合約履行期間,被交易資產的本質。 再次以銷售合約為例。假設,參與方同意貨款以比特幣支付。選擇的協議很明顯將會是比特幣協議,在此協議上,智慧合約被實施。因此,合約必須要用到的“數字形式”就是比特幣指令碼語言。比特幣指令碼語言是一種非圖靈完備的、命令式的、基於棧的程式語言,類似於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月TheDAOEther的漏洞造成損失5000萬美元,而開發者試圖達成共識的解決方案。DAO的程式在黑客刪除資金之前有一段時間的延遲。以太坊軟體的一個硬分叉在時限到期之前完成了攻擊者的資金回收工作。

以太坊智慧合約中的問題包括合約程式設計Solidity、編譯器錯誤、以太坊虛擬機器錯誤、對區塊鏈網路的攻擊、程式錯誤的不變性以及其他尚無文件記錄的攻擊。

案例

部署智慧合約的案例有:

以太坊在其區塊鏈上實施了一種近乎圖靈完備的語言,這是一個突出的智慧合約框架。

RootStock(RSK) 是一個智慧合約平臺,通過側鏈技術連線到比特幣區塊鏈。 RSK相容為以太坊創造的智慧合約。

未來展望

有一件事確定無疑:智慧合約已經紮下根了。它們是真正的全球經濟的基本構件,任何人都可以接入到這一全球經濟,不需要事前審查和高昂的預付成本。它們從許多經濟交易中,移除了對第三方的信任必要,在其它情況下,將信任轉移到可以信任的人和機構。

智慧合約怎樣與合約法共存呢?本質上,它們是解決相同問題–以一種方式形成一種關係,使得承諾可以執行–的兩種不同方法。就這一點而言,智慧合約似乎是更好的解決方案:智慧合約事前執行,不像法律系統一樣,事後執行。然而,這是一種謬誤。最後一次引用全能的薩博:

“合約法的成功和取代合約法所需的高額成本,使得儲存和利用合適的原則,仍然很有價值。但是,數字革命正在劇烈地改變我們能夠擁有的各種關係。在這個賽博時代,我們來之不易的法律傳統中的哪一部分,將仍然具有價值?將這些法律原則應用到我們的線上關係設計,最好的方式是什麼?”

本文內容援引百度百科及http://www.8btc.com/what-are-smart-contracts-in-search-of-a-consensus

關於矩陣元:矩陣元是一家全球領先的下一代計算機構領導廠商,致力於面向下一代價值網際網路的計算架構,解決海量資料、邊緣計算、人工智慧技術條件下的資料流動性,推動基於隱私保護與密碼安全的資料交換與協同計算。

www.juzix.net/

相關文章