区块链就是一个去中心化分布式公共账本,任何人都可以对这个公共账本进行核查,每个人手里都有一本完整的账本(数据),某部分(节点)的账本(数据)的丢失,不会导致整个账本(数据)的丢失,因为账本(数据)是全网所有(节点)共有,即这个数据有无数个备份随时可以恢复。而这又衍生出了一个问题?谁来记账?凭什么来让你记账?你有什么能力来记账?这就需要达成一种共识,也就是今天小编要给大家讲的共识机制。
POW共识机制
POW共识机制实际上就是多劳多得,比拼的是力量大小,即各个节点比拼自身电脑算力的强弱来赚取记账机会,算力越强,获得记账的机会就越大,从而获得比特币的机会就越大。
POW共识的过程就是现在人们常说的“挖矿”过程,各个节点就是“矿工”。所有矿工都按照中本聪既定的游戏规则积极贡献力量,使得比特币系统十年如一日地正常运行。
POW共识机制的优点是算法简单,容易实现,破坏系统的话需要投入巨大的成本,能够有一定的安全保障。不过该算法的缺点也比较明显,就是需要耗费大量电力,对交易的处理效率较低,象比特币系统就是每秒7笔交易的处理能力。
POS共识机制
POS(Proof of Stake),即权益证明,又可以称为股权证明机制,简单讲就是用户手上拥有一定数量的数字货币(token),系统根据你持有的数量和时间,给你发利息。
在这里会引入一个“币龄”的概念,即币龄=持币数量x持币天数,系统会先设定一个币龄数目及其对应的token利率,那么用户持有的token越多,时间越久,获得的利息token就越多,这就像放银行存钱赚利息一样。
POS的优点是不需要象POW那样拼算力来挖矿,不会浪费电力了;另外POS缩短了共识达成的时间,效率得到提高;还有就是持有token越多的人收益越大,那么他进行51%攻击的意愿就越小,毕竟损害了系统的安全性,持有的token 就会贬值,自身受害就越大。
但是POS也有缺点,那就是容易产生垄断,就像现实生活中的食利阶层一样,大量token的拥有者会锁仓吃利息;其次,POS共识是偏向于区块链用户行使权力,且用户不需要投入大量硬件挖矿,用户成本较低,致使对区块链系统的其它攻击和分叉变得容易。
DPOS共识机制
DPOS(Delegated Proof of Stake),委任权益证明,又称股份授权证明机制,其原理与POS基本相同,但采用了类似于现代企业制度的董事会代表、或全国人大代表方式,即由持有token的用户投票产生一定数量的超级节点或矿池,由这些“全链人大代表”行使交易验证和记账权利。
DPOS机制大幅缩小参与验证和记账的节点的数量,比如区块链EOS,就只在全球设计21个主节点、100个备用节点,另一个区块链维基链(WICC),更是只有11个记账代表,DPOS机制缩短了共识验证所需要的时间,极大地提高了整个系统的运行效率,为区块链商业化运作奠定基础。
POC容量证明机制、POC空间容量证明
容量共识机制POC(proof of capacity) ,空间容量证明,又称之为POS (proof of space)在2014年被提出。
空间容量证明利用的是计算机的硬盘空间大小而不是电脑的计算能力。硬盘的容量越大,可以储存在硬盘里的方案值就越多,矿工就越有机会匹配到其中所需要的哈希值,从而有更多的机会获得奖励。简单点来说,就是在开始挖矿之前在你的硬盘里计算和储存好shabal散列函数问题的解决方案,提前将函数的答案放到硬盘里面去。
打个比方,挖矿过程就相当于我们将彩票存放到硬盘里,系统每隔几分钟公布一次“中奖号码”,谁拥有与“中奖号码”最相匹配的彩票,那么谁就获得奖励!
POC挖矿减少了大量的计算,同时避免了AISC化的矿机出现,大大降低了挖矿的门槛和矿工的成本。
区块链共识机制之BFT和DBFT共识
BFT共识机制
BFT的全称是Byzantine fault tolerance,即拜占庭容错共识算法,是解决拜占庭将军问题中,当存在叛徒时,叛徒用尽了各种手段来破坏时,将军们仍然能够达成共识,所以叫拜占庭容错。容错的意思就是容纳节点出现错误,网络仍然能达成一致的行动,可以正常运作。BFT实际上是执行少数服从多数的共识,即在区块链全部分布式节点中,只要有超过三分之二的节点认可了一个结果,整个系统就可以正常运作。但BFT共识需要在一个节点封闭的环境中使用,即静态共识,不适合那种随时进出的节点系统。
DBFT共识机制
DBFT是委托拜占庭容错共识算法(Delegated Byzantine fault tolerance),一种通过代理投票来实现大规模节点参与共识的拜占庭容错型共识机制,在BFT基础上把再节点分为代理节点和普通节点,代理节点有记账权利,普通节点可以看到共识过程,并同步账本信息,但不参与记账。但由于只采用了代理节点记账,对容错节点较少,安全性较其它共识机制(如POW)会低一些。
区块链共识机制之PBFT共识
PBFT共识机制
PBFT是实用拜占庭容错共识算法(Practical Byzantine Fault Tolerance),该算法可以工作在异步环境中,并且通过优化在早期算法的基础上把响应性能提升了一个数量级以上,结果就将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行,解决了原始拜占庭容错算法效率不高的问题。特别指出的是,PBFT是以算法模型来解决共识的,所以它可以不存在token分发机制,这点与POW和POS这种以经济模型为主来解决共识的机制大有不同。
当然,各种共识机制都各有优点,也都各有缺点,很多区块链项目在技术发展中也不断地调整共识算法,甚至混合使用,比如以太坊(ETH)刚开始是POW共识,现在正向POS共识过渡,将来可能是POW和POS的混合共识,而EOS则采用DPOS混合BFT来作为系统共识机制,因为选出21个超级节点之后就相当于有了一个静态的节点共识环境,适合利用BFT来加快运行效率。故此,不同的区块链项目会根据自身特点而采用适合的共识算法,这种百花齐放的局面会进一步促进区块链技术的繁荣发展。