在區(qū)塊鏈的相關(guān)討論中,“智能合約”是一個(gè)出現(xiàn)頻率極高的詞匯。“智能合約”是區(qū)塊鏈技術(shù)的重要組成部分,也是區(qū)塊鏈技術(shù)實(shí)現(xiàn)核心價(jià)值“信用”的重要環(huán)節(jié)之一。然而人們往往通過(guò)“智能合約”的字面意思對(duì)其做出簡(jiǎn)單的解讀,將之描繪為一種能夠在未來(lái)取代“合約”和“公證”的技術(shù)。在各類媒體報(bào)道文章中,“智能合約”被大量的曲解和誤讀著。筆者特在此圍繞“智能合約”概念對(duì)以下問(wèn)題逐一展開(kāi)解讀:“智能合約”到底是什么?“智能合約”和傳統(tǒng)意義上的合約有什么區(qū)別?“智能合約”到底能否取代法律概念上的“合約”和“公證”?
“智能合約”到底是什么?
對(duì)于“智能合約”的定義是各種各樣的。有的文件將“智能合約”定義為“一種用計(jì)算機(jī)語(yǔ)言取代法律語(yǔ)言去記錄條款的合約”。作為法律從業(yè)人員而言,這種定義方法是完全錯(cuò)誤的。
還有文件將“智能合約”定義為“基于區(qū)塊鏈的圖靈完備的編程腳本語(yǔ)言,適合各種區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)和共識(shí)協(xié)議”。這種定義方法也不準(zhǔn)確。比特幣所采用的語(yǔ)言是“圖靈不完備”的,但是比特幣語(yǔ)言中同樣植入了“智能合約”。
中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究院聯(lián)合數(shù)十家單位于2017年5月16日發(fā)布的《中國(guó)區(qū)塊鏈技術(shù)和產(chǎn)業(yè)發(fā)展論壇標(biāo)準(zhǔn) CBD-Forum-001-2017》中,將智能合約(smart contract)定義為“以數(shù)字形式定義的能夠自動(dòng)執(zhí)行條款的合約 ”,“注:在區(qū)塊鏈技術(shù)領(lǐng)域,智能合約是指基于預(yù)定事件觸發(fā)、不可篡改、自動(dòng)執(zhí)行的計(jì)算機(jī)程序。”
備注里的這句話揭示了“智能合約”的本質(zhì)。“智能合約”本質(zhì)上是一種“計(jì)算機(jī)程序”,而不是“合約”。不要通過(guò)“合約”的基本特征去理解“智能合約”,而要通過(guò)“計(jì)算機(jī)程序”的基本特征去理解“智能合約”。
不過(guò)這種定義仍然沒(méi)有清楚的解釋“智能合約”到底是什么。
要理解“智能合約”,得從中本聰設(shè)計(jì)比特幣的轉(zhuǎn)賬功能說(shuō)起。
假如你是2009年的中本聰,你已經(jīng)找到了解決雙重支付的方法,現(xiàn)在要設(shè)計(jì)比特幣的轉(zhuǎn)賬功能了。你會(huì)怎么做呢?通常的設(shè)計(jì)方案會(huì)是這樣:
發(fā)送方向比特幣網(wǎng)絡(luò)發(fā)一份廣播,其內(nèi)容是這樣的:“從A地址轉(zhuǎn)賬1 BTC給B地址。同時(shí)附上A地址私鑰的簽名”。網(wǎng)絡(luò)各節(jié)點(diǎn)收到廣播,校驗(yàn)簽名合法。于是從A地址扣掉1 BTC,給B地址加上1 BTC。
簡(jiǎn)潔明了對(duì)不對(duì)?但是如果是這樣的設(shè)計(jì),我們就無(wú)法看到今天區(qū)塊鏈技術(shù)在各領(lǐng)域的落地扎根、欣欣向榮。中本聰?shù)脑O(shè)計(jì)方案是這樣的:
發(fā)送方向比特幣網(wǎng)絡(luò)發(fā)一份廣播,其內(nèi)容是這樣的:“我要轉(zhuǎn)賬1 BTC,并且我提供了一段腳本,這段腳本作為鑰匙可以打開(kāi)這1 BTC上的鎖;同時(shí),我根據(jù)接收方的要求為這1 BTC加個(gè)新的鎖”。
網(wǎng)絡(luò)各節(jié)點(diǎn)收到廣播,運(yùn)行腳本,發(fā)現(xiàn)確實(shí)能“開(kāi)鎖”,于是根據(jù)發(fā)送方的指令給這筆比特幣換上一把“新鎖”,這筆比特幣也就有了新的主人。當(dāng)接收方想使用這1 BTC時(shí),只要能提供一段新的腳本作為鑰匙打得開(kāi)這把新鎖就行。
乍一看,中本聰?shù)脑O(shè)計(jì)似乎非常繁瑣和反直覺(jué),然而這樣的設(shè)計(jì)卻另辟蹊徑,打開(kāi)了一個(gè)全新的天地。腳本是一種簡(jiǎn)單的計(jì)算機(jī)語(yǔ)言,比如Java就是一種腳本。比特幣的腳本可以表述的內(nèi)容非常靈活,遠(yuǎn)遠(yuǎn)超出了一對(duì)一轉(zhuǎn)賬的范疇。例如:A可以按照約定加鎖,設(shè)置必須由收款人B和擔(dān)保人C同時(shí)簽名才能支配某筆比特幣(擔(dān)保交易),也可以設(shè)置B、C、D中任意兩人簽名就能支配(聯(lián)名賬戶);也可以設(shè)置B必須在一年后才能動(dòng)用某筆比特幣(延時(shí)支付),也可以設(shè)置任何人都能支配(撒錢)或者都不能支配(燒錢)。通過(guò)這套內(nèi)置的腳本編程語(yǔ)言,你可以靈活地編寫出各種各樣的約定——而這其實(shí)就是“智能合約”的來(lái)源。用比特幣腳本編寫的合約系統(tǒng),使得比特幣成為了人類歷史上第一種可編程的貨幣。
注意,中本聰這種設(shè)計(jì)思路和傳統(tǒng)方式最大的變化就是,貨幣移交的重心不在于從一方轉(zhuǎn)移到另一方,而是在權(quán)屬變化的同時(shí)預(yù)設(shè)了“開(kāi)啟條件”。這個(gè)“開(kāi)啟條件”的預(yù)設(shè)思路是根植于區(qū)塊鏈技術(shù)的本身設(shè)計(jì)思想的。因?yàn)閰^(qū)塊鏈去中心化,分布式存儲(chǔ),所有數(shù)據(jù)每個(gè)參與節(jié)點(diǎn)都有相同的一份,那么大家擁有同樣的數(shù)據(jù),怎么才能分清各自的權(quán)益呢?方法就是給所有的數(shù)據(jù)都加上對(duì)應(yīng)的“鎖”,某個(gè)人或某組人用自己的專屬鑰匙才能開(kāi)啟對(duì)應(yīng)的“鎖”,從而獲得對(duì)自己權(quán)益的處分權(quán)。傳統(tǒng)貨幣動(dòng)用前也會(huì)驗(yàn)證簽名和密碼,但是驗(yàn)證的目的僅僅在于校驗(yàn)身份。比特幣則不僅僅是校驗(yàn)身份,而且還校驗(yàn)是否符合“開(kāi)啟條件”。這個(gè)預(yù)設(shè)的“開(kāi)啟條件”就是區(qū)塊鏈所說(shuō)的“智能合約”。
對(duì)于區(qū)塊鏈技術(shù)應(yīng)用的其他領(lǐng)域,此處的比特幣轉(zhuǎn)賬替換成價(jià)值的傳遞、轉(zhuǎn)移、交換即可