币圈子-打造专业区块链媒体平台

共识机制算法有哪些?

2021-04-20 16:36:45 | 来源:互联网 | 12568人阅读 | 作者:币圈子
全文导读
共识机制算法有哪些?在回答这个问题之前,币圈子小编认为投资者需要先了解什么是共识机制算法?共识机制算法,也可以说是共识机制,其实就是以去中心化的方式就网络的状态达成统一协议的过程,共识机制算法有助于验证和验证信息被添加到分类账簿

在回答这个问题之前,币圈子小编认为投资者需要先了解什么是共识机制算法?共识机制算法,也可以说是共识机制,其实就是以去中心化的方式就网络的状态达成统一协议的过程,共识机制算法有助于验证和验证信息被添加到分类账簿,确保只有真实的事务记录在区块链上,那么,共识机制算法有哪些呢?下面币圈子小编就给大家详细说说共识机制算法有哪些?

共识机制算法有哪些?

1.POW:Proof of Work,工作量证明

比特币系统设计了以每个节点的计算能力,即“算力”来竞争记账权的机制。简单说,POW就是一份确定工作端做过一定量工作的证明。举个例子来说,就是我去面试的时候,招聘网站上写的该岗位需要本科以上学历。那我怎么证明我是本科毕业生呢?把本科毕业证show给面试官看就可以了,就是这么简单。但是我要怎么得到这个毕业证呢?需要上4年的大学,在此之前还要上高中,初中,小学,上大学时还不能天天玩乐,还要上课,考试,考试还不能挂科,这是一个艰辛的过程。对面试官而言,一张毕业证就足以证明我上过大学,而且还不笨。

所以,POW方式的主要特点就是计算的不对称性。工作端需要做一定难度的工作才能得到一个结果,但验证方却很容易通过结果来检查工作端是不是做了相应的工作。具体做法是通过对一个区块链头部中的父区块哈希,Merkle树根和nonce值三个字段进行哈希运算,如果结果小于目标值,则计算成功,如果大于目标值,则改变nonce值,重复运算,直到结果小于目标值为止。

怎么理解pow的工作方和验证方呢?再举个栗子。

工作方:假设输入值是 blockchain1,对它进行哈希运算,寻找结果前3位为0的哈希值,那么计算过程是:

blockchain1 -> ef7797e13d3a75526946a3bcf00daec9fc9c9c4d51ddc7cc5df888f74dd434d1

blockchain2 -> db0b9c1cb5e9c680dfff7482f1a8efad0e786f41b6b89a758fb26d9e223e0a10

......

blockchain515 -> 0063e58fb6e3789fcb5eb64d05d7a9b909c5e9e1b60b18cb566a3326c1fd54c

......

blockchain2688 -> 0005f2ee930eafef21d06545c0058ddfcf2ac9dfa542b745021f51ceb9e9f43c

可以看出,经过2688次运算才能找到前三位为0的哈希值。随着0个数的增加,那么计算难度是成指数级增加的。

验证方:验证方拿到工作方得到数值blockchain2688,只需要一次计算就可以知道工作方的工作有没有做出来。

对于pow,如果要寻找特定字符串后面的随机nonce,满足前n位均为0的SHA256值,需要进行多次哈希值的运算。一般来说,由于哈希值的伪随机性,要寻找3个前导0的哈希值,预期大概要进行2的12次方次尝试,这个数学期望的计算次数,就是所谓的“工作量”。整个工作量证明活动,就是我们常说的“挖矿”所做的工作。

在上面的例子中,实际的比特币系统中有几个比较关键的地方,比如nonce值是怎么改变的,目标值的0的个数是怎么确定的等,可以参考比特币挖矿一文。

比特币网络中的任何一个节点,如果想生成一个新的区块并写入区块链,必须解出比特币网络出的POW问题。这道题有三个关键要素:工作量证明函数,区块,难度值/目标值

