最近幾個(gè)月去試著找區(qū)塊鏈的工作,發(fā)現(xiàn)一些大公司都是使用HyperLeger Fabric。所以稻扬,這里學(xué)習(xí)一下。從HyperLeger Fabric中文文檔看起羊瘩。
術(shù)語(yǔ)學(xué)習(xí)與理解
Anchor Peer - 錨節(jié)點(diǎn)
個(gè)人理解:像一些公鏈中的節(jié)點(diǎn)泰佳,如比特幣中的全節(jié)點(diǎn),EOS中的中心節(jié)點(diǎn)困后。
Block - 區(qū)塊
個(gè)人理解:區(qū)塊鏈中的區(qū)塊乐纸,記錄交易。不確定聯(lián)盟鏈中的交易是什么摇予?公鏈中的交易是比特幣中的轉(zhuǎn)賬記錄汽绢,以太坊中的智能合約調(diào)用等等。而聯(lián)盟鏈沒有代幣侧戴,猜測(cè)應(yīng)該是一些企業(yè)內(nèi)部的業(yè)務(wù)往來宁昭。
Chain - 鏈
個(gè)人理解:通過哈希來串聯(lián)起來的鏈。比特幣是通過區(qū)塊頭中引用父區(qū)塊哈希值的數(shù)據(jù)來進(jìn)行串聯(lián)酗宋。如果父區(qū)塊內(nèi)容更改积仗,則父區(qū)塊哈希會(huì)變化,從而該區(qū)塊的區(qū)塊頭發(fā)生變化蜕猫,進(jìn)而該區(qū)塊整體發(fā)生變化寂曹。形成連鎖反應(yīng),從而達(dá)到區(qū)塊鏈的不可篡改的特性。猜測(cè)聯(lián)盟鏈的實(shí)現(xiàn)應(yīng)該類似隆圆。
[疑問] peer從order service接收交易block漱挚。這里的order service是什么?
[猜測(cè)] 比特幣的節(jié)點(diǎn)會(huì)收集未打包的交易渺氧,從而形成一個(gè)交易池旨涝。聯(lián)盟鏈?zhǔn)窃S可鏈,各節(jié)點(diǎn)之間相互認(rèn)可侣背,可能會(huì)設(shè)計(jì)一個(gè)服務(wù)器來對(duì)未打包的區(qū)塊對(duì)這些節(jié)點(diǎn)進(jìn)行分發(fā)白华。
Chaincode - 鏈碼
個(gè)人理解:先簡(jiǎn)單粗暴的理解為智能合約。繼續(xù)學(xué)習(xí)來挖掘它們的不同點(diǎn)吧贩耐。
Channel - 通道
通道是構(gòu)建在“Fabric”網(wǎng)絡(luò)上的私有區(qū)塊鏈弧腥,實(shí)現(xiàn)了數(shù)據(jù)的隔離和保密。
Commitment - 提交
個(gè)人理解:驗(yàn)證區(qū)塊后的發(fā)布區(qū)塊
Concurrency Control Version Check - 并發(fā)控制版本檢查(CCVC)
CCVC是保持通道中各對(duì)等節(jié)點(diǎn)間狀態(tài)同步的一種方法憔杨。如果讀取的數(shù)據(jù)在執(zhí)行和提交之間被改變鸟赫,就會(huì)引發(fā)CCVC沖突蒜胖,該交易就會(huì)在賬本中被標(biāo)記為無效消别。
比特幣是哪個(gè)節(jié)點(diǎn)的鏈長(zhǎng),則認(rèn)可哪個(gè)節(jié)點(diǎn)的台谢,從而達(dá)成共識(shí)寻狂。所以,這里的CCVC算個(gè)人理解為共識(shí)機(jī)制的一種算法來保證共識(shí)朋沮。
Configuration Block - 配置區(qū)塊
包含為系統(tǒng)鏈(排序服務(wù))或通道定義成員和策略的配置數(shù)據(jù)蛇券。
個(gè)人理解:因?yàn)槁?lián)盟連有通道(自己的私鏈),因此樊拓,私鏈的配置通過這個(gè)配置區(qū)塊來實(shí)現(xiàn)纠亚。
Consensus - 共識(shí)
用于產(chǎn)生一個(gè)對(duì)于排序的同意書和確認(rèn)構(gòu)成區(qū)塊的交易集的正確性。
個(gè)人理解:之前對(duì)共識(shí)的理解更偏公鏈一些:共識(shí)是一套獲取區(qū)塊記賬權(quán)的方法筋夏。因?yàn)楣溨械挠涃~權(quán)是有收益的蒂胞。而聯(lián)盟鏈中的記賬感覺沒有公鏈中那么有激勵(lì)性。所以条篷,這里理解應(yīng)該更廣泛一些:確定區(qū)塊的順序和正確的方法
Current State - 當(dāng)前狀態(tài)
ledger的current state表示其chain交易log中所有key的最新值骗随。
個(gè)人理解:不是很理解
Dynamic Membership - 動(dòng)態(tài)成員
Fabric支持動(dòng)態(tài)添加-移除members、peers和ordering服務(wù)節(jié)點(diǎn)
[疑問] 這里的這一項(xiàng)是指一個(gè)功能赴叹,還是一個(gè)實(shí)體鸿染?公鏈中基本都默認(rèn)包含這個(gè)動(dòng)態(tài)成員的。
Endorsement - 背書
指一個(gè)peer執(zhí)行一個(gè)交易并返回YES-NO給生成交易proposal的client app 的過程乞巧。
比特幣中是選擇這條鏈來繼續(xù)延長(zhǎng)(或者說挖礦)涨椒,一種算力的選擇。而聯(lián)盟連中不必使用這種低效的策略。而是感覺像投票的方法來表示自身的認(rèn)可與否蚕冬。不確定是否和POS和DPOS相像柱宦。不過POS或DPOS會(huì)有懲罰措施,來懲罰作惡者播瞳。但在許可鏈中理論上不存在作惡者掸刊。
Endorsement policy - 背書策略
個(gè)人理解:節(jié)點(diǎn)給出YES或NO的依據(jù)代碼。
背書策略由背書節(jié)點(diǎn)基于應(yīng)用程序和對(duì)抵御不良行為的期望水平來組織管理赢乓。
Fabric-ca
Fabric-ca是默認(rèn)的證書管理組件
個(gè)人理解:通過該證書管理組件來管理許可的節(jié)點(diǎn)忧侧。
Genesis Block - 初始區(qū)塊
個(gè)人理解:第一個(gè)區(qū)塊,類似比特幣的創(chuàng)始區(qū)塊
Gossip Protocol - Gossip協(xié)議
Gossip數(shù)據(jù)傳輸協(xié)議有三項(xiàng)功能:1)管理peer發(fā)現(xiàn)和channel成員牌芋;2)channel上的所有peer間廣播賬本數(shù)據(jù)蚓炬;3)channel上的所有peer間同步賬本數(shù)據(jù)。
個(gè)人理解:P2P網(wǎng)絡(luò)節(jié)點(diǎn)要處理的事情
Initialize - 初始化
一個(gè)初始化chaincode程序的方法
Install - 安裝
Instantiate - 實(shí)例化
Invoke - 調(diào)用
用于調(diào)用chaincode內(nèi)的函數(shù)躺屁。Chaincode invoke就是一個(gè)交易proposal肯夏,然后執(zhí)行模塊化的流程(背書、共識(shí)犀暑、 驗(yàn)證驯击、 提交)。invoke的結(jié)構(gòu)就是一個(gè)函數(shù)和一個(gè)參數(shù)數(shù)組耐亏。
[疑問] 交易proposal徊都?
是指節(jié)點(diǎn)的業(yè)務(wù)提議?
Leading Peer - 主導(dǎo)節(jié)點(diǎn)
個(gè)人理解:一個(gè)部門或公司可以有多個(gè)節(jié)點(diǎn)广辰,節(jié)點(diǎn)中有個(gè)代表該實(shí)體的主節(jié)點(diǎn)來與網(wǎng)絡(luò)的首發(fā)區(qū)塊暇矫。
Ledger - 賬本
[疑問] 比特幣的鏈本身就是賬本。這里的賬本和區(qū)塊鏈又是什么關(guān)系呢择吊?不像是節(jié)點(diǎn)私有的賬本李根。每個(gè)節(jié)點(diǎn)維護(hù)的賬本不就是區(qū)塊嗎?
Member - 成員
個(gè)人理解:實(shí)體几睛,部門或子公司房轿,一個(gè)實(shí)體有一個(gè)證書。
Membership Service Provider - MSP
MSP是指為client和peer提供證書的系統(tǒng)抽象組件枉长。
不理解
Membership Services - 成員服務(wù)
ECert是長(zhǎng)期的身份憑證冀续;TCert是短期的身份憑證,是匿名和不可鏈接的必峰。
個(gè)人理解:設(shè)置了不同的身份憑證洪唐,通過不同的證書來管理。
Ordering Service - 排序服務(wù)或共識(shí)服務(wù)
將交易排序放入block的節(jié)點(diǎn)的集合吼蚁。ordering service獨(dú)立于peer流程之外凭需,并以先到先得的方式為網(wǎng)絡(luò)上所有的channel作交易排序问欠。
[疑問] 這里是先到先得了,為什么還要排序粒蜈,依據(jù)什么排序顺献?是因?yàn)閏hannel被不同的節(jié)點(diǎn)來共享導(dǎo)致的嗎?
Peer - 節(jié)點(diǎn)
[疑問] Peer和Anchor Peer有什么區(qū)別枯怖,還是只是簡(jiǎn)稱注整?
Policy - 策略
有背書策略,校驗(yàn)策略度硝,區(qū)塊提交策略肿轨,Chaincode管理策略和網(wǎng)絡(luò)-通道管理策略。
Proposal - 提案
一種針對(duì)channel中某peer的背書請(qǐng)求蕊程。每個(gè)proposal要么是Chaincode instantiate要么是Chaincode invoke椒袍。
個(gè)人理解:Proposal不是業(yè)務(wù),而是背書請(qǐng)求藻茂。也可能是業(yè)務(wù)+請(qǐng)求驹暑。像“員工請(qǐng)假,請(qǐng)上級(jí)簽核”那樣辨赐?
Query - 查詢
對(duì)于current state中某個(gè)key的value的查詢請(qǐng)求优俘。
個(gè)人理解:有人說區(qū)塊鏈?zhǔn)菦]有刪除和修改的數(shù)據(jù)包。那么只剩下了新增和查詢了肖油。
Software Development Kit - SDK
SDK為開發(fā)人員提供了一個(gè)結(jié)構(gòu)化的庫(kù)環(huán)境兼吓,用于編寫和測(cè)試鏈碼應(yīng)用程序臂港。
State Database - stateDB
為了從Chaincode中高效的讀寫森枪,Current state 數(shù)據(jù)存儲(chǔ)在stateDB中,包括levelDB和couchDB审孽。
聯(lián)盟鏈里面還有使用數(shù)據(jù)庫(kù)嗎县袱?
System Chain - 系統(tǒng)鏈
系統(tǒng)鏈存在于ordering service中,與channel類似佑力,具有包含以下信息的初始配置:MSP信息式散、策略和信息配置。
Transaction - 交易
Chaincode的invoke或instantiate操作打颤。Invoke是從ledger中請(qǐng)求read-write set暴拄;Instantiate是請(qǐng)求在peer上啟動(dòng)Chaincode容器。
[疑問] 交易的內(nèi)容是什么编饺?