“拜占庭将军问题”是一个用来描述计算机系统在一个或多个部件发生故障时,所面临的挑战的术语。这些故障可能导致系统内传递错误信息,从而影响其性能。这个名字来源于 1982 年的一篇研究论文,该论文将这个问题与历史军事场景进行了比较。
设想一下这个场景:拜占庭军队的几个师计划围攻敌人的城市,每个师都有一个将军,而他们之间只能通过信使进行沟通。将军们必须就一个计划达成一致,该计划需满足两个要求:1)所有值得信赖的将军都遵循相同的计划;2)少数坏人不能让好人遵循有害的计划。
主要挑战是将军们如何安全地分享信息并达成一致意见。如果他们不能达成一致,他们的进攻就可能会失败。如果一个狡猾的将军故意提供错误信息,将其他人引入险境,这也是一个问题。
在像区块链这样的分布式计算机网络中,每个参与者(节点)就像是一个将军。为了使系统正常工作,大多数节点必须就相同的指令达成一致并遵循。如果某些节点出现故障或变得恶意,就会发生拜占庭错误。尽管存在这些错误,仍能正常工作的系统被称为具有拜占庭容错性(Byzantine Fault Tolerance,BFT)。
比特币使用一种名为工作量证明(proof-of-work)的方法来解决这个问题。当每个“将军”(节点)确定一个计划时,他们让计算机处理一个具有挑战性的问题。预计他们中的一个会在 10 分钟内找到解决方案。当找到解决方案时,该节点与其他人分享,并附上他们的计划。然后其他人遵循这个新计划。
通过检查工作量证明链,每个节点都可以看到使用了多少计算能力,并且大多数计算机都同意该计划。因此,他们可以信任并遵循具有最长工作量证明链的计划,因为大多数人支持它。