什么是拜占庭容错?
中本聪在 2008 年创建了比特币,他将该网络构建为一个强大的分布式点对点模型,无需任何中介机构维护。从那时起,许多数字货币被创建,它们遵循相同的系统,其中所有节点共享相同的信息(区块链的相同副本),并且任何节点都可以安全地与网络中的任何其他节点通信,因为它们知道它们显示的是相同的数据。
拜占庭容错 (BFT) 是区块链技术面临的最具挑战性的问题之一。加密货币网络的所有参与者都需要定期就区块链的当前状态达成一致或达成共识。网络中至少 (2/3) 二分之二或更多可靠且诚实的节点使其成为一个可靠的网络。如果超过一半的节点恶意行事,那么系统将面临 51% 攻击,这将在另一篇文章中讨论。
加密货币中拜占庭容错的概念是,即使某些节点无法响应或给出恶意值来误导网络,也能根据工作量证明就特定区块达成协议或共识的功能。BFT 的主要目标是在存在一些故障节点的情况下保护系统。这也有助于减少故障节点的影响。
拜占庭将军问题
拜占庭容错的概念源于拜占庭将军问题,该问题由 Leslie Lamport、Robert Shostak 和 Marshall Pease 于 1982 年在微软研究院的一篇论文中解释。
想象一下,拜占庭军队的一些师驻扎在敌方城市外,每个师由自己的将军指挥。将军们只能通过信使相互通信。在观察敌人后,他们必须决定一个共同的行动计划。但是,一些将军可能是叛徒,试图阻止忠诚的将军达成协议。将军们必须决定何时进攻城市,但他们需要军队中的大多数人同时进攻。将军们必须有一个算法来保证 (a) 所有忠诚的将军都决定相同的行动计划,以及 (b) 少数叛徒不能导致忠诚的将军采取错误的计划。忠诚的将军将按照算法所说的去做,但叛徒可以做任何他们想做的事情。算法必须保证条件 (a),无论叛徒做什么。忠诚的将军不仅应该达成协议,还应该就合理的计划达成一致。
在点对点网络中,共识是通过忠诚和无故障节点的一致同意实现的。当所有节点重复传入消息时,就会实现拜占庭容错的基础。如果一个节点重复传入消息,则表示它没有故障或恶意。如果所有接收者都重复传入消息,则网络排除了拜占庭节点的问题。
拜占庭节点 是暴君节点,它可以撒谎或故意误导网络中的其他节点,以及参与共识协议的节点。因此,协议应该凌驾于恶意节点的非法干预之上,并且应该完美地运行,尽管存在这些拜占庭节点。
拜占庭故障可以分为两类 -
节点确实存在技术错误,并且停止工作或响应。
另一个是任意节点故障。在任意节点故障的情况下,节点可能无法返回结果或故意响应误导性结果。它也可能向系统的不同部分抛出不同的结果以误导系统。
拜占庭容错是加密货币网络克服这些挑战的方式。