$DUSK #Dusk @Dusk
核心参考: Dusk Whitepaper (Section 3.7)

引言:当两个节点同时出块

由于网络延迟(Asynchrony),可能会出现两个节点同时生成了有效区块的情况,导致区块链分叉。如果处理不好,这会导致双花攻击。
Dusk 在白皮书 Section 3.7 中介绍了其 Fallback(回退/兜底) 机制。

一、 优先选择低迭代(Lowest Iteration)

Dusk 的共识是分 Iteration(迭代) 进行的。
如果网络中出现了分叉,节点该信哪一个?

"When a fork is detected, nodes normally choose the block produced at the lowest iteration."

系统硬性规定:迭代次数越低的区块,优先级越高。
比如,节点 A 在第 1 次迭代就出块了,节点 B 在第 3 次迭代才出块。全网会优先认可节点 A 的区块。

二、 回滚与重组

如果节点已经接受了节点 B 的区块,随后又收到了节点 A 的(更优)区块,怎么办?
Fallback 程序会启动:

"The fallback procedure... reverts the local chain to the block before B, and then accepts B'."

节点会自动“回滚”自己的状态,丢弃节点 B 的区块,接受节点 A 的区块。这个过程是自动化的,确保了网络最终会收敛到同一条链上。

三、 意义

这种机制虽然听起来残酷(丢弃已处理的区块),但对于金融级区块链来说至关重要。它保证了共识的唯一性(Uniqueness),防止了长期的链分裂,是实现 Rolling Finality 的前提条件。