请选择 进入手机版 | 继续访问电脑版

拜占庭将军问题是什么?比特币如何解决之?

[复制链接]
发表于 2018-5-18 19:20:17 | 显示全部楼层 |阅读模式
拜占庭将军问题是1982年提出的,它描述了在分布式网络中,当明知部分节点存在传输错误信息时,如何能够保证多方节点对某一信息达成一致的问题。为了将问题易于理解,这个问题被抽象出一个形象的例子:

拜占庭是一个富有的国家,国力强盛,周围的小国家将其包围,欲攻之。拜占庭可以抵抗5支以内的军队,6支以上的军队同时进攻,则联军胜利,否则拜占庭会将其逐一攻克。
由于地形限制,这10支军队只能分散部署,且没有中心的领导,由于技术限制,他们之间只能通过信使来传达消息。
以上是基本背景信息,总结如下:
拜占庭问题特点.png

那么, 在这样的背景下,很容易出现行动不一致的问题:例如,
1. 同一时间,所有人都发起攻击的提议,每个人都同时接收到不同将军发来的信,以谁的为准, 混乱不堪?

2. 如果有某个将军被收买了,变成了叛徒,那么他同时向不同的将军发出了不同内容的信, 那么别人怎么能知道他是叛徒?
   叛徒发送前后不一致的进攻提议,被称为“拜占庭错误”,而能够处理拜占庭错误的这种容错性称为「Byzantine fault tolerance」, 简称为BFT
拜占庭将军问题.png

这个问题一直没能得到完美的解决,直到比特币系统和空出世。
比特币通过下面三个技术,解决了拜占庭将军问题

解决办法

解决办法


1. 数字签名:每一个将军再发起攻击提议时,都同时附上自己的签名,盖上帅印,这可以保证数据来源,让其他人相信。
2. 最长链机制:每一个将军在收到一个提议后,立即在上面附上自己签名,同时向外传递该提议,所有人都以最长的为最可信的。
3. POW机制:增加了将军签名的成本,而不是随意乱签名,这使得每个将军都能表达自己真实的意愿(否则就是不会参与签名),POW同时能保证同一时间只有一个将军签名。

当这个名单累积到6个签名的时候,诸位将军便可以对进攻的意图达成共识,并会按照约定计划出兵,从而取得胜利。

这个问题对照到比特币系统中后,可以描述为:全世界的众多比特币节点如何对交易账本达成共识,如何能够认为这个账本里面记录的信息就是最靠谱的交易。
上面描述的三点:非对称加密的数字签名、最长链机制、pow挖矿便是这个账本的守护神!


今天分享至此,欢迎留言讨论!




锁定目标,风雨兼程!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表