介紹

Nick Szabo 在 1990 年代首次描述了智能合約,當時他將智能合約定義為一種透過結合協定和用戶介面來規範和保護電腦網路的工具。

薩博討論了智慧合約在涉及合約協議的各個領域的潛在用途,例如信用系統、支付處理和內容版權管理。

在加密貨幣的世界中,我們可以將智慧合約定義為在區塊鏈上運行的應用程式或程式。一般來說,它們作為數位協定運行,由一組特定的規則強制執行。這些規則是由電腦程式碼預先定義的,並由網路中的所有節點複製和執行。

區塊鏈智能合約使創建無需信任的協議成為可能。這意味著兩方可以透過區塊鏈做出承諾,而無需彼此了解或信任。他們可以確定,如果不滿足條件,合約就不會履行。此外,使用智能合約可以消除對中介機構的需求,從而顯著降低營運成本。

儘管比特幣協議多年來一直支持智能合約,但它們是由以太坊創始人兼聯合創始人維塔利克·布特林(Vitalik Buterin)讓其流行起來的。然而,應該注意的是,每個區塊鏈可能提供不同的實現智能合約的方法。

本文重點介紹在以太坊虛擬機器(EVM)上運行的智慧合約,這是以太坊區塊鏈的重要組成部分。


那麼它們是如何運作的呢?

簡單來說,智能合約的工作原理就像是確定性程序。當滿足某些條件時,它會執行特定任務。因此,智慧合約系統通常遵循「如果…那麼…」的功能。但儘管有這個術語,智能合約沒有法律價值,而且不聰明。它只是在分散式系統(區塊鏈)上運行的程式碼。

在以太坊網路上,智慧合約負責執行和管理用戶(地址)相互互動時發生的區塊鏈操作。任何非智能合約的地址稱為外部擁有帳戶(EOA)。因此,智慧合約是由電腦程式碼控制的,而EOA是由使用者控制的。

基本上,以太坊智能合約由合約程式碼和兩個公鑰組成。第一個公鑰是由合約創建者提供的。另一個密鑰代表合約本身,充當每個智能合約唯一的數字識別碼。

智能合約的部署是透過區塊鏈交易進行的。它只能在被 EOA(或其他智能合約)呼叫時啟動。然而,第一個觸發總是由EOA(使用者)引起的。


主要特點

以太坊智能合約通常具有以下特徵:

分散式。智慧合約在以太坊網路的所有節點上複製和分佈。這是與依賴集中式伺服器的其他解決方案的主要區別之一。

決定論者。在滿足要求的情況下,智能合約僅執行其設計目的的操作。而且,無論誰執行它們,結果總是相同的。

自主性。智能合約可以自動執行各種任務,就像自動執行程式一樣。然而,在大多數情況下,如果智能合約沒有被觸發,它將保持「休眠」狀態並且不採取任何行動。

不變的。智能合約部署後無法修改。僅當先前已實現特定功能時才能「刪除」它們。所以,我們可以說智能合約可以提供防篡改的程式碼。

可客製化。在部署之前,智能合約可以以不同的方式進行編碼。因此,它們可用於創建多種類型的去中心化應用程式(DApp)。這是因為以太坊是圖靈完整的區塊鏈。

沒有信任。兩方或多方可以透過智能合約進行交互,而無需相互了解或信任。此外,區塊鏈技術保證了數據的準確性。

透明度。由於智能合約是基於公共區塊鏈,其原始程式碼不僅不可變,而且對每個人都可見。


我可以修改或刪除智能合約嗎?

以太坊智能合約部署後不可能再新增功能。然而,如果它的創建者在程式碼中包含一個名為 SELFDESTRUCT 的函數,他就能夠在將來「刪除」智能合約,並用新合約取代它。另一方面,如果該函數事先沒有包含在程式碼中,則無法刪除它。

值得注意的是,可擴展的智慧合約使開發人員在合約的不變性方面擁有更大的靈活性。創建可擴展的智能合約的方法有很多種,但複雜程度各不相同。

在一個簡化的例子中,想像一個智能合約被分成幾個小合約。其中一些被設計為不可變的,而另一些則啟用了“刪除”功能。這意味著部分程式碼(智慧合約)可以被刪除和替換,而其他功能保持不變。


