區塊鏈裡的“智能合約”是什麼?

數字貨幣 比特幣 腳本語言 法律 中國信息通信研究院 中國信息通信研究院 2017-10-17

談到區塊鏈,必然離不開“智能合約”這個詞。我們在本系列的第一篇文章中提到“智能合約”(smart contract)是由多產的跨領域法律學者 Nick Szabo 在1995年提出來的,他的定義為:“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。”那麼,我們該如何理解這段話呢?

回顧一下比特幣區塊鏈系統中的轉賬:

Alice 轉賬給 Bob 100比特幣,在比特幣區塊鏈系統中是這樣記錄的:

區塊鏈裡的“智能合約”是什麼?

本質上,這就是一個合同。這個合同裡面規定了 Alice 要轉給 Bob 100比特幣,該合同立即生效。注意,裡面有一個“解鎖信息”,這個“解鎖信息”本質上就是 Alice 證明自己是 Alice 的地址持有者時需要提交的一個信息。

顯然,像比特幣區塊鏈系統裡面,純UTXO模式的這種合同用處是很有限的。首先,比特幣是一個獨立運行的封閉系統,它的轉賬腳本沒有提供和外界進行交互的接口。所有信息(這裡主要是解鎖信息)只能在腳本提交到區塊鏈之前定死,之後就只能按照固定方式運行。這對於“合同”來說是不符合實際應用的。

在我們實際生活中,一個完整的合同制定——執行流程是按照如下方式隨著時間流逝而進行的:

區塊鏈裡的“智能合約”是什麼?

其中,條件的達成通常是一個外部輸入的事件,這意味著,我們實際生活中的合同通常是“事件驅動”型的。這個“事件”是否發生通常不是區塊鏈上的數據能夠判斷出來的,而是依靠事件發生的時間點,通過鏈外輸入數據的方式實現

以電子商務為例,Alice 在某寶的某個商家購買了一臺筆記本電腦,當 Alice下單成功的那一刻,實質上就生成了一個合同。這個合同包含了 Alice 需要在多長時間內付款到第三方平臺(事件1)。然後賣家看到 Alice 付款後需要發貨,當 Alice 收到貨以後需要點擊確認收貨(事件2),完成整個合同(在不考慮售後的情況下)。

在這個合同的執行過程中,事件1由於是一個純粹的金融活動,已經高度的虛擬化,能夠實現自動發現事件自動觸發。而事件2則是一個在現實世界中發生的活動,需要我們“點擊確認收貨”來把這個事件的發生同步到虛擬世界中,這個“點擊確認收貨”就是虛擬世界中的事件2。所以,對於某寶的購物合同而言,事件1實質上是 Alice 是否轉賬到平臺,事件2是 Alice 是否點擊確認收貨。因此,在這個合同中,預留了一個和外部交互的接口——確認收貨。

除了和外部的交互能力外,比特幣轉賬合同(腳本)的另一個重要缺陷是它不是圖靈完備的。這句話對於非計算機專業的人來說可能不太好理解,我們可以簡單的理解為它沒有循環能力和複雜的條件控制能力。

合同的循環能力在我們現實世界中是很常見的,例如我們和電信運營商簽署的移動電話服務合同,通常就是一個循環合同。這種合同以自然月為單位,每個月自動循環執行。還有類似的企業間簽訂的長期採購合同,都是一種不斷循環的合同。合同中規定的事件(或時間點)全部達成以後,自動循環回第一步,重新執行。

複雜的條件控制能力就更常見了——合同中的違約條款就是條件控制能力。事件達成怎樣,沒有達成如何執行違約條款等,這些都需要合同擁有複雜的條件控制能力。

比特幣中的交易是使用比特幣區塊鏈底層平臺定義的一套腳本語言來寫的,由於當初比特幣區塊鏈系統是按照一個數字貨幣的模型進行設計的,因此它並不需要這些複雜的能力。但是如果我們需要區塊鏈技術在其他商業場合進行應用,很多時候就需要這些能力。比如我們利用以太坊平臺來實現某個業務,那麼整個流程是這樣子的:

區塊鏈裡的“智能合約”是什麼?

目前,關於智能合約的爭議仍然是很多的。主要包含兩方面:

1 合同本身是否是雙方真實意思的表達

a)在現實世界中,我們撰寫的合同除了受合同細節的約束外,還受到了外部法律和行業慣例的約束。而在智能合約中,外部法律和行業慣例如果不能嚴格的體現在合同中,那麼合同就不是雙方真實意思的表達了。

b)在現實世界中,我們撰寫的合同通常是由律師或者法律專家來幫我們完成的。不同水平的法律專家,其完成的合同嚴謹程度是不一樣的。同樣在智能合約中,我們撰寫的合同是由程序員幫我們完成的,程序員的水平決定了合同的嚴謹性。還有一點,程序通常都會有bug,這些bug是否會導致嚴重的損失,然而在bug沒有被發現之前,都不得而知。

2 合同的仲裁機構是誰

a)在現實世界中,我們通常都會在合同中約定一旦發生糾紛,請哪個仲裁機構對合同進行仲裁。而在區塊鏈中,尤其是公有鏈平臺上的智能合約,一旦我們認為合同沒有表達雙方真實的意思,我們無法找到一個仲裁機構對合同進行仲裁。

b) 在聯盟鏈中,由於各方各個節點的身份都是已知的,現實世界中的司法機構是可以介入智能合約糾紛的。但是這種介入有時候可能會影響整個聯盟鏈系統的穩定性,這種情況下,怎樣介入是一個技術問題,而這個技術問題又可能會帶來新的bug。

作者簡介

敖萌,現就職於中國信息通信研究院北京泰爾英福網絡科技有限責任公司,主要研究模式識別和區塊鏈,聯繫方式:[email protected]


更多觀點,歡迎關注中國信通院微信公眾號:中國信息通信研究院CAICT

或訪問中國信通院官網:www.caict.ac.cn

文章為泰爾英福原創,轉載請註明出處!

泰爾英福聚焦域名、工業互聯網標識、區塊鏈、企業信息數據庫等相關領域。

更多內容歡迎關注公眾號:Teleinfo_

相關推薦

推薦中...