赞
踩
五、有人作恶怎么办?
在第2章中,所有的节点都是好人,会不打折扣的执行领导者的指令。如果集群中出现了坏人,就需要其他办法了。
是最复杂的一种分布式故障场景,除了存在故障行为,还存在恶意行为的一个场景。在存在恶意节点行为的场景中(比如在数字货币的区块链技术中),必须使用拜占庭容错算法(Byzantine Fault Tolerance,BFT)。常用的拜占庭容错算法有:PBFT 算法,PoW 算法。
1、PBFT 算法
PBFT 算法非常实用,是一种能在实际场景中落地的拜占庭容错算法。在这个算法中,所有的消息都是签名消息,也就是说,消息发送者的身份和消息内容都是无法伪造和篡改的。
上图中:
如上图,PBFT算法使用三阶段提交:预准备阶段、准备阶段、提交阶段,每个阶段都有包含指令的对应的消息,每个阶段的指令都应该是一样的,不同阶段的消息中的指令是可以累加的。这么多阶段的最终目的是某个节点想要提交各种消息中指令指定的操作,必须收到2f + 1 个验证通过的提交消息后(包括自己,其中 f 为叛徒数)才可以,这样PBFT 算法才能做到能容忍 (n - 1)/3 个恶意节点 (也可以是故障节点)。
主要过程简化为:
PBFT算法,自己的理解就是通过多次广播消息,提高信号的信噪比,从而让恶意指令无法被执行。
而PoW算法的核心是提高一次处理的难度。
2、PoW算法
不在此描述了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。