理解比特币的正确姿势——拜占庭将军问题的解决方案
本篇文章给大家谈谈理解比特币的正确姿势——拜占庭将军问题的解决方案对应的信息,希望对各位有所帮助,不要忘了收藏本站喔。
接触区块链的朋友,多少都听过关于拜占庭将军的这个话题,并且经常在网络上看到,某某区块链项目使用什么技术解决了拜占庭将军问题,那么究竟什么是拜占庭将军问题呢,本文就从非专业的角度,来谈谈拜占庭将军问题。
问题起源为了更好的理解拜占庭将军问题,我们先来了解下这个问题的起源。
相传在中世纪,拜占庭帝国(如今的土耳其地区)势力强大,但是奈何幅员辽阔,每个城邦军队之间相聚太远了。
那时候还没有类似狼烟的信息传输工具,城邦军队之间只能靠人来传送信息。
这也造成了一个问题,如果敌人攻打某个城邦,所有将军必须意见达成一致后,才能决定是支援还是防守(万一是假消息贸然进攻,自己的城邦就没人防守了)。
但是,在城邦之间有可能存在叛徒或者敌军的间谍,会故意做出错误的判断来干扰大家的决定,导致结果并不是大多数人的真实意愿。
这个时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议。
这就是拜占庭问题。
基本概念通过这个故事,一个敏锐的计算机科学家莱斯利·兰伯特将其引申为一种点对点通信的问题。
比较专业的解释是这样的。
在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。
因此对一致性的研究一般假设信道是可靠的,或不存在本问题。
举例说明看完了基本概念不理解?没关系,为了将这个问题让非专业人士能看懂,我们举个例子。
狗熊非常强大,想要击败狗熊需要四只豺狼一起进攻才能获得胜利,它们任何一支单独进攻都毫无胜算。
除非有至少3支豺狼同时袭击才能击败狗熊,它们之间依靠通信乌鸦来协商进攻意向以及进攻时间。
但是困扰这些豺狼的问题是,它们不确定它们中是否存在间谍,间谍可能擅自变更进攻意愿和进攻时间。
这种情况下,豺狼如何通过远距离协商来让他们赢取战斗,就成了上面提到的拜占庭将军问题。
常规解决办法回想上面的实例,四只豺狼想要实现同时进攻或者同时撤退,必须达成共识。
针对这种情况,科学家们想出了两个解决方案。
第一个是口头协议。
在口头协议中需要注意以下三点是默认条件。
1.每个信息都能够被准确接收2.接收者知道是谁发送给他的3.谁没有发送消息大家都知道口头协议的算法原理比较简单,为方便大家理解,举个例子。
假如一共有10个节点,节点1对其他9个节点都发送了消息,然后节点2-10将消息进行转达,每个节点都是信息的发送者和转达者,这样一轮下来,每个节点手上都会有10条信息(包括自己手里的信息)。
接下来每个节点根据自己手中的信息,选择多数人的投票结果行动即可,这个时候即便有间谍,因为少数服从多数的原则,只要听大多数好节点的话就是正确的。
但是这种算法有着很大的缺陷,首先是计算工作量大,每一个节点都需要去和其他节点进行沟通,随着节点数量增加,工作量成几何增长。
再者就是无法查出哪个节点是坏节点,无法排除故障。
因为口头协议无法将历史消息进行记录,也就是我们常说的不可追溯,即便间谍发送不一致的消息,也无法追查到。
第二个就是书面协议。
这里同样隐含了一些条件。
节点可以进行签字,并且大家都能够识别出这个签字是否是本人,换种说法就是如果有人篡改签字大家可以知道。
这样就简单多了,就好比这10个节点是通过书信来联系的,假设节点1建议明天上午10点进攻。
同意节点1的就签个字,然后再给后面的,以此类推,直至所有人手里堆满了10封信,这个时候情况就与口头协议类似了。
书面协议相对比口头协议就是增加了一个认证机制,所有的消息都有记录。
一旦发现有人所给出的信息不一致,就是追查间谍。
但是书面协议也面临诸多问题,首先就是签名的不可伪造,真实情况复杂多变,连价值上亿的名画都可以伪造,区区一个签名不足以保证真实性。
再者,现实中需要协商的内容更加复杂,协商成本太大,想要大规模应用困难重重。
区块链给出新方案区块链技术的诞生,为拜占庭将军问题的解决提供了新的办法。
对于上面提到的签名伪造问题,区块链给出了解决办法。
中本聪利用公钥和私钥来解决签名伪造的问题。
另一方面,在网络中如果所有人都发送消息,显然势必会造成网络拥堵、节点处理变慢。
通过引入工作量证明机制,谁算出一道数学题后,谁才能对其他节点进行发言。
同时控制发言频率,每10分钟发言一次。
但是在没有好处的情况下,显然,大家都不会积极的去解题,做第一个发言的节点,因为第一个发言和最后一个发言并没有什么区别。
为了改变效率问题,巧妙的引入了奖励机制,谁先第一个发言就会有代币奖励。
理解比特币的正确姿势——拜占庭将军问题的解决方案就为大家介绍到这里了。如果你也感兴趣的话,不妨试试网站搜索,相信可能会有不一样的惊喜!