優點和用例

作為可程式碼,智慧合約具有高度可自訂性,可以以不同的方式進行設計,提供多種類型的服務和解決方案。

作為去中心化、自動執行的程序,智慧合約可以提高透明度並降低營運成本。根據實施情況,它們還可以提高效率並減少管理費用。

智能合約在涉及兩方或多方之間資金轉移或交換的情況下特別有用。

換句話說,智能合約可以針對各種用例進行設計。例如創建代幣化資產、投票系統、加密貨幣錢包、去中心化交易所、遊戲和行動應用程式。它們還可以與其他解決醫療保健、慈善、供應鏈、治理和去中心化金融 (DeFi) 的區塊鏈解決方案一起部署。


ERC-20

在以太坊區塊鏈上發行的代幣遵循 ERC-20 標準。該標準描述了所有基於以太坊的代幣的基本功能。因此,這些數位資產通常被稱為 ERC-20 代幣,代表了現有加密貨幣的很大一部分。

許多區塊鏈公司和新創公司已經部署智慧合約在以太坊網路上發行數位代幣。發行後,大多數公司透過首次代幣發行(ICO)發行 ERC-20 代幣。在大多數情況下,智能合約的使用使得可靠、有效率地交換資金和分配代幣成為可能。


限制

智能合約由人類編寫的電腦程式碼組成。這帶來了許多風險,因為程式碼容易出現漏洞和錯誤。理想情況下,它們應該由經驗豐富的程式設計師編寫和部署,特別是當它們涉及敏感資訊或大量資金時。

此外,有些人認為中心化系統可以提供智慧合約提供的大部分解決方案和功能。主要區別在於智慧合約運行在分散式 P2P 網路上,而不是集中式伺服器。而且因為它們是基於區塊鏈系統,所以它們往往是不可變的或難以改變。

在某些情況下堅定不移可能會很好,但在其他情況下很糟糕。例如,2016 年,當一個名為「DAO」的去中心化自治組織 (DAO) 遭到駭客攻擊時,由於其智慧合約代碼存在缺陷,數百萬以太幣 (ETH) 被盜。

由於他們的智能合約是不可變的,開發人員無法修復程式碼。這最終導致了硬分叉,產生了第二條以太坊鏈。簡而言之,一條鏈可以「撤銷」駭客行為,並將資金返還給合法所有者(這是當前以太坊區塊鏈的一部分)。另一條鏈決定不干預駭客攻擊,指出區塊鏈上發生的事情永遠不應該改變(這條鏈現在稱為以太坊經典)。

值得注意的是,問題並非來自以太坊區塊鏈。相反,這是由於智能合約執行不力造成的。

智能合約的另一個限制與其不確定的法律地位有關。不僅因為它在大多數國家處於灰色地帶,還因為智能合約不適合當前的法律框架。

例如,許多合約要求雙方身份正確且年滿 18 歲。區塊鏈技術提供的匿名性,加上缺乏中介機構,可能會威脅到這些要求。儘管這個問題有潛在的解決方案,但智慧合約的法律可執行性是一個真正的挑戰,特別是在處理無邊界的分散式網路時。


批評

一些區塊鏈愛好者將智慧合約視為解決方案,它將很快取代並自動化我們大部分業務和管理系統。雖然這是可能的,但它可能還遠遠不是常態。

智能合約無疑是一項有趣的技術。但它們是分散式的、確定性的、透明的並且有些不可變的事實可能會使它們在某些情況下缺乏吸引力。

這種批評本質上是基於這樣一個事實:智能合約並不能成為解決許多現實世界問題的合適方案。事實上,一些組織受益於使用傳統的基於伺服器的解決方案。

與智慧合約相比,中心化伺服器的維護更容易、更便宜,並且在速度和跨網路通訊(互通性)方面往往會提高效率。


總結一下

毫無疑問,智能合約對加密貨幣世界產生了重大影響,而且它們無疑徹底改變了區塊鏈領域。儘管最終用戶不直接與智能合約交互,但他們可能會在未來為從金融服務到供應鏈管理等廣泛的應用程式提供支援。

智慧合約和區塊鏈一起有可能顛覆我們社會的幾乎每個領域。但只有時間才能證明這些革命性技術是否能夠克服廣泛採用的許多障礙。