日本丶国产丶欧美色综合_67194熟妇在线播放直接进入_粗暴大黑鳮巴视频欧美_色狠狠久久AV北条麻妃_中文字幕一区二区三区精彩视频_国内精品久久久久影院优_亚洲成A∨人片在线观看不卡_亚洲婷婷综合中文字幕第一页_中文字幕日韩一区二区三区不卡_少妇高潮喷潮久久久影院,国外AV在线,色噜噜狠狠综曰曰曰亚洲人成国产精品无码果冻 ,久久aV无码av高潮aV三区

產(chǎn)品中心

● 可信聯(lián)盟區(qū)塊鏈產(chǎn)品
可信區(qū)塊鏈聯(lián)盟鏈平臺(tái)架構(gòu)由上層應(yīng)用由桌面客戶端,、移動(dòng)客戶端、瀏覽器客戶API組成,。用戶主要由API 將業(yè)務(wù)數(shù)據(jù)接入到系統(tǒng),。

可信區(qū)塊鏈聯(lián)盟鏈平臺(tái)架構(gòu)由上層應(yīng)用由桌面客戶端、移動(dòng)客戶端,、瀏覽器客戶API組成,。用戶主要由API 將業(yè)務(wù)數(shù)據(jù)接入到系統(tǒng),。該平臺(tái)架構(gòu)底層是基于Hyperledger Fabric V1.0.0架構(gòu)構(gòu)建的。該底層架構(gòu)主要由接入網(wǎng)關(guān),、區(qū)塊鏈應(yīng)用兩大部分功能組成,,接入網(wǎng)關(guān)包含了注冊(cè)、認(rèn)證,、授權(quán),、監(jiān)控、審計(jì)五大功能,,區(qū)塊鏈應(yīng)用則主要由鏈上程序,、區(qū)塊鏈管理、可撥插共識(shí)模塊三大模塊組成,??尚艆^(qū)塊鏈聯(lián)盟鏈平臺(tái)架構(gòu)如圖所示。

鏈上程序主要包括智能合約,、圖靈完備高級(jí)語(yǔ)言,、合約容器/虛擬機(jī)。Hyperledger Fabric的智能合約smart contract稱為鏈碼chaincode,,是一段代碼,,它處理網(wǎng)絡(luò)成員所同意的業(yè)務(wù)邏輯。和以太坊相比,,Hyperledger Fabric鏈碼和底層賬本是分開(kāi)的,,升級(jí)鏈碼時(shí)并不需要遷移賬本數(shù)據(jù)到新鏈碼當(dāng)中,真正實(shí)現(xiàn)了邏輯與數(shù)據(jù)的分離,。鏈碼可采用Go,、Java、Node.js語(yǔ)言編寫(xiě),。鏈碼被編譯成一個(gè)獨(dú)立的應(yīng)用程序,,fabric用Docker容器來(lái)運(yùn)行chaincode,里面的base鏡像都是經(jīng)過(guò)簽名驗(yàn)證的安全鏡像,,包括OS層和開(kāi)發(fā)chaincode的語(yǔ)言,、runtime和SDK層。一旦chaincode容器被啟動(dòng),,它就會(huì)通過(guò)gRPC與啟動(dòng)這個(gè)chaincode的Peer節(jié)點(diǎn)連接,。

區(qū)塊鏈管理主要包括賬戶管理、區(qū)塊鏈管理,、區(qū)塊校驗(yàn),、交易校驗(yàn)。Hyperledger Fabric是目前為止在設(shè)計(jì)上最貼近聯(lián)盟鏈思想的區(qū)塊鏈,。聯(lián)盟鏈考慮到商業(yè)應(yīng)用對(duì)安全,、隱私,、監(jiān)管、審計(jì),、性能的需求,,提高準(zhǔn)入門檻,成員必須被許可才能加入網(wǎng)絡(luò),。Fabric成員管理服務(wù)為整個(gè)區(qū)塊鏈網(wǎng)絡(luò)提供身份管理,、隱私、保密和可審計(jì)的服務(wù),。成員管理服務(wù)通過(guò)公鑰基礎(chǔ)設(shè)施PKI和去中心化共識(shí)機(jī)制使得非許可的區(qū)塊鏈變成許可制的區(qū)塊鏈,。可撥插共識(shí)模塊,,Hyperledger Fabric使用建立在HTTP/2上的P2P協(xié)議來(lái)管理分布式賬本,。采取可插拔的方式來(lái)根據(jù)具體需求來(lái)設(shè)置共識(shí)協(xié)議,比如PBFT,,Raft,,PoW和PoS等。

