Titan FX

智能合約(Smart Contract)是什麼?運作原理、Gas 費用、應用與安全風險

智能合約(Smart Contract)是什麼?運作原理、Gas 費用、應用與安全風險
智能合約(Smart Contract)是一段部署在區塊鏈上的程式碼,當預設條件被滿足時就會自動執行,過程中不需要任何一方推動或核准。

它最常被拿來比喻成自動販賣機:投入足夠的錢、按下按鈕,機器就吐出商品,中間沒有店員判斷你該不該買。智能合約做的是同一件事,只是判斷條件與執行結果都寫在鏈上,任何人都能事先讀到程式碼、事後查到執行紀錄。

這個設計解決的是「誰來保證對方會照約定做」的問題。但它同時帶來一組全新的風險:程式碼一旦部署就照字面執行,寫錯了也照樣執行。本文從運作流程、Gas 費用、代幣標準、實際應用,一路談到真實發生過的失敗案例。

本文重點
  • 智能合約是部署在區塊鏈上、條件滿足即自動執行的程式碼,執行結果由全網節點各自重算並確認
  • 只要會改動鏈上狀態的呼叫就要付 Gas,單純讀取公開資料不用;這是防止程式無限迴圈拖垮網路的機制,交易失敗一樣扣 Gas
  • 「上鏈就不能改」只對合約程式碼本身成立,多數專案透過代理合約保留升級權,管理員金鑰才是真正的風險所在
  • 智能合約無法主動取得鏈外資料,任何外部資訊(幣價、氣溫、比賽結果)都要由預言機寫上鏈才讀得到
  • 歷史上的重大損失多半來自程式邏輯漏洞、預言機被操縱、管理員金鑰失守與跨鏈橋,稽核報告不等於安全保證

1. 智能合約是什麼?

智能合約是一段部署在區塊鏈上的程式碼,附帶一塊只有它自己能改寫的儲存空間。當有人送出符合條件的呼叫,它就按照寫好的邏輯執行,改動自己的資料狀態,整個過程記錄在鏈上。

這個詞比程式本身早了二十年。1994 年,法律學者兼密碼學家 Nick Szabo 提出 smart contract 的概念,用自動販賣機說明「靠機制而非靠信任來履約」的想法。當時沒有能承載它的基礎設施。直到 2015 年以太坊主網上線,第一個圖靈完備的智能合約平台出現,這個構想才真正落地。

有兩個特性決定了它能做什麼、不能做什麼。

第一是確定性。同一份程式碼、同樣的輸入,在每個節點上都必須算出一樣的結果,否則各節點對帳本的認知就會分歧。

所以合約裡沒有真正的隨機數,也不能主動連上網路抓資料。幣價、匯率、氣溫這些鏈外資訊,都要由預言機寫上鏈才讀得到——預言機被操縱會成為 DeFi 常見的攻擊路徑,根源就在這裡。

第二是公開。合約的位元碼一定在鏈上,多數專案還會公開原始碼供驗證。使用者可以在互動前檢查邏輯,攻擊者也可以慢慢研究漏洞。

對區塊鏈本身還不熟悉的話,加密貨幣入門可以補上背景。

2. 智能合約怎麼運作?從部署到執行

一份智能合約從被寫出來到被使用,會經過幾個固定階段。

從撰寫到上鏈:五個階段

智能合約呼叫流程示意圖:使用者送出一筆呼叫交易並支付Gas後,交易扇出到全網五個節點,每個節點執行同一段程式碼,結果一致後才把新狀態寫入區塊;並註明部署只發生一次、唯讀查詢不上鏈也不付Gas
  • 撰寫:以太坊生態最常用 Solidity,另有 Vyper 等選擇。程式碼定義了合約有哪些函式、誰能呼叫、會改動哪些資料。

  • 編譯:原始碼被編譯成 EVM(以太坊虛擬機)看得懂的位元碼。同時產生一份 ABI,也就是外部程式呼叫這份合約的說明書。

  • 部署:把位元碼包成一筆交易送上鏈。交易確認後,合約會得到一個固定的地址,從此常駐在鏈上。部署本身要付 Gas,程式碼越長越貴。

  • 呼叫:任何人(或另一份合約)都能對這個地址送出交易來執行某個函式。只讀取資料不改動狀態的查詢不需要付費;只要會改動狀態,就是一筆交易。

  • 驗算與上鏈:全網節點各自執行同一段程式碼、比對結果,取得共識後把新的狀態寫進區塊。所謂「自動執行」指的就是這一步——背後沒有排程程式在跑,是每個節點都算了一遍。

