可验证快照、双签防护与可靠的跨分片转账

我们在测试框架(tools/quorum-net)中运行一个四验证者网络。每次运行都会保留其参数、每个节点的日志和一份摘要。这一轮运行暴露出五个缺陷,五个均已修复。

每一次状态变更都经过共识

某些操作(多签金库、证书、字节码白名单、节点资料)此前由接收请求的节点直接应用,其他节点从未见到它们。与 Cosmos SDK 一样,节点现在在请求到达时只做验证;其效果只有在区块被应用时才写入状态。

无需凭信任接受的快照

新节点可以从状态快照启动,而不必重放全部历史。只有当快照之后的区块由超过 2/3 的验证者签署,并且恢复后的状态能精确复现相同的状态根时,快照才会被接受——这正是 CometBFT 状态同步所采用的规则。在测试中,我们交给一个节点一份伪造的快照:其中一个余额被改动,校验和也已重新计算;该节点拒绝启动。

双签防护

一个被清空后又从较旧快照恢复的验证者,对一个它已经签过的高度再次签名,因而被网络罚没。现在,与 CometBFT 一样,最后一次签名会保存在验证者密钥旁的一个文件中:重复签名会被拒绝,恢复也绝不会从低于最后签名高度的位置开始。同样的场景现在可以顺利通过,没有任何罚没。

跨分片转账

目标分片过去在消息到达的那一刻就为转账入账,因此它的两个节点可能在不同区块中入账;网络发现了这种分歧并停止了该分片。现在,与 IBC 一样,转账由区块中的一笔交易入账,并且目标分片会核验扣款确实位于源分片由其验证者签署的某个区块中。入账耗时 1–2 秒,而此前最长可达 30 秒。

多余的区块

在双分片网络中,系统交易会不断回到区块中,一个空闲网络每分钟产出 120 个区块。现在按照设计,它每分钟只产出 2 个。

连接洪泛

dos 测试扮演一个向节点发起约 480,000 个连接的攻击者。在发布版构建上,网络出块速度与没有攻击时保持一致,这得益于每个 IP 每秒 20 个连接的限制、采用 ML-DSA 签名握手的对等节点持久连接,以及按密钥而非按 IP 封禁的验证者与访客分离准入机制。日志警告从 16,000 行降至 39 行。我们最初归咎于攻击的减速,结果是由调试版构建造成的,因此负载测试现在只在发布版构建上运行。

结果

333 项节点测试和 63 项共识测试通过,网络场景也全部通过——节点崩溃、重启、负载、连接洪泛和双分片——没有出现状态分歧,也没有任何罚没。

全部新闻