導語

20世紀90年代,Nick Szabo首次提出智能合約的概念。當時,他把智能合約定義爲通過結合協議與用戶界面,規範和保障計算機網絡安全的工具。

Szabo探討了把智能合約運用於合同協議相關各領域的潛在用途,例如信用體系、支付流程和內容版權管理。

在加密貨幣領域,智能合約可界定爲運行在區塊鏈中的應用或程序。通常,它們作爲一種遵循特定規則強制執行的數字化協議發揮作用。這些規則由計算機代碼預定義,經所有網絡節點複製和執行。

區塊鏈智能合約支持創建去信任化協議。這意味着合約雙方通過區塊鏈做出承諾,而無需相互瞭解或信任。雙方確定,如果沒有達到條件,合約不會執行。此外,使用智能合約不再需要中間機構,從而顯著降低運行成本。

雖然智能合約已由比特幣協議支持多年,但藉由以太坊創造者兼聯合創始人Vitalik Buterin之手才普及開來。值得注意的是,各個區塊鏈實施智能合約的方式有所不同。 

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


智能合約如何運行?

簡單來說,智能合約是一種確定性程序,會在滿足某些條件時,執行特定任務。因此,智能合約系統通常遵循“如果……就……”的條件語句。雖然“智能合約”這個概念已廣爲人知,但它其實既非法定合約,也不智能。它們只是運行在區塊鏈分佈式系統中的一段代碼。

在以太坊網絡中,智能合約負責執行和管理用戶(地址)彼此交互時的區塊鏈操作。智能合約以外的地址稱爲“外部賬戶(EOA)”。因此,智能合約由計算機代碼控制,而外部賬戶(EOA)由用戶掌控。

以太坊智能合約基本上由合約代碼和兩個公鑰組成。第一個公鑰由合約創建者提供,另一個公鑰即爲合約本身,用作每個智能合約的唯一數字標識符。

所有的智能合約部署都通過區塊鏈交易進行,只有在外部賬戶(EOA)或其他智能合約被調用時纔會激活。但是,智能合約一般由外部賬戶(EOA),即用戶首次觸發。


關鍵特性

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

分佈式。智能合約在以太坊網絡的所有節點中複製和分佈。這與其他基於中心化服務器的解決方案截然不同。

確定性。滿足要求時,智能合約僅執行預先設計的操作。而且,無論由誰執行,結果均保持一致。

自主性。智能合約相對於“自執行”程序,會自動完成各種任務。大多數情況下,未觸發的智能合約保持“休眠”狀態,不會執行任何操作。

不變性。智能合約在部署後無法更改。只有實現特定功能後,智能合約纔可“刪除”。所以,我們不妨說,智能合約提供防篡改代碼。

定製化。部署之前,智能合約通過各種各樣的方式編碼。因此,可用於創建種類繁多的去中心化應用程序(DApp)。這與以太坊屬於圖靈完備區塊鏈這一事實息息相關。

去信任化。在無需相互瞭解或信任的情況下,兩方或多方可通過智能合約交互。此外,區塊鏈技術將確保數據準確無誤。

透明性。智能合約的基礎是公共區塊鏈,因此源代碼不僅不可篡改,而且對所有人公開透明。


智能合約是否可更改或刪除?

一經部署,以太坊智能合約無法再添加新的函數。但是,只要合約創建者在代碼中預留了“SELFDESTRUCT”函數,該函數之後即可“刪除”智能合約,並用新合約取而代之。如代碼中未預留該函數,則智能合約無法刪除。

值得注意的是,通過所謂的可升級智能合約,開發人員對合約的不變性可進行更靈活的操作。創建可升級智能合約的方式多種多樣,每種的複雜程度都有所不同。

舉個簡單的例子,假設一個智能合約劃分爲多個較小的合約。某些部分設計爲不可變更,而其他部分啓用“刪除”函數。也就是說,部分代碼(智能合約)可刪除和替換,而其他功能保持不變。


優勢和用例

作爲可編程代碼,智能合約高度可定製,設計方式衆多,提供豐富多樣的服務和解決方案。

