在區塊鏈的相關討論中,“智能合約”是一個出現頻率極高的詞匯。“智能合約”是區塊鏈技術的重要組成部分,也是區塊鏈技術實現核心價值“信用”的重要環節之一。然而人們往往通過“智能合約”的字面意思對其做出簡單的解讀,將之描繪為一種能夠在未來取代“合約”和“公證”的技術。在各類媒體報道文章中,“智能合約”被大量的曲解和誤讀著。筆者特在此圍繞“智能合約”概念對以下問題逐一展開解讀:“智能合約”到底是什么?“智能合約”和傳統意義上的合約有什么區別?“智能合約”到底能否取代法律概念上的“合約”和“公證”?
?
“智能合約”到底是什么?
對于“智能合約”的定義是各種各樣的。有的文件將“智能合約”定義為“一種用計算機語言取代法律語言去記錄條款的合約”。作為法律從業人員而言,這種定義方法是完全錯誤的。
還有文件將“智能合約”定義為“基于區塊鏈的圖靈完備的編程腳本語言,適合各種區塊鏈數據結構和共識協議”。這種定義方法也不準確。比特幣所采用的語言是“圖靈不完備”的,但是比特幣語言中同樣植入了“智能合約”。
中國電子技術標準化研究院聯合數十家單位于2017年5月16日發布的《中國區塊鏈技術和產業發展論壇標準 CBD-Forum-001-2017》中,將智能合約(smart contract)定義為“以數字形式定義的能夠自動執行條款的合約 ”,“注:在區塊鏈技術領域,智能合約是指基于預定事件觸發、不可篡改、自動執行的計算機程序。”
備注里的這句話揭示了“智能合約”的本質。“智能合約”本質上是一種“計算機程序”,而不是“合約”。不要通過“合約”的基本特征去理解“智能合約”,而要通過“計算機程序”的基本特征去理解“智能合約”。
不過這種定義仍然沒有清楚的解釋“智能合約”到底是什么。
要理解“智能合約”,得從中本聰設計比特幣的轉賬功能說起。
假如你是2009年的中本聰,你已經找到了解決雙重支付的方法,現在要設計比特幣的轉賬功能了。你會怎么做呢?通常的設計方案會是這樣:
發送方向比特幣網絡發一份廣播,其內容是這樣的:“從A地址轉賬1 BTC給B地址。同時附上A地址私鑰的簽名”。網絡各節點收到廣播,校驗簽名合法。于是從A地址扣掉1 BTC,給B地址加上1 BTC。
簡潔明了對不對?但是如果是這樣的設計,我們就無法看到今天區塊鏈技術在各領域的落地扎根、欣欣向榮。中本聰的設計方案是這樣的:
發送方向比特幣網絡發一份廣播,其內容是這樣的:“我要轉賬1 BTC,并且我提供了一段腳本,這段腳本作為鑰匙可以打開這1 BTC上的鎖;同時,我根據接收方的要求為這1 BTC加個新的鎖”。
網絡各節點收到廣播,運行腳本,發現確實能“開鎖”,于是根據發送方的指令給這筆比特幣換上一把“新鎖”,這筆比特幣也就有了新的主人。當接收方想使用這1 BTC時,只要能提供一段新的腳本作為鑰匙打得開這把新鎖就行。
乍一看,中本聰的設計似乎非常繁瑣和反直覺,然而這樣的設計卻另辟蹊徑,打開了一個全新的天地。腳本是一種簡單的計算機語言,比如Java就是一種腳本。比特幣的腳本可以表述的內容非常靈活,遠遠超出了一對一轉賬的范疇。例如:A可以按照約定加鎖,設置必須由收款人B和擔保人C同時簽名才能支配某筆比特幣(擔保交易),也可以設置B、C、D中任意兩人簽名就能支配(聯名賬戶);也可以設置B必須在一年后才能動用某筆比特幣(延時支付),也可以設置任何人都能支配(撒錢)或者都不能支配(燒錢)。通過這套內置的腳本編程語言,你可以靈活地編寫出各種各樣的約定——而這其實就是“智能合約”的來源。用比特幣腳本編寫的合約系統,使得比特幣成為了人類歷史上第一種可編程的貨幣。
注意,中本聰這種設計思路和傳統方式最大的變化就是,貨幣移交的重心不在于從一方轉移到另一方,而是在權屬變化的同時預設了“開啟條件”。這個“開啟條件”的預設思路是根植于區塊鏈技術的本身設計思想的。因為區塊鏈去中心化,分布式存儲,所有數據每個參與節點都有相同的一份,那么大家擁有同樣的數據,怎么才能分清各自的權益呢?方法就是給所有的數據都加上對應的“鎖”,某個人或某組人用自己的專屬鑰匙才能開啟對應的“鎖”,從而獲得對自己權益的處分權。傳統貨幣動用前也會驗證簽名和密碼,但是驗證的目的僅僅在于校驗身份。比特幣則不僅僅是校驗身份,而且還校驗是否符合“開啟條件”。這個預設的“開啟條件”就是區塊鏈所說的“智能合約”。
對于區塊鏈技術應用的其他領域,此處的比特幣轉賬替換成價值的傳遞、轉移、交換即可。
“智能合約”和傳統意義上的合約有什么區別?
了解了“智能合約”的來源,我們就可以比較一下“智能合約”和傳統意義上的“合約”有什么不同了。
合約,即合同。《中華人民共和國合同法》對合同的定義為“本法所稱合同是平等主體的自然人、法人、其他組織之間設立、變更、終止民事權利義務關系的協議。”
在中華人民共和國合同法中規定了十五種典型合同,買賣合同,供用電、水、氣、熱力合同,贈與合同,借款合同,租賃合同,融資租賃合同,承攬合同,建設工程合同,運輸合同,技術合同,保管合同,倉儲合同,委托合同,行紀合同,居間合同。其他常見的合同如抵押合同、質押合同、留置合同、探礦權合同、土地使用權出讓合同、承包合同等物權性質的合同在沒有特別法規范的情況下適用合同法總則或類推適用合同法相關分則。
合同的內容由當事人約定,一般包括以下條款:當事人的身份信息,標的,數量,質量,金額,履行期限、地點和方式,違約責任,解決爭議的方法以及參與各方的權利、義務,中止、終止、解除條件等。
合同的訂立步驟可以分解為:
1,一方發出要約。
2,受要約人同意要約內容,做出承諾。
3,承諾生效時合同成立。
“智能合約”完整的訂立步驟為:
1,參與方經過商議,約定合約的具體內容。這一步是人與人的談判、討論、商議的結果,是人的活動。
2,用編程腳本語言編寫腳本,將約定好的內容通過程序的形式表現出來。這一步是將特定的“鎖”制造出來。
3,原權益方開啟自己的權屬,并將區塊鏈貨幣或價值按照約定加上上一步制作的“鎖”,從而實現權屬的轉移。但是權益并不直接進入新的權益方,而是等待新權益方用“鑰匙”開啟。
4,在預設的開啟條件達成時,新權益方相當于通過特定的“鑰匙”打開了“鎖”,編程腳本自動運行,新權益方獲得區塊鏈貨幣或價值的處分權并進行處分,也許是加一把新的“鎖”。
對于“合約”而言,是由參與各方簽署成效后,再由參與各方各自按照約定執行;而“智能合約”存在本身就意味著其已經在執行過程中了,約定內容在“智能合約”誕生之前已經商定好了。“智能合約”更像以程序“if-then”的基本邏輯中的一個觸發條件,一旦條件觸發就自行執行程序的下一步。所以“智能合約”本質上是一個腳本程序,以程序“if-then”的基本邏輯為基礎來運行。這種腳本程序之所以叫“智能合約”,是因為其編寫目的是為了實現事先商定好的合約內容的。反過來看,只有能夠通過編程實現的合約內容才能成為“智能合約”的實現對象,這就注定了“智能合約”的實現對象是非常有限的,因為不是所有的人類活動都能夠通過編程實現的。
對于“合約”而言,在執行過程中,參與各方都有違反合約的可能,“智能合約”則沒有這種“人性風險”,“智能合約”一旦設定好,只有作為“鑰匙”的腳本滿足“鎖”的“開啟條件”時,才會執行。
“合約”的執行是參與各方進行的人類活動,而“智能合約”的執行其實是執行一段程序,對虛擬價值進行處分。
對于“合約”而言,環境條件的改變可能會導致合約需要用補充協議、變更協議的形式加以調整。“智能合約”則不具備這種靈活性。“智能合約”更適合在穩定的環境中進行大量重復性運作的應用場景。
“智能合約”到底能否取代法律概念上的“合約”和“公證”?
很多對“智能合約”的介紹文字都宣稱“智能合約”將能夠替代法律概念上的“合約”和“公證”,通過以上對比和分析,顯然我們能得出否定的結論。
“合約”的使用廣泛滲透在人類活動的層層面面,其雙方只要合意達成一致即可成立的特性,使得“合約”具備最大限度的靈活性,從而方便的應用在各個場景。
“智能合約”是以程序為基礎的虛擬世界當中的特有產物,是在特定應用環境內反映了某種合約關系的程序,按照“if-then”的基本邏輯運行,適用于特定的場景,其功能較為單一,執行較為簡單,適用于在穩定的環境中進行大量重復性運作的應用場景。
“智能合約”相對于“合約”,就跟“機器人”相對于“人類”類似,前者缺乏靈活性,但在穩定環境、單一功能、大量重復性運作的應用場景能發揮替代后者的威力。
“智能合約”會隨著區塊鏈應用的普及使用而逐步滲透到人類生活中。由于區塊鏈應用還是發展的初級階段,“智能合約”對人類社會的影響還微乎其微。
即使將來區塊鏈應用普及了,“智能合約”仍然只能局部替代“合約”,因為,再一次強調,不是所有的人類活動都能夠通過編程實現的。
要注意的是,“智能合約”所要調節的未必是人與人之間的關系,也可能是物與物之間的關系,機器與機器之間的關系。“智能合約”在虛擬世界中,以及“合約”在人類世界中,會發揮各自專屬領域的作用。
“公證”是一個很好的比較例子。
確實有區塊鏈應用在嘗試在做線上“公證”應用。2015年9月,初創公司Stampery嘗試用比特幣區塊鏈技術解決數據的認證問題。“你可以為任何文件生成不可改變的、準確的證明,證明其存在和完整性。世界上的任何人都可以自動證明某個文件是在何時創建的,且之后再未改動過,”“使用 Stampery 的理由與為文件做公證的理由一樣。它能很好地保護知識產權,證明遺囑、宣誓、合同、家庭糾紛中的通訊等等的有效性。”2017年4月,微軟將Stampery技術整合到了Microsoft Office Outlook。
盡管Stampery有其優勢和價值所在,但在宣傳上和一些新生事物一樣,總是拼命的夸大其詞。
根據中華人民共和國司法部令第103號《公證程序規則》,公證機構受理公證申請后,應當根據不同公證事項的辦證規則,分別審查下列事項:
1,當事人的人數、身份、申請辦理該項公證的資格及相應的權利;
2,當事人的意思表示是否真實;
3,申請公證的文書的內容是否完備,含義是否清晰,簽名、印鑒是否齊全;
4,提供的證明材料是否真實、合法、充分;
5,申請公證的事項是否真實、合法。
公證機構可以采用下列方式,核實公證事項的有關情況以及證明材料:
1,通過詢問當事人、公證事項的利害關系人核實;
2,通過詢問證人核實;
3,向有關單位或者個人了解相關情況或者核實、收集相關書證、物證、視聽資料等證明材料;
4,通過現場勘驗核實;
5,委托專業機構或者專業人員鑒定、檢驗檢測、翻譯。
公證機構經審查,認為申請公證的事項符合《公證法》、本規則及有關辦證規則規定的,應當自受理之日起十五個工作日內向當事人出具公證書。
通過以上分析和比較,我們可以看出兩者的重要區別是,一份公證書在出具之間會經過詳盡的實質性審核;而Stampery所謂“公證”的前提是假定文件的實質性審核已經完成,文件是真實有效的,即沒有虛假材料的可能,也沒有當事人惡意欺詐的可能,其對文件的證明作用僅限于表面性、格式性審核。
要說Stampery所謂的“公證”能夠取代法律概念上“公證”的作用,顯然是低估了人性的復雜程度。
結語
“智能合約”本質上是一種“計算機程序”,是以程序為基礎的虛擬世界當中的特有產物,是在特定應用環境內反映了某種合約關系的程序。
“智能合約”所要調節的未必是人與人之間的關系,也可以是物與物之間的關系,機器與機器之間的關系。
“智能合約”在虛擬世界中,發揮其專屬領域的作用,就像“合約”在人類世界中,發揮其專屬領域的作用。兩者未來會并存,誰也不會完全取代另一方。
一份公證書在出具之間會經過詳盡的實質性審核,而區塊鏈技術的“公證”僅對文件進行表面性、格式性審核,所以它不可能取代法律概念上的“公證”。
評論
查看更多