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. \quad\quad Specifically, we consider the case where all faults are in the 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. \quad\quad To achieve our solution, we build and prove correct an all-to-all broadcast algorithm \PROG{BAT} that guarantees delivery to all processes in fault-free columns. We use this algorithm to solve our weak consensus problem. Our solution, \PROG{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$条节点不相交路径。受限于环面连通性,该界限要求故障之间具有空间隔离性。我们的解法无需如此多的不相交路径,且能容忍稠密故障。具体而言,我们考虑故障全部位于同一列的情形。我们处理的是仅需无故障列上的进程达成一致的共识变体。我们证明若该列可能完全故障,则即使这种弱化版本也无法求解。随后我们给出针对至少有一行无故障情形的解法。正确进程共享方向信息,但不知其他进程的身份或环面尺寸。通信为同步模式。为达成该解法,我们构建并验证了一个全对全广播算法\PROG{BAT},该算法保证将所有消息送达无故障列上的所有进程。我们利用该算法求解弱共识问题。我们的解法\PROG{CBAT}的运行轮数为$O(H+W)$,其中$H$和$W$分别表示环面的高度和宽度。我们将该共识解法扩展至固定消息长度模型,其运行轮数为$O(H^3W^2)$。若故障位于单行(而非单列),我们的结果同样直接适用。