首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【区块链小问题科普】-关于PBFT的“水位”

【区块链小问题科普】-关于PBFT的“水位”

作者头像
帆说区块链
发布2022-04-26 19:52:53
发布2022-04-26 19:52:53
7200
举报
文章被收录于专栏:帆说区块链帆说区块链

“水位”是指在PBFT达成共识的同一时间内,区块链的每个区块的区块高度需要保持在同一个区间内,这个区间由低水位d和高水位H控制,需要满足关系: d<区块高度<H.

如此设计保证不同节点性能有所差异时,能够使节点之间的区块高度之差保持在一定的范围(最大值减去最小值)。在这里不必担心区块高度到达最高位H后无法增加,d会随着检查点发生而向后移动,但是H减去d的值是保持不变的。

什么是高低水位?

图中A节点的当前请求编号是 1039,即checkpoint为1039,B节点的 checkpoint 为1133。当前系统 stable checkpoint 为 1034 。那么1034这个编号就是低水位,而高水位 H=低水位 h+L ,其中L是可以设定的数值。因此图中系统的高水位为 1034+100=1134。

举个例子:如果 B 当前的 checkpoint 已经为 1134,而A的 checkpoint 还是 1039 ,假如有新请求给 B 处理时,B会选择等待,等到 A 节点也处理到和 B 差不多的请求编号时,比如 A 也处理到 1112 了,这时会有一个机制更新所有节点的 stabel checkpoint ,比如可以把 stabel checkpoint 设置成 1100 ,于是 B 又可以处理新的请求了,如果 L 保持100 不变,这时的高水位就会变成 1100+100=1200 了。

而对于水位线的移动,可关联到PBFT的检查点协议。每个节点确认收到了quorum(法定投票数,也就是需要超过quorum个节点应答,才算投票通过,进行下一段共识)个针对区块n的拥有相同执行结果的checkpoint(检查点)报文后,除了会删除缓存还会移动水位线。因为这些报文证明了已经有n个节点“实锤”了。也就是已经有N个节点都同意了。在接下来,主节点给之后的交易安排的区块号就要大于n,所以低水位就要增加到n的位置上去。d增加了,H减去d又是一个固定的值,说明H也要增加。

参考:https://blog.csdn.net/qq_42224330/article/details/115526663

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帆说区块链 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档