1. 超級(jí)賬本聯(lián)盟鏈區(qū)塊鏈網(wǎng)絡(luò)的創(chuàng)建

超級(jí)賬本聯(lián)盟鏈區(qū)塊鏈網(wǎng)絡(luò)的創(chuàng)建主要包括客戶端節(jié)點(diǎn)創(chuàng)建,、Peer節(jié)點(diǎn)創(chuàng)建,、排序服務(wù)節(jié)點(diǎn)創(chuàng)建及CA證書(shū)節(jié)點(diǎn)創(chuàng)建,。


客戶端節(jié)點(diǎn)的創(chuàng)建:客戶端是用戶和應(yīng)用跟區(qū)塊鏈網(wǎng)絡(luò)打交道的橋梁,。客戶端主要包括兩大職能:

1)操作Fabric網(wǎng)絡(luò):包括更新網(wǎng)絡(luò)配置,、啟停節(jié)點(diǎn)等,;

2)操作運(yùn)行在網(wǎng)絡(luò)中的鏈碼:包括安裝、實(shí)例化,、發(fā)起交易調(diào)用鏈碼等,。

Peer節(jié)點(diǎn)的創(chuàng)建:Peer意味著在網(wǎng)絡(luò)中負(fù)責(zé)接受交易請(qǐng)求、維護(hù)一致賬本的各個(gè)fabric-peer實(shí)例,。這些實(shí)例可能運(yùn)行在裸機(jī),、虛擬機(jī)甚至容器中。節(jié)點(diǎn)之間彼此通過(guò)gRPC消息進(jìn)行通信,。按照功能角色劃分,,Peer可以包括三種類型:

1)Endorser(背書(shū)節(jié)點(diǎn)):負(fù)責(zé)對(duì)來(lái)自客戶端的交易提案進(jìn)行檢查和背書(shū);

2)Committer(確認(rèn)節(jié)點(diǎn)):負(fù)責(zé)檢查交易請(qǐng)求,,執(zhí)行交易并維護(hù)區(qū)塊鏈和賬本結(jié)  構(gòu),;

3)Submitter(提交節(jié)點(diǎn)):負(fù)責(zé)接收交易,轉(zhuǎn)發(fā)給排序者,,目前未單獨(dú)出現(xiàn),。

排序服務(wù)節(jié)點(diǎn)的創(chuàng)建:負(fù)責(zé)對(duì)所收到的交易在網(wǎng)絡(luò)中進(jìn)行全局排序,。Orderer主要提供了Broadcast(srv ab.AtomicBroadcast_BroadcastServer) error和Deliver(srvab.AtomicBroadcast_DeliverServer) error兩個(gè)接口。前者代表客戶端將數(shù)據(jù)(交易)發(fā)給Orderer,,后者代表從Orderer獲取到排序后構(gòu)造的區(qū)塊結(jié)構(gòu),。客戶端可以使用atomicBroadcastClient結(jié)構(gòu)訪問(wèn)這兩個(gè)接口,。

CA證書(shū)節(jié)點(diǎn)的創(chuàng)建:負(fù)責(zé)網(wǎng)絡(luò)中所有證書(shū)的管理(分發(fā),、撤銷等),實(shí)現(xiàn)標(biāo)準(zhǔn)的PKI架構(gòu),。主要代碼在單獨(dú)的fabric-ca項(xiàng)目中,。CA在簽發(fā)證書(shū)后,自身不參與到網(wǎng)絡(luò)中的交易過(guò)程,。

