您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“fabric node sdk中的身份標(biāo)識怎么配置”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
在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ò)的拓?fù)浣Y(jié)構(gòu)。例如,下面的node.js代碼為通道對象配置 部署在本機(jī)的peer對等節(jié)點和orderer排序節(jié)點,在默認(rèn)配置下,對等節(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)機(jī)制,在應(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] })
“fabric node sdk中的身份標(biāo)識怎么配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。