對於任何一個商業體,無非是經營三種流:信息流、資金流(價值流)和物流,而這背後都要有信任流做支撐。
實體經濟時代:
信息流、資金流和物流歸屬於中心化機構,信任錨是權力中心;
網際網路經濟時代:
信息流、資金流和物流歸屬於商業組織,信任錨是法律和合同;
分布式商業時代:
信息流、資金流和物流將歸屬於社區,信任錨變成了代碼(智能合約)。
一個智能合約(Smart contract)是一套以數字形式定義的承諾(promises),包括合約參與方可以在上面執行這些承諾的協議。
計算機科學家、密碼學家、法律學者尼克·薩博(Nick Szabo)在1994年首次提出智能合約。
最開始的智能合約是中心化智能合約,如信用卡自動還款、自動售貨機等,不過中心化智能合約因為信任問題導致難以廣泛應用。
而區塊鏈天然適合承載智能合約,區塊鏈去中心化,不可篡改,透明可追溯,永久運行,互相印證這些特徵令智能合約有了廣泛應用的可能。
到底智能合約是什麼?
智能合約是以一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。就是用計算機語言取代了法律語言記錄條款並由程序自動執行的合約。 換句話說,智能合約就是傳統合同的數位化版本,它跑在區塊鏈網絡上,程序自動執行。由於區塊鏈的去中心化,不可篡改,透明可追溯等特性,因此一旦觸發協議條款,不用擔心其不會執行命令。 它實現了用戶從信任第三方機構到信任合同本身,從信任參與方到信任代碼的轉變。
區塊鏈和智能合約的關係可以抽象成「區塊鏈上負責數據的存儲」、「智能合約負責業務的處理邏輯」這樣。
區塊鏈智能合約的技術實現有腳本方式以及虛擬機方式。
腳本方式只能執行簡單邏輯,拓展性差如比特幣,以及比特幣的分叉Token:BCH、競爭Token、萊特幣等,被稱為區塊鏈1.0。
後來,又有了虛擬機方式,是重要組件,部署和執行智能合約。為了使區塊鏈系統能夠支持各類定製邏輯(智能合約),動態加載並執行,以太坊在設計時引入了虛擬機(EVM),正是因為EVM的存在,使得以太坊成為圖靈完備的系統,可以認為EVM是以太坊對區塊鏈創新的最大貢獻。單一款虛擬機,被稱為區塊鏈2.0。
之後又擴展出多種多種類型的虛擬機:比如WASM(可以支持C++編寫智能合約), JVM( Javascript編寫智能合約,Javascript開發者眾多,降低區塊鏈開發門檻,一個JS程式設計師就可單獨進行Dapp開發,快速並提高開發效率)。
如今區塊鏈智能合約實現技術有棧式執行的比特幣OP操作指令、虛擬機執行的以太坊SOLIDITY語言編寫的程序、Docker虛擬機執行的Fabric編寫的程序等,這些實現技術可以說各有優缺。
區塊鏈智能合約的運作過程為智能合約編寫(編寫合約內容Go,Sol i di ty, C++,Javascri pt)-編譯(合約編譯成字節碼)-部署到區塊鏈(全網節點驗證區塊鏈上的驗證節點事件與合約內容進行籤名驗證)-執行(自動執行結果,驗證節點對該事件達成共識後,智能合約將成功執行)。