什么是拜占庭容错?

中本聪(Satoshi Nakamoto)于2008年创建了比特币,他使该网络非常强大,它是一种分布式,点对点的模型,无需任何中介即可维护。从那时起,创建了许多数字货币,它们遵循相同的系统,在该系统中,所有节点都共享相同的信息(相同的区块链副本),并且任何节点都可以在知道其显示相同数据的情况下安全地通过网络与任何其他节点通信。

拜占庭容错(BFT)是区块链技术面临的最困难的挑战之一。加密货币网络的所有参与者都需要就区块链的当前状态达成共识或定期达成共识。网络中至少(2/3)三分之二或更多的可靠诚实节点使其成为可靠的网络。如果超过一半的节点恶意行为,则系统必须面对51%的攻击,这将在另一篇文章中进行讨论。

加密货币中的拜占庭容错概念是一种基于工作量证明就特定块达成协议或共识的功能,即使某些节点无法响应或给出恶意值来误导网络时也是如此。BFT的主要目标是即使存在一些故障节点也可以保护系统。这也将有助于减少故障节点的影响。


拜占庭将军的问题

拜占庭容错的概念源于1982年由Leslie Lamport,Robert Shostak和Marshall Please在Microsoft Research的一篇论文中解释的拜占庭将军问题。

想象一下,拜占庭军队的几个师在一个敌方城市之外扎营,每个师由自己的将军指挥。将军们只能通过使者相互交流。观察敌人后,他们必须决定共同的行动计划。但是,有些将军可能是叛徒,试图阻止忠实的将军达成协议。将军们必须决定何时进攻这座城市,但他们需要同时拥有一支强大的部队来进攻。将军们必须有一种算法来保证(a)所有忠实的将军都决定同一个行动计划,以及(b)少数叛徒不会导致忠实的将军们采取错误的计划。忠实的将军都会按照算法说的去做,但是叛徒可以做他们想做的任何事情。无论叛徒做什么,该算法都必须保证条件(a)。忠实的将军们不仅应该达成协议,而且应该就合理的计划达成协议。

在对等网络中,通过忠诚和无故障节点的一致协议来达成共识。当所有节点都重复输入消息时,就可以达到拜占庭容错的基础。如果节点正在重复传入的消息,则表明它不是错误或恶意的。如果所有收件人都重复传入的消息,则网络将排除拜占庭节点的问题。

拜占庭节点是可以躺在或有意网络的误导其它节点,并且还它们参与一个一致性协议的节点的节点霸。因此,尽管有这些拜占庭式节点,该协议仍应超越恶意节点的非法干预并应能完美运行。

拜占庭式失败有两种:

  • 节点中确实存在技术错误,并且它停止工作或响应。

  • 另一个是任意节点故障。在任意节点出现故障的情况下,节点可能无法返回结果或故意响应误导性结果。它也可能给系统的不同部分带来不同的结果,从而误导系统。

拜占庭容错是通过加密货币网络克服这些挑战的方法。