分布式结构的难题
比特币在被发明的时候,目的是为了做一个分布式去中心化的货币,不会被某个国家或者中心所控制。
可是如果采用分布式结构,在互联网时期就有一个难题,并且这个难题困扰了研究人员很多年。
这个难题叫“拜占庭难题”,讲的是当分布式结构里面存在恶意节点时会产生的一系列后果。
当然Leslie Lamport把它用一个故事表达出来了。
故事简单说来是这样的:
中世纪的土耳其就是拜占庭帝国,富有而强大,但是一旦强大起来则会穷兵黩武,但是拜占庭帝国国土面积很大,军队都是各自镇守一方,如果要进攻,只能靠传令兵来传令(本问题不考虑传令兵被俘虏等情况)。
虽然拜占庭帝国很强大,敌人也不弱,单一的军队是无法打败敌人的,必须要几位将军领兵一起发动攻击。
那就会存在一个问题,并不是每一个将军都是忠于国家的,里面一定会有叛徒和内奸,并且所有将军都知道他们中间存在叛徒,叛徒可能会影响将军们的决策。
举个栗子
敌国派三个将军A、B、C出兵它国,如果B将军偷偷和敌国联合的话。
那么叛徒可能造成哪些负面效果?
·叛徒可能会故意怂恿其他将军行动。
·叛徒可能迷惑其他的将军,让他们接收到不一样的信息。
假如A将军发布了进攻的命令,而B却告诉C将军,A让我们按兵不动,那么C就会收到进攻和不动两个命令。
到底听哪个命令呢?这样就无法达成一个共识了。
还不懂?再举个栗子
三个小姐姐A,B,C玩的很好。
可是小姐姐B却很虚伪,有次小姐姐A对B和C说,明天周末一起出去玩。
可是B却偷偷对C说,刚A和我打电话,明天活动取消,并且她根本不想和你一起玩,带着你玩纯粹是没办法吧啦吧啦……
那这样就会产生两种结果。
·C到底要不要出去玩?因为A说出去玩,B说A并不想和C出去玩。
·C会对A的友情产生怀疑,A是否是一个虚伪的人?但是又碍于面子不好打电话给A求证,最后塑料姐妹不欢而散。
在拜占庭难题中,只要恶意节点达到1/3,则问题无解。
这个问题是Lamport在1982年在斯坦福帮助NASA完成项目时提出的,提出这个问题也并不是考虑到互联网和比特币的应用场景,当时仅仅是为了解决航天飞机的安全控制系统。
这个问题一直有很大的争议,因为一直都没有一个很好的办法来解决,有的相对解决办法,如口头协议,书面协议,我们就不在这里赘述了。
就算进入互联网时代,也没有一个非常完整的方法来有效的解决这个问题。
直到……
中本聪
比特币创始人
我有很多比特币,来抓我,你来抓我,如果你能抓到我,我就跟你嘿嘿嘿……
中本聪发明的比特币问世,他可以说是简化了这个问题,在每个将军都是同等地位,不存在从属关系的情况下。他用了两个手段,一个是叫工作量证明(POW),一个是奖励机制。
这个工作量证明就是解决了各个将军之间可以随便发信息的问题,比如3个将军,都同时给对方发自己的军令,那就是同时发9条军令。而且现实情况不是复杂的多吗??如果都同时发消息,那早都混乱不堪了。
那中本聪就给大家定了个规矩,按顺序来发令,那几个将军谁也不服谁。怎么办?大家先去做算术题吧,这就是所谓的哈希运算,谁先算出题来,谁就有资格发令,这总公平吧。假如A将军先做出算术题,那么A先发。
那A先做完了数学题,其他将军就停止做算数,然后都在自己这里记录下来,并确认A确实是最先做出算术题的,那就A将军获得发出广播的资格。并且大家重头开始做算术题,还是谁做的快谁先发令,如此往复。
假如叛徒B也解出来了题目,B说是我先解出来的,怎么办呢?没关系,聪哥说了,咱们按解答的先后顺序,给第一个解答出来的盖个章,这个印章上有顺序和时间,这也就是时间戳。
那还有了,假如十多个将军,某个将军最先做出算术题,其他将军凭啥帮你确认和记录时间呢?那这就有一个奖励机制了。
参与做题并且记录这个事情的人,都会给一点奖励,这也就是比特币,按照现在的奖励是每挖出一个区块(做一次计算题),其他参与并同意这个事情的人可以分得25个比特币。
但是比特币考虑的环境里,是有两个限制的。
第一:所有节点必须是分布式,去中心化的,也就是说每个将军必须都是平等的,没有一个中心对他们直接下达指令。
第二:必须采用非对称加密的手段,这样每个将军发出的指令和签名不能被篡改。(因为内容比较多并且涉及到拜占庭问题和两军问题的差异,这里就不再赘述,将开新文详细说明)。
拜占庭问题是为了解决由谁来发起信息,并且怎么保证信息的同步和一致性。
而比特币的区块链技术则是解决了由谁来挖出区块,并且让整个链上的所有区块统一的问题。
两者的问题在某些意义上可谓是一样的,虽然在现实环境中有所不同,可是区块链技术却为解决拜占庭难题提供了现行的最合理的方法,也为后继者打开了心的思路。
所以比特币并不只是一串数字,背后所用到的技术和原理解决了相当多的问题,无可否认它是伟大的。
区块链蓝海——蓝海学院
文案|小李子
了解区块链最新资讯,技术干货
区块链课程即将上线
领取专属 10元无门槛券
私享最新 技术干货