拜占庭将军的烦恼

拜占庭是东罗马帝国的首都(现在位于土耳其的伊斯坦布尔),拜占庭地盘很大,所以有多支军队分散在各地驻防。

每当拜占庭攻打另外一个城市的时候,由于敌军也很强大,拜占庭各个军队分散距离太远,就需要多支军队分开包围同时攻击。如果没有足够多的军队同时前往攻打,大概率进攻就会失败。

这些军队是通过通信兵或信使来协商传递进攻的。但各个军队占山为王,有些被敌军收买,佯装攻击。这样的交战情形在电影《指环王》剧情中也经常有类似体现。

拜占庭要找到一种方法来解决让各个军队达成进攻共识、防止出现欺诈的问题。这就是莱斯利-兰伯特提出的拜占庭将军问题。

那怎么解决拜占庭将军问题呢?

拜占庭各支军队之间通过信使建立通信。

其中第一个将军决定攻打时,他写一封信并盖章。信使会将这封信快速传递到其他将军的手中,由于每个将军的印章是唯一的,所以其他将军可以识别,这就相当于立下了军令状。

拿到信的第二个将军如果同意攻打,那么他就在信的最后面加盖自己唯一的印章。同样拿到信的第三个将军也同意攻打,那么他也在信的最后面加盖自己唯一的印章......

那么当这封信有足够多的将军盖章,也即积累到了足够多支军队攻打的确认函,那就可以进攻,这样就可以确保攻破敌军城池。

比特币是一个基于区块链技术的分布式超级大账本(没有删除命令的数据库)。记录着每一笔比特币的交易转账记录,由很多矿工节点共同维护这个大账本。

比如我给你转了1个比特币,然后我把我给你转1个比特币这件事情通过网络向所有维护这个大账本数据库的人广播。

你收到这个比特币之后,你也把我给你转了1个比特币这件事情向所有维护大账本数据库的人广播一下。

接下来第一个听到我们两个广播的维护者立刻把这笔转账记录下来(我减去1个BTC,你增加1个BTC)。

然后这个维护者再向其他所有维护者广播说:我已经完成一笔记账了,大家可以根据我记的账把数据补全。

维护者除了记账之外,还需要按照一定的规则争夺数据打包权,胜者会把这段时间的交易数据都打包到一个数据块,也就一个Block中。

接下来给数据块编上序号,好让所有维护者保证自己的数据和这个数据区块的数据一致,这个胜者将会获得系统自动发送的BTC奖励(据说现在奖励额度越来越少了,不够交电费了)。

最后这个超级大账本数据库中就有了统一的一笔数据:我少了一个BTC,你多了一个BTC。

另外对于我给你转账1个BTC这笔在BTC大账本中已经记录好的数据,如果要修改,就必须要51%的维护者举手表决同意。但是在比特币网络中维护者多如牛毛,需要的算力资源消耗巨大,有可能需要几十万个BTC的矿工费用的巨额支出,所以在BTC账本中篡改交易数据是不现实的。

综上所述,其实比特币的底层技术的工作原理,和解决拜占庭将军问题一样,都需要达成共识机制。可以理解矿工就是拜占庭将军,比特币就是解决矿工们的共识问题。

你可能感兴趣的:(拜占庭将军的烦恼)