hyperledger fabric的node sdk最新版本為1.4,本文將介紹如何使用最新版本的fabric node sdk開發(fā)node.js應(yīng)用,以實現(xiàn)與fabric區(qū)塊鏈的交互,例如查詢鏈碼狀態(tài),或者提交鏈碼交易。
峨眉山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),峨眉山網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為峨眉山近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的峨眉山做網(wǎng)站的公司定做!本文分五個部分來介紹node.js開發(fā)人員如何快速上手fabric node sdk:
如果希望高效系統(tǒng)地掌握Fabric區(qū)塊鏈的鏈碼及應(yīng)用開發(fā),建議訪問匯智網(wǎng)的在線互動課程:
- Fabric區(qū)塊鏈Java開發(fā)詳解
- Fabric區(qū)塊鏈NodeJs開發(fā)詳解
在hyperledger Fabric區(qū)塊鏈架構(gòu)中,應(yīng)用是通過節(jié)點的RPC協(xié)議API接口訪問安裝在peer節(jié)點上的鏈碼:
類似于shim api對鏈碼通信協(xié)議的封裝,F(xiàn)abric Node SDK提供了對節(jié)點RPC協(xié)議接口的封裝,其入口類為Client
,通道操作則封裝在Channel
類中:
由于hyperledger fabric是許可制(Permissioned)區(qū)塊鏈,每一個參與fabric區(qū)塊鏈的成員都需要有明確的身份標(biāo)識,因此fabric node sdk中的Client
實例需要使用一個User
實例來表征其訪問Fabric區(qū)塊鏈網(wǎng)絡(luò)的身份。例如,下面的node.js代碼載入本地msp目錄中的PEM編碼的用戶證書與相應(yīng)的密鑰并生成User
對象,然后設(shè)置為Client
實例的當(dāng)前身份:
let client = new Client
let keyPem = fs.readFileSync('.msp/keystore/user-key.pem','utf-8')
let certPem = fs.readFileSync('./msp/signcerts/user-cert.pem','utf-8')
let user = await client.createUser({ //創(chuàng)建User對象
username: 'user', //用戶名稱
mspid: 'SampleOrg', //所屬MSP的ID
cryptoContent: {
privateKeyPEM: keyPem, //用戶私鑰
signedCertPEM: certPem //用戶證書
},
skipPersistence: true //不計入緩存
})
client.setUserContext(user,true) //設(shè)置為client的當(dāng)前身份
使用Client
實例的newChannel()
方法可以創(chuàng)建一個空的通道對象,我們還需要添加Peer
和Orderer
實例,以便該通道對象了解要訪問的fabric網(wǎng)絡(luò)的拓撲結(jié)構(gòu)。例如,下面的node.js代碼為通道對象配置部署在本機的peer對等節(jié)點和orderer排序節(jié)點,在默認配置下,對等節(jié)點在7051端口監(jiān)聽,而排序節(jié)點在7052端口監(jiān)聽:
let channel = client.newChannel('ch2')
channel.addPeer(client.newPeer('grpc://127.0.0.1:7051'))
channel.addOrderer(client.newOrderer('grpc://127.0.0.1:7050'))
在fabric node sdk中,通道對象的queryByChaincode()
方法用于鏈碼狀態(tài)查詢。例如,下面的node.js代碼調(diào)用鏈碼counter-cc
中定義的value()
方法,以獲取計數(shù)器的當(dāng)前值:
let req = {
chaincodeId: 'counter-cc',
fcn: 'value',
args: []
}
let ret = await channel.queryByChaincode(req)
在fabric node sdk中,向鏈碼提交交易則復(fù)雜一些,需要依次使用sendTransactionProposal()
和sendTransaction()
這兩個方法,這是因為hyperledger fabric引入了背書(endorsement)機制,在應(yīng)用向排序節(jié)點提交交易之前,需要按照既定的策略首先獲取對等節(jié)點的背書。
提交鏈碼交易的時序表示如下:
下面的代碼展示了在fabric node sdk中鏈碼交易的兩階段提交過程:
let req = {
chaincodeId: 'counter-cc',
fcn: 'inc',
args: ['10'],
txId: client.newTransactionID()
}
let prsp = await channel.sendTransactionProposal(req) //獲取peer背書
let rsp = await channel.sendTransaction({ //提交交易
proposalResponses: prsp[0],
proposal: prsp[1]
})
匯智網(wǎng)原創(chuàng),轉(zhuǎn)載請標(biāo)明出處。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前名稱:Fabricnodesdk1.4簡明教程-創(chuàng)新互聯(lián)
文章路徑:http://bm7419.com/article34/dssdse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、外貿(mào)網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)、ChatGPT、電子商務(wù)、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容