比特币系统中使用的工作量证明函数是SHA256,SHA是安全哈希算法(Secure Hash Algorithm)的缩写,是一种密码哈希函数家族,SHA256是其中的一种,输出256位的哈希算法。比特币的区块是由区块头和该区块所包含的交易列表组成,区块中包含了一个指向前一区块的哈希指针,使得记录了不同交易的单个区块被关联起来,形成区块链。难度值是比特币系统中的节点在生成区块时的重要参考指标,它决定了节点大概需要多少次哈希运算才能产生一个哈法的区块,难度值会随着全网算力的变化进行调整,将产生区块的速率保持在10分钟一个。

因此,POW成功的决定因素就是算力大小,如果你的算力是n,全网算力是m,那么你在一次工作量证明,也就是一次挖矿活动中能够成功的概率是n/m ,经过 m/n 次挖矿中可以成功一次。比如我的笔记本算法大概是1GH/s,现在全网算力是21EH/s,那么我大概需要进行200亿次工作量证明,每次大概10分钟,有生之年肯定是挖不出来一个的。

2.POS:Proof of Stake,权益证明

现在我们知道如何对比特币进行挖矿了,那就是需要购买挖矿设备和支付电耗,以此来获取新币作为挖矿的奖励。这基本上是一个很消耗资源的过程。而且有两个明显的弊端,一方面,pow的前提是,节点和算力是均匀分布的,因为中本聪当初的设计是通过CPU挖矿,这样节点数和算力值可以大致匹配,但是随着GPU,FPGA直到矿机,使得节点数和算力值渐渐失配。另一方面,pow实在太浪费了,比特币网络每秒可完成数百万亿次SHA256计算,这些计算除了使得恶意攻击者不能轻易打垮比特币网络外,好像并没有更多的实际价值。当然相对于它所带来的好处,这点浪费也许只是很小的代价。

但浪费总归是不好的,有没有办法把挖矿设备和能耗这一环节去掉呢?毕竟这个过程只是要选出一个记账的节点,有没有其他方式可以实现呢?于是,人们提出了一些工作量证明的替代者,其中有一种就叫做POS。

权益认证是由Quantum Mechanic 2011年在比特币论坛讲座上提出来的,然后由PPC(点点币)和NXT(未来币)以不同的思路实现。POW就是根据计算能力随机,POS根据拥有财产随机。这就是这两个共识机制的本质。但是,另一个问题是,POW是一个在比特币出现之前就有了的东西,而因为比特币的成功,POW基本上特指比特币的POW。但相反,POS是个新东西,目前并没有成熟的POS应用,所以,当提到POS的时候,并不是指某一个算法,而是一类,而且,这类算法目前各有优劣。并且,目前为止,没有一个算法的可靠性通过了实践的检验。所以,要对比POW和POS的优劣,我只能以POS这一大类为例。我们现在常说的POS,其实都在说PPCoin的POS,也就是最早的POS,那个东西是有根本缺陷的,例如币龄攻击(save-up attack),都仅仅是对PPC适用,而并不是POS的问题。

Quantum Mechanic提出POS概念的时候,说了下面这段话:

I'm wondering if as bitcoins become more widely distributed, whether a transition from a proof of work based system to a proof of stake one might happen. What I mean by proof of stake is that instead of your "vote" on the accepted transaction history being weighted by the share of computing resources you bring to the network, it's weighted by the number of bitcoins you can prove you own, using your private keys.

他的意思就是说,节点记账权的获得与节点持有的币的数量,也就是权益有关。两者成反比关系,持有币数越多,获得记账权就越容易。这种决定由谁记账的方式,去掉了POW中需要大量计算的过程,但是依然需要进行哈希运算来获取记账权。

在POW中,一个用户可能会拿1000美元来购买矿机并加入到网络中挖矿,从而得到奖励,在POS中,用户会拿1000美元来买等价的代币,并把这些代币当作押金放入POS机制中,这样就有机会产生新区块而得到奖励。

共识机制算法有哪些?

简单来说,就是这个系统中会存在一个持币人的集合,他们把一定的代币放pos机制中,于是他们就变成了验证者,拥有了验证交易和产生区块的权利。然后pos算法就会在这个集合中随机选取一个节点,给他权利产生下一个区块。如果在一定时间里,这个节点没有产生一个区块,则选出第二个节点代替之。在这个过程中,被选中的概率和他们投入的代币量有关,比如一个节点投入了10000代币,那么他被选择的概率,是投入1000代币节点的10倍。

