超級賬本(介紹)

2021-10-23 17:38:38 字數 2181 閱讀 6914

本系列目錄:超級賬本原始碼(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檔案定義只包含乙個組織的應用通道,鏈碼...