20世紀90年代,Nick Szabo首次提出智能合約的概念。當時,他把智能合約定義為透過結合協定與使用者介面,規範與保障電腦網路安全的工具。
Szabo探討了把智能合約運用於合約協議相關各領域的潛在用途,例如信用體系、支付流程和內容版權管理。
在加密貨幣領域,智能合約可界定為運行在區塊鏈中的應用或程序。通常,它們作為遵循特定規則強制執行的數位化協議發揮作用。這些規則由電腦程式碼預先定義,經所有網路節點複製和執行。
區塊鏈智慧合約支援創建去信任化協議。這意味著合約雙方透過區塊鏈做出承諾,而無需相互了解或信任。雙方確定,如果沒有達到條件,合約不會執行。此外,使用智慧合約不再需要中間機構,從而顯著降低營運成本。
雖然智能合約已由比特幣協議支持多年,但藉由以太坊創造者兼聯合創始人Vitalik Buterin之手才普及開來。值得注意的是,各個區塊鏈實施智慧合約的方式有所不同。
本文將重點放在運行在以太坊虛擬機(EVM)中的智慧合約,而以太坊虛擬機是以太坊區塊鏈的重要組成部分。
簡單來說,智能合約是一種確定性程序,會在滿足某些條件時,執行特定任務。因此,智慧合約系統通常遵循“如果……就……”的條件語句。雖然“智能合約”這個概念已廣為人知,但它其實既非法定合約,也不智能。它們只是運行在區塊鏈分散式系統中的一段程式碼。
在以太坊網路中,智慧合約負責執行和管理用戶(地址)彼此互動時的區塊鏈操作。智慧合約以外的地址稱為“外部帳戶(EOA)”。因此,智慧合約由電腦程式碼控制,而外部帳戶(EOA)由使用者掌控。
以太坊智能合約基本上由合約代碼和兩個公鑰組成。第一個公鑰由合約創建者提供,另一個公鑰即為合約本身,用作每個智能合約的唯一數字識別碼。
所有的智慧合約部署都透過區塊鏈交易進行,只有在外部帳戶(EOA)或其他智慧合約被呼叫時才會啟動。但是,智能合約一般由外部帳戶(EOA),即使用者首次觸發。
以太坊智能合約有以下常見特徵:
分佈式。智慧合約在以太坊網路的所有節點中複製和分佈。這與其他基於中心化伺服器的解決方案截然不同。
確定性。滿足要求時,智能合約僅執行預先設計的操作。而且,無論由誰來執行,結果均保持一致。
自主性。智能合約相對於“自執行”程序,會自動完成各種任務。大多數情況下,未觸發的智能合約保持“休眠”狀態,不會執行任何操作。
不變性。智能合約在部署後無法變更。只有實現特定功能後,智能合約才可“刪除”。所以,我們不妨說,智能合約提供防篡改程式碼。
客製化。在部署之前,智能合約透過各種各樣的方式編碼。因此,可用於創建種類繁多的去中心化應用程式(DApp)。這與以太坊屬於圖靈完備區塊鏈這一事實息息相關。
去信任化。在無需相互了解或信任的情況下,兩方或多方可透過智能合約互動。此外,區塊鏈技術將確保數據準確無誤。
透明性。智能合約的基礎是公共區塊鏈,因此原始碼不僅不可篡改,而且對所有人公開透明。
一經部署,以太坊智能合約無法再增加新的函數。但是,只要合約創建者在程式碼中預留了“SELFDESTRUCT”函數,該函數之後即可“刪除”智能合約,並用新合約取而代之。如程式碼中未預留該函數,則智慧合約無法刪除。
值得注意的是,透過所謂的可升級智能合約,開發人員對合約的不變性可進行更靈活的操作。創建可升級智能合約的方式多種多樣,每種的複雜程度都有所不同。
舉個簡單的例子,假設一個智能合約分為多個較小的合約。某些部分設計為不可變更,而其他部分啟用“刪除”函數。也就是說,部分程式碼(智慧合約)可刪除和替換,而其他功能保持不變。
作為可程式碼,智慧合約高度可定制,設計方式眾多,提供豐富多樣的服務和解決方案。
作為去中心化和自執行程序,智慧合約可提高透明度並降低營運成本。根據具體實施情況,智能合約還可提高實施效率並降低繁瑣費用。
涉及兩方或多方的資金轉帳或交易,智能合約特別實用。
換句話說,智能合約可針對豐富的用例量身打造,包括創建代幣化資產、投票系統、加密貨幣錢包、去中心化交易平台、遊戲和移動App。智慧合約還可與其他區塊鏈解決方案共同部署,涵蓋醫療保健、慈善、供應鏈、治理和去中心化金融(DeFi)等領域。
以太坊區塊鏈發布的代幣遵循ERC-20標準。該標準規定所有以太坊代幣的核心功能。因此,這些數位資產通常稱為“ERC-20代幣”,在現有加密貨幣中佔有很大的比重。
許多區塊鏈公司和新創公司都部署了智慧合約,以便在以太坊網路中自主發行數位代幣。代幣發行後,大多數公司透過首次代幣發行(ICO)來分配自家的ERC-20代幣。大多數情況下,使用智能合約即可透過去信任化的方式,有效實現資金交易和代幣分配。
智慧合約由人工編寫的電腦程式碼組成。程式碼會存在缺陷與漏洞,將帶來許多風險。按照理想的做法,智能合約應由經驗豐富的程式設計師編寫部署,涉及敏感資訊和巨額資金時更該如此。
除此之外,有人認為中心化系統就能提供智慧合約的絕大多數解決方案和功能。主要區別在於智能合約運行於分散式P2P網路中,而不是中心化的伺服器。而且,智能合約以區塊鏈系統為基礎,因此往往不可篡改或難以更改。
智能合約的不變性優勢明顯,但在某些情況下卻適得其反。例如,去中心化自治組織“The DAO”於2016年慘遭駭客攻擊,數百萬枚以太幣(ETH)不翼而飛,其原因就是智慧合約程式碼有缺陷。
由於智慧合約不可變,開發人員無法修復程式碼。這最終導致了硬分叉,第二個以太坊鏈由此誕生。簡言之,一條鏈(當前以太坊區塊鏈的一部分)“恢復”到黑客攻擊之前的原樣,將資金返還原主。另一條鏈(現在稱為“以太坊經典”)則決定不干預駭客攻擊,堅稱區塊鏈中發生的事件永遠不應並篡改。
要注意的是,這個問題並非由以太坊區塊鏈造成,而是因智慧合約的錯誤執行所引發。
智能合約的另一個限制則與其不明確的法律效應有關。智能合約在大多數國家都處於灰色地帶,而且還不適用於當前的法律框架。
例如,許多合約要求交易雙方需通過適當的實名認證且年齡超過18歲。但區塊鏈技術具有匿名性,加上缺乏中間機構,就會與合約要求相衝突。應對該問題的解決方案未來或許會出現。但智慧合約運作於無國界的分散式網路中,法律執行難度非常大。
有些區塊鏈愛好者把智慧合約視為即將取代現有大部分商業和官僚系統的自治解決方案。雖然這個想法可能會實現,但要成為常態還任重道遠。
智能合約確實是一項有趣的技術。但是,分散式、確定性、透明性和不變性等特徵有時反而降低了智能合約的吸引力。
智能合約的本質弊端在於其並不能很好地解決諸多現實問題。事實上,有些機構目前使用傳統的伺服器解決方案才是權宜之計。
與智慧合約相比,中心化伺服器的維護更容易,成本更低,並且在速度和跨網路通訊(互通性)方面往往具有較大優勢。
毫無疑問,智慧合約對加密貨幣領域產生了深遠影響,也確實為區塊鏈領域帶來了重大變革。終端用戶不一定直接與智能合約互動。但在不久的將來,智能合約的應用將會更廣泛,將涵蓋金融服務、供應鏈管理等各個領域。
智慧合約和區塊鏈幾乎共同顛覆了當今社會的所有領域。但只有時間才能證明,這些突破性技術是否能突破重重障礙,最終實現大規模普及。