fabric node sdk中的身份标识怎么配置

发布时间:2021-12-24 16:44:57 作者:iii
来源:亿速云 阅读:147

本篇内容介绍了“fabric node sdk中的身份标识怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、fabric node sdk 工作原理

在hyperledger Fabric区块链架构中,应用是通过节点的RPC协议API接口访问安装在peer节点上的链码:

fabric node sdk中的身份标识怎么配置

类似于shim api对链码通信协议的封装,Fabric Node SDK提供了对节点RPC协议接口的封装,其入口类为Client,通道操作则封装在Channel类中:

fabric node sdk中的身份标识怎么配置

2、fabric node sdk中的身份标识

由于hyperledger fabric是许可制(Permissioned)区块链,每一个参与fabric区块链的成员都需要有明确的身份标识,因此fabric node sdk中的Client实例需要使用一个User实例来表征其访问Fabric区块链网络的身份。例如,下面的node.js代码载入本地msp目录中的PEM编码的用户证书与相应的密钥并生成User对象,然后设置为Client实例的当前身份:

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({        //创建User对象
  username: 'user',                         //用户名称
  mspid: 'SampleOrg',                       //所属MSP的ID
  cryptoContent: {
    privateKeyPEM: keyPem,                  //用户私钥
    signedCertPEM: certPem                  //用户证书
  },
  skipPersistence: true                     //不计入缓存
})
client.setUserContext(user,true)            //设置为client的当前身份

2、fabric node sdk通道配置

使用Client实例的newChannel()方法可以创建一个空的通道对象,我们还需要添加PeerOrderer实例,以便该通道对象了解要访问的fabric网络的拓扑结构。例如,下面的node.js代码为通道对象配置 部署在本机的peer对等节点和orderer排序节点,在默认配置下,对等节点在7051端口监听,而排序节点在7052端口监听:

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'))

3、fabric node sdk查询链码状态

在fabric node sdk中,通道对象的queryByChaincode()方法用于链码状态查询。例如,下面的node.js代码调用链码counter-cc中定义的value()方法,以获取计数器的当前值:

let req = {
  chaincodeId: 'counter-cc',
  fcn: 'value',
  args: []
}
let ret = await channel.queryByChaincode(req)

4、fabric node sdk提交链码交易

在fabric node sdk中,向链码提交交易则复杂一些,需要依次使用sendTransactionProposal()sendTransaction()这两个方法,这是因为hyperledger fabric引入了背书(endorsement)机制,在应用向排序节点提交交易之前,需要按照既定的策略首先获取对等节点的背书。

提交链码交易的时序表示如下:

fabric node sdk中的身份标识怎么配置

下面的代码展示了在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中的身份标识怎么配置”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. Fabric node sdk 1.4简明教程
  2. HyperLedger Fabric 交易流程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

fabric

上一篇:Vivado如何自定义IP的Logo

下一篇:linux中如何删除用户组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》