本系列目錄:超級賬本原始碼(v1.3)解析目錄區塊鏈是由分布式網路節點維護的乙個不可修改的交易賬本,每個節點都維護乙個副本,賬本中的交易都由共識演算法驗證後打包成區塊的形式,每個區塊中包含前乙個區塊的雜湊值,形成鏈狀。
中文英文
公有鏈public blockchain;permissionless blockchain
聯盟鏈consortium blockchain ;permissioned blockchain
第乙個廣受認可的區塊鏈應用是位元幣(bitcoin),後來的以太坊(ethereum)在其基礎上引入了智慧型合約(smart contract),不過位元幣和以太坊都屬於公鏈(public permissionless blockchain)。
但是公鏈對於企業來說,有很多不足,企業可能有如下的需求:
參與者必須可認證/識別
區塊鏈網路需要准入許可權
高吞吐量
低延遲某些交易需要保證私隱性與機密性
超級賬本(hyperledger fabric)誕生之初就是為企業級應用設計的。
fabric是准入型區塊鏈(permissioned blockchain),節點之間擁有一定的信任。
fabric擁有乙個高度模組化、可配置的架構,支援通用語言編寫智慧型合約。
fabric最大的特點之一是支援可插拔式的共識演算法,使用者可以根據使用場景配置不同的共識演算法(cft/bft)。
fabric不需要加密貨幣的支援,降低了被攻擊的風險,不需要挖礦,降低了能源消耗。
fabric支援交易的隱私與機密性。
可插拔的排序服務(ordering service)對交易順序建立共識,然後廣播區塊給其他節點。
可插拔的成員服務(membership service)為區塊鏈網路中的實體提供密碼學身份(證書)。
可選的gossip協議用來分發區塊。
隔離執行(docker)的智慧型合約。
賬本支援多種資料庫。
背書策略和驗證策略可以為每個應用單獨定製。
工業界有乙個共識,「沒有區塊鏈適用於所有場景」,fabric提供了多樣化的定製操作使得它可以根據不同場景調整。
公有鏈沒有准入機制,任何人都可以加入網路,網路成員之間不存在任何信任。位元幣和以太坊都使用了pow來建立共識,需要加密貨幣/交易費用的激勵。
聯盟鏈的成員之間存在一定程度的信任,可以使用傳統的cft、bft共識演算法支援更高的吞吐量。同時更加容易追蹤到惡意節點。
在fabric中,智慧型合約(smart contrat)被稱為鏈碼(chaincode),是區塊鏈應用程式的商業邏輯**。
已有的支援智慧型合約的平台(ethereum, tendermint, chain, and quorum.),遵循一種排序–>執行的模式來執行智慧型合約。即先驗證交易並對交易進行排序,然後分發給所有的節點,節點順序執行這些交易。
這種模式存在的兩個問題:
所有的智慧型合約必須保證是確定的(deterministic),否則無法達成共識,為了消除不確定性,需要使用特定的程式語言(比如solidity)。
節點順序執行交易,系統無法擴充套件。
fabric提出了新的交易執行模型,執行–>排序–>驗證,解決了上述兩個問題。
執行:執行乙個交易,檢查正確定性,為其背書
通過共識演算法對交易就行排序
提交交易到賬本之前對其進行驗證(背書策略、交易衝突)
由於可以定製背書策略,因此第一步不需要所有的節點都執行該交易,使得fabric可擴充套件,同時消除了不確定性(如果該交易存在不確定的操作,那麼不同的節點執行的結果不一致,無法進行第二步排序),使得fabric可以使用通用程式語言編寫智慧型合約。
在公有鏈中,合約與交易都公開儲存在區塊鏈上,毫無機密與隱私可言,對於企業來說很多場景下無法接受。
可能存在的解決方案:
加密交易後再儲存到區塊鏈上。(但是由於每個人都可以或許到賬本,解密也只是時間問題,安全性要求較高的場景可能希望即使密文也不被洩露)
零知識證明。(需要大量的時間和算力)
fabric提出了channel架構,只有在同乙個channel的節點可以看到該channel內的資料,提高了私隱性。
為了 提高隱私和機密性,fabric還提出了隱私資料(private data)。
0.6版本支援pbft,後來去掉了,目前支援kafka、raft,bft在路上…
ibm做了測試:
超級賬本Fabric教程(一) 超級賬本入門
本節分享有關拆超級賬本的概念以及體驗部署過程。會員眾多 包括cisco ibm intel j.p.morgan 荷蘭 銀行 swift 等。擁抱監管和審查。良好的擴充套件性,可插入各種功能模組。成員管理 適合企業級應用 傳統的業務模型很難做到跨機構的交易被乙個互信的機構監督執行。每個交易方都有自己...
超級賬本鏈碼
fabric中的智慧型合約稱為 鏈碼 chaincode 鏈碼部署在節點上,採用容器技術形成隔離的執行環境。鏈碼的生命週期管理主要包括鏈碼的安裝 例項化 呼叫和終止等。作為聯盟鏈方案,fabric包含管理成員身份的功能。參與區塊鏈網路成員身份必須是明確的,成員之間知道批次組織身份資訊,每個交易都有明...
超級賬本fabric集群
定義fabric集群 1 證書以及通道的初始區塊生成 啟動fabric集群之前,先使用cryptogen和configtxgen來生成必要的身份證書 存放在crypto config目錄 通道初始區塊 存放在config目錄 等檔案。在configtx.yaml檔案定義只包含乙個組織的應用通道,鏈碼...