要留意的是,合約不會自己醒來做事,它必須被一筆交易觸發。「到期自動付款」這類功能,實際上是有人(或某個自動化服務)在到期時送出那筆呼叫交易。

Gas:執行程式碼為什麼要付費

程式碼是圖靈完備的,理論上可以寫出永遠跑不完的迴圈。如果執行免費,任何人都能用一個死迴圈拖垮整個網路。Gas 就是為了堵住這個漏洞而設計的計費單位。

每一種運算都有固定的 Gas 消耗量,寫入儲存空間最貴,單純的加減法最便宜。送出交易時要設定兩個東西:

  • Gas 上限:你願意讓這筆交易最多燒掉多少 Gas。設太低會中途執行失敗。

  • 單位 Gas 的價格:以太坊自 2021 年的 London 升級後改為「基礎費 + 小費」的結構,基礎費隨網路壅塞程度自動調整並被銷毀,小費則給驗證者。

有一點新手常吃虧:交易失敗一樣要付 Gas。合約執行到一半發現條件不符而中止,狀態會回復到執行前,但已經消耗掉的算力不會退還。鏈上壅塞時送出一筆會失敗的交易,等於白白付一次手續費。

不同鏈的費用差距極大:同樣一筆轉帳,在以太坊主網可能要幾美元,在 Polygon 這類擴容方案上往往不到一美分。

「上鏈之後不能改」是真的嗎?

只對了一半。合約的位元碼確實無法修改,但這不代表功能不會變。

主流做法是代理合約:使用者互動的地址只是一個轉接口,真正的邏輯放在另一份可替換的合約裡。專案方要升級時,把轉接口指向新版本即可,使用者的地址與餘額都不受影響。

這個設計解決了無法修 bug 的難題,也把權力交回開發團隊手上。誰能執行升級、誰能暫停合約、誰能提走金庫裡的資產,這些權限通常掌握在一組管理員金鑰或多重簽名錢包上。

所以評估一份合約,讀完程式碼只做了一半功課。升級權握在單一私鑰、多重簽名,還是附帶時間鎖,這一層的差異往往比技術架構更關鍵。

3. 智能合約和傳統合約差在哪?

兩者名字接近,運作邏輯幾乎相反。

比較項目傳統合約智能合約
表達方式自然語言,保留解釋空間程式碼,只有一種執行結果
履約方式靠雙方自覺,違約後訴諸司法條件滿足即執行,沒有違約的餘地
執行成本事後追討耗時且昂貴一次 Gas 費用,秒級完成
出錯時可協商、可補正、可訴請撤銷照字面執行,多數情況無法回頭
適用範圍任何可用文字約定的事條件必須能被鏈上資料判定

差異的核心在模糊地帶。傳統合約允許「合理期間內」「重大不利影響」這類留白,出事後由法院填補;智能合約沒有這種空間,所有判斷條件都得先量化成程式看得懂的形式。

這也劃出了它的適用邊界。託管付款、按規則分配收益、抵押品跌破門檻就清算,這些能用鏈上資料判定的場景,智能合約做得又快又便宜;一旦牽涉主觀判斷、意思表示的解釋或當事人行為能力,程式碼就無能為力。

還有一點常被誤會:在多數司法轄區,智能合約本身不等於法律上的契約。合意是否成立、標的是否合法,仍然由當地法律認定。實務上常見的做法,是用一份紙本合約約定權利義務,再用智能合約自動化其中的付款環節。

4. 智能合約平台有哪些?EVM 與非 EVM 兩大陣營

不是每條鏈都能跑智能合約,能跑的也分成兩大陣營。

EVM 陣營:一次開發,多鏈部署

以太坊定義了 EVM 這套執行環境。之後 BNB Chain、Polygon、Avalanche 的 C-Chain,以及 Arbitrum、Optimism、Base 等 Layer 2,都選擇與它相容。

相容的好處很實際:同一份 Solidity 程式碼幾乎不用改就能部署到另一條鏈,開發工具、錢包與瀏覽器全部通用。

代幣標準的擴散也是同一個道理,BNB Chain 的 BEP-20 就是把以太坊的 ERC-20 搬過去。

非 EVM 陣營:各走各的路

Solana 用 Rust 撰寫、把合約稱為 program,以平行執行換取吞吐量;Cardano 採用 Plutus;Aptos 與 Sui 使用 Move 語言。

效能與安全模型各有取捨,代價是生態彼此不通,程式碼無法直接搬移。

比特幣為什麼不在這份名單上

