这是我们在后端所需要的流。
1.第一个用户创建未签名的建议,并将建议缓冲区返回给他。
const proposal = new Endorsement(this.config.chaincodeId, this.channel)
const user = User.createUser(
enrollmentId,
enrollmentId,
this.config.userMspId,
certificate
)
const identityContext = new IdentityContext(user, this.channel.client)
const proposalBuffer = proposal.build(identityContext, {
fcn,
args,
})
const digest = createHash('sha256').update(proposalBuffer).digest('hex')
1.然后,在用户签署摘要并创建签名后,我们的后端将签署的提案发送给背书人:
const signedProposal = {
signature: Buffer.from(signature, 'base64'),
proposal_bytes: proposalBuffer,
}
const endorser = this.channel.getEndorsers(this.config.userMspId)[0]
const response = await endorser.sendProposal(
Buffer.from(JSON.stringify( signedProposal ))
)
sendProposal
方法引发ChaincodeId is nil
错误。
有谁知道我们怎样才能实现这一权利?
我们如何为sendProposal方法参数创建Buffer对象?
在我的例子中,我从字符串化的json对象创建缓冲区,SignedProposal是如何在Hyperledger Fabric文档中定义的。
2条答案
按热度按时间ndh0cuux1#
我看到你的代码是发送建议的自定义代码。为什么要这样做?为什么不使用
fabric-network
库来做简单的方法?对于您的问题,我在
fabric-network
中找到了一些代码:在
send
方法中:查看
getSignedProposal
方法内部:型
因此,尝试使用
fabric-protos
lib对您的建议进行编码。vltsax252#
通过转移到
@hyperledger/fabric-gateway
库解决了这个问题。它工作正常,有一个文档齐全的API。脱机事务也得到了更好的支持。