2. 身份管理功能

在Gossip網(wǎng)絡(luò)中,,每個(gè)節(jié)點(diǎn)都有超級(jí)賬本網(wǎng)絡(luò)認(rèn)可的MSP(Membership Service Provider)頒發(fā)的證書(shū)(身份,Indentity),,從證書(shū)計(jì)算哈希值導(dǎo)出(目前的實(shí)現(xiàn)是直接用Endpoint轉(zhuǎn)換而來(lái)的)的一個(gè)標(biāo)識(shí)符稱為節(jié)點(diǎn)的PKI-ID,。

超級(jí)賬本的Peer節(jié)點(diǎn)組成了一個(gè)P2P的網(wǎng)絡(luò),客戶端SDK(Go,、Java,、Python、Node. js等不同語(yǔ)言)會(huì)提交請(qǐng)求給Per節(jié)點(diǎn),,Peer節(jié)點(diǎn)處理后會(huì)提交交易提案(TransactionProposal)給背書(shū)節(jié)點(diǎn)(Endorser),,然后進(jìn)行背書(shū)簽名(Endorsement),最后經(jīng)過(guò)排序服務(wù)達(dá)成共識(shí)后廣播給Peer節(jié)點(diǎn),。

身份管理模塊管理節(jié)點(diǎn)標(biāo)識(shí)符和證書(shū)之前的映射,,在內(nèi)部維護(hù)了以PKI-ID為鍵、證書(shū)為值的映射表pkiID2Cert,,可以通過(guò)PKI?ID獲取節(jié)點(diǎn)的證書(shū),,也可以更新節(jié)點(diǎn)的證書(shū)。同時(shí)還內(nèi)置了MCS(MessageCryptoService)模塊,,它可以對(duì)消息進(jìn)行簽名和驗(yàn)證,。更新節(jié)點(diǎn)證書(shū)的時(shí)候也會(huì)通過(guò)MCS模塊驗(yàn)證證書(shū)是否有效,檢查從證書(shū)導(dǎo)出的標(biāo)識(shí)符是否和PKI-ID匹配,。

在生成環(huán)境中,,假設(shè)所有節(jié)點(diǎn)都是雙向TLS部署的,TLS連接的雙方都有一個(gè)有效的TLS證書(shū),。當(dāng)節(jié)點(diǎn)和對(duì)端節(jié)點(diǎn)第一次連接時(shí),,會(huì)有一個(gè)握手協(xié)議,這個(gè)協(xié)議驗(yàn)證它是否擁有TLS證書(shū)的私鑰,因而在TLS會(huì)話中綁定成員身份,。握手是相互的,,過(guò)程比較簡(jiǎn)單,握手節(jié)點(diǎn)主動(dòng)發(fā)送給對(duì)端點(diǎn)一條ConnEstablish消息,,包含的內(nèi)容有:

節(jié)點(diǎn)TLS證書(shū)的哈希值,。

節(jié)點(diǎn)的PKI-ID。

MSP身份證書(shū),。

3. 賬本管理功能

在Fabric中,,賬本(Ledger)是一個(gè)有序的、防篡改的全交易記錄的區(qū)塊哈希鏈,,它被ordering service構(gòu)造,,記錄了所有的成功和不成功的狀態(tài)更新交易。在1.0的版本中每個(gè)信道(channel)在orderer上都存儲(chǔ)了一個(gè)獨(dú)立的賬本,,信道中的每個(gè)參與節(jié)點(diǎn)(peer)都存儲(chǔ)了一份該賬本的拷貝,。同時(shí)賬本提供了SQL形式的查詢功能,以便進(jìn)行高效的對(duì)賬和爭(zhēng)議解決,。

