Uploaded image for project: 'Fabric'
  1. Fabric
  2. FAB-11980

Peer to peer Chaincode messaging



    • Epic
    • Status: Backlog
    • Medium
    • Resolution: Unresolved
    • v2.0.0
    • None
    • fabric-peer
    • None
    • Peer to peer Chaincode messaging
    • Unset
    • Unset
    • Unset
    • Unset
    • Unset
    • (Please add high level design or a link to the design)
    • (Please add usage information)


      The Long version can be found in the google doc.

      Short version:

      I propose the following changes to Fabric:

      • To add an application layer point-to-point messaging API to the gossip layer, to be used by peer components.
      • To enhance the chaincode API with the ability to leverage the above API in order to send messages between invocations of the same chaincode in the same transaction.

      This would allow transactions involving computation over data which is only available to a subset of the peers participating in the chaincode simulation, namely:

      • Computation over secret data that is available only to one organization when the endorsement policy dictates several.
      • Computations that involve cross channel reads, when some of the peers aren't in the channel but do need to endorse the transaction.
      • Export of integration to external systems - in cases where an organization which participates in a transaction has a chaincode that communicates with an external system, and other organizations need to use that capability, but they can't communicate with the external system because of proprietary code, or lack of credentials.

      It's worth mentioning that this item doesn't involve a lot of work, as we only need to:

      • Add a new message type to the gossip protobuf, and an API in the peer that just calls the existing functions that are already there since v1.1.
        The entire inter-peer messaging and routing is then handled by the existing gossip infrastructure.
      • Add a router component within the chaincode peer side which routes application messages tagged with "chaincode" and received from the gossip layer by the transaction ID into the right gRPC stream, and routes messages obtained from a gRPC stream (of a chaincode shim) to the gossip layer (to be sent to remote peers).
      • Add an API on the shim side that just involves sending and receiving a message, which is quite easily done.

      C0rWin mastersingh24 adc ales ellaki denyeart sykesm




            Unassigned Unassigned
            yacovm Yacov Manevich
            1 Vote for this issue
            15 Start watching this issue