智能合約(Smart Contract)

出自非小号百科

智能合約是一種計算機程序或交易協議,旨在根據合同或協議的條款自動執行、控制或記錄事件和行動。智能合約的目標是減少對可信中介、仲裁成本和欺詐損失的需求,以及減少惡意和意外的例外情況[1]。智能合約通常與加密貨幣相關,以太坊引入的智能合約被認為是去中心化金融(DeFi)和非同質化代幣(NFT)應用程序的基本構建塊。

Vitalik Buterin 在2014年的以太坊白皮書中將比特幣協議描述為 Nick Szabo 最初定義的智能合約概念的弱化版本,並提出了一種基於圖靈完備的 Solidity 語言的更強大版本。自比特幣以來,各種加密貨幣支持編程語言,允許在不受信任的各方之間進行更高級的智能合約。

智能合約不應與智能法律合約混淆,後者是指傳統上以自然語言表達並以機器可讀代碼實現的具有法律約束力的協議。

詞源[編輯 | 編輯原始碼]

1996年,Nick Szabo 就已經開始使用「智能合約」這個術語來指代由物理屬性(如硬件或軟件)而非法律強制執行的合約。他以自動售貨機為例來說明這個概念[2]

1998年,該術語被用來描述斯坦福數字圖書館項目中的斯坦福信息總線(Stanford Infobus)的權利管理服務層中的對象。

法律層面[編輯 | 編輯原始碼]

智能合約並不是通常意義上的具有法律約束力的合同。它是一種計算機程序或交易協議,旨在根據合同或協議的條款自動執行、控制或記錄事件和行動。智能合約的目標是減少對可信中介、仲裁成本和欺詐損失的需求,以及減少惡意和意外的例外情況。

智能合約通常與加密貨幣相關,以太坊引入的智能合約被認為是去中心化金融(DeFi)和非同質化代幣(NFT)應用程序的基本構建塊。

Vitalik Buterin 在2014年的以太坊白皮書中將比特幣協議描述為 Nick Szabo 最初定義的智能合約概念的弱化版本,並提出了一種基於圖靈完備的 Solidity 語言的更強大版本。自比特幣以來,各種加密貨幣支持編程語言,允許在不受信任的各方之間進行更高級的智能合約。

智能合約不應與智能法律合約混淆,後者是指傳統上以自然語言表達並以機器可讀代碼實現的具有法律約束力的協議。智能合約通常不構成有效的法律約束協議。儘管存在監管智能合約的提議,但目前還沒有明確的法律框架。

智能合約不是法律協議,而是由計算機程序或交易協議自動執行的交易,例如通過轉移加密貨幣或其他代幣來實現支付義務的自動化技術手段。一些學者認為,編程語言的命令式或聲明式性質會影響智能合約的法律效力。

自2015年以太坊區塊鏈推出以來,「智能合約」一詞已被應用於在區塊鏈上進行的通用計算。美國國家標準與技術研究院將「智能合約」描述為「使用加密簽名交易部署在區塊鏈網絡上的代碼和數據(有時稱為函數和狀態)的集合」。在這種解釋中,智能合約是使用區塊鏈的任何類型的計算機程序。智能合約也可以被視為安全的存儲過程,因為其執行和編碼效果(如在各方之間轉移代幣)無法在不修改區塊鏈本身的情況下進行操縱。在這種解釋中,合同的執行由平台控制和審計,而不是由連接到平台的任意服務器端程序控制。

2018年,美國參議院的一份報告指出:「雖然智能合約聽起來很新,但其概念植根於基本的合同法。通常,司法系統裁決合同糾紛並執行條款,但也可以使用其他仲裁方法,尤其是對於國際交易。對於智能合約,程序執行內置於代碼中的合約。」美國亞利桑那州、愛荷華州、內華達州、田納西州和懷俄明州等州已經通過了關於使用智能合約的立法。

2021年4月,英國司法任務組(UKJT)發布了《數字爭議解決規則》(Digital DR Rules),旨在促進英國區塊鏈和加密法律糾紛的快速解決。

