共有四种共识机制:PoW,PoS,DPoS,分布性一致算法。
- PoW工作量证明
矿工把未记录的交易打包进一个区块中,并计算出一个随机数,使得新区块的记录加上随机数的哈希值满足一定的难度,找到满足难度的随机数,也就是获取了区块链的本轮的记账权。矿工将这个区块在全网广播出去,其他节点验证通过后,也就将该区块链接到自己版本的区块链上,从而达到了全网共识。
优点:完全去中心化。只要攻击者的算力没有达到全网算力的50%,就无法阻止共识过程。
缺点:工作量证明消耗算力大,容易诱使算力过度集中,违背了去中心化的初衷。同时每秒最多完成7笔交易,不适合商用
- PoS权益证明
https://my.oschina.net/u/4025538/blog/2876180中讲过
优点:达成共识快,节省算力
缺点:攻击成本低。同时拥有代币数量大的用户,成为验证者的概率大,就有失公正。
- DPoS证
是基于POW和PoS发展起来的共识机制,有点类似于人民选举。即,只有一定数量的节点进行投票,通过选举的方式选出代表,也可以再通过投票的方式更换代表,选举出来的代表按序生成区块,如果在时间片内无法生成区块,则由下一个代表生成,直到区块生成为止。
优点:共识达成的更加高效,同时,避免了PoW和PoS机制的缺点。
缺点:当参与投票的节点较少时,选举出的代表也没有较强的代表性,可能不完全适合去中心化的场景。
- 分布式统一算法
如FBFT,RAFT,PASOX等
优点:达成共识快
缺点:去中心化程度不如公有链,但是比较适合多中心的商业模式。
Q&A
Q : PAXOS是什么?
参考https://blog.csdn.net/jerry81333/article/details/74303194
https://www.cnblogs.com/endsock/p/3480093.html
A: PAXOS中有三种角色,提议者Proposer,决策者Acceptor,最终学习者Learner (有些说法中也有另一种角色Client)。
达成共识至少需要4步:
- Proposer向Accepter发出提议,
- Accepter回复promise
- Proposer再次发送提议,请求最终确认
- Accepter接受提议,并最终回复Accepted.
一般而言Accepter的数量至少为3个。
有个有趣的例子帮助理解这种共识模式:参考自https://www.cnblogs.com/endsock/p/3480093.html
现在通过一则故事来学习paxos的算法的流程(2阶段提交),有2个Client(老板,老板之间是竞争关系)和3个Acceptor(政府官员):
- 现在需要对一项议题来进行paxos过程,议题是“A项目我要中标!”,这里的“我”指每个带着他的秘书Proposer的Client老板。
- Proposer当然听老板的话了,赶紧带着议题和现金去找Acceptor政府官员。
- 作为政府官员,当然想谁给的钱多就把项目给谁。
- Proposer-1小姐带着现金同时找到了Acceptor-1~Acceptor-3官员,1与2号官员分别收取了10比特币,找到第3号官员时,没想到遭到了3号官员的鄙视,3号官员告诉她,Proposer-2给了11比特币。不过没关系,Proposer-1已经得到了1,2两个官员的认可,形成了多数派(如果没有形成多数派,Proposer-1会去银行提款在来找官员们给每人20比特币,这个过程一直重复每次+10比特币,直到多数派的形成),满意的找老板复命去了,但是此时Proposer-2保镖找到了1,2号官员,分别给了他们11比特币,1,2号官员的态度立刻转变,都说Proposer-2的老板懂事,这下子Proposer-2放心了,搞定了3个官员,找老板复命去了,当然这个过程是第一阶段提交,只是官员们初步接受贿赂而已。故事中的比特币是编号,议题是value。
这个过程保证了在某一时刻,某一个proposer的议题会形成一个多数派进行初步支持;
===============华丽的分割线,第一阶段结束================
5. 现在进入第二阶段提交,现在proposer-1小姐使用分身术(多线程并发)分了3个自己分别去找3位官员,最先找到了1号官员签合同,遭到了1号官员的鄙视,1号官员告诉他proposer-2先生给了他11比特币,因为上一条规则的性质proposer-1小姐知道proposer-2第一阶段在她之后又形成了多数派(至少有2位官员的赃款被更新了);此时她赶紧去提款准备重新贿赂这3个官员(重新进入第一阶段),每人20比特币。刚给1号官员20比特币, 1号官员很高兴初步接受了议题,还没来得及见到2,3号官员的时候
这时proposer-2先生也使用分身术分别找3位官员(注意这里是proposer-2的第二阶段),被第1号官员拒绝了告诉他收到了20比特币,第2,3号官员顺利签了合同,这时2,3号官员记录client-2老板用了11比特币中标,因为形成了多数派,所以最终接受了Client2老板中标这个议题,对于proposer-2先生已经出色的完成了工作;
这时proposer-1小姐找到了2号官员,官员告诉她合同已经签了,将合同给她看,proposer-1小姐是一个没有什么职业操守的聪明人,觉得跟Client1老板混没什么前途,所以将自己的议题修改为“Client2老板中标”,并且给了2号官员20比特币,这样形成了一个多数派。顺利的再次进入第二阶段。由于此时没有人竞争了,顺利的找3位官员签合同,3位官员看到议题与上次一次的合同是一致的,所以最终接受了,形成了多数派,proposer-1小姐跳槽到Client2老板的公司去了。