一个 Hyperledger Fabric 中的通道(channel
)是两个或多个特定网络成员之间的私有通信"子网",用于进行私有和机密的交易,一个通道是由成员(组织)(members (organizations)),每个成员的锚节点(anchor peers per member),共享账本(the shared ledger),链码应用程序(chaincode application(s)),和排序服务节点(the ordering service node(s))定义的。网络上的每个交易都在一个通道上执行,每个参与方必须经过身份验证并授权才能在该通道上进行交易。每个加入通道的peer都有由成员服务提供商(MSP)提供的自己的身份标识,该MSP为每一个peer向它的通道中的所有peer和服务证明。
要创建一个新的通道,客户端SDK会调用配置系统链码和引用的属性,如anchor peers
,和成员(组织)。这个请求为通道账本(channel ledger)创建了一个genesis block
,该通道账本存储了关于通道策略,成员和锚结点的配置信息。当向现有的通道中添加一个新成员时,这个genesis block或者一个最近被重新配置的区块将会共享给新成员。
注意:
关于配置交易的属性和原型结构的更多细节可参见Channel Configuration (configtx)一节。
通道中每个成员的leading peer
的选举决定了哪个peer代表成员与ordering service进行通信。如果没有指定leader,则可以使用算法来指定一个leader。共识服务将交易排序并以区块的形式发送给每一个leading peer,然后该leading peer会使用gossip
协议将区块分发给它的所有成员peer。
虽然任何一个锚结点都可以属于多个通道,并且因此维护多个账本,但是没有账本数据可以从一个通道传递到另一个通道。这种通道进行的账本分割,是由配置链码(configuration chaincode),身份关系服务(the identity membership service),和gossip数据传输协议(the gossip data dissemination protocol)定义和实现的。数据的传输,其中包括交易信息,账本状态和通道成员资格,仅限于在通道中具有可验证成员资格的peer间传播。由通道隔离的peers和账本数据,使得需要私有和机密交易的网络成员与同一个区块链网络中的商业竞争者和其他受限制的成员共存。
参考:
Hyperledger Fabric Channel
Hyperledger-关于Fabric的peer、org 和 channel004/HyperLedger-Fabric(节点与channel关系)
官方英文原文档:
https://hyperledger-fabric.readthedocs.io/en/latest/channels.html