因?yàn)橘~本是建立在信道的基礎(chǔ)上,,并通過(guò)鏈碼(chaincode)對(duì)其進(jìn)行操作或修改,這就產(chǎn)生了兩種方式:第一種是賬本可以在整個(gè)網(wǎng)絡(luò)中共享(可以理解為整個(gè)網(wǎng)絡(luò)是一個(gè)特殊的公共信道),,第二種是賬本可以私有化,,只包括一組特定的參與者。在后一種方式中,,這些參與者將創(chuàng)建一個(gè)單獨(dú)的信道,,從而分離其交易事務(wù)(transactions)和賬本。為了解決透明度和隱私的沖突,,鏈碼只會(huì)被安裝在擁有讀寫(xiě)權(quán)限的參與節(jié)點(diǎn)上,,換句話說(shuō)如果沒(méi)有合適的鏈碼支持,參與節(jié)點(diǎn)將無(wú)法與賬本進(jìn)行正確數(shù)據(jù)的對(duì)接,。更進(jìn)一步在混淆數(shù)據(jù),鏈碼中操作的鍵值可以在被追加到賬本之前使用像AES這樣的算法進(jìn)行全部或選擇性的加密,。

4. 交易管理

區(qū)塊鏈客戶端把交易請(qǐng)求發(fā)給之前約定好的所有背書(shū)節(jié)點(diǎn)(endorsing peer),。這里說(shuō)明一下endorsing peer的選擇是有一定范圍的,并不是在所有的endorsing peer里隨意選擇,,是由交易所屬的ChainCode和該Chaincode所定義的Endorsement Policy共同決定的,。

背書(shū)節(jié)點(diǎn)收到上述信息后,首先用Client的公鑰驗(yàn)證它的簽名,,背書(shū)節(jié)點(diǎn)執(zhí)行智能合約(是模擬交易,,不會(huì)寫(xiě)到賬本里),將執(zhí)行的結(jié)果反饋給客戶端。

客戶端搜集“足夠”多的背書(shū)節(jié)點(diǎn)的結(jié)果后,,就說(shuō)明這個(gè)交易通過(guò)了Endorsement階段,。通過(guò)之后就打包發(fā)給共識(shí)節(jié)點(diǎn)(orderers)。其中“足夠”的數(shù)量是多少,,取決于背書(shū)策略Endorsement Policy是如果規(guī)定的,,相反如果Client沒(méi)有搜集到足夠多的信息的話,這個(gè)交易就會(huì)被廢止掉,。Client可以選擇重新發(fā)起交易,。

共識(shí)階段雖然有不同的算法,不過(guò)目的都是把有效的交易加入新生成的區(qū)塊,,并通知所有節(jié)點(diǎn)使他們賬本保存一致,。共識(shí)節(jié)點(diǎn)將結(jié)果廣播所有的節(jié)點(diǎn)(peer)。然后各節(jié)點(diǎn)再更新自己賬本,。

5. 鏈碼生命周期管理

鏈碼提供了4個(gè)管理鏈碼生命周期的命令,,分別是鏈碼的打包、安裝,、實(shí)例化,、升級(jí)。在以后的版本中,,還可能提供鏈碼的停止和啟動(dòng)命令,,在不刪除鏈碼的情況下可以停止和啟動(dòng)鏈碼。鏈碼在安裝和實(shí)例化以后,,就處于激活的狀態(tài),,應(yīng)用程序或者命令就可以調(diào)用和觸發(fā)智能合約的功能了。鏈碼安裝以后隨時(shí)都是可以升級(jí)的,。

鏈碼的打包

鏈碼的內(nèi)容主要包括以下3個(gè)部分:

1)鏈碼源碼,,但需要通過(guò)ChaincodeDeploymentSpec或CDS定義。CDS依據(jù)代碼及其  他一些屬性來(lái)定義鏈碼,。

2)實(shí)例化策略,。

3)鏈碼的簽名。

鏈碼的安裝

