2015年7月30日,以太坊第一個區(qū)塊被挖出,以太坊正式登上歷史舞臺。隨之而來,還成就了智能合約的大熱門。我們可以從谷歌趨勢可看到,智能合約和以太坊的相關(guān)性。
智能合約這個概念是1995年由尼克·薩博提出來的。那時候還沒有比特幣,沒有區(qū)塊鏈,更沒有以太坊。
現(xiàn)在主流的認知都把智能合約和以太坊(或類以太坊項目)綁定在一起。以太坊是一個智能合約平臺,任何人都可以在以太坊上發(fā)布定義了某些合同屬性的代碼,并委托給以太坊網(wǎng)絡(luò)運行。
就像馬云開發(fā)了淘寶平臺,人們可以在淘寶上開網(wǎng)店一樣。經(jīng)營網(wǎng)店并不需要店家自己部署服務(wù)器,網(wǎng)店的后臺完全是運行在淘寶上的。
目前影響力較大的智能合約實例基本上都是運行在以太坊上,最廣泛的幾個是發(fā)代幣、DeFi、去中心化的Du 博。
對于智能合約的應(yīng)用方向,現(xiàn)在主流的信息對智能合約更多的共識是將傳統(tǒng)的合同進行智能合約化改造。傳統(tǒng)的合同是通過社會習(xí)俗和法律來定義參與方的權(quán)利和義務(wù),習(xí)俗和法律是合同背后的約束力來源。智能合約化改造是期望于代碼來承擔(dān)約束力來源。
這也是為什么智能合約會被以太坊,以及類以太坊項目綁定在一起的原因。因為以太坊提供了有約束能力的代碼運行平臺。以太坊被設(shè)計成了一個世界計算機,可以讓程序的運行不依賴于特定的中心化服務(wù)器。
比特幣的愛好者對以太坊在智能合約上大放光彩非常不服,也想了大量的辦法讓比特幣網(wǎng)絡(luò)承接智能合約生意。
比特幣系統(tǒng)內(nèi)置了腳本引擎來完成賬本的可編程性,以太坊使用的是虛擬機。后者是圖靈完備的,可以用來運行非常復(fù)雜的程序。加上比特幣的UTXO設(shè)計,以太坊是賬戶設(shè)計。前者只能設(shè)計無狀態(tài)的合約。這代表著,比特幣上的合約代碼是不能利用自己生成的中間狀態(tài)。比特幣的腳本程序都是一次性的,只對這個交易有效,不能被其他交易引用。比特幣的腳本代碼也不能去讀取數(shù)據(jù),你無法編寫一個程序命令比特幣的某筆交易獲取特定的參數(shù)。只有極少數(shù)例外,比如區(qū)塊CSV指令,允許比特幣腳本依賴區(qū)塊高度來做出反應(yīng)。對應(yīng)的,以太坊的虛擬機,都沒有這些阻礙。
但比特幣網(wǎng)絡(luò)依然可以承接特定的智能合約。P2SH交易格式允許在腳本里嵌入代碼,就可以用來實現(xiàn)特定的應(yīng)用場景。Core開發(fā)者在搞默克爾化抽象語法樹(MAST)就有望將比特幣腳本構(gòu)建更復(fù)雜的代碼。
BCH已經(jīng)實現(xiàn)了OP_CHECKSIGVERIFY這樣的操作碼,腳本可以驗證外部數(shù)據(jù)(Oracle),可以用來構(gòu)建去中心化仲裁的資產(chǎn)交易。如Bitcoin.com發(fā)布的local.bitcoin.com就是一個去中心化的資產(chǎn)交易平臺。這個操作碼還可以用來構(gòu)建去中心化的菠菜。
但無論是使用以太坊的智能合約平臺,還是使用比特幣腳本引擎來實現(xiàn)智能合約,都是將傳統(tǒng)的合同智能合約化改造的思路。這種思路顯然是手里有一把錘子,看什么都是釘子?,F(xiàn)在有了智能合約平臺,就像是有一把錘子,要把傳統(tǒng)的合同全拿這把錘子錘一下??墒聦嵣?,傳統(tǒng)的合同,在絕大多數(shù)情況下,是不需要被改造的。
這種思路是對智能合約的一種矮化。
就如上一篇文章《初步清晰理解智能合約》所描述的比特幣挖礦,就是一個非常完美的智能合約。挖礦是全新地創(chuàng)造了一個商業(yè)范式,一個智能化的商業(yè)范式。
這是智能合約發(fā)展的一個思路,創(chuàng)造全新的商業(yè)范式。
任何一條鏈,無論是PoW,還是PoS,其實都是一個類似的商業(yè)范式的案例。PoW鏈里,礦工交付工作量證明,幫用戶打包交易,系統(tǒng)發(fā)放Coinbase獎勵。PoS鏈里,節(jié)點交付幣齡證明,幫用戶驗證交易,系統(tǒng)發(fā)放鑄幣獎勵。
去中心化的交易所,參與買賣的交易雙方是點對點的,雙方在成交之前都是自己控制自己的資產(chǎn)。交易時,不存在第三方介入。去中心化的交易所也是一個無須授權(quán),自運行,公開透明的智能合約。
類似的Openbazaar,是一個去中心化的淘寶,參與者也是不需要注冊,系統(tǒng)自運行的商業(yè)平臺。需要注意的是,Openbazaar并不會記錄所有的商業(yè)交易。
或許,設(shè)計一個區(qū)塊鏈項目,首先想明白如何設(shè)計出一個商業(yè)邏輯自洽的智能合約。
尼克·薩博在提出智能合約這個概念時,還沒有誕生比特幣,更沒有以太坊。把智能合約限制在某個智能合約平臺上的自動化運行的程序,是對智能合約這個概念的矮化?;貧w智能合約的初心,降低商業(yè)成本,降低違約風(fēng)險,擴展商業(yè)范圍。