就像其他許多區(qū)塊鏈產(chǎn)業(yè)的點子一樣,人們也對「智能合約」抱著無比的疑惑。智能合約這個名詞誤導(dǎo)了人們對于智能合約合約核心運作模式的理解,因此這個透過區(qū)塊鏈達(dá)成的技術(shù)讓人們不是很好理解。
一個我們?nèi)粘I钪兴岬降暮霞s,是指一種通常透過法律作為強制力的兩造關(guān)系。但是智能合約的強制力是透過加密的程序所達(dá)成的。換句話說智能合約是一些我們寫好的程序,而且這些程序會照著程序開發(fā)者當(dāng)初設(shè)定的內(nèi)容運作。
在1993年,智能合約這個概念才被提出來。提出者是Nick Szabo,他是一位電腦科學(xué)家也是一位密碼學(xué)家。他最早把智能合約描述為一種數(shù)位販賣機的概念。在他的例子中,他描述使用者如何能輸入數(shù)據(jù)或數(shù)值,從機器去換取有限的物品,在這個例子中這有限的物品是零食和氣泡飲料。
在一個簡單的例子中,以太坊使用者可以利用智能合約,在指定時間,傳送10個以太幣給自己的朋友。
在這個例子中,使用者可以寫一個智能合約,并且給予合約所需的數(shù)據(jù),然后合約就可以執(zhí)行我們所需的任務(wù)。
但其實這個新工具不是被設(shè)計為單獨使用。人們相信我們可以透過智能合約技術(shù),去達(dá)成去中心化應(yīng)用程序(Dapp),甚至是一個去中心化自己運作的公司(DAO)。
智能合約是如何運作的?
我們必須注意到,其實比特幣就已經(jīng)支持某些基本的智能合約功能。在交易被發(fā)出去以后,比特幣網(wǎng)絡(luò)上的節(jié)點可以設(shè)定在某些狀況才去驗證之前發(fā)出去的交易。但是比特幣被局限在僅能當(dāng)作貨幣用途使用。
相反的,以太坊把比特幣較為受限的語言(比特幣是大概一百多個腳本所構(gòu)成的腳本語言,詳見bitcoin wiki),用一個允許軟件工程師任意發(fā)揮他們能力的語言取代。
以太坊允許開發(fā)者去開發(fā)他們自己的智能合約,或者用以太坊白皮書里面的說法?—?自動代理人(autonomous agents)。并且以太坊提供的語言是圖靈完備的,代表說它能支持更多的計算指令。
智能合約能做到:
· 多重簽名,這樣資金可以只有在指定一群人中達(dá)到指定比例的人同意后才能被花費。
· 管理多個使用者之間的合約、協(xié)議。就像是紀(jì)錄是某個人向另個人買了保險。
· 提供其他合約所需的功能及服務(wù)。(就像是寫軟件時所需要用到的函式庫)
· 做應(yīng)用軟件的紀(jì)錄,比如說像是域名申請的信息或者是會員資料紀(jì)錄。
群眾的力量
從最后一點就可以推斷,智能合約很可能需要來自其他智能合約功能上的支持。比如說有人寫了一個能在夏天對氣溫下Du的簡單智能合約。這個合約可能就會觸發(fā)其他合約。一個合約負(fù)責(zé)從外部得到天氣信息,另個合約負(fù)責(zé)Du博所需要的計算,他就可以透過第一個合約回傳的數(shù)據(jù)去計算賠率。
在運作智能合約的時候需要支付以太幣當(dāng)作交易手續(xù)費。而這個交易手續(xù)費會隨著所需計算指令數(shù)量的增加而增加。