链码存在于超级账本结构中的什么位置?

Where does the chaincode exist in a hyperledger fabric?

作为区块链和 Hyperledger Fabric 的新手,我正在尝试寻找以下问题的答案,

我计划使用 IBM Bluemix 入门计划,并使用在 Hyperledger composer 中开发的 BNA 将链代码安装到样本结构网络。

  1. 在多组织、多对等设置(真实世界场景)中,链代码在 Hyperledger Fabric 网络中存在(或安装)的位置 - 它是否仅限于特定对等点或所有频道中的同行?

  2. 如果链码驻留在特定的对等节点中,那么如果对等节点出现故障(由于连接中断或其他不可预见的灾难),网络会发生什么情况——整个通道是否会无法运行没有链码?

  3. 不同节点中的多个链码如何访问 hyperledger fabric 中的同一组数据?

    • 我在 http://hyperledger-fabric.readthedocs.io 中看到了这个内容: “由链代码创建的状态仅限于该链代码,不能由另一个链代码直接访问。 给予适当的许可,链代码可以调用另一个链代码,在同一通道或不同通道中,以访问其状态。请注意,如果被调用的链代码与调用链代码位于不同的通道上,则只允许读取查询”。但我不确定如何授予 "appropriate permission".

In a multi-org, multi-peer setup (real world scenario) where does the chaincode exist (or gets installed) in the Hyperledger Fabric network - is it confined to a specific peer or all the peers in a channel?

链码安装在每个必须为给定交易背书的节点上。背书涉及使用一些给定的参数执行链代码,找出结果并对其进行签名(使用对等方所属组织的 MSP)。 链代码在每个对等点的基础上安装,并且可以在一个或多个通道上实例化。如果 peer 属于一个通道但没有为任何交易背书,那么它就不需要链码。它可以只选择存储给定通道的分类帐(充当提交节点)。

If the chaincode is residing in a specific peer then what happens to the network in case the peer is down (due to connectivity disruption or other unforeseen calamities) - will the whole channel be unable to operate without a chaincode?

如果每个组织的 MSP 有多个背书节点,您可以顺利签署并继续交易。正如您所解释的,为每个 ORG MSP 设置多个对等点有助于崩溃容错。其次,如果每个 ORG MSP 只有一个对等点,并且您的背书政策是这样的,您绝对需要该 MSP 的签名才能使您的交易通过,那么该通道的给定链代码的交易将失败。同一通道上不需要此签名的其他链代码仍将继续正常运行。

How can multiple chaincodes in various peers access the same set of data in hyperledger fabric?

权限是指调用方组织的MSP是否有访问通道的权限。因此,如果您尝试从 Channel1 调用 Channel2 的数据,那么您(调用客户端)必须是该通道的一部分,或者作为 reader/writer.