分布式一致性—拜占庭将军问题

提起区块链,大家似乎感觉这项技术很神秘。今天从技术的角度剖析一下区块链的分布式一致性问题,很多研究人员称此问题为分布式领域的幽灵,也就是大家常常听到的拜占庭将军问题。

拜占庭将军问题(The Byzantine Generals Problem)是Leslie Lamport(莱斯利·兰伯特)提出的针对分布式对等网络中的通信容错问题。

Leslie Lamport在其论文The Byzantine Generals Problem中以一个示例形象的描述了此问题:一组拜占庭将军分别各率领一支军队共同围困一座城市。为了简化问题,各支军队的行动策略仅限定为进攻或撤离两种。因为部分军队进攻、部分军队撤离可能会造成灾难性后果,因此各位将军必须通过投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离。因为各位将军分别处于城市不同方向,他们只能通过信使互相联系。在投票过程中每位将军都将自己投票给进攻还是撤退的信息通过信使分别通知其他所有将军(此假设中,将军可能是叛徒,发送错误信息等),从而,每位将军根据自己的投票和其他所有将军送来的信息就可以知道共同的投票结果而决定行动策略。

用通信术语描述拜占庭将军问题可靠的计算机系统必须处理有故障的组件,这些组件的引入可能与系统其它部分信息冲突[1]。根本不发送任何消息,向不同的邻居发送不同且错误的消息,以及谎报自己的输入值[2]。一个可靠的计算机系统必须能够处理一个或多个组件的失败。失败的组件出现被忽略的行为,向系统的其他部分发送不一致的信息。

在分布式计算中,不同的计算交换通讯信息从而达成共识并按照同一套协作策略行动。但有时,系统中的成员计算机可能因出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。

拜占庭将军问题是存在前提假设条件的,在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的,因此对一致性的研究一般假设是建立在信道是可靠的这个前提下。拜占庭将军问题的核心是允许存在少数节点作恶(消息存在被伪造的可能性)的情况下如何达成共识的问题。

拜占庭将军问题实际上是如何让一个分布式系统的保持一致性和在特定条件下保持正确性的问题。可抽象为满足以下2个条件的算法:

条件IC1. 所有忠诚的将军得出相同的作战指令,并且按指令执行(正常处理单元必须使用相同的输入值),保持指令的一致性。

条件IC2. 如果作战指令是忠诚的将军发出的,所有忠诚的将军会遵循该将军发出的作战指令(如果输入单元是正常的,那么每个正常的单元都应该使用它提供的值作为输入),特定条件下的正确性。

Leslie Lamport论文里The Byzantine Generals Problem提到了Oral Messages和Signed messages两个解决方案,其算法如下:

1、OM(m)口头协议算法

结论: 如果有m个叛军,必须至少有 3m+1位将军(包括背叛和忠诚的将军)才能保证口头协议算法(简称OM算法)能解“拜占庭将军问题”。

前提假设:

A1. 每个被发送的消息都能够被正确的投递

A2. 信息接收者知道是谁发送的消息

A3. 能够知道缺少的消息(如果叛军不配合发送消息,算法默认一个值“撤退”的来替代)

证明过程:

https://www.microsoft.com/en-us/research/uploads/prod/2016/12/The-Byzantine-Generals.pdf

2、SM签名协议算法

结论:在不管有多少叛军的情况下,都能让忠诚的将军们保持一致的行动

前提假设:

A1. 每个被发送的消息都能够被正确的投递

A2. 信息接收者知道是谁发送的消息

A3. 能够知道缺少的消息(如果叛军不配合发送消息,算法默认一个值“撤退”的来替代)

A4.1 签名不可被伪造,一旦被篡改即可发现

A4.2 任何人都可以验证将军签名的可靠性

证明过程:

https://www.microsoft.com/en-us/research/uploads/prod/2016/12/The-Byzantine-Generals.pdf

读者如果想对分布式算法深入解析,如Paxos、Pow、BFT,推荐区块链核心算法一书,文中有部分值得深入研读的参考文献。

参考文献:

[1] The Byzantine Generals Problem. LESLIE LAMPORT, ROBERT SHOSTAK, and MARSHALL PEASE SRI International

[2] 区块链核心算法解析. Roger Wattenhofer

参考链接

The Byzantine Generals Problem

同步链接:

https://www.microsoft.com/en-us/research/uploads/prod/2016/12/The-Byzantine-Generals.pdf

24小时热点

转USDT被骗可以追回吗?给别人转了USDT不给钱怎么办?

能否追回主要看你的操作是否及时。给别人转了USDT不给钱请及 ...

29019

区块链圈小菜鸡

Pi钱包最新版本下载攻略,一文教你成功下载Pi钱包

Pi Network是一个新兴的加密货币项目,旨在让普通人也 ...

147099

区块链圈小菜鸡

最新中国数字人民币股票代码汇总

最新中国数字人民币股票代码有300468、002649、60 ...

68070

波场区块链浏览器

988pay虚拟钱包使用指南分享

988pay虚拟钱包被称为数字货币钱包或者是区块链钱包,方便 ...

598280

波场区块链浏览器

1U等于多少人民币?U币怎么兑换人民币?

U币(如USDT)是一种基于区块链技术的稳定币,其价值与美元 ...

206711

区块链圈小菜鸡

全面解析Sol钱包使用指南:如何安全下载和管理Sol币

了解Sol钱包的使用方法,从如何安全下载Sol币钱包到管理私 ...

1151

区块链网快讯

柚子钱包官网下载使用的教程

柚子钱包是一个区块链数字资产管理工具,支持多种数字货币的交易 ...

14145

波场区块链浏览器

k钱包是什么:数字货币管理和存储工具

在数字货币领域,安全有效地管理和存储资产成为了用户的首要关注 ...

20229

波场区块链浏览器

Pi币在国内是否合法?国家为何不禁止Pi币?

目前,Pi币在国内尚未被明确禁止或合法化,其合法性仍存在争议 ...

285999

波场区块链浏览器

USDT网络选哪个?哪个USDT交易网比较好?

USDT(泰达币)是基于不同区块链网络发行的稳定币,主要有三 ...

13202

区块链圈小菜鸡

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5290297

知信链

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2371744

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1819370

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1121393

波场区块链浏览器

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

990736

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

834744

Kusama 测试网

最全传销名单,请告诉家人朋友,别让他们上当受骗后赔到血本无归

因为互联网的发展,让现代传销具备了更强的隐蔽性,更让社会经验 ...

782513

律动 BlockBeats

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

741726

中币交易所

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

720579

Hi元宇宙

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

713926

Mechanism Capital