当前位置:首页 » 区块链精品文章 » 正文

4.4 节点启动及成员管理

1593 人参与  2018年10月15日 10:55  分类 : 区块链精品文章  评论

超级账本网络维护着所有节点的信息,包括存活节点和故障节点,包括最近一次检测到它们存活或者掉线的时间,所有节点信息都是以PKI-ID为标识符的。

要想加入到超级账本网络,节点必须至少要知道网络中一个存活节点的地址信息。节点启动的时候会读取配置文件 core.yaml,读取bootpeer.gossip.bootstrap字段的值,这个字段可以设置为一个列表,它包含了它可以连接的一些节点,这 个列表名为启动集合(Bootstrap Set)。节点会给启动集合中的所有节点发送MembershipRequest消息,其包含的内容是:

1)AliveMessage消息;

2)本地节点已知的存活节点列表。

其中,AliveMessage消息包含的内容有以下几项。

1)PKI-ID;

2)Endpoint(host+“:”+port);

3)Metadata(字节数组,以后备用);

4)PeerTime,它又包含以下内容:

·节点转世时间(即启动时间);

·单调递增的计数器,每次在AliveMessage传播时加1。

5)上面所有字段的签名;

6)节点的证书(可选)。

当一个节点接收到其他节点发送过来的AliveMessage后,首先会调用MCS(MessageCryptoService)模块验证消息的证书和签名,若验证通过,会添加到存活节点列表中,并更新检测到存活的时间。

节点证书只在节点启动后的一段时间内随消息发送,过了这段时间后消息就不再包含证书信息。当一个节点接收到其他节 点的消息时,它会用之前收到的这个节点发送的证书进行验证。这就是为什么在节点启动后的一段时间内在AliveMessage中需要包含证书信息,就是为 了在没有证书的情况下能够验证这个节点签名的信息。没有接收到其他节点证书的节点,可以通过周期性的数据交换机制来获取缺失的证书。

节点启动以后,每个节点还会周期性地在网络中广播AliveMessage消息,接收到消息的节点会更新本地的存 活节点列表。每个节点根据接收到的存活消息判断故障节点。这是最简单的处理拜占庭问题的办法,这里考虑到存活消息是由节点签名的,因而不能被攻击者伪造, 其他节点也不能通过发送消息就改变成员的状态。同时每个节点还会周期性地检查本地的存活节点列表,查看是否有节点在相当长的一段时间内没有更新存活状态, 如果有节点掉线了,就从存活列表中删除它,添加到掉线节点列表中。节点会周期性地尝试重新连接掉列表中的节点。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1078

区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!