区块链里的共识机制是什么?

抹链科技 view 30 2020-7-29 19:50
share to
Scan QR code with WeChat

我们在进入区块链行业或者是接触区块链时,都会听到一个词,叫共识机制。很多人说共识机制是区块链中的灵魂。首先,提到共识机制,我们要先了解它的定义。即共识机制是什么?在讲共识机制之前,我们先来讲讲什么是共识。共识就是一群人对某一件事情达成一致的看法。其实我们生活中很多事情都涉及到共识,比如在学校的时候,我们都会选举班委,选举班委这件事就是达成共识,选出了唯一的班长、副班长等等班委。那么共识机制是什么意思呢?共识机制就是达成共识所用的方法。比如选举班委的时候是采用的投票这个方式,那么投票的过程和方法就是一种共识机制。

共识机制的起源

刚刚这么解释,大家就很容易理解了,但是大家也会有疑问,这不是很简单吗,达成共识用投票这么简单的方式就可以解决,那么为什么共识机制还是区块链的灵魂呢?大家这么想的话,就把这个问题想的太简单了。刚刚举的例子,是有一个前提的,就是大家都是同一时间在同一地点,投票的过程不需要传递信息。但是在区块链网络中,节点或者说计算机都是分布在不同的地方的,比如我们都知道比特币的挖矿,那么多矿机都分布在不同的地方,那么若要对某一个事件达成共识,那么就要进行信息通讯,那么或多或少就会发生信息发送错误的事情。

我们举个例子,选秀节目的投票,在传统的运作模式下,是由电视台或是节目组会收集所有的投票记录,然后告诉大家每个选手是多少票,但是在区块链网络中,是完全不同的,因为在区块链网络中,没有指定一个人负责收集所有人的投票反馈,那么在这样的情况下,我要告诉大家我投票给了谁,大家也要告诉我大家投票给了谁,这样我才能确定谁拥有最多的票。那么大家发出的信息,是传递信息的通道出问题,或者收到了恶意的信息。那么在这样的情况下,如何去达成共识,就非常困难了。

这个问题在1982年的时候就由莱斯利·兰波特在他的论文《拜占庭将军问题》中提出了。论文中是这样描述的:一组拜占庭将军分别各率领一支军队共同围困一座城市。各支军队的选择只有进攻或撤离两种。这个城池很坚固,必须要所有将军共同进攻才可以取得胜利,那么各位将军必须通过投票来达成一致策略才能保证胜利,比如全部军队进攻,或者全部军队撤离,否则如果部分军队进攻,部分军队撤离就会失败。

因为各位将军分处城市不同方向,他们只能通过信使互相联系。在投票过程中每位将军都将自己投票给进攻/撤退的信息通过信使分别通知其他所有将军。这样,每位将军根据自己的投票和其他所有将军送来的信息就可以知道共同的投票结果而决定行动策略。

区块链里的共识机制是什么?

图1 拜占庭将军问题

但问题在于,将军中可能存在叛徒,他们不仅可能向较为糟糕的策略投票,还可能选择性地发送投票信息。假设有9位将军投票,其中有1名叛徒。若此时,8名忠诚的将军中出现了4人投进攻,4人投撤离的情况,那么这时候叛徒可以故意给4名投进攻的将领送信表示投票进攻,而给4名投撤离的将领送信表示投票撤离。这样一来就会发生一种情况,在4名投进攻的将领看来,投票结果是5人投进攻,从而发起进攻;而在4名投撤离的将军看来则是5人投撤离。这样各支军队的一致协同就遭到了破坏,四支军队最终进攻,行动失败,四支军队全军覆没。

这些例子其实就是想让大家知道,共识机制没有大家想象的那么简单,是个非常技术性的问题。所以现在行业也有在针对共识算法做一些改进和尝试。

共识机制的作用

我们刚刚说到,共识算法是个区块链中的一个技术性难题,那么共识机制到底有什么作用呢?共识机制真的在区块链中非常重要吗?答案是肯定的。我们先来看看共识在我们生活中发挥的是怎样的巨大作用。

大家都知道圣诞节,圣诞节本是西方的传统节日,起源是用来纪念耶稣的诞生,在这一天,全中国大部分的地方,实体商场、线上购物网站,都参与进来,打折促销或者其他形式,街上的年轻人也会头戴圣诞帽这样的装饰。原本圣诞节是西方的节日,为什么在我国也这么火热呢,因为大家对圣诞节达成了共识,也都认为这是一个节日,也要像传统节日一样过过节,吃吃饭。

另外一个例子是光棍节。光棍节本来起源于校园的趣味文化,慢慢的被一些人群接受,本来大家对光棍节这个节日的共识的达成是很慢的,直到2009年的光棍节,这年淘宝和天猫将光棍节宣传为“双十一狂欢购物节”,并联合各大商家举办促销活动,这个举动让光棍节在群众中迅速传播,群众对光棍节达成了共识,最终变成了如今的“双十一”。去年双十一的销售额为2684亿,也一定程度上推动阿里和支付宝走向现在的地位,如今阿里的市值在港股超过5万亿港元。共识在我们整个社会生活当中发挥了巨大的作用。同样在区块链当中也发挥巨大的作用。

共识机制在区块链中的用武之地主要有两个,简单来说,一是共识机制需要对区块链上发生的事件或交易的有效性达成共识。比如小明向小红发送了一个比特币,又立即把这个比特币发给了小花,那么到底是发给小红的那笔交易是有效的,还是发给小花的那笔是有效的,那么就需要对交易达成共识;二是区块链共识的具体内容还有一个重要的是所有参与者需要对最新的高度区块达成共识,比如有两个矿工同时挖出一个区块,那谁的是有效的,谁的算是孤立块,就也需要某种机制让大家都接受同一个答案,不允许出现分歧。

硬分叉与软分叉

那么如果不是所有人都能达成共识呢?这样网络就会面临分叉这个问题。大家应该也有听过,分叉分为硬分叉和软分叉两种。硬分叉和软分叉就类似于是软件升级,软分叉是指在区块链或去中心化网络中向前兼容的分叉,新的共识规则发布后,节点不一定都需要更新到最新版本的共识规则,因为新的共识规则也满足旧的共识规则。

比如旧的规则是,找到一个数小于10,新的规则是找到一个数小于5,那么新的规则也是满足旧的规则的。但是呢,旧的规则中不完全满足新的规则,就比如找到了一个数字8,小于10,但是又大于5,这就不被新规则的节点所接受,就会产生软分叉。

硬分叉就是指在区块链或去中心化网络中不向前兼容的分叉,硬分叉对区块格式或交易格式,也就是共识规则进行永久更改,这种变化使得所有的新数据块与原来的块不同,旧版本不会接受新版本创建的区块,从而造成未升级的节点和升级的节点分别在两条链上挖矿,形成两条互不认可的链,造成硬分叉。

总的来说,共识机制并不像我们想象的那么简单,是个技术性难题。在整个区块链网络当中具有举足轻重的地位。从最初到如今,已经发展出非常多种的共识机制,这些共识机制都非常的有趣,我们将在往后的文章中为大家介绍。

btcfans公众号

Scan QR code with WeChat

Link
Disclaimer:

Previous: DC/EP vs Libra,全球数字货币竞争正式拉开序幕 Next: 一次不同寻常的 IPO:美国网红券商 Robinhood 上市定价遇冷 ?

Related