英文簡(jiǎn)介:http://hyperledger-fabric.readthedocs.io/en/latest/blockchain.html
中文簡(jiǎn)介:https://hyperledgercn.github.io/hyperledgerDocs/blockchain_zh/
簡(jiǎn)介
Hyperledger Fabric是一個(gè)提供分布式賬本解決方案的平臺(tái)。Hyperledger Fabric由模塊化架構(gòu)支撐茁肠,并具備極佳的保密性为鳄、可伸縮性欲账、靈活性和可擴(kuò)展性。Hyperledger Fabric被設(shè)計(jì)成支持不同的模塊組件直接拔插啟用,并能適應(yīng)在經(jīng)濟(jì)生態(tài)系統(tǒng)中錯(cuò)綜復(fù)雜的各種場(chǎng)景。
Hyperledger Fabric提供了一個(gè)獨(dú)特的可伸縮匀钧、可擴(kuò)展的架構(gòu),這也是Hyperledger Fabric與其他區(qū)塊鏈解決方案的顯著區(qū)別谬返。假如你正在計(jì)劃部署具備完整審查機(jī)制以及開源架構(gòu)的企業(yè)級(jí)區(qū)塊鏈之斯,Hyperledger Fabric是你的一個(gè)不錯(cuò)的起點(diǎn)。
對(duì)于初學(xué)者遣铝,推薦首先閱讀下文中的簡(jiǎn)介佑刷,以便于理解區(qū)塊鏈的工作原理、具有的主要特點(diǎn)以及Hyperledger Fabric中包含的組件酿炸。
如果你已經(jīng)對(duì)區(qū)塊鏈和Hyperledger Fabric有所了解瘫絮,可直接閱讀快速入門,在快速入門中包含相關(guān)示例填硕、技術(shù)規(guī)格以及APIs等等麦萤。
區(qū)塊鏈?zhǔn)鞘裁矗?/h1>
分布式賬本
一個(gè)區(qū)塊鏈網(wǎng)絡(luò)的核心是一個(gè)分布式賬本,在這個(gè)賬本中記錄了網(wǎng)絡(luò)中發(fā)生的所有交易信息扁眯。
區(qū)塊鏈賬本通常被定義為去中心化壮莹,這是因?yàn)樵谡麄€(gè)網(wǎng)絡(luò)中,每個(gè)參與者都保存著一個(gè)區(qū)塊鏈賬本的副本姻檀,所有參與者通過(guò)協(xié)作共同維護(hù)著賬本命满。接下來(lái)我們會(huì)看到,去中心化與協(xié)作這兩個(gè)特點(diǎn)在現(xiàn)實(shí)世界的商業(yè)貨物交易和商務(wù)服務(wù)中展現(xiàn)出的顯著優(yōu)點(diǎn)绣版。
除了去中心化與協(xié)作胶台,區(qū)塊鏈的另一個(gè)顯著特點(diǎn)是信息在只能以“附加”的方式記錄在區(qū)塊鏈中,同時(shí)使用加密技術(shù)保障了交易一旦被添加進(jìn)賬本中杂抽,就無(wú)法被篡改诈唬。區(qū)塊鏈的這種不可篡改性使得信息來(lái)源的確認(rèn)變得異常容易,這是由于參與者可以肯定信息一旦被寫入?yún)^(qū)塊鏈中就幾乎不可被篡改缩麸。這也是為什么區(qū)塊鏈常常也被稱為證明的系統(tǒng)的原因铸磅。
智能合約
為了持續(xù)的進(jìn)行信息的更新,以及對(duì)賬本進(jìn)行管理(寫入交易匙睹,進(jìn)行查詢等)愚屁,區(qū)塊鏈網(wǎng)絡(luò)引入了智能合約來(lái)實(shí)現(xiàn)對(duì)賬本的訪問(wèn)和控制。
智能合約不僅僅可用于在區(qū)塊鏈網(wǎng)絡(luò)中打包信息痕檬,它們也可以被用于自動(dòng)的執(zhí)行由參與者定義的特定交易操作。
例如送浊,買賣雙方可以定義一個(gè)智能合約梦谜,以保證當(dāng)賣方發(fā)貨的商品運(yùn)送到達(dá)時(shí),買方支付的貨款會(huì)自動(dòng)轉(zhuǎn)賬給賣方。
共識(shí)
保持網(wǎng)絡(luò)中所有賬本交易的同步流程唁桩,就是共識(shí)闭树。共識(shí)保證了賬本只會(huì)在交易雙方都確認(rèn)后才進(jìn)行更新。同時(shí)在賬本更新時(shí)荒澡,交易雙方能夠在賬本中的相同位置报辱,更新一個(gè)相同的交易信息。
后面我們會(huì)詳細(xì)介紹賬本单山、智能合約和共識(shí)的相關(guān)內(nèi)容碍现。但目前為止,我們只需把區(qū)塊鏈理解為一個(gè)共享的米奸,通過(guò)智能合約更新的多副本交易系統(tǒng)昼接,同時(shí)這個(gè)系統(tǒng)通過(guò)協(xié)作共識(shí)機(jī)制保證了網(wǎng)絡(luò)中所有賬本副本的同步。
區(qū)塊鏈為什么切實(shí)可行悴晰?
當(dāng)前的記錄系統(tǒng)
自從商業(yè)數(shù)據(jù)記錄網(wǎng)絡(luò)系統(tǒng)誕生以來(lái)慢睡,直到今天的交易網(wǎng)絡(luò)并沒(méi)有發(fā)生太大的變化。在商業(yè)網(wǎng)絡(luò)中的成員進(jìn)行相互交易時(shí)铡溪,他們各自維護(hù)著自己獨(dú)立的交易記錄漂辐。同時(shí),人們交易的物品——無(wú)論是16世紀(jì)佛蘭德的掛毯棕硫,還是現(xiàn)代的有價(jià)證券——都任然需要在每次賣出交易過(guò)程中提供來(lái)源信息者吁,以確保賣方擁有所出售商品的所有權(quán)。
當(dāng)前的商業(yè)網(wǎng)絡(luò)就像下圖描述的一樣:
隨著科技的進(jìn)步饲帅,上圖中的交易流程不斷演化發(fā)展复凳,經(jīng)歷了從使用石碑、使用紙質(zhì)賬本灶泵、使用硬盤存儲(chǔ)器直到使用云計(jì)算平臺(tái)的不同階段育八,但流程的底層架構(gòu)并沒(méi)有發(fā)生任何變化。并不存在一個(gè)可以統(tǒng)一管理網(wǎng)絡(luò)參與者身份的系統(tǒng)赦邻,確認(rèn)商品來(lái)源十分費(fèi)勁髓棋,常常會(huì)耗費(fèi)數(shù)天的時(shí)間明確證券的交易(包含數(shù)以萬(wàn)計(jì)美元的數(shù)量)。人們必須簽訂合約并手動(dòng)執(zhí)行惶洲,每一個(gè)系統(tǒng)中的數(shù)據(jù)庫(kù)都包含著獨(dú)立的信息并最終代表一個(gè)單點(diǎn)的錯(cuò)誤按声。
在今天的信息和過(guò)程共享斷裂的方法中,建立一個(gè)跨越商業(yè)網(wǎng)絡(luò)的記錄系統(tǒng)是不可能的恬吕,盡管可見性和信任的需求是明確的签则。
區(qū)塊鏈的不同點(diǎn)
那我們?yōu)槭裁床挥谩艾F(xiàn)代”的交易系統(tǒng)來(lái)替代這種效率低下的網(wǎng)絡(luò)?新的商業(yè)網(wǎng)絡(luò)可以具有標(biāo)準(zhǔn)的方法建立身份信息铐料,執(zhí)行交易渐裂,并且存儲(chǔ)數(shù)據(jù)豺旬。為什么不建立一個(gè)可信的交易鏈條記錄?通過(guò)查詢這個(gè)鏈條上的所有交易柒凉,來(lái)確定交易商品來(lái)源族阅,并且這個(gè)鏈條上的信息一旦被寫入,就無(wú)法被再次篡改膝捞。
以上描述的商業(yè)網(wǎng)絡(luò)就如下圖所示:
這就是區(qū)塊鏈網(wǎng)絡(luò)坦刀。在區(qū)塊鏈網(wǎng)絡(luò)中,每一個(gè)參與者都保有一份賬本的副本蔬咬。在區(qū)塊鏈網(wǎng)絡(luò)中鲤遥,不僅僅是賬本信息會(huì)被共享,更新賬本的流程也是共享的计盒。不同于目前的系統(tǒng)——參與者使用私有的程序?qū)?strong>私有的賬本進(jìn)行更新渴频,而區(qū)塊鏈系統(tǒng)使用共享的程序?qū)?strong>共享的賬本進(jìn)行更新。
通過(guò)使用共享賬本協(xié)調(diào)整個(gè)商業(yè)網(wǎng)絡(luò)北启,區(qū)塊鏈網(wǎng)絡(luò)能夠減少時(shí)間卜朗、成本以及隱私信息泄露的風(fēng)險(xiǎn),并且能使流程更加可信和透明咕村。
現(xiàn)在你已經(jīng)明白了什么是區(qū)塊鏈以及它的用途场钉。同時(shí)還有許多其他的內(nèi)容也非常重要,他們是信息與流程共享的基礎(chǔ)知識(shí)懈涛。
Hyperledger Fabric是什么逛万?
2015年,Linux基金會(huì)啟動(dòng)了Hyperledger項(xiàng)目批钠,目標(biāo)是發(fā)展跨行業(yè)的區(qū)塊鏈技術(shù)宇植。Hyperledger項(xiàng)目并不僅僅是定義一個(gè)單一的區(qū)塊鏈標(biāo)準(zhǔn),它更鼓勵(lì)通過(guò)開源社區(qū)的力量協(xié)作開發(fā)區(qū)塊鏈技術(shù)埋心。
Hyperledger Fabric是Hyperledger中的一個(gè)區(qū)塊鏈項(xiàng)目指郁。與其他區(qū)塊鏈技術(shù)類似,Hyperledger Fabric包含一個(gè)賬本拷呆,使用智能合約并且是一個(gè)通過(guò)所有參與者管理交易的系統(tǒng)闲坎。
Hyperledger Fabric與其他區(qū)塊鏈系統(tǒng)最大的不同體現(xiàn)在私有和許可。與開放無(wú)需許可的網(wǎng)絡(luò)系統(tǒng)允許未知身份的參與者加入網(wǎng)絡(luò)不同(需要通過(guò)工作量證明協(xié)議來(lái)保證交易有效并維護(hù)網(wǎng)絡(luò)的安全)茬斧,Hyperledger Fabric通過(guò)Membership Service Provider(MSP)來(lái)登記所有的成員腰懂。
Hyperledger Fabric也提供了多個(gè)可拔插選項(xiàng)。賬本數(shù)據(jù)可被存儲(chǔ)為多種格式项秉,共識(shí)機(jī)制可被接入或者斷開绣溜,同時(shí)支持多種不同的MSP。
Hyperledger Fabric提供了建立channel的功能伙狐,這允許參與者為交易新建一個(gè)單獨(dú)的賬本涮毫。當(dāng)網(wǎng)絡(luò)中的一些參與者是競(jìng)爭(zhēng)對(duì)手時(shí)瞬欧,這個(gè)功能變得尤為重要贷屎。因?yàn)檫@些參與者并不希望所有的交易信息——比如提供給部分客戶的特定價(jià)格信息——都對(duì)網(wǎng)絡(luò)中所有參與者公開罢防。只有在同一個(gè)channel中的參與者,才會(huì)擁有該channel中的賬本唉侄,而其他不在此channel中的參與者則看不到這個(gè)賬本咒吐。
共享賬本
Hyperledger Fabric包含一個(gè)賬本子系統(tǒng),這個(gè)子系統(tǒng)包含兩個(gè)組件:世界狀態(tài)(world state)和交易記錄属划。在Hyperledger Fabric網(wǎng)絡(luò)中的每一個(gè)參與者都擁有一個(gè)賬本的副本恬叹。
世界狀態(tài)組件描述了賬本在特定時(shí)間點(diǎn)的狀態(tài),它是賬本的數(shù)據(jù)庫(kù)同眯。交易記錄組件記錄了產(chǎn)生世界狀態(tài)當(dāng)前值的所有交易绽昼,它是世界狀態(tài)的更新歷史。那么须蜗,賬本則是世界狀態(tài)數(shù)據(jù)庫(kù)和交易歷史記錄的集合硅确。
賬本的世界狀態(tài)存儲(chǔ)數(shù)據(jù)庫(kù)是可更換的。默認(rèn)配置下明肮,這是一個(gè)key-value存儲(chǔ)數(shù)據(jù)庫(kù)菱农。交易記錄模塊不需要被接入。只需要記錄在區(qū)塊鏈網(wǎng)絡(luò)中賬本數(shù)據(jù)庫(kù)被使用時(shí)之前和之后的值就可以了柿估。
智能合約
Hyperledger Fabric智能合約被稱為chaincode循未,當(dāng)一個(gè)區(qū)塊鏈外部的一個(gè)應(yīng)用程序需要訪問(wèn)賬本時(shí),就會(huì)調(diào)用chaincode秫舌。大多數(shù)情況下的妖,chaincode只會(huì)訪問(wèn)賬本的數(shù)據(jù)庫(kù)組件和世界狀態(tài)(world state)(比如查詢),但不會(huì)查詢交易記錄足陨。
chaincode可通過(guò)多種不同編程語(yǔ)言實(shí)現(xiàn)嫂粟。目前支持chaincode的語(yǔ)言是Go(包含對(duì)java的支持),更多的編程語(yǔ)言會(huì)在今后的版本中獲得支持钠右。
隱私
根據(jù)網(wǎng)絡(luò)的需求赋元,在一個(gè)Business-to-Business(B2B)網(wǎng)絡(luò)中的參與者會(huì)對(duì)信息共享的程度極為敏感。然而飒房,對(duì)于其他的網(wǎng)絡(luò)搁凸,隱私并不是首要考慮的因素。
Hyperledger Fabric支持構(gòu)建隱私保護(hù)嚴(yán)格的網(wǎng)絡(luò)狠毯,也支持構(gòu)建相對(duì)開放的網(wǎng)絡(luò)护糖。
共識(shí)
在網(wǎng)絡(luò)中,不同的參與者寫入的交易必須按照產(chǎn)生順序依次被寫入賬本中嚼松。要實(shí)現(xiàn)這一目標(biāo)嫡良,交易順序必須被正確的建立并且必須包含拒絕錯(cuò)誤(或者惡意)插入賬本中的無(wú)效交易的方法锰扶。
這完全是計(jì)算機(jī)科學(xué)的研究領(lǐng)域,可以有多種方法實(shí)現(xiàn)上面提到的目標(biāo)寝受,這些方法各有優(yōu)缺點(diǎn)坷牛。例如,PBFT (Practical Byzantine Fault Tolerance)可以為文件副本提供一種機(jī)制來(lái)相互通信很澄,即使是在發(fā)生腐敗的情況下京闰,也可以保證每個(gè)副本保持一致。另外甩苛,在比特幣中蹂楣,通過(guò)一種稱為挖礦的行為進(jìn)行排序。在挖礦過(guò)程中讯蒲,競(jìng)爭(zhēng)的計(jì)算機(jī)競(jìng)相解決一個(gè)密碼難題痊土,這個(gè)謎題定義了所有后續(xù)的構(gòu)建順序。
Hyperledger Fabric被設(shè)計(jì)為允許網(wǎng)絡(luò)構(gòu)建者依據(jù)業(yè)務(wù)需求來(lái)選擇采用的共識(shí)機(jī)制。好比考慮隱私性,就會(huì)有一連串的需求慎恒,從高度結(jié)構(gòu)化的網(wǎng)絡(luò)或是更加點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)。
更多的Hyperledger Fabric共識(shí)機(jī)制會(huì)在另一份文檔中詳細(xì)描述赞哗,這些共識(shí)機(jī)制目前包含SOLO,Kafka以及后續(xù)會(huì)添加的SBFT (Simplified Byzantine Fault Tolerance)辆雾。