行业资讯

29

2020-09

区块链是如何解决拜占庭将军问题的?

“拜占庭将军问题”也被称为“拜占庭容错”,这个概念是由由莱斯利·兰伯特Leslie Lamport在1982年提出,用来为描述分布式系统一致性问题。

一、何为拜占庭将军问题?

“拜占庭将军问题”也被称为“拜占庭容错”,这个概念是由莱斯利·兰伯特Leslie Lamport在1982年提出,用来为描述分布式系统一致性问题。

拜占庭在此前是东罗马帝国的首都,东罗马帝国曾盛极一时,拥有非常辽阔的国土。但正是由于辽阔的国土面积,用于防御的军队彼此都分离的很远,在没有现代化通信技术的情况下,各个军队之间只能靠信差传消息。当战争发生时,将军们也无法在一起来商讨战略决定是否发起进攻,只能通过信使来传递彼此的决定。

战争发生后,拜占庭帝国想要进攻一个敌人,为此派出了10支军队去包围这个敌人。这个敌人的实力足以抵御5支拜占庭军队的同时进攻,如果拜占庭军队分散进攻则毫无胜算,只有在至少一半以上(6支)部队的同时进攻下才能获取胜利。

拜占庭的十支军队分散在敌国的周围,依靠信使相互通信来协商进攻意向及进攻时间。而现在,困扰着这些将军的问题是,他们不确定他们内部是否存在背叛者,背叛者可能擅自更改进攻决定和进攻时间。在这种局面下,拜占庭将军们能否找到一种方式来让他们能够远程协商,保证有多于6支军队在同一时间发起进攻,从而赢取战斗?这就是著名的拜占庭将军问题。

拜占庭将军问题并不去考虑信使是否会被截获的问题,因为如果无法确定信息的安全性,那么试图通过消息传递的方式达到一致性就变得毫无意义。因此在研究拜占庭将军问题的时候,已经假定了信道是不存在问题的。

但即便如此,想要解决这个问题依然非常困难,因为一个背叛者可能会向不同的将军发出不同的进攻提议或提出不同的进攻时间,一个背叛者也会可能同意多个进攻提议或多个进攻时间。这种背叛者发送前后不一致的进攻提议进行信息伪造和恶意响应的行为,就被称为“拜占庭错误”。

在区块链技术出现之前,拜占庭将军问题曾经困扰我们许久,却始终没有寻求到一种非常完美的解决方式,直至08年区块链技术逐渐成熟后,这个问题才再度引起大众关注。

二、区块链是如何解决拜占庭将军问题的?

在出现区块链技术出现之前,解决分布式系统一致性问题主要依赖于莱斯利·兰伯特Leslie Lamport提出的Paxos算法或其衍生算法,但是Paxos类算法仅适用于中心化的分布式系统,因为中心化的系统没有不诚实的节点。

在区块链技术出现后,拜占庭将军问题得到了高效的解决。区块链技术引入了“工作量证明”为信息发送加入了成本,降低了信息传递的速率,从而使得在一定时间内只有一个将军可以广播信息,并且这个信息还会进行签名加密。

所谓的成本其实就是区块链系统中基于随机哈希算法的“工作量证明”,哈希算法所做的事情就是通过计算获得的信息,得到一长串随机数字和字母的字符串。而区块链系统计算的输入数据则是节点发送的当前时间点的整个总账。虽然当前计算机性能可以实现实时计算出单个哈希值,但是整个区块链系统只接受前13个字符是0的哈希值结果作为“工作量证明”。这样的哈希值是非常少见的,甚至需要整个网络花费10分钟的时间才可以寻找到一个。因此,在一个可以接受的哈希值被计算出来之前,网络中已经生产了无数个无效值,这就是降低信息传递速率并使得整个系统成功运行的“工作量证明”。

在拜占庭将军问题中,这个过程就像一位将军A(第一个发现有效哈希值的计算机)在向其他的将军(B、C、D…)发起一个进攻提议一样只要其他将军接收到并验证通过了这个有效哈希值和附着在上面的信息他们就只能使用新的信息更新他们的总账复制,然后重新计算哈希值。其他的将军在看到将军A签过名的进攻提议书,如果是没有背叛的将军就会立刻同意进攻提议,而不会发起自己新的进攻提议。下一个计算出有效哈希值的将军就可以将自己再次更新的信息附着在有效哈希值上广播给所有将军,从而实现分布式系统的一致性

工作量证明的加入相当于提高了背叛者发布虚假信息的成本,在工作量证明的条件下,只有第一个完成证明的节点才能广播区块,所以竞争难度非常大哈希算法对信息传递速率的限制加密工具确认使得区块链构成了一个无须信任的数据交互系统,从而使分布式协议上的参与者都可以达成一致使价值传递成为了可能。

扫描二维码关注我们:中企筑链
关 闭
申请成为合作伙伴