什么是共识机制
区块链要成为一个难以攻破的, 公开的, 不可篡改数据记录的去中心化诚实可信系统, 需要在尽可能短的时间内做到分布式数据记录的安全, 明确及不可逆, 提供一个最坚实且去中心化的系统.
区块链分布式记账的方式使得每个人手上都有一本完整的账本, 全网共有. 但是随着节点的不断增多, 数据越多, 账本也越安全, 难以摧毁. 除此之外, 任意一个或者部分节点的账本被篡改, 都不可能被全网认同, 除非你能控制 51% 的节点, 即 51% 攻击, 但是这耗能巨大, 几乎是不可能的. 同时随着节点不断增加, 谁来记账, 如何选择合适的人来记账成为一个问题, 而制定一个记账人的选择方式以及规定, 让大家来遵守这个规定, 达成共识, 这就是区块链里面的共识机制.
共识机制是区块链节点就区块信息达成全网一致共识的机制, 说得更直白一些就是对于如何选择记账人达成共识. 共识机制可以保证最新区块被准确添加至区块链, 节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击.
比特币作为区块链的第一个应用, 它的共识机制 PoW 共识机制曾经一枝独秀, 但是随着区块链技术的不断发展, 各类不同的共识机制开始不断涌现, 各有千秋, 各有拥趸.
共识机制分类
PoW( Proof of Work)工作量证明: 多劳多得
机制中根据矿工的工作量来执行货币的分配和记账权的确定. 算力竞争的胜者将获得相应区块记账权和比特币奖励. 因此, 矿机芯片的算力越高, 挖矿的时间更长, 就可以获得更多的数字货币.
优点: 算法简单, 容易实现; 节点间无需交换额外的信息即可达成共识; 破坏系统需要投入极大的成本.
缺点: 浪费能源; 区块的确认时间难以缩短; 新的区块链必须找到一种不同的散列算法, 否则就会面临比特币的算力攻击; 容易产生分叉, 需要等待多个确认; 永远没有最终性, 需要检查点机制来弥补最终性.
目前基于 PoW 共识机制的数字货币有很多, 比特币, 莱特币, 狗狗币, 达士币, 门罗币等初期的数字货币大多都是 PoW 共识机制.
PoS(Proof of Stake)股权证明算法: 持有越多, 获得越多
POS 机制采用类似股权证明与投票的机制, 选出记帐人, 由它来创建区块. 持有股权愈多则有较大的特权, 且需负担更多的责任来产生区块, 同时也获得更多收益的权力.
POS 机制中一般用币龄来计算记账权, 每个币持有一天算一个币龄, 比如 持有 100 个币, 总共持有了 30 天, 那么此时的币龄就为 3000. 在 POS 机制下, 如果记账人发现一个 POS 区块, 他的币龄就会被清空为 0, 每被清空 365 币龄, 将会从区块中获得 0.05 个币的利息(可理解为年利率 5%).
优点: 在一定程度上缩短了共识达成的时间; 不再需要大量消耗能源挖矿.
缺点: 还是需要挖矿, 本质上没有解决商业应用的痛点; 所有的确认都只是一个概率上的表达, 而不是一个确定性的事情, 理论上有可能存在其他攻击影响.
最先开始运用权益证明共识机制的区块链项目是 2012 年诞生的 PeerCoin, 以太坊前三阶段均采用 PoW 共识机制, 在第四阶段开始以太坊将采用权益证明机制, 此外, 量子链和 Blackcoin 都采用 POS 共识机制.
DPOS(Delegated Proof-of-Stake)股份授权证明
DPOS 是在 POS 基础之上发展起来的. 与 PoS 的主要区别在于持币者投出一定数量的节点, 代理他们进行验证和记账. 其合规监管, 性能, 资源消耗和容错性与 PoS 相似.
DPoS 的工作原理为: 每个股东按其持股比例拥有影响力, 51% 股东投票的结果将是不可逆且有约束力的. 其挑战是通过及时而高效的方法达到 51% 批准. 为达到这个目标, 每个股东可以将其投票权授予一名代表. 获票数最多的前 100 位代表按既定时间表轮流产生区块. 每名代表分配到一个时间段来生产区块. 所有的代表将收到等同于一个平均水平的区块所含交易费的 10% 作为报酬. 如果一个平均水平的区块含有 100 股作为交易费, 一名代表将获得 1 股作为报酬. DPoS 的投票模式可以每 30 秒产生一个新区块.
优点: 大幅缩小参与验证和记账节点的数量, 可以达到秒级的共识验证.
缺点: 整个共识机制还是依赖于代币, 很多商业应用是不需要代币存在的.
比特股 (BitShares) 社区首先提出了股份授权证明机制, 和比特股一父同胞同出于大神 BM 之手的 EOS 以及 Steem 也是基于此共识机制, LBTC,BCX ,Lisk 等也都采用了该共识机制, DPoS 的支持者众多, 影响力广泛, 后来者居上.
DAG(Directed acyclic graph)有向无环图: 无区块链概念
DAG 最初出现就是为了解决区块链的效率问题. 其通过改变区块的链式存储结构, 通过 DAG 的拓扑结构来存储区块. 在区块打包时间不变的情况下, 网络中可以并行的打包 N 个区块, 网络中的交易就可以容纳 N 倍.
之后 DAG 发展成为脱离区块链, 提出了 blockless 无区块的概念. 新交易发起时, 只需要选择网络中已经存在的并且比较新的交易作为链接确认, 这一做法解决了网络宽度问题, 大大加快了交易速度.
优点: 交易速度快; 无需挖矿; 极低的手续费.
缺点: 网络规模不大, 导致极易成为中心化; 安全性低于 PoW 机制.
目前采用这个技术有 IOTA,byteball 两个币, 前段时间国内首个基于 DAG 的物联网区块链项目 ITC 万物链币价也取得了不小的涨幅.
PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错: 分布式一致性算法
实用拜占庭容错在保证活性和安全性 (liveness & safety) 的前提下提供了 (n-1)/3 的容错性. 在分布式计算上, 不同的计算机透过讯息交换, 尝试达成共识; 但有时候, 系统上协调计算机(Coordinator / Commander) 或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息, 导致影响最终的系统一致性. 拜占庭将军问题就根据错误计算机的数量, 寻找可能的解决办法, 这无法找到一个绝对的答案, 但只可以用来验证一个机制的有效程度. 而拜占庭问题的可能解决方法为: 在 N ≥ 3F + 1 的情况下一致性是可能解决. 其中, N 为计算机总数, F 为有问题计算机总数. 信息在计算机间互相交换后, 各计算机列出所有得到的信息, 以大多数的结果作为解决办法.
优点: 系统运转可以脱离币的存在, pbft 算法共识各节点由业务的参与方或者监管方组成, 安全性与稳定性由业务相关方保证; 共识的时延大约在 2~5 秒钟, 基本达到商用实时处理的要求; 共识效率高, 可满足高频交易量的需求.
缺点: 当有 1/3 或以上记账人停止工作后, 系统将无法提供服务; 当有 1/3 或以上记账人联合作恶, 且其它所有的记账人被恰好分割为两个网络孤岛时, 恶意记账人可以使系统出现分叉, 但是会留下密码学证据; 去中心化程度不如公有链上的共识机制; 更适合多方参与的多中心商业模式.
实用拜占庭容错主要应用于央行的数字货币以及布萌区块链.
Pool 验证池 -- 私有链专用
Pool 验证池, 基于传统的分布式一致性技术, 加上数据验证机制; 之前曾是行业链大范围在使用的共识机制, 但是随着私有链项目的逐渐减少渐渐开始势微.
优点: 不需要代币也可以工作, 在成熟的分布式一致性算法 (Pasox,Raft) 基础上, 实现秒级共识验证.
缺点: 去中心化程度不如 bictoin; 更适合多方参与的多中心商业模式.
自定义共识机制以及混合共识机制: 私人订制
小蚁: dBFT(delegated BFT)授权拜占庭容错算法
小蚁采用的 dBFT 机制, 是由权益来选出记账人, 然后记账人之间通过拜占庭容错算法来达成共识. dBFT 和 PBFT 的关系类似于 PoS 和 DPoS 的关系.
dBFT 在 PBFT 的基础上做出了多出改进: 将 C/S 架构的请求响应模式, 改进为适合 P2P 网络的对等节点模式; 将静态的共识参与节点改进为可动态进入, 退出的动态共识参与节点; 为共识参与节点的产生设计了一套基于持有权益比例的投票机制, 通过投票决定共识参与节点(记账节点); 在区块链中引入数字证书, 解决了投票中对记账节点真实身份的认证问题.
特点: 专业化的记账人; 可以容忍任何类型的错误; 记账由多人协同完成, 每一个区块都有最终性, 不会分叉; 算法的可靠性有严格的数学证明; 当有 1/3 或以上记账人联合作恶, 且其它所有的记账人被恰好分割为两个网络孤岛时, 恶意记账人可以使系统出现分叉, 但是会留下密码学证据.
唯链 --PoA(Proof-of-Authority)
PoA 共识机制, 这种共识机制能达到的 TPS, 相较于比特币的 PoW 和以太坊即将采用的 PoS, 在 TPS 上都要高出很多. 唯链创世团队曾经披露唯链研发团队测试能达到 10000TPS,10000TPS 足够满足很长一段时间内的性能要求.
PoA 与 PoS 类似, 但是 POS 是基于持币加时间的模式, 所以同样会造成利益分配的不均衡和大节点的产生, 在 PoA 中, 验证者不需要在网络中持有股份, 但是必须具有已知的和经过验证的身份, 这意味着验证者不会有动机为自己的利益行事, 由这些验证者来验证和治理 DAPP 的投票. 如此, 让 PoA 的网络变得更加安全和便宜.
除了唯链以外, 欧链 Oracles 采用的也是 PoA 共识机制.
Ripple:RPCA(Ripple Protocol consensus algorithm)
瑞波共识机制 RPCA 是一个类似 PBFT 的共识机制, 属于节点投票的共识机制. 初始特殊节点列表就像一个俱乐部, 要接纳一个新成员, 必须由 51% 的该俱乐部会员投票通过. 共识遵循这核心成员的 51% 权力, 外部人员则没有影响力. 由于该俱乐部由 "中心化" 开始, 它将一直是 "中心化的", 而如果它开始腐化, 股东们什么也做不了.
与比特币及点点币一样, 瑞波系统将股东们与其投票权隔开, 并因此比其他系统更中心化. Stellar 的共识机制 SCP(Stellar Consensus Protocol)就是在 "Ripple 共识算法" 的基础上演化而来的.
Hcash--PoW+PoS 共识机制
Hcash 采用混合共识机制后, 有 Hcash 的用户与矿工均可以参与到投票中, 共同参与 Hcash 社区的重大决定; Hcash 的 PoS 还为不合格的矿工提供了一个制衡机制; 通过 PoS+PoW 公平的按持币数量与工作量分配投票权重, 可以实现社区自治.
通过 PoW, 使得 Hcash 有挖矿的硬性成本作为币价的保证, 又制约了单独 PoS 机制里数字货币过于集中的问题; PoS 让中小投资者着眼于项目的中长期的发展, 中小户更倾向于把币放在钱包里进行 PoS 而不是放在交易所随时准备交易使得 Hcash 生态更加健康, 人们会将注意力更多的放在 Hcash 技术与落地应用上, 而不是仅仅关注短期的价格波动.
在安全性上, 由于 PoW 必须通过 PoS 的验证才可生效, PoW 矿工不能自行决定并改变网络规则, 这有效的抵挡了 51% 攻击.
共识机制发展
迄今为止, 没有任何一种共识机制完美地解决了所有问题, 每个共识机制都存在各自的短板. 数字货币市场在不断扩大, 毫无疑问共识机制也在不断地自我更新.
从 PoW 到 PoS,PoS 到 DPoS, 以及 DAG 的无区块链概念, 无疑不是对效率的不断追求. 但是共识越集中(参与度越低), 效率越高, 也越容易出现安全和独裁腐败现象(和去中心化的初衷背道而驰). 只有做到各方面的平衡, 通过之后的发展以及不断的更迭, 数字货币以及区块链未来可期.
来源: http://blockchain.51cto.com/art/201905/597103.htm