随着各互联网非互联网巨头,金融机构,政府部门等等各种力量的入局,加上大小媒体的不断鼓吹,区块链概念逐渐火爆起来。
同时伴随着比特币价格的暴涨暴跌,而支持着比特币系统稳定可靠的运行着的区块链也逐渐进入大众视野,各种大咖小咖也蜂拥而上研究起来。关于区块链的各种思想,知识,资讯等内容也顿时出现井喷趋势。
最早知道比特币,是14年左右,那会同事在讲自己如何挖矿的故事,其实也仅限于知道,或者说自己以为知道。并没有花费时间去深入研究它的运作原理。
一直到最近,圈子里的各路大咖都在不停推送各种关于区块链、比特币以及各种山寨币的资讯。(对于新事物,似乎都一贯的表现迟钝)才终于意识到这项技术或者说这个事物可能真的很有价值,应该花时间去深入研究一下。
在初次接触区块链资料的时候,因为先入为主的认为:不就是P2P技术跟加密技术的组合使用嘛!有什么难的?所以又这样搁置了几个月。
直到上个月制定了关于写作的双百计划后,出于找话题和素材的考虑。想起区块链这么热门,猜想应该还是有自己没研究明白的秘密,才开始一字一句的认真读论文,查资料,搜应用。
没认真研究之前,总觉得自己很了不起,这些技术自己都知道都懂,没什么大不了的。当终于花时间认真研究,深入理解相关概念和原理后,才后悔得想抽自己嘴巴子。
用这么长的篇幅来交代自己研究区块链的缘由,有点啰嗦,也算是做个记录,提醒自己往后避免再次重蹈覆辙吧。
下面转入今天文章的主题。
区块链是主要基于P2P技术的分布式账本,其中通过共识机制、工作量证明来实现不可篡改,不可伪造等能力。当然今天不打算讲区块链的实现原理,今天的主题主要谈谈高等数学中的极限思想在区块链中的应用。
选用一项技术之前有一个问题必须先搞明白:要解决的问题是什么?
区块链因为使用的是P2P技术实现的分布式方案,这就意味着一份数据有多份副本。那么就引出一个比较棘手问题:这么多份副本,哪一份才是正确的?这就涉及到共识问题。
举个例子:大家工作都参加过一些出现意见分歧的会议,这种情景下,大家对同一个问题有多个解决方案或者意见的时候,如何决定哪个是正确可取的呢?在公司里一般通过采用专家意见,领导拍板,投票决定等手段来达成一致共识。所有这些策略都是为了取得共识,以便采取一致行动。
如果没有一种公认的机制达成一致,就只有没完没了的争吵下去。
现实生活中,长期争吵不休的夫妇其实很多时候是因为夫妻双方没法就生活的基本问题达成共识造成。
中国历史上,也有不少因为没法在政权问题上达成共识而导致战争不断的时期。如战国时期的诸侯割据,三国时期的魏吴蜀三足鼎立对抗,唐朝末年的五代十国。
在区块链中,这么多节点都声称自己的提案是正确合法的,那如何决定采用哪一个提案呢?要想解决这个问题就需要确定出一个共识机制。
谈到共识问题,几乎没法避开拜占庭问题和中国将军问题。
拜占庭问题说的是古代的罗马帝国首都拜占庭因其幅员辽阔,需要多支军队分别驻守在地理位置相分隔的营地。将军之间只能通过信使来实现命令的传达,并且将军们需要达成一致意见才能对某只敌军发起攻击或者不发起攻击。由于军队中可能存在叛徒,会努力传达或者干扰一致的达成,甚至促成相反的一致意见。
拜占庭问题原是莱斯利·兰伯特提出的点对点通信的基本问题。而且他还给出了该问题的解决算法以及相关定理的证明。这个不是本文的重点,感兴趣的读者可以查阅相关资料了解。
在这里只提一点,在讨论拜占庭问题的时候,有个假设条件是不可以忽略的:通讯信道是可靠的,当通讯信道不可靠的时候,拜占庭问题是不可解的。
中国将军问题其实类似拜占庭问题,同样是在一个限定的条件下才能生效,不再赘述。
区块链是如何解决共识问题的?
答案是交给时间来解决。
简单说就是约定所有节点选定最长的链工作,随着时间推移,最初相差不大的两条链,稍长的链随着时间推移会拉大跟其他链条的差距最终成为事实上的共识,也就是通过将时间无限拉长,让最长的链条无限接近来达成最终的共识。
这个做法正是高等数学里的极限思想。比如,无穷小概念就是一个数无限接近 0 但不等于 0.
极限思想说的就是使用极限来解决问题的一种思想方法。极限思想起源于变量的研究,通过给定的值,然后使用极限的方法得到最终的结果。
而区块链的共识机制正是这样,任何一个新增的区块都不能认为是最终的共识,因为选定的任何一块位置的链长度都比最终共识的链长度短。也就是说最终共识就是链条的无限长,只有通过极限的方法才能得到最终的共识。
所以当前任何一条最长的链条都不能认为是最终共识,它们都是可以推翻的,因为最终共识的链条总是比当前的长。当出现比它长的链条的时候,它就不再是共识的链条了。
这也正是区块链设计的巧妙之处,搁置争议,共同开发,也许就是这么回事吧。
(未完待续)