首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链的本质——共识机制究竟是什么?

大家好,我是真小白。

大多数人都知道比特币,但是并不知道为何它不需要银行等中心机构来进行清算和资产转移。所以这也不难理解为什么很多人对比特币持相反的态度。

那么它究竟是靠什么得以运行这么久呢?这就不得不提到「共识机制」了。

也许你经常听到「共识机制」这个单词,因为它是区块链的核心机制之一,也是去中心化的基础。

那么究竟什么是共识机制呢?

用专业的话来说,共识机制主要用来解决谁来构造区块,以及如何维护全网数据一致性的问题。

当然,共识机制也分很多种,包括pos算法、pow算法、dpos共识算法、投注共识等。

其实简单而言,共识机制可以理解为:

学校老师制定的学习方法和考试规则、狼人杀的游戏规则、黑社会的潜规则等等。

当然,仅仅这样形容是不足以完全解释清楚什么是「共识机制」的。

但是,一旦说到细节,可能大多数人就不太理解了。

区块链的底层由四部分构成:

1、分布式的数据库:用来存储以往和将来的交易数据

2、密码学的公私密钥体系:用来确认交易双方的身份

3、P2P网络:用来广播和蔓延各类消息(如节点加入消息,节点失效消息,得到挖矿数据的消息)

4、共识机制:决定节点记账权利,以及记账权利的选择过程和理由。

在区块链里,每个区块就是一些数据,对于比特币来说就是一些交易记录,然后有一个机制把这些 block 连成一个列表。普遍采用的办法是用一个哈希函数 H,把每个 block Bi的哈希值 H(B[i]) 包含在下一个 block B[i+1] 里。H 具有单向性,也就是知道 B 就很容易算出 H(B),但是反过来如果只知道 H(B) 的值很难构造出一个满足条件的 B。

不过不要紧,我们再来一个例子:

上面两张图是斯洛伐克一位叫Evelyn Bencicova的姑娘拍的模特。

自唐朝以来,国民大多以“瘦”为共识,“胖子没有未来”“一胖毁所有”等观念一度成为我们的共识、

不过,看到上面的姑娘们,你会发现蝴蝶袖、水桶腰、大肚腩、大象腿,都被干脆地直接暴露出来,但这些依然不影响她们原本的美。

如果说“美”是我们人为创造的共识,那么比特币的共识就是机器创造的。

正如男性对美女的共识,基于算法和技术的共识,比特币同样可以成为不需要中心化机构来制定的规则。

那么区块链比较常见的「共识机制」又分哪几种呢?

1

POW(工作量证明机制)

工作量证明机制(POW)是我们最熟知的一种共识机制。就如字面的解释,pow就是工作越多,收益越大。这里的收益指的是记账收益,工作可以称为猜数字,谁能最快的猜出这个唯一的数字,谁就能做信息公示人。

猜数字需要强大的电脑算力和电量,所以这个过程也被成为挖矿

2

POS(权益证明机制)

它类似股权凭证和投票系统,因此也叫股权证明算法。由持有最多token的人来公示最终信息。

它的好处是不会像pow那么费电,但缺点也很明显:

1)没有专业化,拥有权益的参与者未必希望参与记账;

2)容易产生分叉,需要等待多个确认;

3)永远没有最终性,需要检查点机制来弥补最终性;

3

PBFT(拜占庭共识算法)

拜占庭共识算法(Practical Byzantine Fault Tolerance- PBFT)也是一种常见的共识证明。

小蚁(neo)采用的就是以上算法,它与之前两种都不相同,PBFT以计算为基础,也没有代币奖励。由链上所有人参与投票,少于(N-1)/3个节点反对时就获得公示信息的权利。

dBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。

它的优点在于:

1)专业化的记账人;

2)可以容忍任何类型的错误;

3)记账由多人协同完成,每一个区块都有最终性,不会分叉;

4)算法的可靠性有严格的数学证明;

4

DPos(股份授权证明机制)

DPoS是在PoS的基础上,将记账人的角色专业化,先通过权益来选出记账人,然后记账人之间再轮流记账的方式。

但这种方式依然没有解决最终性问题。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。

它的优点在于大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180314G0RSLM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券