比特幣的腳本語言刻意設計成非圖靈完備,只支援多重簽名、時間鎖這類有限功能。2021 年的 Taproot 升級擴充了表達能力,但它仍然不是通用的智能合約平台。

這是安全取向的取捨,不是技術落後。底層的差異可以參考區塊鏈完整解析

5. 智能合約在做什麼?四類主要應用

代幣發行與代幣標準

鏈上的代幣本身就是一份智能合約,它記錄了誰持有多少,並定義轉帳、授權等函式。ERC-20 規定了同質化代幣該有哪些函式與事件,ERC-20 標準說明裡有完整的欄位對照;ERC-721 對應每一枚都獨一無二的 NFT;ERC-1155 讓同一份合約同時管理多種代幣。

這些標準的價值在於介面統一:錢包不必為每個代幣寫一套支援程式,交易所上架新代幣也不用重寫後端。

去中心化金融(DeFi)

這是智能合約最成熟的應用領域。

  • 自動做市商用一條數學公式取代掛單簿,Uniswap 是最具代表性的例子,流動性提供者把兩種代幣存入資金池,交易者直接與池子成交。

  • 借貸協議如 Aave,讓使用者存入抵押品後借出另一種資產,利率由資金池的使用率自動決定,抵押率跌破門檻就觸發清算。

  • 超額抵押穩定幣如 DAI,由使用者鎖入抵押品後鑄造,整套發行與清算規則都寫在合約裡。

DeFi 的組合性常被稱為「金錢樂高」:一份合約可以直接呼叫另一份合約,把借貸、兌換、質押串成一筆交易完成。效率極高,風險也會沿著同一條鏈路傳導。

質押與驗證者機制

權益證明鏈上的質押由合約管理鎖倉、發放獎勵與處罰違規節點。流動性質押進一步用合約發行憑證代幣,讓使用者在鎖倉期間仍保有可交易的資產。

NFT 與鏈上治理

NFT 合約記錄每一枚代幣的所有權與元資料位置,並可在程式碼裡寫入轉售時自動分潤的規則。DAO 則把組織章程寫成合約:持有治理代幣的人投票,通過的提案由合約直接執行,不需要董事會簽字。

6. 智能合約的風險:五種真實發生過的失敗

這一節值得花最多時間。以下每一類都造成過實際損失,而且至今仍在重演。

程式邏輯漏洞:The DAO 與重入攻擊

最著名的案例是 2016 年 6 月的 The DAO 事件。攻擊者在合約更新餘額之前反覆呼叫提領函式,取走約 360 萬枚 ETH。這種手法後來被稱為重入攻擊(Reentrancy Attack),是智能合約安全開發中最經典的漏洞類型。以太坊社群最終以硬分叉回滾,也因此分裂出以太坊經典(ETC)。合約邏輯錯誤沒有客服可以申訴,這是這個事件留下最深的教訓。

預言機被操縱:閃電貸攻擊

借貸與衍生品合約依賴外部價格,如果價格來源只有單一交易所的即時報價,攻擊者可以用閃電貸在同一筆交易內拉抬或砸盤,讓合約以錯誤的價格清算或放貸。2020 年起這類攻擊反覆出現。防禦方式是採用時間加權均價與多來源聚合,Chainlink 這類去中心化預言機網路就是為此而生。

管理員金鑰與跑路風險

前面提過的升級權限,是最容易被忽略的風險。如果合約保留了無上限鑄幣、暫停交易或直接提走金庫的函式,而這些權限握在單一私鑰手上,那麼技術上再漂亮的設計也擋不住開發團隊自己動手,或私鑰被竊。看一份專案時,權限清單與時間鎖設定應該和程式碼一起看。

跨鏈橋:損失規模最大的一類

跨鏈橋要在 A 鏈鎖定資產、在 B 鏈鑄造憑證,通常同時涉及智能合約與一組鏈外驗證者。2021 至 2022 年間,Poly Network、Wormhole、Ronin 等橋接事件的損失規模都在數億美元級別。其中 Ronin 的問題出在驗證者私鑰遭盜用,而非合約程式碼有錯——這說明「智能合約風險」不能只看程式碼,還要看它周邊那些不在鏈上的環節。

使用者端的授權風險

這是散戶最直接遇到的一類。要讓 DEX 或借貸協議動用你的代幣,你必須先送出一筆 approve 交易授權它。許多介面預設申請的是無上限額度,而且授權在你主動取消前一直有效。釣魚網站的常見手法,就是誘導你對一份惡意合約簽下授權,之後在你毫無察覺時把代幣轉走。

