智能合約(smart contract)這個術語至少可以追溯到 1995 年,是由多產的跨領域法 律學者尼克·薩博(Nick Szabo)提出來的。他的定義是“一個智能合約是一套以數字形式 定義的承諾(promises) ,包括合約參與方可以在上面執行這些承諾的協議。”
承諾
一套承諾指的是合約參與方同意的(經常是相互的)權利和義務。這些承諾定義了合約 的本質和目的。以一個銷售合約為典型例子。賣家承諾發送貨物,買家承諾支付合理的貨款。
數字形式
數字形式意味着合約不得不寫入計算機可讀的代碼中。這是必須的,因為只要參與方達 成協定,智能合約建立的權利和義務,是由一台計算機或者計算機網絡執行的。
更進一步地說明:
達成協定 智能合約的參與方什么時候達成協定呢?答案取決於特定的智能合約實施。一般而言,當參與方通過在合約宿主平台上安裝合約,致力於合約的執行時,合約就被發現了。
合約執行 “執行”的真正意思也依賴於實施。一般而言,執行意味着通過技術手段積極實施。
計算機可讀的代碼 另外,合約需要的特定“數字形式”非常依賴於參與方同意使用的協議。
協議
協議是技術實現(technical implementation),在這個基礎上,合約承諾被實現, 或者合約承諾實現被記錄下來。選擇哪個協議取決於許多因素,最重要的因素是在合約履行期間,被交易資產的本質。
再次以銷售合約為例。假設,參與方同意貨款以比特幣支付。選擇的協議很明顯將會是 比特幣協議,在此協議上,智能合約被實施。因此,合約必須要用到的“數字形式”就是比 特幣腳本語言。比特幣腳本語言是一種非圖靈完備的、命令式的、基於棧的編程語言,類似 於 Forth。
2、智能合約與區塊鏈的關系
尼克薩博關於智能合約的工作理論遲遲沒有實現,一個重要原因是因為缺乏能夠支持 可編程合約的數字系統和技術。區塊鏈技術的出現解決了該問題,不僅可以支持可編程合約, 而且具有去中心化、不可篡改、過程透明可追蹤等優點,天然適合於智能合約。因此,也可 以說,智能合約是區塊鏈技術的特性之一。
如果說區塊鏈 1.0 是以比特幣為代表,解決了貨幣和支付手段的去中心化問題,那么區塊鏈 2.0 就是更宏觀的對整個市場去中心化(最典型的就是ETH 以太坊以及即將上線的EOS),利用區塊鏈技術來轉換許多不同的數字資產而 不僅僅是比特幣,通過轉讓來創建不同資產的價值。區塊鏈技術的去中心化賬本功能可以被 用來創建、確認、轉移各種不同類型的資產及合約。幾乎所有類型的金融交易都可以被改造 成在區塊鏈上使用,包括股票、私募股權、眾籌、債券和其他類型的金融衍生品如期貨、期 權等。
智能合約看上去就是一段計算機執行程序,滿足可准確自動執行即可,那么為什么用傳 統的技術為何很難實現,而需要區塊鏈技術等新技術呢?傳統技術即使通過軟件限制、性能 優化等方法,也無法同時實現區塊鏈的特性:1 是數據無法刪除、修改,只能新增,保證了 歷史的可追溯,同時作惡的成本將很高,因為其作惡行為將被永遠記錄;2 是去中心化,避 免了中心化因素的影響。
基於區塊鏈技術的智能合約不僅可以發揮智能合約在成本效率方面的優勢,而且可以避 免惡意行為對合約正常執行的干擾。將智能合約以數字化的形式寫入區塊鏈中,由區塊鏈技 術的特性保障存儲、讀取、執行整個過程透明可跟蹤、不可攥改。同時,由區塊鏈自帶的共 識算法構建出一套狀態機系統,使得智能合約能夠高效地運行。
3、智能合約工作原理
基於區塊鏈的智能合約包括事務處理和保存的機制,以及一個完備的狀態機,用於接受 和處理各種智能合約;並且事務的保存和狀態處理都在區塊鏈上完成。事務主要包含需要發 送的數據;而事件則是對這些數據的描述信息。事務及事件信息傳入智能合約后,合約資源 集合中的資源狀態會被更新,進而觸發智能合約進行狀態機判斷。如果自動狀態機中某個或 某幾個動作的觸發條件滿足,則由狀態機根據預設信息選擇合約動作自動執行。
智能合約系統根據事件描述信息中包含的觸發條件,當觸發條件滿足時,從智能合約自 動發出預設的數據資源,以及包括觸發條件的事件;整個智能合約系統的核心就在於智能合 約以事務和事件的方式經過智能合約模塊的處理,出去還是一組事務和事件;智能合約只是 一個事務處理模塊和狀態機構成的系統,它不產生智能合約,也不會修改智能合約;它的存 在只是為了讓一組復雜的、帶有觸發條件的數字化承諾能夠按照參與者的意志,正確執行。
https://baijiahao.baidu.com/s?id=1602311106138641488&wfr=spider&for=pc