工作原理[編輯 | 編輯原始碼]

類似於區塊鏈上的價值轉移,智能合約的部署也是通過從錢包發送到區塊鏈的交易來實現的。該交易包括智能合約的編譯代碼和一個特殊的接收地址。然後,該交易必須被包含在一個添加到區塊鏈的區塊中,此時智能合約的代碼將被執行以建立智能合約的初始狀態。拜占庭容錯算法以去中心化的方式保護智能合約,防止對其進行篡改。一旦部署了智能合約,就無法對其進行更新。

區塊鏈上的智能合約可以存儲任意狀態並執行任意計算。終端客戶端通過交易與智能合約交互。這些與智能合約的交易可能會導致狀態改變,並將代幣從一個智能合約發送到另一個智能合約或從一個賬戶發送到另一個賬戶。

以太坊是最流行的運行智能合約的區塊鏈。在以太坊上,智能合約通常是用圖靈完備的編程語言 Solidity 編寫的,並編譯成低級字節碼以由以太坊虛擬機執行。由於停機問題和其他安全問題,圖靈完備性被認為是一種風險,因此在像 Vyper 這樣的語言中被有意避免。一些其他缺少圖靈完備性的智能合約編程語言包括 Simplicity、Scilla、Ivy 和 Bitcoin Script。然而,2020年使用正則表達式進行的測量表明,當時 53,757 個以太坊智能合約中只有 35.3% 包含遞歸和循環——與停機問題相關的構造。

幾種語言旨在實現形式化驗證:Bamboo、IELE、Simplicity、Michelson(可以用 Coq 驗證)、Liquidity(編譯為 Michelson)、Scilla、DAML 和 Pact。

支持智能合約的區塊鏈平台的著名示例包括:
名稱 描述
Ethereum 在其區塊鏈上實施圖靈完備語言,這是一個著名的智能合約框架
Bitcoin 提供一種圖靈不完備的腳本語言,允許在比特幣之上創建自定義智能合約,如多重簽名賬戶、支付通道、託管、時間鎖定、原子跨鏈交易、預言機或多方彩票,無需運營商37。
Cardano 智能合約的區塊鏈平台
Solana 智能合約的區塊鏈平台
Tron 智能合約的區塊鏈平台
Tezos 智能合約的區塊鏈平台

為了確保拜占庭容錯,區塊鏈上的過程通常是確定性的。然而,智能合約的現實世界應用,如彩票和賭場,需要安全隨機性。事實上,區塊鏈技術降低了彩票的成本,因此對參與者有利。區塊鏈上的隨機性可以通過使用區塊哈希或時間戳、預言機、承諾方案、RANDAO 和 Quanta 等特殊智能合約以及混合策略納什均衡的序列來實現。

應用[編輯 | 編輯原始碼]

1998年,尼克·薩博提出,可以通過複製資產註冊表和使用密碼散列鏈以及拜占庭容錯複製來實現智能合約基礎設施。Askemos 在2002年使用 Scheme(後來添加了 SQLite)作為合約腳本語言實現了這一方法。

一種將比特幣用於複製資產註冊和合約執行的提議稱為「彩色幣」。 不同的項目實現了針對各種形式財產的複製權屬以及複製合約執行。

截至2015年,瑞銀正在試驗使用比特幣區塊鏈的「智能債券」,該債券可以設想完全自動支付流,從而創建一種自我支付工具。

理論上,可以通過智能合約在死亡證明註冊後自動執行繼承意願。出生證明也可以與智能合約配合使用。

Inc.com 的 Chris Snook 認為智能合約還可以用於處理房地產交易,並可以用於產權記錄和公共登記領域。

Seth Oranburg 和 Liya Palagashvili 認為智能合約還可以用於僱傭合同,尤其是臨時僱傭合同,他們認為這將使雇主受益。

