代码之家  ›  专栏  ›  技术社区  ›  MahmoudBC

Hyperledger结构。是否可以将多个链码部署到同一通道?

  •  4
  • MahmoudBC  · 技术社区  · 6 年前

    是否可以将两个不同的链码部署到Hyperledger结构中的同一通道

    5 回复  |  直到 6 年前
        1
  •  5
  •   jworthington    6 年前

    对并且可以将相同的链码部署到2个或多个通道。如果使用不同的名称,甚至可以将相同的链码部署到相同的通道。

        2
  •  2
  •   chuancey yang    6 年前

    当检查块结构时,我在块中找到一个“Chaincode Name”字段,我假设:

    • 一个频道有一个分类帐( offcial doc )
    • 一个通道可以有两个或多个链码
    • 由不同链码生成的块(我们可以简单地这样认为)将存储在同一个分类账中
    • 块中的“链码名称”字段将区分它是从哪个链码生成的
        3
  •  1
  •   draganrakita    6 年前

    jworthington的回答是正确的,但我想从评论中澄清一些事情。

    • 一个渠道意味着一个分类账。( official doc )
    • 每个链码在分类账上都有单独的“视图”(我将其可视化,因为数据库中的每个键都有链码名称前缀,链码可以访问 仅限前缀与其名称相同的特定键)。
    • 您可以从第一个链码调用第二个链码的读/写,这将只进行一个区块链交易(在链码位于同一个通道/分类账上的情况下,如果不在,写入操作将被忽略)
        4
  •  0
  •   varun teja    5 年前

    是的,我们可以使用不同的链码ID将多个链码部署到同一个通道。 每个链码在通道中都有单独的分类账,我们可以将其视为名称空间。 一个链码不能直接读取/更新其他渠道分类账。

    然而,fabric shim包提供了“InvokeChaincode”功能,可以调用另一个链码来读取/更新它的账本。

    stub.InvokeChaincode("anotherCCName", chainCodeArgs, "channelName")

        5
  •  0
  •   Anil8753    3 年前

    我不知道这些年来有多少变化,但我分享了基于版本2的信息。十、

    1. 分类帐与频道关联,而不是与链码关联。即使是同行也可以在没有安装链码的情况下拥有账本。 https://hyperledger-fabric.readthedocs.io/en/latest/peers/peers.html#multiple-ledgers
      • P1为对等
      • L1&L2为账本
      • S1、S2和S3是链码

    enter image description here

    1. 对等方拥有的分类账数量与可以访问该分类账的链码数量之间没有固定的关系。对等方可能有许多链码和许多账本可用。 https://hyperledger-fabric.readthedocs.io/en/latest/peers/peers.html#multiple-chaincodes
      • P1为对等
      • L1&L2为账本
      • S1、S2和S3是链码 enter image description here