作爲去中心化和自執行程序,智能合約可提高透明度並降低運行成本。根據具體實施情況,智能合約還可提高實施效率並降低繁瑣費用。

涉及到兩方或多方的資金轉賬或交易,智能合約尤爲實用。

換句話說,智能合約可針對豐富的用例量身打造,包括創建代幣化資產、投票系統、加密貨幣錢包、去中心化交易平臺、遊戲和移動App。智能合約還可與其他區塊鏈解決方案共同部署,覆蓋醫療保健、慈善、供應鏈、治理和去中心化金融(DeFi)等領域。


ERC-20

以太坊區塊鏈發佈的代幣遵循ERC-20標準。該標準規定所有以太坊代幣的核心功能。因此,這些數字資產通常稱爲“ERC-20代幣”,在現有加密貨幣中佔有很大的比重。

許多區塊鏈公司和初創公司都部署了智能合約,以便在以太坊網絡中自主發行數字代幣。代幣發行後,大多數公司通過首次代幣發行(ICO)來分配自家的ERC-20代幣。大多數情況下,使用智能合約即可通過去信任化的方式,有效實現資金交易和代幣分配。


侷限

智能合約由人工編寫的計算機代碼組成。代碼會存在缺陷與漏洞,將帶來諸多風險。按照理想的做法,智能合約應由經驗豐富的程序員編寫部署,涉及敏感信息和鉅額資金時更該如此。

除此之外,有人認爲中心化系統就能提供智能合約的絕大多數解決方案和功能。主要區別在於智能合約運行於分佈式P2P網絡中,而不是中心化的服務器。而且,智能合約以區塊鏈系統爲基礎,因此往往不可篡改或難以更改。

智能合約的不變性優勢明顯,但在某些情況下卻適得其反。例如,去中心化自治組織“The DAO”於2016年慘遭黑客攻擊,數百萬枚以太幣(ETH)不翼而飛,其原因就是智能合約代碼存在缺陷。

由於智能合約不可變,開發人員無法修復代碼。這最終導致了硬分叉,第二個以太坊鏈由此誕生。簡言之,一條鏈(當前以太坊區塊鏈的一部分)“恢復”到黑客攻擊之前的原樣,將資金返還原主。另一條鏈(現在稱爲“以太坊經典”)則決定不干預黑客攻擊,堅稱區塊鏈中發生的事件永遠不應並篡改。

需要注意的是,該問題並不是由以太坊區塊鏈造成,而是因智能合約的錯誤執行所引發。

智能合約的另一侷限性則與其不明確的法律效應相關。智能合約在大多數國家都處於灰色地帶,而且還不適用於當前的法律框架。

例如,許多合約要求交易雙方需通過恰當的實名認證且年齡超過18週歲。但區塊鏈技術具有匿名性,加之缺少中間機構,就會與合約要求相沖突。應對該問題的解決方案未來或許會出現。但智能合約運行於無國界的分佈式網絡中,法律執行難度非常大。


弊端

有些區塊鏈愛好者把智能合約視爲即將取代現有大部分商業和官僚系統的自治解決方案。雖然這個想法可能會實現,但要成爲常態還任重而道遠。

智能合約確實是一項有趣的技術。但是,分佈式、確定性、透明性和不變性等特徵有時反而降低了智能合約的吸引力。

智能合約的本質弊端在於其並不能很好地解決諸多現實問題。事實上,有些機構目前使用傳統的服務器解決方案纔是權宜之計。 

與智能合約相比,中心化服務器的維護更容易,成本更低,並且在速度和跨網絡通信(互操作性)方面往往具有較大優勢。


總結

毫無疑問,智能合約對加密貨幣領域產生了深遠影響,也確實爲區塊鏈領域帶來了重大變革。終端用戶不一定直接與智能合約交互。但在不久的將來,智能合約的應用會更廣泛,將覆蓋金融服務、供應鏈管理等各個領域。

智能合約和區塊鏈幾乎共同顛覆了當今社會的所有領域。但只有時間才能證明,這些突破性技術是否能突破重重障礙,最終實現大規模普及。