區塊鏈里所說的「智能合約」是什麼?
雷鋒網AI金融評論按:本文作者為中國信息通信研究院(工信部電信研究院)專家敖萌博士,雷鋒網獨家特約文章,雷鋒網與信通院聯合首發。未來,敖萌博士原創的區塊鏈系列文章還將繼續刊出,雷鋒網(公眾號:雷鋒網)與信通院相關平台同步更新,敬請關注!
談到區塊鏈,必然離不開「智能合約」這個詞。我們在本系列的第一篇文章中提到「智能合約」(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。


※螞蟻金服CTO程立:AI尚不具備金融級的能力,開放是突破邊界唯一出路
※阿里巴巴大力押注量子計算,雲棲大會宣布量子計算雲平台正式上線
※從機器翻譯來看中國最酷AI挑戰賽:賽手體驗放第一位
※麥格納加入寶馬英特爾聯盟,共同開發自動駕駛平台
※如何確保快遞「最後一公里」 ,亞馬遜打算送到你的汽車後備箱
TAG:雷鋒網 |