智能合約是什麼?
首頁
文章
智能合約是什麼?

智能合約是什麼?

中等
發佈時間 Sep 16, 2019更新時間 Jun 9, 2023
9m

前言

Nick Szabo 在 1990 年代首次描述了智能合約。那時,他將智能合約定義為一種工具,透過將協定與使用者介面相結合,將電腦網路正規化並確保其安全性。

Szabo 討論了智能合約在涉及合約協定的各個領域的潛在用途,例如信用體制、支付處理和內容權限管理。

在加密貨幣的世界裡,我們可以把智能合約定義為一個在區塊鏈上運行的應用程式或程序。通常情況下,它們作為一種數位協定工作,由一組特定的規則來強制執行。這些規則由電腦程式碼預先定義,由所有網路節點複製和執行。

區塊鏈智能合約允許建立去信任化協定。這表示雙方可以透過區塊鏈做出承諾,而不必認識或信任對方。他們可以肯定,如果條件不滿足,合約就不會被執行。除此以外,智能合約的使用可以消除對中介的需求,大大降低運營成本。

雖然比特幣協定已經支援智能合約多年,但它們真正流行起來要得益於以太坊的創造者和聯合創始人 Vitalik Buterin。不過,值得注意的是,每個區塊鏈可能會呈現不同的實現智能合約的方法。 

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


它是如何運作的?

簡單來說,智能合約就像一個決定性程序。當滿足特定條件時,它就會執行特定任務。因此,智能合約系統通常遵循「if… then…」的陳述式。儘管術語很流行,但智能合約既非法律合約,亦不智能。它們只是運行在分布式系統 (區塊鏈) 上的一段程式碼。

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

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

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


主要功能

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

分散性。智能合約被複製並分散在以太坊網路的所有節點中。這是與其他基於中心化伺服器的解決方案的主要區別之一。

決定性。在滿足要求的情況下,智能合約只會執行它們被設計來做的行動。而且,無論誰來執行,結果都是一樣的。

自主性。智能合約可以將各種任務自動化,就像自動執行的程序一樣工作。不過,在大多數情況下,如果智能合約沒有被觸發,它將保持「休眠」狀態,不會執行任何行動。

不可變。智能合約在部署後不能被改變。只有在之前實現了某個特定功能的情況下,它們才能被「刪除」。因此,我們可以說,智能合約可以提供防篡改的程式碼。

可自訂。在部署之前,智能合約可以用許多不同的方式進行編碼。因此,它們可以用來建立許多類型的去中心化應用程式 (DApps)。這是因為以太坊是一個圖靈完備的區塊鏈。

去信任化。兩方或多方可以透過智能合約進行互動,而無需了解或信任對方。此外,區塊鏈技術保證了資料的準確性。

透明。由於智能合約基於公鏈,其原始碼不僅不可改變,而且任何人都可以看到。


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

在部署後,不可能向以太坊智能合約中新增新功能。然而,如果它的建立者在程式碼中包含一個名為 SELFDESTRUCT 的函數,他們就能夠在未來「刪除」智能合約,並用一個新的合約取代它。相對的,如果該函數未事先包含在程式碼中,他們就不能刪除它。

值得注意的是,所謂的可升級智能合約允許開發者對合約的不可變性有更多的彈性。有許多方法可以建立可升級的智能合約,但複雜程度各不相同。

舉一個簡化的例子,我們想像一下,一個智能合約被分成多個小合約。其中一些被設計成不可變的,而另一些則啟用了「刪除」功能。這代表部分程式碼 (智能合約) 可以被刪除和取代,而其他功能保持不變。


優點和用例

作為可編程的程式碼,智能合約具有高度可自訂性,它能以許多不同的方式設計,提供許多種服務和解決方案。

作為去中心化和自我執行的程序,智能合約可以提供更高的透明度和降低運營成本。根據實施情況,它們還可以提高效率並減少科層費用。

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

換句話說,智能合約可以為各式各樣的用例來設計。一些例子包括建立代幣化資產、投票系統、加密貨幣錢包、去中心化交易所、遊戲和手機應用程式。它們還可以與其他區塊鏈解決方案一起部署,這些解決方案涉及醫療保健慈善事業供應鏈治理去中心化金融 (DeFi) 等領域。


ERC-20

在以太坊區塊鏈上發行的代幣,遵循著一個稱為 ERC-20 的標準。該標準描述了所有基於以太坊的代幣的核心功能。因此,這些數位資產通常被稱為 ERC-20 代幣,它們代表了現有加密貨幣的大多數。
許多區塊鏈公司和初創公司為了在以太坊網路上發行數位代幣,都部署了智能合約。發行後,這些公司中的大多數透過首次代幣發行 (ICO) 活動分發他們的 ERC-20 代幣。在大多數情況下,智能合約的使用能以一種去信任化且有效的方式來進行資金交換和代幣分配。


局限性

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

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

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

由於他們的智能合約是不可變的,開發人員無法修復其程式碼。這最終導致了硬分叉,催生了第二條以太坊鏈。簡單地說,其中一條鏈「逆轉」了駭客行為,並將資金歸還給合法的所有者 (這是目前以太坊區塊鏈的一部分)。另一條鏈則決定不去干預駭客,聲稱區塊鏈上發生的事情不應該被改變 (這條鏈現在被稱為古典以太坊)。

需要注意的是,問題並非來自以太坊區塊鏈。相反,它由一個有缺陷的智能合約實施所引起。

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

例如,許多合約要求雙方都要有合適的身份,而且年齡都要在 18 歲以上。區塊鏈技術所提供的匿名性,加上缺少中介,可能會威脅到這些要求。雖然對此有潛在的解決方案,但智能合約的法律之可執行性是一項困難的挑戰,特別是當它涉及到無邊界的分散式網路時。


批評

一些區塊鏈愛好者將智能合約視為一種解決方案,認為它將很快取代我們的大部分商業和科層系統,並實現自動化。雖然這是一個可能會發生的現實,但可能還要很久才會成為常態。

智能合約無疑是一項有趣的技術。但是,分散性、決定性、透明以及某種程度上的不可改變性,會使它們在某些情況下沒有那麼吸引人。

從本質上講,批評的依據是,智能合約並非許多現實世界問題的合適解決方案。事實上,部分公司企業使用傳統的基於伺服器的替代方案會更好一些。 

與智能合約相比,中心化的伺服器更容易維護,成本也更低,而且在速度和跨網路通訊 (互操作性) 方面往往表現出更高的效率。


總結

毫無疑問,智能合約給加密貨幣世界帶來了很大的影響,它們無疑徹底改變了區塊鏈空間。雖然最終使用者可能不會直接與智能合約互動,但這些合約可能會在未來驅動著從金融服務到供應鏈管理的廣泛應用。

智能合約和區塊鏈加在一起,有可能會顛覆我們社會上幾乎每一個領域。但只有時間能證明,這種開創性的技術能否成功克服大規模採用的許多障礙。