...
所有加入状态通道的成员,需要和合约保持心跳,15s内有心跳的成员认为是有效成员。
当状态通道小于等于5个成员:
第一个进入状态通道的成员,查询状态通道状态,没有Leader, 将调用合约方法申请成为Leader, 合约检查只有1个有效成员,将验证通过。
其他成员进入状态通道的成员,查询状态通道状态,发现有Leader, 他将从Leader同步状态,并和Leader保持心跳, 如果和Leader15s心跳没有响应,他调用状态通道合约申请自己为Leader如果和Leader 15s 心跳没有响应,他调用状态通道合约申请自己为Leader, 合约检查之前的Leader如果有效将拒绝申请,如果之前的leader无效了,将通过申请。
...
对应申请失败的成员,将再次查询状态通道的最新状态,并和最新的Leader保持状态同步。
当状态通道大于5个成员:
需要选举5个成员作为候选成员,其他成员需要将投票权委托给候选成员,每个候选成员最大只能接受n/5-1个其他成员的委托。候选成员需要提供代理连接Leader节点功能,其他成员优先通过候选成员和Leader通讯。
问题:
选举过程中状态通道不可写。选举过程中状态通道不可写?
Leader故障如何快速切换?
5、如何选择和Leader的最优通信路径问题
状态通道的Follower需要从Leader同步状态和转发交易,但是有可能Follower直连Leader响应延迟没有经其他Follower中转效率高,所以为了发现最优路径。所有的和Peer的心跳包需要带上和Leader通信的最优延迟。
...