区块链的灵魂:共识机制(一)

在区块链系统中没有像银行一样的中心化机构,所以在进行传输信息、价值转移时,共识机制解决并保证每一笔交易在所有记帐节点上的一致性和正确性问题。区块链的这种新的共识机制使其在不依靠中心化组织的情况下,依然大规模高效协作完成运转。

区块链的灵魂:共识机制(一)

01、前言

想必大家都知道区块链拥有公开透明、不可篡改、去中心化等特性。

那么这些特性通过什么手段来实现的呢?这就是本系列文章要谈的话题——共识机制。

共识机制作为区块链节点就区块信息达成全网一致共识的机制,可以保证最新区块被准确添加到区块链、阶段存储的区块链信息中,并可以保证一致、不分叉,甚至可以抵御恶意攻击。

可以说是区块链中必不可缺少的核心环节之一,也是灵魂所在。

为了揭开“共识机制”的神秘面纱,相信不少关注区块链的朋友做了很多工作,包括笔者本人,最近这段时间也一直在研究这块的内容。但是,对于普通人来说,它们要么过于零散,要么太过于技术化不便于系统了解。

笔者想通过该系列文章,与大家一起全面、系统地来认识下共识机制。

02、什么是共识机制

什么是共识?共识这个词由来已久,从字面意思上来看,就是“共同的认识”。简而言之,就是一个群体的成员在某一方面的事情上达成一致意见,大家都能认可的一种结果。

就哪方面的一致意见呢?这里主要是指“规则”。

当然,在我们谈到共识的时候,还可以是价值观、道德、观点,等等方面的共识。

而共识机制,是在谈论区块链时总是绕不开的核心问题。那么,区块链中的共识机制又究竟是个什么?

共识机制是用于保证分布式系统一致性的机制,其中用户就什么是正确的达成一致。这里的一致性可以是交易顺序的一致性、账本一致性、节点状态的一致性等等。

百度百科上是这样定义的:

所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。

通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。

想要达成共识,首先需要有人提议,然后让其他人选择,直到共同达成某种形式的共识。就区块链的情况,我们需要有人提议区块,然后需要剩余节点接受区块。

举一个简单的栗子来理解下:某公司A、B、C、D四位PM同事准备安排相应的时间,来组织产品的脑暴会议。并分别把各自的忙碌时间和空闲时间列了出来,如下图:

区块链的灵魂:共识机制(一)

他们都提前约定了一个规则:每个人必须选择最早的共同空闲时间。然后,每个人提出其空闲的时间(空白格表示)。

通过上图可以看到,有两个共同空闲的时间段,上午10:00点和下午13:00点。他们如何达成共识?由于他们约定了特定的规则,这意味着他们必须遵循这种规则,所以,他们将会在上午10:00点而不是下午13:00点组织脑暴会议。由此,他们达成了共识。

根据以上的逻辑框架,我们扩展到比特币区块链上来看:

比特币区块链中,用户就什么达成共识?

用户就区块数据达成共识,区块中包含有效的比特币交易。在比特币区块链中,任何人都可以提议区块(也就是打包出块),只要他们通过计算率先解决一个数值(nonce),得以解决规定的 hash 问题。

如何达成共识?

用户同意接受最长链上的区块规则。

举个栗子,如果链A的区块高度为100,而链B的区块高度为200,如果你收到链A上的区块101和链B上的区块201,你必须接受区块201,在该区块201后添加新的区块。

有人在更短的链上添加区块,可能是因为他们没有意识到更长的链,但“最长链规则”确保一旦区块在整个网络中传播,每个人最终就相同的事情,也就是链B(最长的链)达成共识,而链A上的区块101及后面添加区块会舍弃掉。这就是比特币区块链中的最长链机制。

区块链,通俗地讲,就是一个去中心化的账本。只是这个账本与传统账本不同,不是由会计或少数几个人来记账,而是人人(需要竞争)都可以参与记账。

但是,记账总不能乱记吧?