鏈碼安裝的時(shí)候會(huì)把鏈碼的源碼到前面已經(jīng)介紹過(guò)的結(jié)構(gòu)Chaincode DeploymentSpec中,,安裝到需要運(yùn)行鏈碼的Peer節(jié)點(diǎn)上,。鏈碼安裝是針對(duì)節(jié)點(diǎn)的,每次安裝只對(duì)單個(gè)節(jié)點(diǎn)有效,。需要給每個(gè)要運(yùn)行鏈碼的背書(shū)節(jié)點(diǎn)都安裝一遍,,具體需要安裝到哪些節(jié)點(diǎn),可以根據(jù)背書(shū)策略來(lái)選擇,。

從安全角度考慮,,鏈碼應(yīng)該只需要安裝在需要執(zhí)行的背書(shū)節(jié)點(diǎn)上,可以保護(hù)鏈碼的邏輯被未授權(quán)的節(jié)點(diǎn)獲取到。沒(méi)有安裝鏈碼的節(jié)點(diǎn)是不能執(zhí)行鏈碼的智能合約的,,但是可以驗(yàn)證鏈上的交易并且提交到本地賬戶中,。

鏈碼的實(shí)例化

鏈碼的實(shí)例化會(huì)調(diào)用鏈碼生命周期系統(tǒng)鏈碼(LSCC)在通道上創(chuàng)建和初始化鏈碼。鏈碼在實(shí)例化之前是和通道無(wú)關(guān)的,,實(shí)例化的時(shí)候才和通道綁定,。鏈碼可以和多個(gè)通道綁定,在通道上初始化后記錄到通道的狀態(tài)數(shù)據(jù)庫(kù)中,。同一個(gè)鏈碼在不同通道上的數(shù)據(jù)是隔離的,。

鏈碼實(shí)例化的時(shí)候會(huì)檢查是否符合鏈碼實(shí)例化的策略和通道的寫(xiě)入策略。實(shí)例化的策略驗(yàn)證過(guò)程是檢查實(shí)例化交易的簽名是否符合策略的規(guī)則,,驗(yàn)證通過(guò)才會(huì)寫(xiě)入到賬本和狀態(tài)數(shù)據(jù)中,。通道的寫(xiě)入策略是在創(chuàng)建通道時(shí)指定的,這也是從安全角度考慮的,,避免未授權(quán)的用戶部署鏈碼和調(diào)用鏈碼,。默認(rèn)的實(shí)例化策略是通道的任何一個(gè)管理員,所以鏈碼的實(shí)例化交易提交者必須也是通道的管理員鏈碼的實(shí)例化會(huì)指定鏈碼的背書(shū)策略,,用來(lái)確定通道上哪些節(jié)點(diǎn)執(zhí)行的交易才能添加到賬本中,。
鏈碼的升級(jí)

鏈碼安裝以后是隨時(shí)于可以升級(jí)的,鏈碼的名稱需要保持不變,,必須要更新的是鏈碼的版本,,其他的部分,比如鏈碼的所有者和實(shí)例化策略都是可選的,。鏈碼的版本是用字符串表示的,,并沒(méi)有指定比較版本大小的規(guī)則,是以更新的先后順序?yàn)闇?zhǔn)的,,具體的操作方法線下自行確定,。

同樣,升級(jí)之前還需要把鏈碼安裝到對(duì)應(yīng)的背書(shū)節(jié)點(diǎn)上,。鏈碼的升級(jí)和實(shí)例化是類似的操作,,也是綁定鏈碼到通道上,執(zhí)行初始化的操作,。鏈碼升級(jí)只會(huì)影響到指定的通道沒(méi)有綁定鏈碼新版本的通道還是繼續(xù)舊的版本,。同一個(gè)背書(shū)節(jié)點(diǎn)上,不同通道綁定的鏈碼可能是不同的版本,,所以升級(jí)的時(shí)候不會(huì)主動(dòng)刪除舊的版本。

