介紹
Nick Szabo 在 20 世紀 90 年代首次描述了智能合約。當時,他將智能合約定義爲一種通過將協議與用戶界面相結合來形式化和保護計算機網絡的工具。
薩博討論了智能合約在涉及合同協議的各個領域的潛在用途,例如信用系統、支付處理和內容版權管理。
在加密貨幣的世界中,我們可以將智能合約定義爲在區塊鏈上運行的應用程序或程序。通常,它們作爲由一組特定規則強制執行的數字協議。這些規則是由計算機代碼預定義的,由所有網絡節點複製和執行。
區塊鏈智能合約允許創建無需信任的協議。這意味着兩方可以通過區塊鏈做出承諾,而無需彼此瞭解或信任。他們可以確定,如果條件不滿足,合同就不會執行。除此之外,智能合約的使用可以消除對中介機構的需求,從而顯着降低運營成本。
儘管比特幣協議多年來一直支持智能合約,但它們是由以太坊的創建者和聯合創始人維塔利克·布特林 (Vitalik Buterin) 推動流行起來的。但值得注意的是,每個區塊鏈可能提供不同的實現智能合約的方法。
本文將重點介紹在以太坊虛擬機(EVM)上運行的智能合約,這是以太坊區塊鏈的重要組成部分。
它們如何工作?
簡單來說,智能合約充當確定性程序。當滿足某些條件時,它會執行特定任務。因此,智能合約系統通常遵循“如果……那麼……”語句。但儘管有流行的術語,智能合約並不是法律合約,也不是智能合約。它們只是在分佈式系統(區塊鏈)上運行的一段代碼。
在以太坊網絡上,智能合約負責執行和管理用戶(地址)相互交互時發生的區塊鏈操作。任何非智能合約的地址都稱爲外部擁有賬戶(EOA)。因此,智能合約是由計算機代碼控制的,而EOA是由用戶控制的。
基本上,以太坊智能合約由合約代碼和兩個公鑰組成。第一個公鑰是由合約創建者提供的。另一個密鑰代表合約本身,充當每個智能合約唯一的數字標識符。
任何智能合約的部署都是通過區塊鏈交易完成的,並且只有在被 EOA(或其他智能合約)調用時才能激活。然而,第一個觸發總是由EOA(用戶)引起的。
主要特徵
以太坊智能合約通常具有以下特徵:
分散式。智能合約被複制並分佈在以太坊網絡的所有節點中。這是與其他基於集中式服務器的解決方案的主要區別之一。
確定性的。智能合約僅在滿足要求的情況下執行其設計的操作。而且,無論誰執行它們,結果總是相同的。
自主性。智能合約可以自動執行各種任務,就像自動執行程序一樣。但在大多數情況下,如果智能合約沒有被觸發,它將保持“休眠”狀態並且不會執行任何操作。
不變的。智能合約部署後無法更改。僅當先前實現了特定功能時才能“刪除”它們。因此,我們可以說智能合約可以提供防篡改代碼。
可定製。在部署之前,智能合約可以通過多種不同的方式進行編碼。因此,它們可用於創建多種類型的去中心化應用程序(DApp)。這與以太坊是圖靈完備的區塊鏈有關。
不信任。兩方或多方可以通過智能合約進行交互,而無需相互瞭解或信任。此外,區塊鏈技術保證了數據的準確性。
透明的。由於智能合約基於公共區塊鏈,因此其源代碼不僅不可變,而且對任何人都可見。
我可以更改或刪除智能合約嗎?
部署後不可能向以太坊智能合約添加新功能。但是,如果其創建者在代碼中包含一個名爲“SELFDESTRUCT”的函數,他們將來就能夠“刪除”智能合約 - 並將其替換爲新合約。但相比之下,如果該函數事先未包含在代碼中,他們將無法刪除它。
值得注意的是,所謂的可升級智能合約使開發人員能夠比合約的不變性擁有更大的靈活性。創建可升級智能合約的方法有很多種,但複雜程度各不相同。
舉一個簡單的例子,我們假設一個智能合約被分成多個更小的合約。其中一些被設計爲不可變的,而另一些則啓用了“刪除”功能。這意味着部分代碼(智能合約)可以被刪除和替換,而其他功能保持不變。
優點和用例
作爲可編程代碼,智能合約具有高度可定製性,可以通過多種不同的方式進行設計,提供多種服務和解決方案。
作爲去中心化和自動執行的程序,智能合約可以提高透明度並降低運營成本。根據實施情況,它們還可以提高效率並減少官僚開支。
智能合約在涉及兩方或多方之間資金轉移或交換的情況下特別有用。
換句話說,智能合約可以針對各種用例進行設計。一些例子包括創建代幣化資產、投票系統、加密錢包、去中心化交易所、遊戲和移動應用程序。它們還可以與其他涉及醫療保健、慈善、供應鏈、治理和去中心化金融(DeFi)領域的區塊鏈解決方案一起部署。
ERC-20
在以太坊區塊鏈上發行的代幣遵循 ERC-20 標準。該標準描述了所有基於以太坊的代幣的核心功能。因此,這些數字資產通常被稱爲 ERC-20 代幣,它們代表了現有加密貨幣的很大一部分。
許多區塊鏈公司和初創公司部署了智能合約,以便在以太坊網絡上發行數字代幣。發行後,大多數公司通過首次代幣發行(ICO)活動分發了 ERC-20 代幣。在大多數情況下,智能合約的使用使得資金交換和代幣分配能夠以無需信任且高效的方式進行。
侷限性
智能合約由人類編寫的計算機代碼組成。這帶來了許多風險,因爲代碼容易出現漏洞和錯誤。理想情況下,它們應該由經驗豐富的程序員編寫和部署,特別是在涉及敏感信息或大量資金時。
除此之外,一些人認爲中心化系統可以提供智能合約提供的大部分解決方案和功能。主要區別在於智能合約運行在分佈式 P2P 網絡上,而不是集中式服務器上。由於它們基於區塊鏈系統,因此它們往往是不可變的或很難改變。
在某些情況下,一成不變可能很好,但在其他情況下卻很糟糕。例如,當一個名爲“The DAO”的去中心化自治組織(DAO)在 2016 年遭到黑客攻擊時,由於其智能合約代碼存在缺陷,數百萬以太幣(ETH)被盜。
由於他們的智能合約是不可變的,開發人員無法修復代碼。這最終導致了硬分叉,誕生了第二條以太坊鏈。簡而言之,一條鏈“恢復”了黑客行爲,並將資金返還給合法所有者(這是當前以太坊區塊鏈的一部分)。另一條鏈決定不干預黑客攻擊,聲明區塊鏈上發生的事情永遠不應該改變(這條鏈現在稱爲以太坊經典)。
值得注意的是,問題並非來自以太坊區塊鏈。相反,這是由於智能合約執行錯誤造成的。
智能合約的另一個侷限性與其不確定的法律地位有關。不僅因爲它在大多數國家處於灰色地帶,還因爲智能合約不適合當前的法律框架。
例如,許多合同要求雙方身份正確且年滿 18 歲。區塊鏈技術提供的匿名性,加上缺乏中介機構,可能會威脅到這些要求。儘管有潛在的解決方案,但智能合約的法律可執行性是一個真正的挑戰 - 特別是當涉及到無邊界的分佈式網絡時。
批評
一些區塊鏈愛好者將智能合約視爲一種解決方案,它將很快取代並自動化我們大部分商業和官僚系統。雖然這是可能的現實,但它可能遠未成爲常態。
智能合約無疑是一項有趣的技術。但是,分佈式、確定性、透明和某種程度上的不可變性可能會降低它們在某些情況下的吸引力。
從本質上講,批評基於這樣一個事實:智能合約並不是解決許多現實世界問題的合適解決方案。事實上,一些組織最好使用傳統的基於服務器的替代方案。
與智能合約相比,中心化服務器的維護更容易、更便宜,並且在速度和跨網絡通信(互操作性)方面往往表現出更高的效率。
結束語
毫無疑問,智能合約對加密貨幣世界產生了巨大影響,它們無疑徹底改變了區塊鏈領域。雖然最終用戶可能不會直接與智能合約交互,但它們可能會在未來爲從金融服務到供應鏈管理等廣泛的應用程序提供支持。
智能合約和區塊鏈一起有可能顛覆我們社會的幾乎所有領域。但只有時間才能證明這些突破性技術是否能夠克服大規模採用的諸多障礙。