主要應用場景[編輯 | 編輯原始碼]

  1. 去中心化金融(DeFi):智能合約驅動的借貸協議(如 Aave)、去中心化交易所(如 Uniswap)、保險平台等。
  2. 數字身份和驗證:去中心化身份管理(如 SelfKey)和數據驗證(如鏈上認證記錄)。
  3. NFT和數字資產:管理 NFT 的創建、交易和所有權轉移。
  4. 供應鏈管理:自動化記錄和追蹤商品的流轉和來源信息(如 IBM 的 Food Trust)。
  5. 保險:基於智能合約的自動理賠協議,條件觸發即可賠付。
  6. 遊戲和元宇宙:支持虛擬物品的所有權和跨平台交易。
  7. 去中心化自治組織(DAO):通過智能合約管理資金、治理規則和投票機制。

安全[編輯 | 編輯原始碼]

智能合約是「執行合約條款的計算機交易協議」。 區塊鏈上的所有用戶都可以看到基於區塊鏈的智能合約。但是,這會導致包括安全漏洞在內的所有漏洞都可見,並且可能無法迅速修復。

這樣的攻擊難以迅速解決,例如,2016年6月The DAOEther的漏洞造成損失5000萬美元,而開發者試圖達成共識的解決方案。 DAO的程序在黑客刪除資金之前有一段時間的延遲。以太坊軟件的一個硬分叉在時限到期之前完成了攻擊者的資金回收工作。

以太坊智能合約中的問題包括合約編程Solidity、編譯器錯誤、以太坊虛擬機錯誤、對區塊鏈網絡的攻擊、程序錯誤的不變性以及其他尚無文檔記錄的攻擊。

2018年4月22日, BeautyChain智能合約出現重大漏洞,黑客通過此漏洞無限生成代幣,導致 BitEclipse(BEC)的價值接近歸零。 同月25日,SmartMesh出現疑似重大安全漏洞,宣布暫停所有SMT交易和轉賬直至另行通知,導致損失約1.4億美金。28日,EOS被指可能存在BEC代幣合約類似的整數溢出漏洞,但沒消息詳細說明。5月24日, BAI交易存在大量異常問題, 損失金額未知。  8月22日, GODGAME 合約被黑客入侵,GOD智能合約上的以太坊總數歸零。

核心特性[編輯 | 編輯原始碼]

  • 自動化執行:智能合約是預先編寫的代碼,當滿足設定的條件時,會自動執行,無需人為干預。
  • 去中心化:智能合約運行在區塊鏈的去中心化網絡中,避免了單點故障和依賴中介。
  • 透明性:智能合約的代碼和規則通常是公開的,任何人都可以查看和審計,提高了信任度。
  • 不可篡改性:部署到區塊鏈上的智能合約代碼一旦執行,將無法被修改,確保了合約的執行結果可信。
  • 自執行性和自治性:合約一旦部署,能夠按照預設的邏輯獨立運行,且無需用戶反覆介入。

技術棧和開發工具[編輯 | 編輯原始碼]

  1. 編程語言:
    • Solidity(以太坊、EVM兼容鏈)、Vyper(以太坊)。
    • Rust(Solana、Polkadot)。
  2. 開發框架:
    • Truffle:以太坊智能合約開發框架。
    • Hardhat:以太坊的現代開發環境。
    • Remix:在線IDE,用於快速開發和測試。
  3. 測試和部署工具:
    • Ganache:本地以太坊區塊鏈測試環境。
    • Infura:連接到區塊鏈的API服務。
  4. 調試工具:
    • MythX:智能合約漏洞掃描工具。
    • OpenZeppelin:智能合約標準庫和安全框架。

發展方向[編輯 | 編輯原始碼]

  • 模塊化智能合約:增強智能合約的靈活性,支持代碼的動態更新和模塊化。
  • 隱私保護:引入零知識證明(ZKP)等技術,增強合約執行的隱私性。
  • 跨鏈智能合約:實現智能合約在不同區塊鏈之間的互操作性。
  • 自動化監管:結合鏈上和鏈下規則,實現合規的自動化管理。
  • AI與智能合約結合:利用人工智能增強合約的自主性和決策能力。

參考鏈接[編輯 | 編輯原始碼]