智能合約

智能合約:智能合約是一種計算機協議,在以太坊中最重要的應用就是設計和部署只能合約。智能合約最早在1995年由計算機學者尼克·薩博(nick szabo)提出,當時他的理念是:智能合約是一套以數字形式定義的承諾(promises),包括合約參與方在內都可以在上面執行承諾的協議。這一套理論的目標是爲了能夠讓智能合約滿足普通合約的約束條件,最小化惡意或者意外發生的可能性,同時減小對信任中介的需求,這樣一來也就能降低造成合約欺詐的損失和仲裁執行的成本以及其他一系列交易成本。Nick szabo希望藉助計算機和密碼學的約束,改進傳統合同的制定和履行,將所有合約條款和約定執行置於計算機協議的掌控之下,但是在區塊鏈技術未出現之前,這一套理論僅僅是理論,很少有真正在實踐中嘗試。

智能合約-讓區塊鏈能做更多事情

傳統抵押貸款和貸款抵押智能合約(來源於2016年底發佈智能合約白皮書)智能合約可以通過自動連接各方來完成抵押合同的執行,從而提供流暢且不易出錯的體驗。智能合約可以在貸款支付時自動處理付款並從土地記錄中釋放。

智能合同一直未被推廣,是因爲缺少一個可支持變成合約的系統,區塊鏈的出現,因爲其去中心、不可篡改、信息可追蹤、信息透明等特點,使得智能合約找到了一個合適自己的平臺,所以現在智能合約被認爲是區塊鏈技術中重要一塊。特別是目前提出的區塊鏈2.0技術,甚至用智能合約來作爲明確的界限。

區塊鏈技術其中一個目的是爲了建立一個去信任化系統,信任在互聯網中是什麼概念,信任就是點對點的鏈接,這個鏈接存在於數字空間中(計算機底層不就是01010101),這個空間是分佈式的,沒有所謂的中心化,信任關係通過算法轉變成爲代碼,代碼轉換爲程序,程序驅動執行每一步。互相間的信任就是事先約定協議通過計算機和算法來實現控制。智能合約的信任在區塊鏈環境中剛好能完美實現。

智能合約的法律意義:提到合約,不可避免的會牽扯到法律條文,智能合約使用的編程語言,不是法律條文,在區塊鏈上智能合同可以理解:code is law。合約的主體是計算機網絡中每一個擁有數字身份的甲方和乙方、合約的條款就是代碼上規定的雙方的權利和義務(代碼上的規則指定可參考法律的約束性),執行條款時,合約代碼判斷是否符合、是否違規、是否作廢,這個判決過程完全由代碼來控制。所以智能合約沒有法律上的明確條文約定,一些都是制定代碼時的協議,故法律上的有效性這個問題還需要等待。

智能合約執行過程:

智能合約-讓區塊鏈能做更多事情

首先說下智能合同的四個核心概念:

數字身份,在區塊鏈環境中不像現實社會每個人有身份證,每個企業有營業執照,那麼區塊鏈中的數字身份就類似你的個人信息,有個身份才能構建合約的主體。

數字資產,這個不難理解,身份對應資產,智能合約中沒有現實中心化機構來驗證資產,那麼你有房產要做抵押貸款,就要把這個房產作爲數字資產登記到你的數字身份下並鎖定。

合約仲裁平臺,這個就類似於現實中的仲裁機構(法庭),雖然區塊鏈目的是一個去中心化的系統,但是在目前以太坊中的仲裁平臺,個人理解爲代碼執行虛擬機類似以太坊中的EVM,區塊鏈中的合約仲裁平臺作用就是發現智能合同,並在參與合約雙方的平臺上安裝這個合約,並執行這個智能合約。

數字資產託管,智能合約用於保管數字資產。

開始執行後分爲以下幾步:

1.各個合約參與方共同來制定一份之前協商好的智能合約。

1.1.每個參與方需要先加入區塊鏈,生成一個數字身份,以及一對公私鑰,公鑰加工後成爲數字身份地址,私鑰就好好保存。

1.2.有數字身份後參與合約者,互相商定好協議,明確權利和義務,當然這都是通過編程語言來實現,完成後各自用私鑰簽名(類似於在合同上的簽字),然後分發到區塊鏈網絡中。

2.雙方約定合約後發佈到區塊鏈網絡中,理論上每個節點都會收到,驗證節點會把合約暫時保存起來,等下一個區塊生成寫入區塊。

3.通過區塊鏈的共識機制,在一定時間內會有一些合約被一起打包,驗證節點通過對區塊鏈上HASH值的計算打包稱爲一個區塊,並在網絡中發佈,其餘節點收到區塊驗證HASH值,驗證是一個多輪的環節,最終驗證節點在規定時間內對新合約集合達成一致,形成區塊(區塊內有合約集合,對於每條合約都需要驗證,驗證通過的才能到區塊中,驗證主要是合約參與者的私鑰和賬戶是否匹配)。

4.智能合約自動執行

4.1.智能合約會定時檢查狀態,遍歷合約中的事務和觸發條件,將滿足的事務推送到驗證隊列中。

4.2.待驗證的事務發佈上每個驗證節點,首先對簽名驗證,保證事務的有效性,然後驗證通過的進入共識集合,等到共識後,事務執行成功後通知用戶。

4.3.事務執行後,智能合約中的狀態機制在判斷合約狀態、標記狀態,如果合約執行完成則在區塊中刪除,如未完成等待下一輪處理。

整個智能合同的執行是自動完成,不可篡改,完全透明化。

(參考:區塊鏈:從數字貨幣到信用社會)

智能合約-讓區塊鏈能做更多事情

智能合約其中一種模型結構,其實智能合同的模型可以有自己隨着應用場景的不同來稍作修改,但基本成熟結構還是遵循各白皮書和目前比較流行的幾個區塊鏈技術中的架構模型。

智能合約白皮書中提到了12個應用場景:數字身份、記錄、證券、貿易金融、衍生產品、財務數據記錄、抵押、土地所有權記錄、供應鏈、汽車保險、臨牀試驗、癌症研究(促進癌症數據共享、促進患者同意管理過程和彙總數據貢獻和數據共享,同時保護患者的隱私,這可能需要新形式的區塊鏈技術來提供實時訪問和數據保密性,期待這一塊和臨牀試驗一期實現)

寫到這裏,有些疑問,既然智能合同一切都是建立在非信任狀態下,那爲什麼還要反覆去驗證,這裏借用一位總統的話:Trust,but verify。

相關文章