如何在 Hyperledger Fabric 中的智能合约实例之间发送消息?

问题描述

在 Hyperledger Fabric 网络中,我希望 不同节点 中智能合约的不同实例能够通过消息进行通信(例如,一个通信可以是带有文本字符串的消息)。

然后我希望接收消息的智能合约的实例能够根据消息内容调用智能合约方法(如在 switch/case 控制流语句中)或将自己的消息发送到网络.

示例:

  • 我们有一个由多个组织组成的网络。每个组织都有一份分布式账本副本和一个启动并运行的智能合约实例。
  • 假设智能合约可以读取特定索引处的分类帐,并在读取分类帐时触发事件消息。例如,事件消息可以包含阅读者的姓名和阅读时间。
  • 然后,当智能合约的另一个实例收到消息时,它可以向所有对等方发送另一条消息或调用智能合约方法

如果有人对此用例有解决方案,我将不胜感激,但任何想法、想法或指示也将受到高度赞赏!

解决方法

此功能在过去已经 proposed,我实现了它的原型 here

从高层次的角度来看,它的工作方式是智能合约有能力将消息发送到运行相同交易的同一个智能合约,通过向另一个节点发送消息,然后询问它将它路由到特定的对等点。该对等方通过本机 Fabric 通信基础设施(与用于传播块的方式相同)发送消息,该远程对等方将消息转发到链码,并在链码内部将其路由到正确的交易。

如果你愿意,你可以滚动你自己的 Fabric 分支并挑选提交,或者只使用这个,但请注意这个分支是 2 年前的,所以这 2 年中的所有错误修复和安全修复那里不存在。