hyperledger-fabric - 从链码 [Fabric 1.2 或 1.3] 中识别执行链码的 Peer/Org
问题描述
我正在使用私有数据集合 (PDC) 并尝试为每个只有 1 个成员的组织(即组织本身)设置一个单独的 PDC。例如,在 3 org 网络中,我希望创建 3 个私有数据集合:
1)“org1-private”只有 Org1 作为成员,2)“org2-private”只有 Org2 作为成员,3)“org3-private”只有 Org3 作为成员
当客户端调用事务时,数据只需要在 2 个组织之间共享。客户端应用程序会将事务发送到 2 个相关的 Org 对等点,但在链码中,要写入给定组织上的正确 PDC,链码需要知道它正在哪个 Org/Peer 上执行。
从 Fabric 1.2 的链码中找到当前对等/组织的最佳方法是什么?
注意:我了解可以创建具有所有可能的组织对的 PDC 来解决此问题。在我的实验中,严格要求不要为每对创建私有数据集合。
尝试从包中调用 GetLocalMSP:“github.com/hyperledger/fabric/msp/mgmt”,但它返回一个内存地址
GetLocalMSP().GetIdentifier() 返回
nil
导入(mspmgmt“github.com/hyperledger/fabric/msp/mgmt”)
fmt.Println(mspmgmt.GetLocalMSP()) // 打印内存地址 id, _ := mspmgmt.GetLocalMSP().GetIdentifier() fmt.Println(id) // 打印
nil
解决方案
您可以使用客户端身份链代码库。
https://github.com/hyperledger/fabric/tree/master/core/chaincode/lib/cid
这将从调用链码的证书中返回 MSPID:
mspid, err := cid.GetMSPID(stub)
推荐阅读
- python - 从外部网站的元数据中获取内容
- matlab - 如何在matlab的appdesigner中设置表格的大小?
- javascript - 无需刷新即可显示和更新数据
- python-3.x - kivy 小部件总是更新到父小部件的大小
- java - 仅使用国家代码对手机号码进行排序
- selenium - Selenium 中的导航错误:链接在点 (...) 处不可点击。其他元素会收到点击
- ios - Cloud Firestore:如何从所有随机生成的文档中获取特定值
- python - 有人可以解释一下这个函数中的布尔部分吗
- javascript - 如何并排放置两个下拉菜单?
- multithreading - 在循环中运行 std::async。如何获得一致的结果?