
一、智能合約的定義
“智能合約”(smart contract)這個術語至少可以追溯到1995年,是由多產的跨領域法律學者尼克·薩博(Nick Szabo)提出來的。他發表在自己網站的幾篇文章中提到了智能合約的理念。他的定義如下:“一個智能合約是一套以數字形式定義的承諾(promises),包括合約參與方可以在上面執行這些承諾的協議。”
1、承諾
一套承諾指的是合約參與方同意的(經常是相互的)權利和義務。這些承諾定義了合約的本質和目的。以一個銷售合約為典型例子:賣家承諾發送貨物,買家承諾支付合理的貨款。
2、數字形式
數字形式意味著合約不得不寫入計算機可讀的代碼中。這是必須的,因為只要參與方達成協定,智能合約建立的權利和義務,是由一臺計算機或者計算機網絡執行的。
達成協定
智能合約的參與方什么時候達成協定呢?答案取決于特定的智能合約實施。一般而言,當參與方通過在合約宿主平臺上安裝合約,致力于合約的執行時,合約就被發現了。
合約執行
“執行”的真正意思也依賴于實施。一般而言,執行意味著通過技術手段積極實施。
計算機可讀的代碼
合約需要的特定“數字形式”非常依賴于參與方同意使用的協議。
3、協議
協議是技術實現(technical implementation),在這個基礎上,合約承諾被實現,或者合約承諾實現被記錄下來。選擇哪個協議取決于許多因素,最重要的因素是在合約履行期間,被交易資產的本質。再次以銷售合約為例:假設,參與方同意貨款以比特幣支付,選擇的協議很明顯將會是比特幣協議,在此協議上,智能合約被實施。因此,合約必須要用到的“數字形式”就是比特幣腳本語言。比特幣腳本語言是一種非圖靈完備的、命令式的、基于棧的編程語言。
通俗來說,智能合約就是計算機中的一段代碼,這段代碼定義了一個協議,就像現實世界中的合同。當滿足一定條件時間后(比如合同到期,乙方違約等),合約自動執行,中間無需第三方參與。
綜上所述,智能合約是區塊鏈的核心構成要素(合約層),是由事件驅動的、具有狀態的、運行在可復制的共享區塊鏈數據賬本上的計算機程序,能夠實現主動或被動的處理數據,接受、儲存和發送價值以及控制和管理各類鏈上智能資產等功能。

尼克薩博關于智能合約的工作理論遲遲沒有實現,一個重要原因是因為缺乏能夠支持可編程合約的數字系統和技術。區塊鏈技術的出現解決了該問題,不僅可以支持可編程合約,而且具有去中心化、不可篡改、過程透明和可追蹤等優點,天然適合于智能合約。因此,也可以說,智能合約是區塊鏈技術的特性之一。

如果說區塊鏈1.0是以比特幣為代表,解決了貨幣和支付手段的去中心化問題,那么區塊鏈2.0就是更宏觀的對整個市場去中心化(最典型的就是以太坊),利用區塊鏈技術來轉換許多不同的數字資產而不僅僅是比特幣,通過轉讓來創建不同資產的價值。區塊鏈技術的去中心化賬本功能可以被用來創建、確認、轉移各種不同類型的資產及合約。幾乎所有類型的金融交易都可以被改造成在區塊鏈上使用,包括股票、私募股權、眾籌、債券和其他類型的金融衍生品如期貨、期權等。
智能合約看上去就是一段計算機執行程序,滿足條件時即可準確自動執行,那么為什么用傳統的技術為何很難實現,而需要區塊鏈等新技術呢?傳統技術即使通過軟件限制、性能優化等方法,也無法同時實現區塊鏈的特性:一是數據無法刪除、修改,只能新增,保證了歷史的可追溯,同時作惡的成本將很高,因為其作惡行為將被永遠記錄;二是去中心化,避免了中心化因素的影響。
基于區塊鏈技術的智能合約不僅可以發揮智能合約在成本效率方面的優勢,而且可以避免惡意行為對合約正常執行的干擾。將智能合約以數字化的形式寫入區塊鏈中,由區塊鏈技術的特性保障存儲、讀取、執行整個過程透明、可跟蹤、不可篡改。同時,由區塊鏈自帶的共識算法構建出一套狀態機系統,使得智能合約能夠高效地運行。
智能合約為靜態的底層區塊鏈數據賦予了靈活可編程的機制和算法,并為構建區塊鏈2.0和3.0時代的可編程金融系統與社會系統奠定了基礎;將有助于促進區塊鏈技術在各類分布式人工智能系統中的應用。

