Hyperledger面料。是否可以将多个链代码部署到同一个通道?

时间:2018-04-09 11:18:39

标签: hyperledger-fabric hyperledger

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

4 个答案:

答案 0 :(得分:5)

是。并且可以将相同的链代码部署到2个或更多通道。如果使用其他名称,甚至可以将相同的链代码部署到同一个通道。

答案 1 :(得分:1)

在检查块结构时,我在块中找到一个“ Chaincode Name”字段,并且我认为:

  • 一个渠道有一个分类帐(offcial doc
  • 一个频道可以有两个或多个链码
  • 由不同链码生成的区块(我们可以简单地这样认为)将存储在同一台分类帐中
  • 块中的“ Chaincode Name”字段将区分它是从哪个链码生成的。

答案 2 :(得分:0)

jworthington的答案是正确的,但我想从评论中清除一些内容。

  • 一个渠道意味着一个分类帐。 (official doc
  • 每个链码在账本上都分开了“视图”(我将其可视化,因为数据库中的每个键都有链码名称前缀,并且链码可以访问 仅具有与名称相同前缀的特定键。)
  • 您可以从第一个中调用第二个链码的读/写操作,并且只会进行一次区块链交易(在链码位于同一通道/分类账的情况下,如果它们不在同一通道/分类账中,则写操作将被忽略)

答案 3 :(得分:0)

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

但是,fabric shim软件包提供了“ InvokeChaincode”功能,以调用另一个链码来读取/更新其分类帐。

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