代幣授權(approve)兩種額度的對比示意圖:同一個錢包連往同一份合約,上方管道粗、標示無限符號與時鐘,代表無上限授權在使用者主動撤銷前一直有效;下方管道細,代表限額授權只放行本次所需的數量

可行的做法是把授權額度改成單次所需的數量,定期用區塊鏈瀏覽器或授權管理工具檢查並撤銷不再使用的授權,並且把大額資產與日常互動的錢包分開——長期不動的部位可以移到冷錢包

7. FAQ:關於智能合約的常見問題

Q1:智能合約真的不能修改嗎?

已部署的位元碼無法改寫,但多數專案採用代理合約架構,把邏輯放在可替換的合約裡,功能因此仍可升級。判斷一份合約是否真的不可變,要看它有沒有代理層、升級權由誰掌握、有沒有時間鎖。

Q2:Gas 費用是付給誰的?為什麼有時候特別貴?

以太坊 London 升級後,Gas 費分成基礎費與小費:基礎費隨網路壅塞程度自動調整並被銷毀,小費付給打包交易的驗證者。費用高低取決於這筆交易要做多少運算,以及當下有多少人在搶區塊空間。

Q3:交易失敗了,Gas 會退還嗎?

不會。合約中止時狀態會回復到執行前,但已經消耗的運算不退費,只有 Gas 上限沒用到的部分會退回。鏈上壅塞時,建議先用模擬工具確認交易能通過再送出。

Q4:智能合約在法律上有效嗎?

在多數司法轄區,它不會自動構成一份具法律拘束力的契約。部分地區已承認電子紀錄與區塊鏈簽章的證據效力,但那解決的是形式問題,不等於承認程式碼即合約。

Q5:一般投資人需要看得懂程式碼嗎?

不需要讀懂每一行,但有四件事值得養成習慣:確認合約地址來自官方管道;用區塊鏈瀏覽器看原始碼是否經過驗證、部署多久、互動人數多少;定期撤銷不再需要的代幣授權;把大額資產與日常互動的錢包分開。這四件事不需要程式背景,卻能擋掉大部分常見損失。

Q6:智能合約和 DApp 是同一件事嗎?

不是同一層。智能合約是鏈上的後端邏輯,DApp 通常還包含一個網頁前端。前端可以更新、可以被下架,甚至可能被入侵並換成惡意版本,而合約仍在鏈上照常運作——這也是為什麼老練的使用者會先確認前端連到的是正確的合約地址。

Q7:智能合約安全嗎?

要拆開來看。合約的執行本身是可驗證的,程式碼公開、每一筆呼叫都留下紀錄。但執行可驗證不等於結果安全:前面五類風險裡,只有第一類出在合約程式碼,其餘四類分別來自外部資料、權限設計、周邊基礎設施,以及使用者自己的授權習慣。稽核能降低風險,但它是針對特定版本的抽查,不構成安全保證。

8. 總結:它保證執行,不保證正確

智能合約真正改變的事情只有一件:把「對方會不會照約定做」這個問題,換成「這段程式碼寫得對不對」。前者需要信任與司法,後者需要程式碼審查與權限設計。

這是一次實實在在的進步,代價也很明確。合約照字面執行,寫錯了照樣執行;資產轉走了,沒有客服能撤銷。歷史上規模最大的幾次損失,來源分別是邏輯漏洞、預言機操縱、管理員金鑰與跨鏈橋;密碼學本身從來沒有被攻破過。

務實的態度是把它當成一種可驗證的自動執行機制:規則公開透明、執行快速廉價,但風險沒有消失,只是換了位置。看得懂這個轉移在哪裡,就能問出對的問題。想追蹤相關資產的行情,可以參考以太幣即時報價頁面。


延伸閱讀
✏️ 關於作者

Titan FX 交易策略研究所。我們製作面向投資者的教育內容,涵蓋外匯、商品(原油、貴金屬、農產品)、股票指數、美股與數位資產等廣泛金融商品。


主要來源(按類別)
  • 協議文件:以太坊官方文件與改進提案(EIP)中關於 EVM、Gas 計費與代幣標準的一般說明
  • 安全研究:公開的智能合約安全研究與事故彙整,涵蓋重入攻擊、預言機操縱與跨鏈橋事件
  • 鏈上資料:公開區塊鏈瀏覽器提供的合約驗證狀態、部署時間與互動筆數等一般資料
  • 投資者教育:各國金融主管機關關於加密資產授權風險、釣魚手法與詐騙辨識的教育資料