3.点点币(PPC)

PPC是最先采用权益证明算法的数字资产,它在Quantum Mechanic提出的权益证明思想的基础上,引入了币龄的概念。币龄是币的数量和币所拥有的天数的乘积。

简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在PPC的POS模式下,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%,点点币PPCoin是1%年利率),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。

PPC其实是权益证明和工作量证明的一种结合体,因为它也需要挖矿。为了挖到区块,点点币的矿工也需要像比特币矿工那样去进行一个SHA256的解谜运算,只不过,这个解谜运算的难度会随着他们想消耗多少币龄而调整。当一些币龄被消耗后,找到有效区块会变得十分容易。这个运算解谜的效果主要是要保证,在两个矿工尝试消耗同样大小币龄的情况下,这个过程仍然是随机的。

对于POS而言,除了PPC,还有其他不同形式的设计。在这些设计中,一定数量的币被消耗用于使运算解谜变得极为简单,这使得解谜运算不再是挖矿过程中最主要的挑战。

4.POW和POS

两者最直接的区别是,POW依赖算力,而POS依赖持有币数。所以要想拥有记账权,POW得买矿机,POS得买代币。

工作量证明资源消耗大,可监管性差,共识机制强,需要全网算力共同参与效率低。优点也很明显就是完全去中心化和节点自由进出。权益证明一定程度缩短了达成共识时间,但还是需要挖矿,只是不需要消耗大量的能源。两种方案都没有从本质上极大解决成本降低效率提升这个用户痛点。只是优化方案,所以在这2种方式的逻辑里面做项目必然有被替代的情况出现。比如说更优化的方案,或是彻底解决痛点的新机制出现。

5.DPOS:Delegated Proof of Stake,委任权益证明

POW和POS虽然都能解决记账一致性的共识问题,但是POW太依赖算力,一是浪费资源,一是某些矿池巨大的算力俨然成为了一个中心。而POS依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权。于是,又有人提出了DPOS算法。本质上来讲,DPOS是对POS的一种改进,就像PPC是对POS的一种改进一样,只不过PPC是一种具体的数字资产,而DPOS是一种思想。

BitShare是一种采用了DPOS机制的数字资产,它提出了见证人(也就是代理人,或者说代表)的概念,期望通过引入一个技术民主层来减少中心化的负面影响。类似董事会投票,持币者投出一定数量的节点,进行代理验证和记账。

共识机制算法有哪些?

BitShare的DPOS工作原理是:每个持有比特股的节点都相当于一个股东,都有投票选出代表的权利,每个股东将其投票权授予一名代表。获得票数最多的前N个(N通常是101)代表来生成区块。当选成代理人需满足,至少一半的股东参与了投票。

代理人的候选名单每个维护周期(1天)更新一次。代理人随机排列,每个代理人按序有2秒的时间来生成区块。如果在规定时间内不能生成区块,则交由下一个时间片的代理人完成。

DPOS充分利用了持股人的投票,以公平公正的方式达成共识。他们选出的N个代理人,可以视为N个矿池,这N个矿池的权利是完全相等的。持股人可以随时通过投票更换这些代理人,只要他们提供的算力不稳定,计算机宕机或者试图作恶等。

DPOS的优点是可以大幅度缩小参与验证和记账节点的数量,可以达到秒级的共识验证,但是缺点是整个共识机制还是依赖于代币,而很多商业应用是不需要代币的。

以上就是共识机制算法有哪些的相关内容,众所周知,目前主流共识算法逐渐由PoW转向PoS共识算法,出现POW和POS混合的趋势,POW的公平性和POS的效率得到融合补充,这些机制各有优劣,比如POW在安全性和公平性上比较有优势,也依靠其先发优势已经形成了成熟的挖矿产业链,但是其对能源的消耗令人诟病,新兴的机制比如POS,DPOS等则更为环保和高效,但是在安全性和公平性方面比不上POW。

温馨提示:文章不代表币圈子立场,不构成任何投资建议,谨防风险!本文来源于币圈子网站,转载请注明出处!侵权必究!
相关阅读
扩展阅读