你在这里。看看这个问题与其他知识怎样相连。
选择节点前往页面 · 展开后可留在地图中阅读
一个问题
拜占庭容错究竟容忍哪类故障?
节点可能出错,也可能给不同参与者发送矛盾消息。
拜占庭故障包含恶意或任意行为,例如向不同参与者发送互相矛盾的消息,不仅是节点停止响应。拜占庭容错(BFT)协议要在明确的故障和网络假设下,让正常参与者仍能达成一致。
Tendermint Core 0.34 的说明以少于三分之一验证权重发生拜占庭故障为边界介绍其设计。这个阈值属于特定模型,不能直接套给所有区块链。
读容错声明时,要分清两个目标:正常参与者不确认互相冲突的结果,叫安全性;在约定条件下还能继续处理新请求,叫活性。还要看故障比例按节点数量还是投票权重计算,以及协议对消息延迟作了什么假设。
三分之二票数,不等于三分之二攻击门槛
假设四个节点需要三票才能确认。两个三票集合至少有两个共同成员;在最多一个坏成员的条件下,其中至少一个是诚实成员。协议限制诚实成员对冲突结果的支持,才能保护一致性。三票确认,不表示可以容忍三个坏节点。
实用拜占庭容错协议(PBFT)的典型关系是 n = 3f + 1 个副本容忍最多 f 个拜占庭故障,相应法定集合为 2f + 1。法定集合是达到协议所需票数的一组参与者。活性还依赖网络最终可以及时传递消息。这个数字关系不是所有 BFT 协议的无条件承诺。
比较攻击时,要先说清故障目标:停止进展、重组尚未最终确认的历史、制造冲突最终结果,要求并不相同。权益加权的系统数的是投票权,而不只是机器数量。不能因为 66.67% > 51%,就把不同模型的两个数字当成安全性评分。