登录
首页 >  Golang >  Go问答

从 Hyperledger Fabric Node SDK 中的 InvokeChaincode() 函数获取链码调用方 ID

来源:stackoverflow

时间:2024-03-31 15:54:37 217浏览 收藏

哈喽!今天心血来潮给大家带来了《从 Hyperledger Fabric Node SDK 中的 InvokeChaincode() 函数获取链码调用方 ID》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

让我们假设以下网络架构:

a -> chaincode1 -> fabcar

a 是应用程序,chaincode1 是 go 中的链代码,fabcar 是 nodejs 中的链代码。 他们在同一频道:“mychannel”。

当从chaincode1执行apistub.invokechaincode操作时,例如apistub.invokechaincode("fabcar", chaincodeargs, "mychannel"),是否有可能出现链码fabcar (调用的链代码)来获取调用者链代码的id

fabcar链码中的getcreator()方法仅返回调用者组织;但所需的信息是链码id或仅连接到chaincode1的一些信息。

更新

我尝试了超级账本官方文档中编写的 getsignedproposal() 方法:https://fabric-shim.github.io/chaincodestub.html#getsignedproposal__anchor

getsignedproposal() 方法返回 signedproposal 类型的已签名交易提案的完全解码对象。 signedproposal 对象表示客户端应用程序发送到链码的请求对象。

执行以下代码:

const proposal = stub.getsignedproposal();
console.log("signed proposal: ", proposal);

结果如下:

signed proposal:  { signature: ,
  proposal:
   { header: { signature_header: [Object], channel_header: [Object] },
     payload: { input: [Object], TransientMap: [Object] } } }

似乎真的很难理解哪些信息可以检索调用链码id。 以下是有关 signedproposal 类型的文档链接:https://fabric-shim.github.io/global.html#signedproposal


解决方案


不,目前无法执行此操作,因为链码本身没有身份。

您可以使用getsignedproposal方法,即:

// data elements part of a transaction proposal.
GetSignedProposal() (*pb.SignedProposal, error)

signedproposal包含原始链码客户端发送的交易提案的信息,如果链码到链码调用signedproposal只是转发,因此您可以提取之前链码的信息。

注意:如果您有复杂的链代码调用链,例如chaincode1调用chaincode2chaincode2调用chaincode3,signedproposal将包含chaincode1的信息,即你​​不会知道chaincode2

今天关于《从 Hyperledger Fabric Node SDK 中的 InvokeChaincode() 函数获取链码调用方 ID》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>