智能合約的歷史
在全面闡述什么是智能合約之前,我們先回顧一下它創(chuàng)建的歷史背景,有助于理解它的重要性。
1994年,計算機科學家和密碼學家Nick Szabo首次提出“智能合約”概念。它早于區(qū)塊鏈概念的誕生。Szabo描述了什么是“以數(shù)字形式指定的一系列承諾,包括各方履行這些承諾的協(xié)議”。雖然有它的好處,但智能合約的想法一直未取得進展——主要是缺乏可以讓它發(fā)揮出作用的區(qū)塊鏈。
直到2008年,第一個加密貨幣比特幣才出現(xiàn),同時引入了現(xiàn)代區(qū)塊鏈技術(shù)。區(qū)塊鏈最初是以比特幣的底層技術(shù)出現(xiàn)的,各種區(qū)塊鏈分叉導(dǎo)致發(fā)生很大的變化。智能合約在2008年依然無法融入比特幣區(qū)塊鏈網(wǎng)絡(luò),但在五年后,以太坊讓它浮出水面。從此,涌現(xiàn)出了各種不同形式的智能合約,其中以太坊智能合約使用最廣。
智能合約的概念可以追溯到1994年,由Nick Szabo提出,但直到2008年才出現(xiàn)采用智能合約所需的區(qū)塊鏈技術(shù),而最終于2013年,作為以太坊智能合約系統(tǒng)的一部分,智能合約首次出現(xiàn)。
什么是智能合約
上面提到了歷史背景,下面從多個角度繼續(xù)探討。智能合約是一種特殊協(xié)議,旨在提供、驗證及執(zhí)行合約。具體來說,智能合約是區(qū)塊鏈被稱之為“去中心化的”重要原因,它允許我們在不需要第三方的情況下,執(zhí)行可追溯、不可逆轉(zhuǎn)和安全的交易。
智能合約包含了有關(guān)交易的所有信息,只有在滿足要求后才會執(zhí)行結(jié)果操作。智能合約和傳統(tǒng)紙質(zhì)合約的區(qū)別在于智能合約是由計算機生成的。因此,代碼本身解釋了參與方的相關(guān)義務(wù)。
事實上,智能合約的參與方通常是互聯(lián)網(wǎng)上的陌生人,受制于有約束力的數(shù)字化協(xié)議。本質(zhì)上,智能合約是一個數(shù)字合約,除非滿足要求,否則不會產(chǎn)生結(jié)果。
智能合約如何運作?
很多區(qū)塊鏈網(wǎng)絡(luò)使用的智能合約功能類似于自動售貨機。智能合約與自動售貨機類比:如果你向自動售貨機(類比分類賬本)轉(zhuǎn)入比特幣或其他加密貨幣,一旦輸入滿足智能合約代碼要求,它會自動執(zhí)行雙方約定的義務(wù)。
義務(wù)以“if then”形式寫入代碼,例如,“如果A完成任務(wù)1,那么,來自于B的付款會轉(zhuǎn)給A。”通過這樣的協(xié)議,智能合約允許各種資產(chǎn)交易,每個合約被復(fù)制和存儲在分布式賬本中。這樣,所有信息都不能被篡改或破壞,數(shù)據(jù)加密確保參與者之間的完全匿名。
雖然智能合約只能與數(shù)字生態(tài)系統(tǒng)的資產(chǎn)一起使用,不過,很多應(yīng)用程序正在積極探索數(shù)字貨幣之外的世界,試圖連接“真實”世界和“數(shù)字”世界。
智能合約根據(jù)邏輯來編寫和運作。只要滿足輸入要求,也就是說只要代碼編寫的要求被滿足,合約中的義務(wù)將在安全和去信任的網(wǎng)絡(luò)中得到執(zhí)行。
編程語言和程序
為了編寫智能合約,你必須使用智能合約語言(SCL)。這些是直接編寫智能合約或編譯成智能合約的編程語言。Solidity是一種編寫智能合約的編程語言,它在以太坊虛擬機上運行。它是一種面向合約的高級語言,其語法類似于JavaScript,主要針對以太坊EVM。
以太坊虛擬機(EVM)是以太坊上智能合約的運行環(huán)境。它實際上是完全隔離的,這意味著在EVM上運行的代碼無法訪問網(wǎng)絡(luò)、文件系統(tǒng)和其他進程。智能合約對其他的智能合約的訪問權(quán)也有限,在區(qū)塊鏈網(wǎng)絡(luò)上單獨運作。
在以太坊網(wǎng)絡(luò)上編寫智能合約有三個主要步驟:
1. 用以太坊高級語言編寫
2. 用EVM編譯器編譯成字節(jié)碼
3. 用以太坊客戶端上傳到區(qū)塊鏈網(wǎng)絡(luò)
對于智能合約和開源編碼感興趣的人,廣為人知的資源之一是GitHub。這是開發(fā)人員托管軟件代碼的在線平臺。你的每段代碼會存在存儲庫中,存儲庫基本上是一個存儲所有代碼組件的文件夾。
很多人把其他人的存儲庫復(fù)制和粘貼到自己的賬戶中,然后進行微調(diào)整,變成自己的。通過搜索項目和存儲庫來瀏覽頁面,可以幫你構(gòu)建自己的項目。一旦找到你所需要的存儲庫,打開它并搜索內(nèi)容,會包含大量有用代碼的復(fù)雜內(nèi)容。使用上述程序和資源,你也可以創(chuàng)建自己的智能合約。
智能合約是用SCL編寫的,以太坊智能合約功能歸功于以太坊虛擬機。這是以太坊上智能合約的運行環(huán)境。
智能合約的優(yōu)缺點
就像任何其他新的系統(tǒng)協(xié)議一樣,智能合約并不完美。使用智能合約有幾個優(yōu)點和缺點,包括更高的效率和缺乏監(jiān)管。具體來說:
使用智能合約的一些主要優(yōu)勢包括在處理文檔時的更高效率。這歸功于它能夠采用完全自動化的流程,不需要任何人為參與,只要滿足智能合約代碼所列出的要求即可。結(jié)果是,會節(jié)省時間,降低成本,交易更準確,且無法更改。
此外,智能合約去除任何第三方干擾,進一步增強了網(wǎng)絡(luò)的去中心化。
另一方面,智能合約的使用也會產(chǎn)生不少問題。一些缺點包括:人為錯誤、完全實施有困難、不確定的法律狀態(tài)。
雖然很多人把智能合約的不可逆轉(zhuǎn)特性看作是它的主要好處,但也有人認為一旦出現(xiàn)問題無法修改。因為人類會犯錯誤,在創(chuàng)建智能合約時也一樣,一些綁定協(xié)議可能包含錯誤,而它們是無法逆轉(zhuǎn)的。
此外,智能合約只能使用數(shù)字資產(chǎn),在連接現(xiàn)實資產(chǎn)和數(shù)字世界時會出現(xiàn)問題。最后也是最重要的是,智能合約缺乏法律監(jiān)管,只受制于代碼約定的義務(wù)。缺乏法律監(jiān)管可能會導(dǎo)致一些用戶對網(wǎng)絡(luò)上交易持謹慎態(tài)度,特別是它很重要的話。
使用智能合約的優(yōu)點是處理交易時效率更高,不可逆轉(zhuǎn),安全的交易以及全自動化流程。另外一個方面,缺點就是缺乏法律監(jiān)管,人為的錯誤和實施有困難。
智能合約的應(yīng)用
智能合約已在各種區(qū)塊鏈網(wǎng)絡(luò)中得以實施,其中最重要和最受歡迎的依然是比特幣和以太坊。雖然比特幣網(wǎng)絡(luò)以使用比特幣執(zhí)行交易聞名,它的協(xié)議也可以用來創(chuàng)建智能合約。比特幣實際上提供的是一種編程語言,允許創(chuàng)建自定義智能合約,比如支付通道。
以太坊則是目前為止最引人注目的智能合約框架,因為它是專門為支持智能合約的使用創(chuàng)建的。用Solidity語言編程,以太坊智能合約框架有助于促進去中心化網(wǎng)絡(luò),便于用智能合約處理交易。
除了加密貨幣之外,在不同行業(yè)的也有用戶場景,例如選舉、供應(yīng)鏈優(yōu)化、電子商務(wù)中可有效利用智能合約。
因此,加密愛好者看到了最近智能合約的發(fā)展,它與區(qū)塊鏈技術(shù)攜手合作,致力于改變數(shù)字化世界。
智能合約可以用比特幣和以太坊創(chuàng)建。各行各業(yè)可以從智能合約發(fā)展中受益,包括選舉、供應(yīng)鏈和電子商務(wù)等。
結(jié)論
智能合約真的智能嗎?它讓區(qū)塊鏈網(wǎng)絡(luò)上執(zhí)行的交易效率更高,同時,由于它是無法修改的,也由此要謹慎查看協(xié)議。
無論你如何看待智能合約,越來越多的項目正在尋找駕馭它的方法,它們很多是從以太坊智能合約開始的。隨著對智能合約的研究不斷推進,可以關(guān)注它取得的進展,但最重要的是,不要忘記智能合約在執(zhí)行交易方面的重要性,交易在區(qū)塊鏈網(wǎng)絡(luò)上是安全的、無須信任和分布式的。