锚节点是定义在一个已经加入到管道的组织的节点。该节点主要用于节点的发现。
在一个管道中,锚节点可以被这个管道的其他任何节点发现和通信。因此,每一个加入到管道内的组织都至少有一个锚节点,一个组织的节点可以通过查找锚节点来发现这个管道内的其他组织的所有节点。
当ordering服务要发送一个区块到管道,这个块就必须先发送到一个组织的leader 节点,之后由leader节点把这个块通过gossip协议分发到这个组织的其他节点上。 也就是说,锚点是组织和组织之间的联通桥梁。而leader节点是peer节点和order服务之间的通信桥梁。
根据当前的peer身份,获取到当前peer所在的组织
确保所设置的锚点要在当前的channel内
使用锚点信息,构造joinchannel的消息格式
根据配置信息,获取要更改组织下的所有锚点,这些锚点信息都放入joinchannel的消息中,用于gossip发送
对joinchannel消息中每个组织里的锚点:
-
遍历这个组织下的锚点,首先进行host和port合法性检测。如果当前节点就是锚点,就不做任何操作。之后,如果锚点不在当前组织内,需要判断当前节点是否可以对外连接,也就是说是否设置了外部访问端口
-
使用发现服务连接这个锚点,在连接的过程中,发送的消息是不需要节点签名的。只需要保证连接的时候,需要知道连接节点的PKIid(PKIid的获取是通过与远程节点进行握手操作获取到远程节点的签名信息和PKIid)
蜗牛讲技术,满满的都是干货,你值得关注。