鏈碼升級(jí)的時(shí)候同樣會(huì)檢查實(shí)例化策略,,采用的是通道上鏈碼最新版本的實(shí)例化策略檢查通過(guò)以后才會(huì)更新為鏈碼新版本指定的實(shí)例化策略,。

鏈碼的停止和啟動(dòng)

鏈碼的停止與啟動(dòng)功能還沒(méi)實(shí)現(xiàn),只能手動(dòng)刪除鏈碼的容器和鏡像,再刪除背書(shū)節(jié)點(diǎn)本地保存的鏈碼,。

6. 通道的管理

Hyperledger Fabric 通道是兩個(gè)或多個(gè)特定網(wǎng)絡(luò)成員之間的通信的私有“子網(wǎng)”,,用于進(jìn)行需要數(shù)據(jù)保密的交易。channel由成員(組織),、每個(gè)成員的錨點(diǎn),、共享賬本,鏈碼應(yīng)用程序和order服務(wù)節(jié)點(diǎn)定義,。網(wǎng)絡(luò)上的每個(gè)transaction都在一個(gè)channel上執(zhí)行,,每個(gè)通信方必須經(jīng)過(guò)身份驗(yàn)證并授權(quán)在該channel上進(jìn)行交易。加入channel的每個(gè)peer都具有由成員服務(wù)提供商(MSP)給出的自己的身份,。

要?jiǎng)?chuàng)建新的channel,,客戶端SDK會(huì)調(diào)用configuration system chaincode和引用屬性,如錨點(diǎn)和成員(組織),。該請(qǐng)求為channel ledger創(chuàng)建一個(gè)genesis block,,它存儲(chǔ)有關(guān)channel策略,成員和錨點(diǎn)的配置信息,。當(dāng)將新成員添加到現(xiàn)有channel時(shí),,這個(gè)genesis block或最近被重新配置的塊將會(huì)分享給新成員。

channel中每個(gè)成員的leading peer的選舉決定了哪個(gè)peer代表成員與ordering service進(jìn)行通信,。如果沒(méi)有指定leader,,則可以使用算法來(lái)指定leader。共識(shí)服務(wù)將交易排序并以一個(gè)block的形式發(fā)送給一個(gè)leader,,然后leader將其分發(fā)給其成員 peer,,并用gossip 協(xié)議進(jìn)行跨channel通信。

雖然任何一個(gè)錨點(diǎn)可以屬于多個(gè)信道,,并且因此維護(hù)多個(gè)賬本,,但沒(méi)有賬本數(shù)據(jù)可以從一個(gè)channel傳遞到另一個(gè)channel。ledger按channel分隔,,由configuration chaincode,,identity membership service和gossip數(shù)據(jù)傳播協(xié)議來(lái)定義和實(shí)現(xiàn)。被隔離的數(shù)據(jù)包括交易信息,,賬本狀態(tài)和channel成員資料,,這些數(shù)據(jù)僅限于在channel上具有可驗(yàn)證成員資格的peer間傳播。通過(guò)信道隔離peer和賬本數(shù)據(jù),,允許需要私有和機(jī)密事務(wù)的網(wǎng)絡(luò)成員與同一個(gè)塊鏈網(wǎng)絡(luò)上的業(yè)務(wù)競(jìng)爭(zhēng)對(duì)手和其他受限制的成員共存,。

7. Docker管理鏈碼

鏈碼運(yùn)行在與承認(rèn)對(duì)等體進(jìn)程隔離的安全Docker容器中。Chaincode通過(guò)應(yīng)用程序提交的交易來(lái)初始化和管理分類帳狀態(tài),。鏈碼通常處理網(wǎng)絡(luò)成員所同意的業(yè)務(wù)邏輯,,因此可被視為“智能合同”,。 由鏈碼創(chuàng)建的狀態(tài)僅限于該鏈碼,不能被另一個(gè)鏈碼直接訪問(wèn),。 然而,,在同一個(gè)網(wǎng)絡(luò)中,給定適當(dāng)?shù)臋?quán)限,,鏈碼可以調(diào)用另一個(gè)鏈碼來(lái)訪問(wèn)其狀態(tài),。Docker管理鏈碼,確保智能合約的安全執(zhí)行環(huán)境,,同時(shí)也確保安全的執(zhí)行過(guò)程與用戶數(shù)據(jù)的隔離,。Docker提供了安全的沙箱環(huán)境和鏡像文件倉(cāng)庫(kù)。

