白话共识机制1

共识机制是什么?刚开始接触区块链的人总是有些迷惑。
区块链是去中心化的不可篡改的交易帐本。共识机制就是说明这个账本是怎么记账的。记账节点如何验证一笔一笔交易,验证之后节点如何把交易打包装入区块,最后记账节点如何把区块链接到区块链上。
现在的共识机制比较多,许多人总会问:哪种共识机制最好呢?其实就像是现实社会中的政府企业的运营机制,哪种最好?适合的最好,能够提高效率的最好。
我们看看区块链中的共识机制算法。

工作量证明算法POW

工作量证明,顾名思义,通过工作量来证明节点在系统中的地位。多劳多得就是这种算法的基本体现。这样的例子在现实生活中到处都是。在一个公司中,谁干活最多,给公司创造的利润最多,谁的贡献就被算作最大,他的收益也就最多。再比如,见到清华的博士,我们到会肃然起敬,为什么?因为我们明白能拿到清华的博士,是经过了多少日日夜夜的苦读,绝非一蹴而就的,取得这样的成就是需要实实在在的工作量才能实现的。
比特币就是这样人为制造一个难题,通过消耗cpu算力,谁付出的多,谁就有记账权,也就能获得奖励。

实用拜占庭容错算法PBFT

互联网环境,硬件设备悬殊,网络带宽各异,系统环境繁杂,软件众多,这样的环境是不可靠的。在这样的环境,让处于不同区域的人达成共识就是个难题。
实际上PBFT是多个节点在传送同步消息时采用的一种容错机制。
比如拜占庭周围的10个城邦,其中一个城邦(甲城邦)想发起进攻拜占庭联盟(达到总数的一半就有成功可能),但是它知道有2个城邦可能是间谍(拜占庭的盟友),不能确定是谁。
甲城邦发出联盟号令后,等待其他城邦的答复。
甲城邦收到了3个城邦的同意确认,无法判断这3个中是否有2个间谍。只能继续等待更多消息。
甲城邦收到了5个城邦的同意确认,那么其中有可能包括2个间谍(只有包括自己在内的4个城邦(5-2+1),无胜算可能),也可能2个间谍还没有确认(包括自己在内的6个城邦(5+1),有胜算可能)。还没有绝对把握,只能继续等待。
甲城邦收到了6个城邦的同意确认,那么其中有可能包括2个间谍(只有包括自己在内的5个城邦(6-2+1),有胜算可能),也可能3个间谍还没有确认(包括自己在内的7个城邦(6+1),有胜算可能)。这时对甲城邦来说,联盟形成,有把握进攻了。

这就是说,如果这个系统中允许2个节点出现故障不会影响系统正常运行,那么最少需要7个节点参与才能实现这种机制。计算公式是:总节点数量>=3*允许的故障节点数量+1
PBFT最大的问题是故障节点数量超过预期,就需要总节点数量增加,否则导致系统无法服务。因此更适合联盟链,节点数量不是非常多而且可控的情形。

权益证明 PoS

权益证明也好理解,就是根据你的权益确定你的地位。POS觉得工作量太傻,不够机智灵活,采用另外一种衡量贡献的方式,就是根据你把财富贡献给系统的多少和时间来计算。
比如有个公司,判断你在公司地位的方式是:1是你投入了多少钱,也就是你的股份;2是你的钱在这个公司一直存放持续了多少天。这就是币天的概念。这也是现在商业银行给储蓄用户计算利息的方式。
在POS共识算法的区块链中,你的币天决定了你的记账权的概率。但是这种模式带来一个问题就是强者恒强,越有钱地位越高,地位越高带来的收益就越高。因此经常将POS和POW一起使用。

权益授权证明/ Delegated Proof of Stake / DPoS

DPOS类似于永不停止的人民代表大会。权益人通过支持自己的授权代表,行使自己的投票权。
持币者登记成为权益人,投票选举授权代表。授权代表就是超级节点。这些超级节点按照分配的时间段进行记账,并获得奖励。
但是如何避免超级节点作恶呢?
权益人和其他授权代表监视所有超级节点的行为,发现作恶,就会被投票罢免授权代表资格。候选的授权代表会增补进入代表大会。

待续。。。

你可能感兴趣的:(白话共识机制1)