所以,必须设计一套制度,来维护系统的运作顺序与公平性,统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者。

这样的制度,必须依赖某种方式来证明,是由谁取得了一个区块链的打包权(或称记账权),并且可以获取打包这一个区块的奖励。又或者是谁意图进行危害,就会获得一定的惩罚。

这就是一个大家都认可的规则,即“怎样记账才是有效”,而这个大家认可的规则就是区块链的共识机制。

03、共识机制的本质

人类社会发展进步需要协作,而共识是人类达成协作的前提。一个群体,如何进行分工,成果如何分配,奖惩如何进行,谁负责领导和实施奖惩等等。这一切都必须有一个所有成员都认可的规则,对这规则的一致认可,就是我们说的共识。

不同的成员在一起分工、合作,就形成了一个群体或组织。一个去中心化的群体采用的达成和维护共识的方式,就是共识机制。一个群体要完成协作,它需要在规则上达成共识,所以就要有一个形成共识的方式,按照正常的逻辑,我们会认为,组织选择了共识机制。

事实上,恰恰相反。不是组织选择了共识机制,而是共识机制决定了组织。

区块链的自信任,主要体现在分布于区块链中的用户无须信任交易的另一方,也无须信任一个中心化的机构或组织,只需要信任区块链协议下的软件系统(代码一般都会开源)即可实现交易。

这种自信任的前提是区块链的共识机制,即在一个互不信任的市场与环境中,要想使各节点达成一致的充分必要条件是每个节点出于对自身利益最大化的考虑,都会自发、诚实地遵守协议中预先设定的规则,判断每一笔记录的真实性,最终将判断为真的记录记入区块链之中。

那么,在区块链里有谁来记账?凭什么你对着天空大喊一声,别人就要帮你记账,别人的时间不要钱吗?别人的记账的小本子不要钱吗?

于是,为了让大家都帮我记账,我增加了一条新的规则,我决定给帮我进行记账的人奖励(以比特币为例,区块链会给记账的人奖励一定量的BTC,就是俗称的“挖矿”)。毕竟,重赏之下,必有勇夫。

那如何确定谁来记账呢?谁来获得奖励呢?就必须有一个规则即共识机制。

上文提到,虽然区块链中人人都可以参与记账,但是如果每个人都记账的话,奖励分配给谁呢?总不能平均分配吧?所以,这个时候需要共识机制出马了。

在去中心化的系统里,每个记账节点都会维护一个账本,记账并检验其他节点的历史记录,一旦自己记得账被别人认可,就能得到系统的奖励。因此,所有的节点都在争夺记账权,对于节点本身来讲,是好事。但是,对于系统来讲,一旦方法有误,必然存在安全隐患。

所以,这个机制必须是随机的,分散的,否则如果记账权集中在某部分人手中,岂不是有作恶风险?

共识机制就是为解决问题而来。

04、共识机制的认知“误区”

我们经常说到的“共识机制”,多数情况下同时包含了共识算法和共识规则,少数情况下单指其中一方,这也是大家经常在认识上可能会存在的“误区”。

区块链的灵魂:共识机制(一)

由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此在区块链系统中,需要设计一种机制,对在差不多时间内发生的事务的先后顺序进行共识。

这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。这里解释的其实只是共识算法,也就是节点依照共识规则达成共识的计算机算法。

而共识规则是指每个区块链里面都有自己精心设计好的规则性协议,这些协议通过共识算法来保证共识规则得以可靠地执行。

譬如我们通常所说的比特币的挖矿,就是比特币记账的共识规则,其专业术语为PoW(Proof of Work,后续系列文章会详谈),即工作量证明。

比特币的工作量证明共识规则是通过SHA(Secure Hash Algorithm)系列安全散列算法之一的SHA256 来得以可靠地执行的。

好了,今天就先到这,下篇文章见。

业界动态

六项精进——如何看待“内外内衣”邀请王菲代言

2020-9-8 13:12:09

业界动态

西瓜视频APP产品分析报告

2020-9-8 13:25:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索