7个稳定版本
2.2.7 | 2023年12月20日 |
---|---|
2.2.6 | 2023年12月18日 |
2.2.5 | 2023年11月26日 |
2.2.2 | 2023年10月26日 |
#882 in 魔法豆
85 每月下载次数
用于 6 个crate(3个直接使用)
725KB
11K SLoC
snarkos-node-bft
该 snarkos-node-bft
crate 提供了一个基于BFT的内存池的节点实现。
主要
主要角色是协调器,负责推进轮次和广播锚点。
触发轮次推进
每个轮次运行,直到满足以下两个条件之一
- 达到coinbase目标,或者
- 轮次达到其超时时间(目前设置为10秒)
推进轮次
如论文中所述,BFT在n - f个顶点被传递时推进轮次。
The problem in advancing rounds whenever n − f vertices are delivered is that parties
might not vote for the anchor even if the party that broadcast it is just slightly slower
than the fastest n − f parties. To deal with this, the BFT integrates timeouts into
the DAG construction. If the first n − f vertices a party p gets in an even-numbered round r
do not include the anchor of round r, then p sets a timer and waits for the anchor
until the timer expires. Similarly, in an odd-numbered round, parties wait for either
f + 1 vertices that vote for the anchor, or 2f + 1 vertices that do not, or a timeout.
工作者
工作者是简单的条目复制器,从网络接收交易并将它们追加到其内存池中。
为了正常工作,工作者必须与最新轮次同步,并能够对其从其他验证者的工作者收到的条目进行验证。
测试案例
- 两个验证者,一个有X个工作者,另一个有Y个工作者。检查它们是否兼容。
- 如果主要看到f+1个其他主要验证者已经认证了这个轮次,它应该跳到下一个轮次,如果它尚未被认证。
- 确保从工作者接收一定数量的传输后,剩余的传输仍然为下一个轮次保留。
- 对于传输ID,发送回一个不匹配的传输,确保它能够捕获它。
- 对于证书ID,发送回一个不匹配的证书,确保它能够捕获它。
未解决的问题
- 如何保证接受的交易和解决方案的数量不超过区块限制?
- 我们需要为工作者设置传输次数限制,同时也为主要部分设置限制。
依赖项
~75MB
~1M SLoC