提起区块链,大家似乎感觉这项技术很神秘。今天从技术的角度剖析一下区块链的分布式一致性问题,很多研究人员称此问题为分布式领域的幽灵,也就是大家常常听到的拜占庭将军问题。
拜占庭将军问题是LeslieLamport提出的针对分布式对等网络中的通信容错问题。
LeslieLamport在其论文TheByzantineGeneralsProblem中以一个示例形象的描述了此问题:一组拜占庭将军分别各率领一支军队共同围困一座城市。为了简化问题,各支军队的行动策略仅限定为进攻或撤离两种。因为部分军队进攻、部分军队撤离可能会造成灾难性后果,因此各位将军必须通过投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离。因为各位将军分别处于城市不同方向,他们只能通过信使互相联系。在投票过程中每位将军都将自己投票给进攻还是撤退的信息通过信使分别通知其他所有将军,从而,每位将军根据自己的投票和其他所有将军送来的信息就可以知道共同的投票结果而决定行动策略。
国家标准《区块链和分布式记账技术 参考架构》于5月23日获批发布:金色财经报道,国家标准GB/T 42752-2023《区块链和分布式记账技术 参考架构》于5月23日获批发布。国家标准《区块链和分布式记账技术 参考架构》由TC590(全国区块链和分布式记账技术标准化技术委员会)归口,主管部门为工业和信息化部。主要起草单位包括中国电子技术标准化研究院、中国人民银行数字货币研究所、上海万向区块链股份公司等;主要起草人包括周平、穆长春、李鸣等。
据全国标准信息公共服务平台,《区块链和分布式记账技术 参考架构》于2023年5月23日发布,将于2023年12月1日实施。[2023/5/26 9:44:28]
用通信术语描述拜占庭将军问题:可靠的计算机系统必须处理有故障的组件,这些组件的引入可能与系统其它部分信息冲突。根本不发送任何消息,向不同的邻居发送不同且错误的消息,以及谎报自己的输入值。一个可靠的计算机系统必须能够处理一个或多个组件的失败。失败的组件出现被忽略的行为,向系统的其他部分发送不一致的信息。
动态 | 无人机行业分布式数据存储服务商Red Cat与GoChain达成合作:Red Cat Holdings宣布与GoChain达成合作。作为合作的一部分,Red Cat将把其区块链黑匣子和分布式存储系统集成到GoChain平台上。 注:Red Cat是无人机行业分布式数据存储、分析和服务供应商,此前该公司曾发布过基于区块链的黑匣子存储、分析和服务平台。(Aviation Pros)[2019/9/9]
在分布式计算中,不同的计算交换通讯信息从而达成共识并按照同一套协作策略行动。但有时,系统中的成员计算机可能因出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。
金色相对论 | 肖臻:比特币协议是去中心化的,跟分布式的概念不是完全等价的:在今日举行的金色相对论中,关于“央行大概率会更像传统的分布式系统设计的考虑是什么”的问题,北京大学计算机系研究员、博士生导师肖臻表示,严格地说,比特币协议是去中心化的,跟分布式的概念不是完全等价的。去中心化的系统必然是分布式的:如果整个系统只运行在一台机器上,那显然不能称为去中心化的。但是,分布式系统未必是去中心化的。即使系统运行在成千上万台机器上,如果这些机器是由同一个机构管理的,那也不是去中心化的。目前央行还没有公布会采取哪种设计,我估计央行自己也没有确定。比特币和以太坊采用的都是交易驱动的状态机模式。绝大多数分布式系统是让每台机器处理不同的任务,然后把处理结果组合起来得到最后的结果。这样做的目的是为了比单机处理速度快。最理想的状况是达到线性加速比:10台机器的处理速度是1台机器的10倍。实际使用中往往很难达到线性加速比,因为任务拆分、机器之间通讯、整合各台机器的输出结果都有一定的开销,所以10台机器可能只比一台机器快6倍,但还是要比单机速度快,否则用分布式系统就没意义了。[2019/8/15]
拜占庭将军问题是存在前提假设条件的,在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的,因此对一致性的研究一般假设是建立在信道是可靠的这个前提下。拜占庭将军问题的核心是允许存在少数节点作恶的情况下如何达成共识的问题。
瑞银、巴克莱银行与瑞士信贷等公司共推以太坊分布式合约平台:为了响应新的监管要求,一些世界级大银行透露了正在进行的一个试点,旨在简化以太坊的智能合约。瑞士银行巨头瑞银(UBS)在巴克莱、瑞士信贷、KBC、SIX和Thomson Reuters的帮助下,进行了大规模自主分布式合约平台(简称Madrec)的试点,旨在使银行更容易协调交易数据。瑞士银行区块链研究与开发部负责人Peter Stephens在接受CoinDesk专访时解释,使用区块链技术,可以在不牺牲任何竞争优势的情况下帮助用户节省资金。[2017/12/12]
拜占庭将军问题实际上是如何让一个分布式系统的保持一致性和在特定条件下保持正确性的问题。可抽象为满足以下2个条件的算法:
条件IC1.所有忠诚的将军得出相同的作战指令,并且按指令执行,保持指令的一致性。
条件IC2.如果作战指令是忠诚的将军发出的,所有忠诚的将军会遵循该将军发出的作战指令,特定条件下的正确性。
LeslieLamport论文里TheByzantineGeneralsProblem提到了OralMessages和Signedmessages两个解决方案,其算法如下:
1、OM(m)口头协议算法
结论:如果有m个叛军,必须至少有3m+1位将军才能保证口头协议算法能解“拜占庭将军问题”。
前提假设:
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,推荐区块链核心算法一书,文中有部分值得深入研读的参考文献。
参考文献:
TheByzantineGeneralsProblem.LESLIELAMPORT,ROBERTSHOSTAK,andMARSHALLPEASESRIInternational
区块链核心算法解析.RogerWattenhofer
参考链接
TheByzantineGeneralsProblem
同步链接:
https://www.microsoft.com/en-us/research/uploads/prod/2016/12/The-Byzantine-Generals.pdf
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。