拜占庭问题与Tendermint

拜占庭问题与算法

拜占庭问题更为广泛,讨论的是允许存在少数节点作恶(消息可能被伪造)场景下的一致性达成问题。拜占庭算法讨论的是最坏情况下的保障。

中国将军问题

拜占庭将军问题之前,就已经存在中国将军问题:两个将军要通过信使来达成进攻还是撤退的约定,但信使可能迷路或被敌军阻拦(消息丢失或伪造),如何达成一致。根据 FLP 不可能原理,这个问题无解。

拜占庭问题

又叫拜占庭将军(Byzantine Generals Problem)问题,是 Leslie Lamport 1982 年提出用来解释一致性问题的一个虚构模型。拜占庭是古代东罗马帝国的首都,由于地域宽广,守卫边境的多个将军(系统中的多个节点)需要通过信使来传递消息,达成某些一致的决定。但由于将军中可能存在叛徒(系统中节点出错),这些叛徒将努力向不同的将军发送不同的消息,试图会干扰一致性的达成。拜占庭问题即为在此情况下,如何让忠诚的将军们能达成行动的一致。对于拜占庭问题来说,假如节点总数为 N,叛变将军数为 F,则当 N >= 3F + 1 问题才有解,即 Byzantine Fault Tolerant (BFT) 算法。

https://yeasy.gitbooks.io/blockchain_guide/content/distribute_system/bft.html

什么是Tendermint?(谷歌翻译)

Tendermint是用于在许多机器上安全且一致地复制应用程序的软件。 安全地说,即使多达1/3的机器以任意的方式失败,Tendermint也能正常工作。 一致地说,我们的意思是每个没有故障的机器都看到相同的事务日志并计算相同的状态。 安全和一致的复制是分布式系统的一个基本问题; 它在从货币到选举到基础架构编排等广泛应用程序的容错功能中发挥着至关重要的作用。

容忍机器故障的能力包括变得恶意,被称为拜占庭容错(BFT)。 BFT理论已经有数十年的历史了,但是软件实现最近才开始流行起来,主要是因为像比特币和以太坊这样的“区块链技术”的成功。 区块链技术仅仅是一个更现代的设置BFT的重新格式化,重点是对等网络和密码认证。 这个名字来源于事务按块进行批处理的方式,其中每个块都包含前一个块的加密散列,形成一个链。 在实践中,区块链数据结构实际上优化了BFT设计。

Tendermint包含两个主要技术组件:区块链共识引擎和通用应用程序界面。 被称为Tendermint Core的共识引擎确保相同的交易以相同的顺序记录在每台机器上。 应用程序接口(称为应用程序块链接接口(Application BlockChain Interface,ABCI))使交易能够以任何编程语言进行处理。 不像其他区块链和共识解决方案,这些解决方案是用内置的状态机预先打包的(比如一个奇特的键值存储,或者一种古怪的脚本语言),开发人员可以使用Tendermint进行用任何编程语言编写的应用程序的BFT状态机复制开发环境适合他们。

Tendermint被设计为易于使用,易于理解,高性能,并且适用于各种分布式应用程序。

https://tendermint.readthedocs.io/en/master/introduction.html

    原文作者:长也之道
    原文地址: https://www.jianshu.com/p/6e3edebf782c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