学习“拜占庭将军问题”,把握区块链的核心技术


学习“拜占庭将军问题”,把握区块链的核心技术

了解区块链的人,多少都听说过拜占庭将军问题。其实,区块链的一个重要成就正是解决了拜占庭将军问题。

学习“拜占庭将军问题”,把握区块链的核心技术

那“拜占庭问题”到底是什么?

其与区块链又是怎样的关系?

拜占庭将军问题是一个共识问题。

首先由Leslie Lamport与另外两人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。


是不是感觉一头雾水?

别急,看完下面这个故事......

很久以前,拜占庭是东罗马帝国的首都。

那个时候罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信使传递消息。

在打仗的时候,拜占庭军队内所有将军必需达成一致的共识,才能更好地赢得胜利。但是,在军队内有可能存有叛徒,扰乱将军们的决定。

这时候,在已知有成员不可靠的情况下,其余忠诚的将军需要在不受叛徒或间谍的影响下达成一致的协议。


学习“拜占庭将军问题”,把握区块链的核心技术

拜占庭将军问题与区块链
这个故事形象的展现了计算机网络中所存在的一致性问题。

将军就是计算机;信使就是网络;信使被截杀,代表着计算机间的网络通信被终止;而将军叛变则代表着程序出错。

拜占庭将军问题的难点:在系统中存在 “叛徒” ,会对提案作出任意不可预知的行为,扰乱提案的正常进行或导致系统最终对一个错误的提案达成共识,影响整个系统的正常流转。

如果将军们在有叛徒存在的情况下仍达成了一致,就称之达到了“拜占庭容错”(BFT)

学习“拜占庭将军问题”,把握区块链的核心技术

拜占庭将军问题的难点:在系统中存在 “叛徒” ,会对提案作出任意不可预知的行为,扰乱提案的正常进行或导致系统最终对一个错误的提案达成共识,影响整个系统的正常流转。

如果将军们在有叛徒存在的情况下仍达成了一致,就称之达到了“拜占庭容错”(BFT)


学习“拜占庭将军问题”,把握区块链的核心技术

在计算机中,拜占庭容错的核心就是信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。

因此,区块链采用类似的共识算法来实现多方存在不信任群体之间的可信共识。

共识算法

1. 一段时间内,由某个节点提出提案 ;

2. 系统中的其他节点对提案使用数字签名进行投票确认;

3. 各节点收集网络中的投票个数,在满足投票条件之后,最终将提案提交至本地,全网对该提案达成共识。

由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事达成一致。


分享到:


相關文章: