小行微信:253251304
发布时间:2018年8月21日
微信公众号:小行执笔走天涯
一花一世界,一叶一菩提;
一人一追寻,一笔一天涯。
天涯之大,大外有大,
只字片语间,一切了然……
每一次经历,都是一种收获;
每一步旅程,都会看到不一样的风景;
既然迈开了步子,就不要停下来。
我是小行,欢迎关注“小行执笔走天涯”,让我带你在文字间浪迹不一样的天涯。
导语:
众所周知,区块链之所以能解决信任和安全问题,主要是它的四个技术创新:
1、分布式账本
2、非对称加密算法
3、智能合约
4、共识机制
其实这四种技术谈不上真正的技术创新,已经现世好多年,区块链将这四种技术融为一体、相互辅助关联,吸取四种技术的精华为己所用。区块链技术的伟大之处,就在于它的共识机制在去中心化思想上解决了节点之间的相互信任问题,并保证整个区块链网络系统和谐平衡的运行下去。要深入了解共识机制,就无可避免的要先聊聊拜占庭将军问题。
正文:
拜占庭将军问题(Byzantine failures),是容错计算中的一个老问题,由莱斯利.兰伯特(Leslie Lamport)等人在1982年首次提出:
拜占庭帝国是公元5世纪到15世纪的东罗马帝国,即现在的土耳其,由于当时拜占庭帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军们,至少有一半以上的将军们必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。问题是这些将军在地理上是分隔开来的,并且将军中可能存在叛徒和间谍。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
由此可见这就是一个由多个互相不完全信任的将军们组成的分布式网络,每个将军都要小心认真的做出判断和决定,因为稍有不慎,就有可能导致整体攻击行动的失败,给国家带来灾难。
这就是拜占庭将军问题。
由于将军们之间都是依靠士兵传递消息来协商确切的进攻目的和进攻时间,所以每个将军都面临着一个问题:其他将军会不会有叛徒,叛徒是否会擅自更改进攻目的和进攻时间等。而且抛出叛徒因素,如果所有将军们同时让传信兵传递各自的信息,那么每个将军都会收到大量的消息,非常的混乱无序。在这种状态下,将军们如何能找到一种分布式协议通过远程协商达成他们的共识,以保证即使将军中有叛徒,忠诚的将军们依然能通过多数决来做出决定,也就是拜占庭容错,容错率越大,达成的共识可信度就更高。
从1982年莱斯利.兰伯特首次提出拜占庭将军问题之后,无数科学家对该问题进行不懈的研究,但一直没有一种实用性的拜占庭容错算法,直到1999年,Miguel Castro和BarbaraLiskov提出了实用拜占庭容错算法(PBFT),能够实现只要叛徒将军不超过将军总数的三分之一,拜占庭将军问题即可解,忠诚的将军们就一定能达成一致的共识。
即:假设将军总数为m,叛徒数量为n,当m≥3n+1的时候,问题可解,忠诚将军们的共识即可达成。亦即当叛徒人数大于或等于将军总人数的三分之一,拜占庭问题是仍然不能解决的,这个时候共识和信任也仍然没有达成。
实际上,依据此方案,所有忠诚的将军永远不知道会有多少叛徒,即使实际上没有叛徒他们也不敢冒险去相信别的将军,因为忠诚的将军绝不会把帝国的命运赌在那三分之一上!
直到2009年中本聪设计的比特币问世,拜占庭将军问题终于被完美解决。比特币作为区块链技术领域的杀手级应用,采用的是POW(工作量证明)共识机制。
假如每个将军都有一台计算机,该区块链网络系统在一段时间内只允许一个将军发出信息,这在某种程度上防止了各个将军各说各的进攻方案造成混乱无序,但由谁来第一个发出又由谁最后一个发出呢?
POW(工作量证明)需要在发消息前,首先需要用计算机计算出一套复杂的函数来竞争发消息的权利,谁先算出来谁就获得发消息的权利,然后第一个发消息的将军签名并加盖时间戳,发出统一进攻的消息,并用非对称加密算法加密,各个节点收到消息之后必须同样进行签名是否同意并加盖时间戳,确认各自的身份,然后其余将军们再次竞争发消息的权利,以此类推,直至所有将军收到消息并签名确认加盖时间戳。
整个过程的每一次发消息,都会在所有将军的计算机上同步更新,如果有叛徒尝试更改进攻信息来误导其他将军,那么其他将军的计算机会自动识别到异常信息,同步的虚假信息将不被认可,计算机将同步其他大部分共同的信息,并继续重新竞争发消息的权利,直至所有将军收到信息,叛徒毫无机会,除非他破坏或者掌控了一半以上的计算机。(即将军们有一半是叛徒,哈哈,如果真的是这样,仗不用打了,这一半将军直接可以造反,杀回国都自立为王了,完全没必要去做叛徒传什么假消息。就像掌控比特币一半以上算力的人根本不会去作恶,因为一半算力的收益远高于作恶所得收益。)
如此这般,一个不可信的分布式网络变成了一个可信分布式的网络,所有的将军可以在进攻或撤退上达成一致共识,完美解决了拜占庭问题。
结语:
其实,小行这这篇拜占庭将军问题的文章,越写有点越糊涂了,相信你看到这里也会有疑问,将军第一个发消息和最后一个发没什么区别,为什么要第一个发的需要去计算一个复杂的函数呢?
中本聪在比特币网络世界里勇比特币来奖励完成计算的并打包区块记录的矿工,以此来激励矿工们不断的打包区块。同样在拜占庭将军问题上,通过竞争发消息的权利,首先保证将军们的消息有秩序发出,而不会混乱;其次小行脑洞一下,对将军来说,第一个发消息的人战争胜利后说不定可以获得更多的战利品或者美女、金银财宝之类的,哈哈。
以上内容仅代表小行个人理解和认知,欢迎指正评论,谢谢。
文末寄语:愿每一个爱写作的人,心中有杆良心称,手中执笔有公正。愿您的文笔水平更上一层楼,在文字世界里收获更多物质和精神上的收益,愿每一个爱写作的伙伴在每一次合上笔盖或者敲击键盘entet键的一刹那,都有着侠客收剑入鞘的潇洒、骄傲和满满的成就感!
——2018年8月21日Mr小行作于广州