區(qū)塊鏈的智能合約是什么意思?
智能合約這一概念是由Nick Szabo于1994年提出,該合約被定義為“一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”。不同于傳統(tǒng)合約,該合約基于區(qū)塊鏈技術(shù)而發(fā)展、以數(shù)字為表現(xiàn)形式并主要通過計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)而自動(dòng)執(zhí)行。人們對(duì)其最為常見的認(rèn)識(shí)就是將其視為是一段自動(dòng)運(yùn)行的代碼,一段由計(jì)算機(jī)自動(dòng)執(zhí)行的程序,當(dāng)預(yù)設(shè)的觸發(fā)條件成就時(shí)合約即自動(dòng)執(zhí)行,相較于一般的電子合約來說更進(jìn)一步。
但是,只有結(jié)合了區(qū)塊鏈技術(shù)、分布式記賬技術(shù)的代碼合約才可以被視為真正的智能合約,而該合約的核心則是區(qū)塊鏈技術(shù)。區(qū)塊鏈技術(shù)具體表現(xiàn)為一種“開放的分布式數(shù)據(jù)庫”,該技術(shù)使得該合約可以在一種完全公開、透明和不可被篡改的環(huán)境中運(yùn)行。在這種環(huán)境的理想運(yùn)作下,合約雙方不再需要特定的企業(yè)來擔(dān)任中間商或擔(dān)保機(jī)構(gòu),所有交易都是公開透明的,即實(shí)現(xiàn)了“去中心化”、“去信任化”的目標(biāo)。
區(qū)塊鏈的提出使智能合約的執(zhí)行獲得了可信的環(huán)境,比特幣交易中的輸出條件是用腳本描述的,這也是智能合約的雛形。以太坊首先實(shí)現(xiàn)了區(qū)塊鏈和智能合約的完美契合。
在智能合約的概念模式如圖,一般而言,智能合約封裝預(yù)定義的若干狀態(tài)、轉(zhuǎn)換規(guī)則、觸發(fā)條件以及應(yīng)對(duì)操作等,經(jīng)各方簽署后以程序代碼的形式附著在區(qū)塊鏈數(shù)據(jù)上,經(jīng)對(duì)等計(jì)算機(jī)網(wǎng)絡(luò)傳播和節(jié)點(diǎn)驗(yàn)證后記入各個(gè)節(jié)點(diǎn)的分布式賬本中,區(qū)塊鏈可以實(shí)時(shí)監(jiān)控整個(gè)智能合約的狀態(tài),在核查外部數(shù)據(jù)源確認(rèn)滿足特定的觸發(fā)條件后激活并執(zhí)行合約。
以太坊是目前開發(fā)智能合約最常用的平臺(tái),特定的基于堆棧的二進(jìn)制字節(jié)碼(即以太坊虛擬機(jī)字節(jié)碼)組成了以太坊的智能合約。這個(gè)合約可以利用Solidity、Serpent、LLL等高級(jí)語言編寫,然后編譯為EVM字節(jié)碼存儲(chǔ)執(zhí)行。
以太坊中智能合約是存儲(chǔ)在以太坊區(qū)塊鏈中特定地址的代碼(功能)和數(shù)據(jù)(狀態(tài))的集合。智能合約以消息的形式在網(wǎng)絡(luò)中傳播,以太坊中合約則是存儲(chǔ)于交易之中。EVM判斷一個(gè)交易是否為合約類的依據(jù)是該交易中是否存在代碼,若交易信息是代碼則該合約得以執(zhí)行。若在執(zhí)行過程中發(fā)現(xiàn)某合約賬戶不存在則會(huì)自動(dòng)創(chuàng)建合約地址,并將合約存入該賬戶。
雖然以太坊中智能合約可用于實(shí)現(xiàn)與比特幣類似的賬戶余額認(rèn)證方案,但其與比特幣腳本程序存在顯著差別:合約是圖靈完備的;合約非無狀態(tài)的,它們可以存儲(chǔ)計(jì)算數(shù)據(jù);任意合約杰克從其他合約處獲取部分?jǐn)?shù)據(jù)。