前言
Nick Szabo 在 1990 年代首次描述了智能合約。那時,他將智能合約定義為一種工具,透過將協定與使用者介面相結合,將電腦網路正規化並確保其安全性。
Szabo 討論了智能合約在涉及合約協定的各個領域的潛在用途,例如信用體制、支付處理和內容權限管理。
區塊鏈智能合約允許建立去信任化協定。這表示雙方可以透過區塊鏈做出承諾,而不必認識或信任對方。他們可以肯定,如果條件不滿足,合約就不會被執行。除此以外,智能合約的使用可以消除對中介的需求,大大降低運營成本。
本文將重點介紹在以太虛擬機 (EVM) 上運行的智能合約,它是以太坊區塊鏈的一個重要組成部分。
它是如何運作的?
簡單來說,智能合約就像一個決定性程序。當滿足特定條件時,它就會執行特定任務。因此,智能合約系統通常遵循「if… then…」的陳述式。儘管術語很流行,但智能合約既非法律合約,亦不智能。它們只是運行在分布式系統 (區塊鏈) 上的一段程式碼。
在以太坊網路上,智能合約負責執行和管理使用者 (地址) 之間互動時發生的區塊鏈營運。任何不是智能合約的地址都被稱為外部擁有帳戶 (EOA)。因此,智能合約由電腦程式碼控制,而 EOA 由使用者控制。
基本上,以太坊智能合約由一個合約程式碼和兩個公鑰組成。第一個公鑰由合約的建立者提供。另一個公鑰代表合約本身,充當每個智能合約唯一的數位標識。
任何智能合約的部署都是透過區塊鏈交易進行,它們只有在被 EOA (或其他智能合約) 調用時才能被啟動。然而,第一次觸發總是由 EOA (使用者) 引起的。
主要功能
以太坊智能合約通常具有以下特點:
分散性。智能合約被複製並分散在以太坊網路的所有節點中。這是與其他基於中心化伺服器的解決方案的主要區別之一。
決定性。在滿足要求的情況下,智能合約只會執行它們被設計來做的行動。而且,無論誰來執行,結果都是一樣的。
自主性。智能合約可以將各種任務自動化,就像自動執行的程序一樣工作。不過,在大多數情況下,如果智能合約沒有被觸發,它將保持「休眠」狀態,不會執行任何行動。
不可變。智能合約在部署後不能被改變。只有在之前實現了某個特定功能的情況下,它們才能被「刪除」。因此,我們可以說,智能合約可以提供防篡改的程式碼。
去信任化。兩方或多方可以透過智能合約進行互動,而無需了解或信任對方。此外,區塊鏈技術保證了資料的準確性。
透明。由於智能合約基於公鏈,其原始碼不僅不可改變,而且任何人都可以看到。
我可以更改或刪除智能合約嗎?
在部署後,不可能向以太坊智能合約中新增新功能。然而,如果它的建立者在程式碼中包含一個名為 SELFDESTRUCT 的函數,他們就能夠在未來「刪除」智能合約,並用一個新的合約取代它。相對的,如果該函數未事先包含在程式碼中,他們就不能刪除它。
值得注意的是,所謂的可升級智能合約允許開發者對合約的不可變性有更多的彈性。有許多方法可以建立可升級的智能合約,但複雜程度各不相同。
舉一個簡化的例子,我們想像一下,一個智能合約被分成多個小合約。其中一些被設計成不可變的,而另一些則啟用了「刪除」功能。這代表部分程式碼 (智能合約) 可以被刪除和取代,而其他功能保持不變。
優點和用例
作為可編程的程式碼,智能合約具有高度可自訂性,它能以許多不同的方式設計,提供許多種服務和解決方案。
作為去中心化和自我執行的程序,智能合約可以提供更高的透明度和降低運營成本。根據實施情況,它們還可以提高效率並減少科層費用。
智能合約在涉及兩方或多方之間資金轉移或交換的情況下特別有用。
ERC-20
局限性
智能合約由人類編寫的電腦程式碼組成。這帶來了許多風險,因為程式碼會有漏洞和錯誤。理想情況下,它們應該由經驗豐富的程式設計師來編寫和部署,尤其是在涉及敏感訊息或大量資金時。
除此之外,有些人認為中心化系統可以提供智能合約所提供的大部分解決方案和功能。主要的區別在於,智能合約在分布式 P2P 網路上運行,而非在中心化伺服器上運行。而且,由於它們基於區塊鏈系統,它們往往不可改變,或是很難改變。
不可變性在某些情況下可能很好,但在其他情況下則會非常糟糕。例如,當一個名為「The DAO」的去中心化自治組織 (DAO) 在 2016 年遭到駭客攻擊時,由於其智能合約程式碼存在著缺陷,導致數百萬以太幣 (ETH) 被盜。
需要注意的是,問題並非來自以太坊區塊鏈。相反,它由一個有缺陷的智能合約實施所引起。
智能合約的另一個局限性與其不確定的法律地位有關。不僅因為它在大多數國家處於灰色地帶,而且還因為智能合約不適合當前的法律框架。
例如,許多合約要求雙方都要有合適的身份,而且年齡都要在 18 歲以上。區塊鏈技術所提供的匿名性,加上缺少中介,可能會威脅到這些要求。雖然對此有潛在的解決方案,但智能合約的法律之可執行性是一項困難的挑戰,特別是當它涉及到無邊界的分散式網路時。
批評
一些區塊鏈愛好者將智能合約視為一種解決方案,認為它將很快取代我們的大部分商業和科層系統,並實現自動化。雖然這是一個可能會發生的現實,但可能還要很久才會成為常態。
智能合約無疑是一項有趣的技術。但是,分散性、決定性、透明以及某種程度上的不可改變性,會使它們在某些情況下沒有那麼吸引人。
從本質上講,批評的依據是,智能合約並非許多現實世界問題的合適解決方案。事實上,部分公司企業使用傳統的基於伺服器的替代方案會更好一些。
與智能合約相比,中心化的伺服器更容易維護,成本也更低,而且在速度和跨網路通訊 (互操作性) 方面往往表現出更高的效率。
總結
毫無疑問,智能合約給加密貨幣世界帶來了很大的影響,它們無疑徹底改變了區塊鏈空間。雖然最終使用者可能不會直接與智能合約互動,但這些合約可能會在未來驅動著從金融服務到供應鏈管理的廣泛應用。
智能合約和區塊鏈加在一起,有可能會顛覆我們社會上幾乎每一個領域。但只有時間能證明,這種開創性的技術能否成功克服大規模採用的許多障礙。