這篇文章主要為大家展示了“Hyperledger Fabric中鏈碼的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hyperledger Fabric中鏈碼的示例分析”這篇文章吧。
網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)建站專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都辦公窗簾等企業(yè)提供專業(yè)服務(wù)。
網(wǎng)絡(luò)運(yùn)行環(huán)境我們已經(jīng)啟動(dòng)完成,現(xiàn)在我們從開發(fā)者的角度來認(rèn)識一下完成交易所必須的智能合約(在 Hyperledger Fabric 中被稱之為 Chaincode,也就是鏈上代碼)的相關(guān)知識,以便于理解賬本中的數(shù)據(jù)到底是通過什么方式進(jìn)行操作。
Chaincode:鏈上代碼,簡稱鏈碼,一般是指由開發(fā)人員使用Go語言(也支持Java等語言)編寫的應(yīng)用程序代碼,提供分布式賬本的狀態(tài)處理邏輯。鏈碼被部署在Fabric的網(wǎng)絡(luò)節(jié)點(diǎn)中,能夠獨(dú)立運(yùn)行在具有安全特性的受保護(hù)的 Docker 容器中,以 gRPC 協(xié)議與相應(yīng)的 peer 節(jié)點(diǎn)進(jìn)行通信,以操作(初始化或管理)分布式賬本中的數(shù)據(jù)??梢愿鶕?jù)不同的需求開發(fā)出不同的復(fù)雜的應(yīng)用。
鏈碼分類
在 Hyperledger Fabric 中,鏈碼一般分為:
系統(tǒng)鏈碼
用戶鏈碼
負(fù)責(zé) Fabric 節(jié)點(diǎn)自身的處理邏輯, 包括系統(tǒng)配置、背書、校驗(yàn)等工作
系統(tǒng)鏈碼僅支持 Go 語言, 在 Peer 節(jié)點(diǎn)啟動(dòng)時(shí)會自動(dòng)完成注冊和部署
系統(tǒng)鏈碼共有五種類型:
配置系統(tǒng)鏈碼(CSCC)
CSCC:Configuration System Chaincode,負(fù)責(zé)處理 Peer 端的 Channel 配置。
生命周期系統(tǒng)鏈碼(LSCC)
LSCC:Lifecycle System Chaincode,負(fù)責(zé)對用戶鏈碼的生命周期進(jìn)行管理。
查詢系統(tǒng)鏈碼(QSCC)
QSCC:Query System Chaincode,提供賬本查詢 API。如獲取區(qū)塊和交易等信息。
背書管理系統(tǒng)鏈碼(ESCC)
ESCC:Endorsement System Chaincode,負(fù)責(zé)背書(簽名)過程, 并可以支持對背書策略進(jìn)行管理
對提交的交易提案的模擬運(yùn)行結(jié)果進(jìn)行簽名,,之后創(chuàng)建響應(yīng)消息返回給客戶端
驗(yàn)證系統(tǒng)鏈碼(VSCC)
VSCC:Validation System Chaincode,處理交易的驗(yàn)證,包括檢查背書策略以及多版本并發(fā)控制
由應(yīng)用程序開發(fā)人員根據(jù)不同場景需求及成員制定的相關(guān)規(guī)則,使用 Golang(或Java等)語言編寫的基于操作區(qū)塊鏈分布式賬本的狀態(tài)的業(yè)務(wù)處理邏輯代碼,運(yùn)行在鏈碼容器中,通過 Fabric 提供的接口與賬本狀態(tài)進(jìn)行交互。
用戶鏈碼在整個(gè)應(yīng)用程序中處于重要地位。因?yàn)樗驴蓪~本數(shù)據(jù)進(jìn)行操作,上可以給企業(yè)級應(yīng)用程序提供調(diào)用接口。所以一個(gè)沒有鏈碼的企業(yè)級應(yīng)用程序,不能稱之為是基于區(qū)塊鏈的企業(yè)級應(yīng)用程序。
鏈碼開發(fā)編寫完成后,并不能立刻使用,而是必須經(jīng)過一系列的操作之后才能應(yīng)用在 Hyperledger Fabric 網(wǎng)絡(luò)中進(jìn)而處理客戶端提交的交易。這一系列的操作是由鏈碼的生命周期來負(fù)責(zé)管理。
管理 Chaincode 的生命周期共有五個(gè)命令:
install:將已編寫完成的鏈碼安裝在網(wǎng)絡(luò)節(jié)點(diǎn)中。
instantiate:對已安裝的鏈碼進(jìn)行實(shí)例化。
upgrade:對已有鏈碼進(jìn)行升級。鏈代碼可以在安裝后根據(jù)具體需求的變化進(jìn)行升級。
package:對指定的鏈碼進(jìn)行打包的操作。
singnpackage:簽名。
安裝、實(shí)例化、升級這三項(xiàng)操作不適用于系統(tǒng)鏈碼
鏈碼的生命周期管理命令現(xiàn)階段只有這五個(gè),但未來還會支持 stop 和 start 命令, 用來停止和啟動(dòng)鏈碼。
鏈代碼成功安裝和實(shí)例化后,則處于活動(dòng)狀態(tài)(正在運(yùn)行),時(shí)刻準(zhǔn)備執(zhí)行處理提交的交易提案。
下一節(jié)開始我們會使用這些生命周期管理命令來實(shí)現(xiàn)對鏈碼的相關(guān)操作。
以上是“Hyperledger Fabric中鏈碼的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!