今天一样继续来说区块链的起源,探讨“拜占庭容错” PBFT(Practical Byzantine Fault Tolerance)。拜占庭容错是一种基于严格数据证明的算法,至少需要经过三个阶段的信息交换和通过局部共识达至最终的一致性结果。
简单来说,系统中有可信节点超过三分之二,有问题的节点不超过三分之一时,不管这些节点如何散播与传达有问题的信息时,可信节点之间都一定能达到一致共识;
其实就是每一个收到讯息的节点不断的重复与彼此双双交换讯息,互相验证,让其中可信的节点之间能确认出正确的讯息,找出少数那些有问题的节点。以拜占庭帝国的例子来说,就是将军们不断重复彼此确认讯息,来找出间谍,以及直到确认接受到正确的命令。
所以能够保证达到一致共识的拜占庭系统节点数至少为4个,容许出现1个坏的节点。亦即:节点总数 ≥ 3有问题节点总数 + 1,这就是“拜占庭容错”。
只看满满的文字,实在还是很难理解拜占庭容错的运篹方法,我们就来用图表一段段解释,<区块链 Block chain – 共识机制之实用拜占庭容错 PBFT>这篇文章对「拜占庭容错」的步骤猜拆解非常详细。
对于拜占庭将军问题,PBFT 算法至少通过三个阶段达成一致性的协议:<请求 Request、预准备 Pre-Prepare、回复 Reply >,根据不同的协议设计,亦可能同时包含<准备 Prepare、确认 Commit>
A. 首先背景套用上面拜占庭将军的故事,同时 PBFT算法最少要求有4个参与者
B. C:元帅、0:司令、1:将军1号、2:将军2号、3:将军3号。
C. 胜利条件:2/3以上的军队都共同发起"进攻"。
拜占庭容错运作过程分解:
拜占庭容错运作过程分解 图片来源:https://www.samsonhoi.com/570/blockchain-pbft
五大程序:
1. 元帅命令司令"进攻"
(C 发送"请求"到 0)
2. 司令收到"进攻"命令后,分别传递给所有的将军
(0 发送"预准备"到1、2、3)
3. 将军1号收到由司令和将军2号的"进攻"通知,但迟迟没有收到将军3号的回应,就将将军3号忽略,并认为"进攻"是正确的,就下令"进攻"。并把"进攻"命令传递给其余将军
(1收到0、2的"准备",但并没有收到3,1 发送"准备"给2、3,发送 "确认" 给0)
将军2号收到由司令和将军1号的"进攻"通知,但迟迟没有收到将军3号的回应,就将将军3号忽略,并认为"进攻"是正确的,就下令"进攻"。并把"进攻"命令传递给其余将军
(2收到0、1的"准备",但并没有收到3,2 发送"准备"给1、3、0,发送 "确认" 给0)
4. 将军3号收到司令、将军1号、将军2号的"进攻"通知,这次不一样的是,将军3号没有把"进攻"要求传递给其他将军,而是害怕得临阵逃跑了
(3并没有发送"准备"给0、1、2,而且没有发送 "确认" 给0)
5. 最后,所有的将军亲自向元帅汇报执行的情况(司令、将军1号、军2号将),而3号将军并没有回复,所以将其视为逃跑或阵亡了,也就不理会他的结果,元帅也就认为大部份军队都"进攻",而且胜利了,不过同时亦发现将军3号有问题。
在以上这个过程,如在节点总数 ≥ 3有问题节点总数 + 1 的情况下,即使其中一位将军逃跑了,没执行"进攻",但最后仍取得胜利,但对国家造成危害(其中一个节点失效对系统造成的危害),亦会得知哪位将军有问题,而在 PBFT 的共识机制下,虽然出现有问题的节点,但这是容许的,不影响最终一致性的结果,这就是所谓 PBFT 算法的流程。
1.年輕時我們喜歡夢想,希望,未來,財富,快樂這些詞以為這就是生活;成熟後,...
风险和交易是齐头并进的,虽然风险可能是当今市场的一部分,但更相关的问题是值...
自2019年起,区块链被定义为核心技术自主创新重要突破口,2020年发改委将区块链...
自2020年11月以来,由于全球COVID-19病例持续增加,针对医疗保健组织的网络攻击...
区块链(blockchain)在虚拟货币(virtual coin)领域应用趋于平稳,现在日本IT相关...
在比特币白皮书中,对于交易过程的解释提及到了因不够信任而产生的双重支付问题...
2020年,平均每天监测到的最新恶意文件数量达到360,000,与去年相比,增长了5.2%...
最近,一份广东省深圳市中级人民法院的(2018)粤03民特719号民事裁定书(下称裁定...
区块链和大数据都是新一代信息技术,它们的概念不同,应用领域也有着一定的区别...
1月21日,最高人民法院发布《关于人民法院在线办理案件若干问题的规定(征求意见...