簡介:上一章我們簡單介紹了區塊鏈技術的發展情況,並詳細介紹智慧型合約的基礎概念。可以說,區塊鏈1.0時代與現實生活相去甚遠。智慧型合約的出現,給區塊鏈帶來了驚天動地的變化,區塊鏈也從一種賬本形式,變成了下一代計算網路的雛形。這一章我們將聊聊智慧型合約的應用場景。
一、黑客攻擊的風險。回到剛才的例子,人們願意相信銀行的,但是同樣的服務人們還願意不願意相信支付寶呢?畢竟這些證據都從高度保密的銀行專向了支付寶系統中,他也有自己的「芝麻信用」,他會不會篡改呢?對很多人來講這裡就要先存個疑問了。
那區塊鏈技術又什麼過人之處,可以贏得使用者的信任呢?
這裡恰恰就是我們剛剛提到兩個中心化系統不能解決的問題。首先是不可篡改,這樣就不需要擔心合約的內容會被更改,是資料無法刪除、修改,只能新增,保證了歷史的可追溯,同時作惡的成本將很高,因為其作惡行為將被永遠記錄,同時擁有高可靠行,我們不用擔心系統在條件被滿足時不執行合約;然後就是去中心化和給我們帶來的全網備份,完備的記錄完全可以支援支援事後的審計,避免了中心化因素的影響。
有了以上的特性,我們不再需要找乙個中心化的組織來簽訂合約,區塊鏈自然會幫助我們完成其他的工作。這就是區塊鏈帶來的革命。智慧型合約的能量才被無限放大。
基於區塊鏈的智慧型合約構建及執行分為如下幾步:
1、多方使用者共同參與制定乙份智慧型合約;
2、合約通過p2p網路擴散並存入區塊鏈;
3、區塊鏈構建的智慧型合約自動執行。
下面詳細描述步驟1「多方使用者共同參與制定乙份智慧型合約」的過程,包括如下步驟:
首先使用者必須先註冊成為區塊鏈的使用者,區塊鏈返回給使用者一對公鑰和私鑰;公鑰做為使用者在區塊鏈上的賬戶位址,私鑰做為操作該賬戶的唯一鑰匙。
兩個以兩個以上的使用者根據需要,共同商定了乙份承諾,承諾中包含了雙方的權利和義務;這些權利和義務以電子化的方式,程式設計機器語言;參與者分別用各自私鑰進行簽名;以確保合約的有效性。
簽名後的智慧型合約,將會根據其中的承諾內容,傳入區塊鏈網路中。
下面詳細描述步驟2「合約通過p2p網路擴散並存入區塊鏈」的過程,包括如下步驟:
(1)合約通過p2p的方式在區塊鏈全網中擴散,每個節點都會收到乙份;區塊鏈中的驗證節點會將收到的合約先儲存到記憶體中,等待新一輪的共識時間,觸發對該份合約的共識和處理。
(2)共識時間到了,驗證節點會把最近一段時間內儲存的所有合約,一起打包成乙個合約集合(set),並算出這個合約集合的hash值,最後將這個合約集合的hash值組裝成乙個區塊結構,擴散到全網;其它驗證節點收到這個區塊結構後,會把裡面包含的合約集合的hash取出來,與自己儲存的合約集合進行比較;同時傳送乙份自己認可的合約集合給其它的驗證節點;通過這種多輪的傳送和比較;所有的驗證節點最終在規定的時間內對最新的合約集合達成一致。
(3)最新達成的合約集合會以區塊的形式擴散到全網,如下圖所示,每個區塊包含以下資訊:當前區塊的hash值、前一區塊的hash值、達成共識時的時間戳、以及其它描述資訊;同時區塊鏈最重要的資訊是帶有一組已經達成共識的合約集;收到合約集的節點,都會對每條合約進行驗證,驗證通過的合約才回最終寫入區塊鏈中,驗證的內容主要是合約參與者的私鑰簽名是否與賬戶匹配。
下面是步驟3「區塊鏈構建的智慧型合約自動執行」的過程,包括如下步驟:
(1)智慧型合約會定期檢查自動機狀態,逐條遍歷每個合約內包含的狀態機、事務以及觸發條件;將條件滿足的事務推送到待驗證的佇列中,等待共識;未滿足觸發條件的事務將繼續存放在區塊鏈上。
(2)進入最新輪驗證的事務,會擴散到每乙個驗證節點,與普通區塊鏈交易或事務一樣,驗證節點首先進行簽名驗證,確保事務的有效性;驗證通過的事務會進入待共識集合,等大多數驗證節點達成共識後,事務會成功執行並通知使用者。
(3)事務執行成功後,智慧型合約自帶的狀態機會判斷所屬合約的狀態,當合約包括的所有事務都順序執行完後,狀態機會將合約的狀態標記為完成,並從最新的區塊中移除該合約;反之將標記為進行中,繼續儲存在最新的區塊中等待下一輪處理,直到處理完畢;整個事務和狀態的處理都由區塊鏈底層內建的智慧型合約系統自動完成,全程透明、不可攥改。
由此我們可以了解在存證、溯源、數字資產等領域有著廣泛的應用場景。
區塊鏈2.0是更巨集觀的對整個市場去中心化,利用區塊鏈技術來轉換許多不同的數字資產而不僅僅是位元幣,通過轉讓來建立不同資產的價值。區塊鏈技術的去中心化賬本功能可以被用來建立、確認、轉移各種不同型別的資產及合約。幾乎所有型別的金融交易都可以被改造成在區塊鏈上使用,包括**、私募股權、眾籌、債券和其他型別的金融衍生品如**、期權等。
現在,以太坊網路以及國內的矩陣元等一系列區塊鏈社群都提供了公開的智慧型合約程式設計的介面。
部分內容摘自〈區塊鏈:從數字貨幣到信用社會〉(中信出版社)
智慧型合約入門
智慧型合約也稱為 自執行和約 或者叫 化的合約 這個小節裡面我們不聊智慧型合約的社會意義,而是假設你是一位開發者,準備上手智慧型合約的開發,那麼動手之前都有哪些基礎知識是必備的呢?本文為你呈現。智慧型合約的概念於 1994 年由 nick szabo 首次提出。廣義上來講,任何的能自動完成的合同就是...
智慧型合約入門
先從乙個非常基礎的例子開始 123 4567 891011 12 contract zhaoxistorage function get constant returns uint retval 在solidity中,乙個合約由一組 合約的函式 和資料 合約的狀態 組成。合約位於以太坊區塊鏈上的乙個...
編寫智慧型合約
1.安裝node.js 2.安裝truffle npm install g truffle 3.啟動testrpc以太坊環境 testrpc 4.另開終端視窗新建專案 mkdir demo cd demo 5.初始化專案目錄 truffle init 6.建立合約檔案 truffle create ...