基于區塊鏈的智能合約包括事務處理和保存的機制,以及一個完備的狀態機,用于接受和處理各種智能合約;并且事務的保存和狀態處理都在區塊鏈上完成。事務主要包含需要發送的數據;而事件則是對這些數據的描述信息。事務及事件信息傳入智能合約后,合約資源集合中的資源狀態會被更新,進而觸發智能合約進行狀態機判斷。如果自動狀態機中某個或某幾個動作的觸發條件滿足,則由狀態機根據預設信息選擇合約動作自動執行。
智能合約系統根據事件描述信息中包含的觸發條件,當觸發條件滿足時,從智能合約自動發出預設的數據資源,以及包括觸發條件的事件;整個智能合約系統的核心就在于智能合約以事務和事件的方式經過智能合約模塊的處理,出去還是一組事務和事件;智能合約只是一個事務處理模塊和狀態機構成的系統,它不產生智能合約,也不會修改智能合約;它的存在只是為了讓一組復雜的、帶有觸發條件的數字化承諾能夠按照參與者的意志正確執行。

基于區塊鏈的智能合約構建及執行分為如下幾步:
多方用戶共同參與制定一份智能合約;
合約通過P2P網絡擴散并存入區塊鏈;
區塊鏈構建的智能合約自動執行。

在法律層面,考慮到智能合約意思表示真實性不足、存在不可預見情形、難以追責、缺乏事后救濟等法律問題,在很長一段時間內,智能合約將與傳統合約互為補充,協同進步:對智能合約來說,為充分保障其法律效力,智能合約將逐步深入對法律法規的理解,建立智能合約條款語言的審查和轉化標準,減少語言轉化過程中的翻譯誤差并形成規范的合約法律審計標準;對傳統合約來說,為應對智能合約催生的新型法律應用場景,需對現行法律進行補充、調整,以《合同法》為例,今后需明確在何種情況下可認定智能合約由當事人意思表示一致、合意達成的。
在性能和隱私安全層面,目前智能合約受到區塊鏈系統本身性能限制,尚無法處理復雜邏輯和高吞吐量數據,缺乏隱私保護,更無法實現跨鏈,第二層擴展解決方案(Layer 2 scaling solution,Layer2)是大幅改善區塊鏈及智能合約性能的可行辦法,以Taxa區塊鏈為例,它們的基本思路是通過可信硬件為智能合約創造隔離的鏈下執行環境, 公有鏈作為“共識層”記錄最終的通證(Token)支付和合約狀態轉換結果,借此將智能合約的執行與公有鏈的共識機制分離,實現部分鏈上操作的鏈外管理,促成高性能、高隱私、可跨鏈的智能合約。
下一步,需要研究智能合約的跨平臺部署問題,在跨鏈共識過程中的智能合約如何在多種不同的區塊鏈平臺上進行部署并自動、安全運行。智能合約運行過程中,由于代碼不可避免的可能存在漏洞或惡意攻擊,需要結合合約審計,提升智能合約的安全性和代碼審查智能化。同時需要研究智能合約的形式化驗證,利用精確的數據方法和強大的分析工具在合約的設計、開發、測試過程中驗證智能合約是否滿足公平性、正確性、可達性、有界性和無二義性等預期的關鍵性質,以規范合約的生成和執行,提高合約的可靠性和執行力,支持規模化智能合約的高效生成。
在智能層面,目前的智能合約僅是一系列的“If-Then”式情景-應對型規則,并不具備真正意義上的智能性。我們相信,隨著以深度學習、認知計算為代表的人工智能技術的發展,未來的智能合約將具備感知、學習、推理等傳統意義上智能,即這些智能體可由BDI(信念Belief、愿望Desire 和意圖Intention)模型來表述。更進一步,眾多智能合約智能體通過協作和演化形成復雜社會系統,該系統具有高度的社會復雜性和工程復雜性,因此不可避免地具有“默頓系統”不確定性、多樣性和復雜性等特性。區塊鏈技術有望實現軟件定義的去中心化社會系統,特別地,可以利用智能合約將各項管理規則、獎懲標準等以程序化代碼的形式部署上鏈,任何組織和個體均需在既定規則下行事,否則將會承擔相應后果。如此一來, 就有望將“默頓”社會系統轉化為可全面觀察、可主動控制、可精確預測的“牛頓”社會系統。
最后,區塊鏈網絡上大量自治節點的自主運行以及節點間通過智能合約的互動協作,使得該分布式系統健壯的同時兼備較高的靈活性。譬如,未來DAO(分布式自治組織)中的軟件代理將會在得到授權后替代人類經理人負責組織協調和業務決策,并向其他的軟件代理學習并彼此展開競爭。一定周期后,軟件代理還會自動評估收益率并對決策做出調整。這將有助于區塊鏈技術適應各類復雜多變的應用場景,進一步促進分布式人工智能的發展,為未來可編程社會奠定基礎。

總之,隨著區塊鏈技術的普及和應用不斷深入,新興的智能合約技術在學術界和產業界吸引了廣泛的關注。本文通過對智能合約的定義、工作原理以及智能合約與區塊鏈的關系進行了梳理,討論了智能合約的發展趨勢與展望,以期為未來智能合約的關鍵技術研究提供有益的啟發與參考。