Bystack的高TPS共识算法 (2)

支持只剩单共识节点存活的情况下支撑整个网络的运行到下一轮共识节点替换,但出块速度会下降为正常情况的1/n.
用户可在此期间更改投票替换超级节点,在下一轮共识节点替换时网络既恢复正常状态。

支持1/3的共识节点作恶的情况下网络正常运行,当超过1/3的共识节点作恶区块将长时间不能进入最终确认功能直至网络运行到下一轮共识节点被替换。当超过1/2的共识节点作恶,恶意节点将控制网络。

BBFT共识出块情景分析

以下案例假设 n = 5, m = 3, s = 1,区块高度 = 100,时间戳为= 1557148900, 

轮到3号共识节点准备出第一个块

完美状态 

3号节点出高度为101, 时间戳为155714890区块A,广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

3.  3号节点出高度为102, 时间戳为155714891区块B,广播至全网

区块B得到超过2/3的节点确认,进入最终确认状态

5.  3号节点出高度为103, 时间戳为155714892区块C,广播至全网

区块C得到超过2/3的节点确认,进入最终确认状态

4号节点成功收到区块A, B, C并都处于最终状态,在此链的基础上继续连续出

4号节点出高度为104, 时间戳为155714893区块D,广播至全网

达到毫秒级最终确认,无回滚发生, 只有在网络延迟低与共识节点稳定的时候产生

理想状态

3号节点出高度为101, 时间戳为155714890区块A,广播至全网

3号节点出高度为102, 时间戳为155714891区块B,广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

4.  3号节点出高度为103, 时间戳为155714892区块C,广播至全网

区块B得到超过2/3的节点确认,进入最终确认状态

4号节点成功收到区块A, B, C但只有A,
B处于最终确认状态,在此链的基础上继续连续出块

4号节点出高度为104, 时间戳为155714893区块D,广播至全网

区块C得到超过2/3的节点确认,进入最终确认状态

达到秒级最终确认,无回滚发生,但因收集共识节点对区块的确认签名,导致最终确认的延迟。
但由于所有区块已成功传递到下一个出块共识节点,所以不影响出块

出块共识节点异常状态

时间戳为155714890, 无新块产生

时间戳为155714891, 无新块产生

时间戳为155714892, 无新块产生

4号节点未收到任何区块,轮到挖矿后出高度为101,
时间戳为155714893区块A广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

达到秒级最终确认,无回滚发生,因共识节点down机导致全网3秒内无节点出块。造成的影响是减慢了全网的出块速度,当单节点长期down机需要等待下一次投票时重新选出新一轮的共识节点可修复

网络延迟异常1

3号节点出高度为101, 时间戳为155714890区块A,广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

3.  3号节点出高度为102, 时间戳为155714891区块B,广播至全网

区块B得到超过2/3的节点确认,进入最终确认状态

5.  3号节点出高度为103, 时间戳为155714892区块C,广播至全网

区块C得到超过2/3的节点确认,进入最终确认状态

4号节点成功收到区块A, B但C区块由于延迟问题暂未收到

4号节点出高度为103, 时间戳为155714893区块D,广播至全网

由于2/3的共识节点已最终确认区块C, D无法获得最终确认

4号节点收到区块C与C的最终确认信息, 回滚区块D, 切换链至区块C

4号节点出高度为104, 时间戳为155714894区块E,广播至全网

区块E得到超过2/3的节点确认,进入最终确认状态

达到秒级最终确认,有回滚在所有没收到区块C的节点中发生,造成的影响是减慢了1个块的出块速度

网络延迟异常2

3号节点出高度为101, 时间戳为155714890区块A,广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

3.  3号节点出高度为102, 时间戳为155714891区块B,广播至全网

区块B得到超过2/3的节点确认,进入最终确认状态

5.  3号节点出高度为103, 时间戳为155714892区块C,广播至全网

4号节点成功收到区块A, B但C区块由于延迟问题暂未收到

4号节点出高度为103, 时间戳为155714893区块D,广播至全网

区块D得到超过2/3的节点确认,进入最终确认状态

3号节点收到区块D与D的最终确认信息, 回滚区块C, 切换链至区块D

4号节点出高度为104, 时间戳为155714894区块E,广播至全网

区块E得到超过2/3的节点确认,进入最终确认状态

达到秒级最终确认,有回滚在所有认同区块C的节点中发生,造成的影响是减慢了1个块的出块速度

网络延迟异常3 

3号节点出高度为101, 时间戳为155714890区块A,广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

3.  3号节点出高度为102, 时间戳为155714891区块B,广播至全网

区块B得到超过2/3的节点确认,进入最终确认状态

5.  3号节点出高度为103, 时间戳为155714892区块C,广播至全网

4号节点成功收到区块A, B但C区块由于延迟问题暂未收到

4号节点出高度为103, 时间戳为155714893区块D,广播至全网

区块D得到超过2/3的节点确认,进入最终确认状态

3号节点收到区块D与D的最终确认信息, 回滚区块C, 切换链至区块D

4号节点出高度为104, 时间戳为155714894区块E,广播至全网

区块E得到超过2/3的节点确认,进入最终确认状态

达到秒级最终确认,有回滚在所有认同区块C的节点中发生,造成的影响是减慢了1个块的出块速度

网络延迟异常4 

3号节点出高度为101, 时间戳为155714890区块A,广播至全网

区块A得到超过2/3的节点确认,进入最终确认状态

3.  3号节点出高度为102, 时间戳为155714891区块B,广播至全网

区块B得到超过2/3的节点确认,进入最终确认状态

5.  3号节点出高度为103, 时间戳为155714892区块C,广播至全网

4号节点成功收到区块A, B但C区块由于延迟问题暂未收到

4号节点出高度为103, 时间戳为155714893区块D,广播至全网

区块C, D各获得50%的共识节点投票,网络进入分叉状态

4号节点出高度为104, 时间戳为155714894区块E,广播至全网

区块E得到超过2/3的节点确认,进入最终确认状态

4号节点出高度为105, 时间戳为155714895区块E,广播至全网

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppwdw.html