智能合約是儲存在區塊鏈網路上的自動執行程式碼,當條件滿足時,無需中介即可自動執行協議。智能合約透過透明且可靠的規則執行,為應用程式、DeFi、NFT 和 DAO 提供動力。智能合約並非專屬於某一特定網路;Ethereum 及其他 EVM 相容區塊鏈、Solana、Cardano、Polkadot 和 Sui 均可執行智能合約,各自使用不同的程式語言和執行模型。由於智能合約存在於鏈上,它無需中介即可運行,任何人都可以查看其規則,且一旦部署,通常無法更改。智能合約是大多數區塊鏈應用程式的基礎構件,包括 DeFi 協議、穩定幣、NFT 和 DAO。
免責聲明:本指南僅供教育目的使用,不構成財務建議、招攬,亦不適用於英國受眾。與智能合約互動存在風險,並不適合所有用戶。
智能合約的運作方式
開發者編寫合約並將其一次性部署至區塊鏈。從那時起,任何人都可以與之互動,當條件被觸發時,合約即執行其邏輯——例如,收到付款後釋放代幣,或允許用戶在達到特定區塊高度後提取資金。兩個特性定義了所有支援智能合約的網路:執行是自動的,無需中間人;程式碼預設不可更改,因此除非合約專門設計為可升級,否則漏洞將永久存在。
執行智能合約也需要一定費用。每個網路都會收取網路費用,以處理合約所使用的運算和儲存資源——在 Ethereum 和大多數 EVM 鏈上稱為「gas」,在其他地方則有不同名稱和費用模型(Solana 的每筆交易費用、Cardano 的每筆交易費用加上腳本執行單位、Polkadot 的基於權重的費用)。機制各有不同,但原則相同:在區塊鏈上執行程式碼會消耗網路資源,必須有人為此付費。
智能合約簡史
智能合約的概念早於任何區塊鏈。電腦科學家兼法律學者 Nick Szabo 於 1994 年創造了「智能合約」一詞,並在 1996 年的一篇文章中加以闡述,描述了一種執行協議條款的電腦化交易協議,將其比喻為一台自動販賣機——只要收到付款,就能可靠地交付商品,無需信任對方(Szabo 的原始著作,引用自相關概念歷史)。當時,沒有任何平台能夠以最小化信任、防篡改的方式執行此類程式碼,因此這個概念在此後二十年間基本上停留在理論層面。
2009 年推出的 Bitcoin 引入了區塊鏈,但僅具備有限的腳本語言(Bitcoin Script),其設計上刻意不具備圖靈完備性——它可以執行多重簽名要求和時間鎖等支出條件,但無法執行任意的通用程式。Bitcoin Script 管控現有資金的支出方式;它無法表達關於後續發生事項的開放式邏輯,因此 Bitcoin 不被視為通用智能合約平台。
Ethereum 於 2015 年 7 月 30 日推出,是第一個專為執行通用智能合約而構建的主要區塊鏈,透過以太坊虛擬機(EVM)——一個每個 Ethereum 節點以相同方式執行的共享運行環境(ethereum.org,Ethereum 歷史)。這使 Ethereum 具備了早期區塊鏈所沒有的可程式化能力,也是為何大多數智能合約術語——gas(即網路費用)、合約帳戶、Solidity——都源自於此。此後數年,其他網路使用不同語言和執行模型構建了各自的智能合約環境,包括 Solana(2020 年)、Cardano 的 Plutus 腳本(2021 年)、Polkadot 的 ink! 合約,以及 Sui 的基於 Move 的物件(2023 年),將這一概念延伸至遠超單一網路的範疇。
智能合約在哪裡運行?
智能合約使用的運行環境和語言完全取決於其部署的網路。部分網路以合約讀寫的帳戶餘額來追蹤狀態(Ethereum 的帳戶模型);其他網路則以離散的可支出輸出來追蹤狀態(Cardano 的 eUTXO 模型,是 Bitcoin UTXO 模型的延伸),或以個別擁有的物件來追蹤狀態(Sui 的物件中心模型)。這些差異影響合約的編寫方式及其組合方式,但不影響基本保證:程式碼自動執行,且一旦部署,難以或不可能更改。
網路 | 語言 | 執行模型 | 主要生態系統用途 |
Ethereum 及 EVM 網路 | Solidity;Vyper;編譯為 EVM 位元組碼 | 基於帳戶;每條鏈每次執行一個合約呼叫 | DeFi;穩定幣;ERC-20 和 ERC-721 代幣 |
Solana | Rust,通常搭配 Anchor 框架 | Sealevel:當交易不涉及相同資料時並行執行 | 高吞吐量 DeFi;NFT 市場 |
Cardano | Plutus(基於 Haskell) | 擴展 UTXO(eUTXO):可在提交前驗證交易結果 | DeFi;原生代幣發行 |
Polkadot(透過平行鏈) | ink!(基於 Rust);Moonbeam 等 EVM 平行鏈也支援 Solidity | 在基於 Substrate 的平行鏈上運行;無需許可部署 | 平行鏈應用程式;原型開發 |
Sui | Move | 物件中心:交易改變擁有的物件,實現並行處理 | NFT;遊戲;DeFi |
Bitcoin | Bitcoin Script | 有限,非圖靈完備;僅執行支出條件 | 多重簽名錢包;時間鎖;Layer-2 協議 |
資料來源: ethereum.org; Solana Sealevel; Cardano eUTXO; use.ink 文件; Sui Move 概念。
誰編寫和使用智能合約?
開發者編寫並部署智能合約;任何擁有適當工具和足夠網路原生代幣以支付部署費用的人都可以這樣做,且部署無需獲得底層網路的許可。合約上線後,任何人都可以與之互動——通常透過應用程式介面,而非直接編寫程式碼。交換代幣、鑄造 NFT 或在 DAO 中投票的人,都在觸發智能合約執行,通常無需了解底層語言或運行環境。
代幣標準
許多被稱為「代幣」的資產,實際上是遵循共同標準的智能合約,這讓錢包和應用程式能以相同方式與任何符合標準的代幣互動。在 Ethereum 和其他 EVM 鏈上,ERC-20 是同質化代幣的標準,包括大多數穩定幣和功能型代幣;ERC-721 是 NFT 的標準,其中每個代幣都是唯一的。其他網路也有各自的對應標準——例如 Solana 的 SPL 代幣標準——均為各自的執行模型而構建。
智能合約支援哪些應用?
在各個生態系統中,智能合約是應用程式的核心引擎:用於借貸和交易的 DeFi 協議;NFT 和數位資產市場;以及治理規則存在於程式碼而非公司內部政策中的 DAO。具體實現方式因網路而異,但底層模式——無需中間人即可執行協議的程式碼——是一致的。
智能合約為何存在?
智能合約的存在是為了消除對可信中介來執行協議的需求。與其依賴銀行、託管代理人或平台營運商來持有資金並遵守一套規則,不如將規則直接編碼,並以相同方式對所有與合約互動的人執行。正是這一特性,使得可程式化的自我託管金融、數位所有權和區塊鏈治理能夠大規模實現——無論哪個網路承載這些程式碼。
代幣授權與安全性
使用應用程式通常意味著授予智能合約代幣授權——允許其代表你移動特定代幣的權限。這是正常操作,但也是常見的攻擊媒介,因為惡意合約可能請求授權,允許其移動超出用戶預期的數量。代幣授權可以限定在特定金額,也可以設為無限額。MetaMask 擴充功能在簽署前會顯示完整的代幣授權範圍——包括合約地址以及授權是否有限額或無限額——讓用戶可以事先審查。我們關於代幣授權的指南涵蓋了如何審查和撤銷授權。
智能合約風險
漏洞是永久性的:具有缺陷的不可更改程式碼在部署後通常無法修補。
審計可降低但無法消除風險:經過審計的合約仍曾遭到利用。
惡意合約存在於每個支援智能合約的網路上,並非僅限於某一網路。
智能合約常見問題
智能合約是儲存在網路上的自動執行程式碼,當條件滿足時會自動運行,無需中介方介入。
不。以太坊是第一個主要的通用智能合約平台,於 2015 年推出,但智能合約現在已在許多網路上運行,包括 Solana、Cardano、Polkadot 和 Sui,每個網路都有其自己的語言和執行模型。
區塊鏈網路決定了智能合約所使用的程式語言。以太坊及其他 EVM 網路主要使用 Solidity 或 Vyper;Solana 使用 Rust,通常搭配 Anchor 框架;Cardano 使用 Plutus(基於 Haskell 構建);Polkadot 平行鏈使用 ink!(基於 Rust 構建);而 Sui 則使用 Move。
預設情況下,不行——已部署的程式碼是不可變的。有些合約會特別設計升級機制,但這會增加複雜性,並帶來其自身的風險。
這項技術已在多個網路上廣泛應用,但個別合約可能存在漏洞或惡意程式碼。定期檢視代幣授權並使用經過審計的應用程式,可有效降低風險。
在區塊鏈網路上執行程式碼會消耗網路驗證者或礦工的運算資源,因此網路會針對此收取網路費用。各網路的費用結構有所不同,但其核心原則——為你所使用的運算資源付費——對所有網路來說都是相同的。