1993 年,計算機學家、密碼學家尼克·薩博(Nick Szabo)提出了 “智慧合約” 這一概念,他將其比作一種數字化的自動販售機。在其知名的例子中,他描述了使用者如何透過輸入資料與數值,從機器中接收物品的例子(在這個例子中,這些物品是指現實世界中的小吃或者軟飲)。
舉一個簡單的例子,以太坊使用者可以使用智慧合約在特定的日期向其朋友傳送 10 枚以太幣(ETH)。在這一案例中,使用者會建立一個合約,並向其中存入資料,以使其能夠執行使用者想要的命令。
以太坊是專門為建立智慧合約而構建的平臺。
但這些新的工具並非孤立使用。它們可以被用來構建去中心化應用(DApp),甚至是完全去中心化自治組織(DAO)的模組。
智慧合約的工作原理
值得注意的是,就比特幣網路支援 "從一個人到另一個人的價值轉移" 的意義而言,它是首個支援基本智慧合約的加密貨幣。比特幣節點僅在滿足某些條件的情況下才會驗證交易。但比特幣僅限於作為貨幣使用。
而以太坊以一種允許開發者編寫的程式語言取代了比特幣限制性更強的語言(一百多個指令碼的指令碼語言)。
以太坊允許開發者編寫其自己的智慧合約,或者如以太坊白皮書所稱的那樣 — — 自動化代理(autonomous agents)。該語言具有 “圖靈完備”(Turing-complete)性,這意味著它支援更為寬泛的計算指令。智慧合約可以:
· 以 “多簽名”(multi-signature)賬戶執行,因此只有在達到要求比例的人數同意時,相關資金才可被花掉;
· 管理使用者間的協議,例如,一使用者從另一使用者手中購買保險;
· 為其他合約提供實用程式(類似於軟體庫的工作方式);
· 儲存一個應用的資訊,如域名註冊資訊或者會員記錄。
數字的力量
根據最後一點推斷,一個 “智慧合約” 可能需要其他 “智慧合約“ 的幫助。
當有人對炎熱夏日溫度進行簡單預測時,其可能觸發一系列合約。一份合約會使用外部資料來判別天氣,另一份合約可能會在相關條件滿足後,基於其所接收到的第一份合約的資訊,來決定如何下注。
執行每份合約需要以太幣交易費用,其數額取決於所需算力的大小。
如我們在 “How Ethereum Works” 一文中所闡釋的,當使用者或者另一份智慧合約消耗足夠的交易費用向其傳送資訊時,以太坊會執行智慧合約。然後以太坊虛擬機器以 “位元組碼” 或一系列可以被網路讀取和解釋的 “0” 和 “1” 來執行智慧合約。