8. 超級(jí)賬本聯(lián)盟鏈共識(shí)服務(wù)

超級(jí)賬本中把共識(shí)分為交易背書(shū),、交易排序和交易驗(yàn)證3個(gè)階段,。

1)交易背書(shū)

應(yīng)用程序根據(jù)背書(shū)策略的要求選擇背書(shū)節(jié)點(diǎn),給這些節(jié)點(diǎn)發(fā)送需要執(zhí)行的交易提案(Proposal),。背書(shū)節(jié)點(diǎn)調(diào)用鏈碼(Chaincode)執(zhí)行這些交易提案,交易過(guò)程是執(zhí)行是模擬執(zhí)行的,,并不真正提交數(shù)據(jù)到賬本中。執(zhí)行完成以后調(diào)用交易背書(shū)系統(tǒng)鏈碼ESCC對(duì)模擬執(zhí)行結(jié)果進(jìn)行簽名背書(shū),。

2)交易排序

排序階段接受已經(jīng)簽名背書(shū)的交易,,確定交易的順序和數(shù)量,將排好序的交易打包到區(qū)塊中,,廣播給Peer節(jié)點(diǎn)進(jìn)行驗(yàn)證,。通常,從效率方面考慮,,排序服務(wù)不會(huì)輸出單個(gè)交易作為一個(gè)區(qū)塊,,而是把多個(gè)交易打包成一個(gè)區(qū)塊。

3)交易驗(yàn)證

Peer節(jié)點(diǎn)驗(yàn)證接收到區(qū)塊里包含的交易的有效性,,包括背書(shū)策略驗(yàn)證及雙花檢測(cè)(double-spending),。可以將驗(yàn)證錯(cuò)誤分為兩大類:語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤,。語(yǔ)法錯(cuò)誤包括無(wú)效輸入,、未驗(yàn)證的簽名以及重復(fù)的交易(雙花攻擊),重復(fù)的交易應(yīng)該丟棄,。第二類錯(cuò)誤比較復(fù)雜,,比如會(huì)導(dǎo)致雙花或者M(jìn)VCC失敗的交易,這需要定義策略來(lái)決定程序是繼續(xù)執(zhí)行還是終止,。策略還可以定義是否需要記錄日志以便對(duì)這類交易進(jìn)行審計(jì),。交易驗(yàn)證依賴鏈碼的業(yè)務(wù)邏輯,目前默認(rèn)的交易驗(yàn)證系統(tǒng)鏈碼ⅤSCC只支持背書(shū)策略的驗(yàn)證,。

9. Kafka的排序服務(wù)

基于Kafka的排序服務(wù)利用Kafka作為交易的消息隊(duì)列,,實(shí)現(xiàn)高吞吐量的數(shù)據(jù)分發(fā)每個(gè)通道都對(duì)應(yīng)Kafka的一個(gè)主題(topic),,排序服務(wù)節(jié)點(diǎn)在不同階段充當(dāng)不同的角色,。

1)接收交易階段:排序服務(wù)節(jié)點(diǎn)充當(dāng)?shù)氖荎afka的生產(chǎn)者(producer),,接收到交易后

通過(guò)權(quán)限檢查轉(zhuǎn)發(fā)給對(duì)應(yīng)通道的主題。

2)消息處理階段:排序服務(wù)節(jié)點(diǎn)充當(dāng)?shù)氖荎afka的消費(fèi)者(consumer),,實(shí)時(shí)監(jiān)聽(tīng)消息進(jìn)行后續(xù)的處理,,生成區(qū)塊或者交易分割消息等。

