這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
背景
超級賬本(Hyperledger)是linux基金會下的眾多項目中的一個。是由IBM、因特爾,還有金融公司,GP摩根以及其他聯合機構於2015年提出來的區塊鏈項目,超級賬本還包括4個架構項目:Sawtooth、Iroha、Fabric、Burrow。其中廣為人知的是Fabric。當前成員大約140個,其中1/4來自中國,現在中國技術組由萬達、華為、IBM擔任主要負責,負責中國會員和中國需求的提供,以及推進代碼。
超級賬本是什嗎?
正如Hyperledger官方網站上的描述,這一項目的目標是發展一個跨行業的開放式標準以及開原始碼開發庫,允許企業建立自訂的分散式總帳解決方案,以促進區塊鏈技術在商業當中的應用。
我的理解,超級賬本Fabric是一門程式設計語言,它定義了編程標準,函數庫等基礎規則,允許企業使用這門語言開發出適合自己的應用。或者再深入一層,超級賬本Fabric是區塊鏈的驅動程式,通過它實現將區塊鏈類商務邏輯解釋給開發平台,再把平台實現方式反饋給商務邏輯,從而將不同企業區塊鏈各種應用打包成為可行的解決方案。
主要概念
Anchor(錨點):一般指作為剛啟動時候的初始聯絡元素或與其它結構的溝通元素。如剛加入一個 channel 的節點,需要通過某個錨點節點來快速擷取 channel 內的情況(如其它節點的存在資訊)。
Auditability(審計性):在一定許可權和許可下,可以對鏈上的交易進行審計和檢查。
Block(區塊):代表一批得到確認的交易資訊的整體,準備被共識加入到區塊鏈中。
Blockchain(區塊鏈):由多個區塊鏈接而成的鏈表結構,除了初始區塊,每個區塊頭部都包括前繼區塊內容的 hash 值。
Chaincode(鏈碼):區塊鏈上的應用代碼,擴充自“智能合約”概念,支援 golang、nodejs 等語言,多為圖靈完備。
Channel(通道):Fabric 網路上的私人隔離。通道中的 chaincode 和交易只有加入該通道的節點可見。同一個節點可以加入多個通道,並為每個通道內容維護一個賬本。
Committer(提交節點):1.0 架構中一種 peer 節點角色,負責對 orderer 排序後的交易進行檢查,選擇合法的交易執行並寫入儲存。
Commitment(提交):提交節點完成對排序後交易的驗證,將交易內容寫到區塊,並更新世界觀的過程。
Confidentiality(保密):只有交易相關方可以看到交易內容,其它人未經授權則無法看到。
Endorser(推薦節點或背書節點):1.0 架構中一種 peer 節點角色,負責檢驗某個交易是否合法,是否願意為之背書、簽名。
Endorsement:背書過程。按照 chaincode 部署時候的 endorsement 策略,相關 peer 對交易提案進行類比和檢查,決策是否為之背書。如果交易提案獲得了足夠多的背書,則可以構造正式交易進行進一步的共識。
Invoke(調用):一種交易類型,對 chaincode 中的某個方法進行調用,一般需要包括調用方法和調用參數。
Ledger(賬本):包括區塊鏈結構(帶有所有的交易資訊)和當前的世界觀(world state)。
Member(成員):代表某個具體的實體身份,在網路中有用自己的根憑證。節點和應用都必須屬於某個成員資格。同一個成員可以在同一個通道中擁有多個 peer 節點,其中一個為 leader 節點,代表成員與排序節點進行互動,並分發排序後的區塊給屬於同一成員的其它節點。
MSP(Member Service Provider,成員服務提供者):抽象的實現成員服務(身分識別驗證,認證管理等)的組件,實現對不同類型的成員服務的可拔插支援。
Non-validating Peer(非驗證節點):不參與賬本維護,僅作為交易代理響應用戶端的 REST 請求,並對交易進行一些基本的有效性檢查,之後轉寄給驗證節點。
Orderer(排序節點):1.0 架構中的共識服務角色,負責排序看到的交易,提供全域確認的順序。
Permissioned Ledger(帶許可權的賬本):網路中所有節點必須是經過許可的,非許可過的節點則無法加入網路。
Privacy(隱私保護):交易員可以隱藏交易的身份,其它成員在無特殊許可權的情況下,只能對交易進行驗證,而無法獲知身份資訊。
System Chain(系統鏈):由對網路中配置進行變更的配置區塊組成,一般可以用來作為組成網路成員們形成的聯盟約定。
Transaction(交易):執行賬本上的某個函數調用或者部署 chaincode。調用的具體函數在 chaincode 中實現。
Transactor(交易者):發起交易調用的用戶端。
Validating Peer(驗證節點):維護賬本的核心節點,參與一致性維護、對交易的驗證和執行。
World State(世界狀態):即最新的全域賬本狀態。Fabric 用它來儲存曆史交易發生後產生的最新的狀態,可以用索引值或文檔資料庫實現。
主要架構
![超級賬本1.0參考架構]
(http://upload-images.jianshu.io/upload_images/1785959-a4b413a8957c43f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
設計目標:
1、chaincode信任的靈活性:支援多個ordering服務節點,增強共識的容錯能力和對抗orderer作惡的能力
- 擴充性: 將endorsement和ordering進行分離,實現多通道(實際是分區)結構,增強系統的擴充性;同時也將chaincode執行、ledger、state維護等非常消耗系統效能的任務與共識任務分離,保證了關鍵任務(ordering)的可靠執行
保密性:新架構對於chaincode在資料更新、狀態維護等方面提供了新的保密性要求,提高系統的業務、安全方面的能力
共識服務的模組化:支援可插拔的共識結構,支援多種共識服務的接入和服務實現
架構特點
Hyperledger fabirc 1.0 版本的在0.6版本基礎上,針對安全、保密、部署、維護、實際業務情境需求等方面進行了很多改進,特別是Peer節點的功能分離,給系統架構具備了支援多通道、可插拔的共識的能力,使得Fabric脫離了0.6版本帶給人的青澀感,已經接近於工業應用的需求。
初步瞭解Hyperledger Fabric
1、登陸
https://crl.ptopenlab.com:8800/bc/#home
2、註冊使用者,登陸賬戶,進入MYDASHBOARD。
3、建立自己的一個chain。
共識演算法選擇PBFT實際拜占庭容錯。
apply new chain
檢查自己的chain
4、部署智能合約
系統預設提供兩個智能合約的模板,可以基於範本部署,也可以自己上傳一個。
部署合約
基於chaincode_example02模板deploy一個智能合約
deploy一個智能合約
合約內容為:["qujon","10000","higher","200000"]
5、現在我們做個轉賬。
將qujon轉賬給higher500
轉賬成功。
6、查詢轉賬結果。
待續
參考內容:
什麼是Hyperledger的核心競爭力?
http://www.8btc.com/hyperledger-julian-gordon-0526
IBM HyperLedger fabric 簡述
http://www.8btc.com/ibm-hyperledger-fabric
Hyperledger Fabric 技術術語
公眾號TechFirst文章。
Hyperledger Fabric1.0架構概覽
https://zhuanlan.zhihu.com/p/25130241