We present a solution to consensus on a torus with Byzantine faults. Any solution to classic consensus that is tolerant to $f$ Byzantine faults requires $2f+1$ node-disjoint paths. Due to limited torus connectivity, this bound necessitates spatial separation between faults. Our solution does not require this many disjoint paths and tolerates dense faults. Specifically, we consider the case where all faults are in one column. We address the version of consensus where only processes in fault-free columns must agree. We prove that even this weaker version is not solvable if the column may be completely faulty. We then present a solution for the case where at least one row is fault-free. The correct processes share orientation but do not know the identities of other processes or the torus dimensions. The communication is synchronous. To achieve our solution, we build and prove correct an all-to-all broadcast algorithm $\mathcal{BAT}$ that guarantees delivery to all processes in fault-free columns. We use this algorithm to solve our weak consensus problem. Our solution, $\mathcal{CBAT}$, runs in $O(H+W)$ rounds, where $H$ and $W$ are torus height and width respectively. We extend our consensus solution to the fixed message size model where it runs in $O(H^3W^2)$ rounds. Our results are immediately applicable if the faults are located in a single row, rather than a column.
翻译:我们提出了一种在存在拜占庭故障的环面上达成共识的解决方案。经典共识的任何能容忍$f$个拜占庭故障的解决方案都需要$2f+1$条节点不相交路径。由于环面连通性的限制,这一约束要求故障之间存在空间隔离。我们的解决方案不需要如此多的不相交路径,并且能够容忍密集故障。具体而言,我们考虑所有故障位于同一列的情况。我们研究了一种共识版本,其中仅需无故障列中的进程达成一致。我们证明了若该列可能完全故障,即使这种较弱的版本也无法解决。随后,我们针对至少有一行无故障的情况提出了一种解决方案。正确进程共享方向信息,但不知道其他进程的身份或环面尺寸。通信为同步模式。为实现该解决方案,我们构建并验证了一种全对全广播算法$\mathcal{BAT}$,该算法保证消息能够送达所有无故障列中的进程。我们利用该算法解决了弱共识问题。我们的方案$\mathcal{CBAT}$的运行轮数为$O(H+W)$,其中$H$和$W$分别为环面的高度和宽度。我们还将该共识解决方案扩展至固定消息大小模型,其运行轮数为$O(H^3W^2)$。若故障位于单行而非单列,我们的结果同样直接适用。