10. 超級(jí)賬本聯(lián)盟鏈數(shù)據(jù)區(qū)塊的構(gòu)建                   

聯(lián)盟鏈數(shù)據(jù)區(qū)塊主要包括狀態(tài)數(shù)據(jù)和賬本數(shù)據(jù)兩大模塊,,其中賬本數(shù)據(jù)主要包含交易數(shù)據(jù)及構(gòu)建的區(qū)塊信息數(shù)據(jù),。

狀態(tài)(state)

區(qū)塊鏈的最新?tīng)顟B(tài)被建模為一個(gè)版本化的鍵值存儲(chǔ)(KVS),鍵是名字,,值是任意二進(jìn)制大對(duì)象(blobs),。這些鍵值對(duì)被運(yùn)行在區(qū)塊鏈上的鏈碼(應(yīng)用程序)通過(guò)put和getKVS操作來(lái)操縱。狀態(tài)被持久化存儲(chǔ)并且狀態(tài)的更新被記錄為日志,。請(qǐng)注意狀態(tài)模型采用的是版本化的KVS,,具體實(shí)現(xiàn)可以使用實(shí)際的KVS存儲(chǔ),但是也可以用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)或其他的解決方案,。

狀態(tài)由對(duì)等點(diǎn)維護(hù),,而不是order節(jié)點(diǎn)和客戶端。狀態(tài)分區(qū),。KVS中的鍵可以從它們鏈碼的名字識(shí)別,,在這個(gè)意義上,只有一個(gè)特定鏈碼的交易可以修改屬于這個(gè)鏈碼的鍵,。原則上,,任何鏈碼都可以讀取屬于其他鏈碼的鍵。為了支持跨鏈碼交易,,修改屬于兩個(gè)或更多個(gè)鏈碼的狀態(tài)作為一個(gè)V1后的功能點(diǎn),。

賬本

賬本提供一份可驗(yàn)證歷史信息,記錄所有在系統(tǒng)操作中發(fā)生的成功的狀態(tài)改變(即有效交易)和未成功的對(duì)改變狀態(tài)的嘗試(即無(wú)效交易),。賬本由排序服務(wù)構(gòu)建為一個(gè)完整排序的交易(有效的和無(wú)效的)區(qū)塊的哈希鏈,。哈希鏈強(qiáng)制要求賬本中的區(qū)塊是完全排序的并且每個(gè)區(qū)塊內(nèi)包含的交易是完全排序的。

賬本存儲(chǔ)在所有的對(duì)等點(diǎn)里,,也可以選擇保存在一部分排序者里,。存在排序者節(jié)點(diǎn)內(nèi)的賬本我們叫排序者的賬本(OedererLedger),而存在對(duì)等點(diǎn)的賬本我們叫對(duì)等點(diǎn)賬本(PeerLedger),。對(duì)等點(diǎn)賬本與排序者賬本不同之處在于對(duì)等點(diǎn)賬本本地維護(hù)一個(gè)比特掩碼來(lái)區(qū)分有效交易和無(wú)效交易,。

對(duì)等點(diǎn)可以修訂對(duì)等點(diǎn)賬本。排序者維護(hù)排序者賬本用于容錯(cuò)和(對(duì)等點(diǎn)賬本的)可用性并可以隨時(shí)決定修訂對(duì)等點(diǎn)賬本,,前提是排序服務(wù)的屬性保持不變,。賬本允許對(duì)等點(diǎn)重播所有交易的歷史來(lái)重構(gòu)狀態(tài),。因此,狀態(tài)是一個(gè)可選的數(shù)據(jù)結(jié)構(gòu),。

可信聯(lián)盟區(qū)塊鏈產(chǎn)品系統(tǒng)特色如圖所示,。

可信聯(lián)盟區(qū)塊鏈產(chǎn)品系統(tǒng)系統(tǒng)應(yīng)用領(lǐng)域如圖所示。