蔡維德:智慧合約有三大坑
2019年1月18日
智慧合約在資產上鍊後會成為重要工具 ,如果要買或是賣資產,智慧合約可能是許多人選擇的工具。所以 智慧合約的合法性,安全性,可靠性會非常重要 。
昨天講到智慧合約的幾個重要原則,在實現智慧合約機制的時候還是有許多的問題。
一個非常有趣的歷史,Vitalik當時在設計智慧合約,他並沒有想到法律的問題,所以當我們在2015年討論的時候,我問法律的問題,他表示根本沒有考慮。因此在2016年The Dao事件發生,主要媒體批判以太坊,提到說這根本不是合約,為什麼叫智慧“合約”?
所以在2015年底,IBM公司出超級賬本的時候,他們直接把智慧合約改名叫做“鏈上程式碼”(chaincode),這是一個正確的決定。可是在2016年The Dao事件發生了之後,大家的決定不是在鏈上程式碼上前進,而是考慮把法律真正放在智慧合約機制。這代表是說雖然一開始這個名字取錯了,陰錯陽差,但是大家覺得還是應該把法律放在智慧合約裡面, 而不是隻發展鏈上程式碼。現在發展的一個方向是筆者提出的可自動執行部分法規的智慧合約。
第一坑:沒有法律的支援
第一個坑就是 沒有法律的支援,或者說沒有考慮到法律。 在2016年後,大家都在研究如何把法律放在智慧合約。 大家認為超級賬本上的鏈上程式碼不會是最終的概念,或者說是不足夠的概念,社會要的是可部分執行法規的智慧合約,不是鏈上程式碼。智慧合約上面要有法律法規,承載著一國的法律。這個思想也帶動了後來貴陽政府提出的“主權區塊鏈”的概念。
第二坑:把法規放進智慧合約
第二個坑是 直接把法規寫成可執行的程式碼 ,這並不是一個很難的做法。 例如麻省理工學院OMS(Open Mustard Seed)的專案,就進行了這樣的實驗。 OMS以喝酒的相關法律為例,在歐洲很多國家相距很近,特別是在兩國邊境處,可能花幾分鐘就從一個國家走到了另一個國家。假設一個國家的法律規定,可以喝酒的年齡是18歲,另外一個國家是21歲,如果有一個18歲的人拿著酒瓶喝酒,從一個國家走到另外一個國家,那麼他的可以合法喝酒的年齡就改變了,可能的結果是原本不是違法的事到另一個國家就違法了。 把法規放到智慧合約上,智慧合約通過外部資料輸入,得到一個18歲的人正在一個18歲為合法喝酒年齡的國家喝酒,然後跨國過境,到了一個21歲為合法喝酒年齡的國家,此時自動合約會對該人自動執行罰款。該人的賬號一定數目的罰款金額就會被撥走。
為什麼說這也是一個坑呢?因為這兒的“智慧合約”上承載的是面對大眾的法律法規,而不是一個合同,這裡的用法應該叫做“智慧法規”,它的目的是可以自動部分執行法律法規。但是智慧合約應該承載的是合同,合同面向的是合同的相對方,區別於法規面向的是一般大眾。因此將法規放在智慧合約裡不是真正意義上的智慧合約。
第三坑:把合同文字直接翻譯成智慧合約的程式碼語言
現在,美國有一個團隊用自動的方法來實現智慧合約。他們的做法就是 把一個法律合同文字,經過自動或者半自動的處理把合同文字的自然語言轉成可執行的程式碼,這個可執行的程式碼就變成智慧合約。 那這個是不是一個好的方法?
作者認為這還是一個大坑,從一個現實世界中的法律合同,轉成一個智慧合約,然後去執行法律法規,雖然說出發點是可取的, 但細想一想,一個法律合同,跟一個智慧合約,他們本質上到底是不是一個同樣的東西?其實不是,因為法律合同背後代表的是一對法律關係,並以自然語言的方式呈現出來。所以合同在形成的時候根本沒有考慮到計算機的問題,無論是在組織上還是在語言呈現上,而智慧合約本質上來說更多的是一個執行合同的工具。
所以如果拿一個合同的文字,經過自然語言處理,把它轉成一種計算機語言,這恐怕就是一個死衚衕,因為二者的本質屬性不同。並且合同文字本身的自然語言與計算機的程式碼語言本身並不能完全對等,如果強行將合同文字轉換成智慧合約的機器合度語言,今後將會遇到很大的困難,比如說,自然語言某一個詞有時候可以有多種釋意,程式碼要如何窮盡所有解釋?即使可以窮盡解釋,那麼執行時,要去選擇哪一種解釋去執行?
對於解決方法,也許有人說,要不我乾脆在寫合同的時候也考慮到智慧合約的計算機問題,儘量把自然語言與程式碼對應起來,簡單化合同。這也不太可行,因為計算機自然語言處理技術雖然有很大進步,但是把自然語言變成一個可執行的程式碼,放在區塊鏈上面使用,又符合區塊鏈三個重要原則,這實在是太難了。所以到底該怎麼辦?事實上還是有辦法的,以後筆者再解釋如何解決這個難題。
感謝大家。
作者簡介:
蔡維德:北航數字社會與區塊鏈實驗室,天德科技 ,國家大資料(貴州)綜合試驗區區塊鏈網際網路實驗室, 天民(青島)國際沙盒研究院, 賽迪(青島)區塊鏈研究院
姜嘉瑩 : 美國埃默裡(EMORY)大學法學院博士生