智能合約(Smart contracts)是一種數字化的合同形式,以代碼的方式存儲在區塊鏈上。它們設計用來自動執行、控制或記錄在特定條件發生時法律上具有約束力的活動。與傳統合約相比,智能合約最大的特點在于其自動執行能力,無需依賴中介機構進行驗證或執行,大大降低了交易成本和時間延遲。
智能合約遵循編程邏輯“如果/何時...那么...”,并在滿足預設條件時觸發執行。一旦部署至區塊鏈上,智能合約作為自治程序操作,執行諸如資金轉移、物權登記等操作。它們的執行結果被不可篡改地記錄在區塊鏈上,所有相關方均可實時查驗但不能更改。智能合約的運行邏輯需要事先進行充分定義,包括所有可能的條件和相應的執行行為,確保合約能夠按照設計者的意圖正確執行。
除去自動化和減少信任成本外,智能合約還提供了無需準入權限的優勢。任何人都可以創建并部署智能合約,只要他們具備編寫合約的技能且能夠支付區塊鏈網絡所需的手續費(即“燃料費”)。然而,智能合約也有其局限性,例如無法直接訪問鏈下數據,通常需要通過預言機(Oracle數據庫)來獲取外部信息。此外,智能合約因為其代碼公開透明,使得它們可以互相調用,實現功能的組合與擴展。
術語簡介
“智能合約”(Smart contract)這個術語至少可以追溯到1994年,是由多產的跨領域法律學者尼克·薩博(Nick Szabo)提出來的。他在發表于自己的網站的幾篇文章中提到了智能合約的理念,定義如下:
“一個智能合約是一套以數字形式定義的承諾(commitment),包括合約參與方可以在上面執行這些承諾的協議。”
數字形式
數字形式意味著合約不得不寫入計算機可讀的代碼中。這是必須的,因為只要參與方達成協定,智能合約建立的權利和義務,是由一臺計算機或者計算機網絡執行的。
更進一步地說明:
(1)達成協定
智能合約的參與方什么時候達成協定呢?答案取決于特定的智能合約實施。一般而言,當參與方通過在合約宿主平臺上安裝合約,致力于合約的執行時,合約就被發現了。
(2)合約執行
“執行”的真正意思也依賴于實施。一般而言,執行意味著通過技術手段積極實施。
(3)計算機可讀的代碼
另外,合約需要的特定“數字形式”非常依賴于參與方同意使用的協議。
協議
協議是技術實現(technical implementation),在這個基礎上,合約承諾被實現,或者合約承諾實現被記錄下來。選擇哪個協議取決于許多因素,最重要的因素是在合約履行期間,被交易資產的本質。
再次以銷售合約為例。假設,參與方同意貨款以比特幣支付。選擇的協議很明顯將會是比特幣協議,在此協議上,智能合約被實施。因此,合約必須要用到的“數字形式”就是比特幣腳本語言。比特幣腳本語言是一種非圖靈完備的、命令式的、基于棧的編程語言,類似于Forth。
安全問題
智能合約是“執行合約條款的計算機交易協議”。區塊鏈上的所有用戶都可以看到基于區塊鏈的智能合約。但是,這會導致包括安全漏洞在內的所有漏洞都可見,并且可能無法迅速修復。
這樣的攻擊難以迅速解決,例如,2016年6月The DAOEther的漏洞造成損失5000萬美元,而開發者試圖達成共識的解決方案。DAO的程序在黑客刪除資金之前有一段時間的延遲。以太坊軟件的一個硬分叉在時限到期之前完成了攻擊者的資金回收工作。
以太坊智能合約中的問題包括合約編程Solidity、編譯器錯誤、以太坊虛擬機錯誤、對區塊鏈網絡的攻擊、程序錯誤的不變性以及其他尚無文檔記錄的攻擊。
案例
部署智能合約的案例有:
流行文化
Karl Schroeder的2002年小說“Permanence”提出了一種“權利經濟”,其中所有的物理對象都有合同要求的納米標記,這樣就可以對專有信息的所有用途實施付款,例如,深空軍事任務必須不斷證明每艘船舶的效益比率否則將停止工作。
參見
參考資料 >
智能合約簡介.ethereum-org-fork.2024-01-18
What are smart contracts on blockchain?.IBM.2024-01-18