区块链核心技术:共识机制

1,399 阅读6分钟

区块链的核心技术包括:块链数据结构、分布式存储、非对称加密、共识算法、P2P网络、智能合约等, 本章节介绍共识机制。它是保证区块链系统安全性和可靠性的重要手段

什么是共识机制?

区块链技术一般应用在去中心化的应用中,去中心化这一重要概念意味着区块链中每一个区块的产生,不是由某一个人说的算的,而是通过一种大多数都认可的方式去决定下一个区块由谁产生,这一大多数都认可的产生区块的方式就叫做共识。区块链所引以为傲的安全性和可靠性就是由此而来。但是具体来说,有很多优秀的开发人员提出了不同的对“大多数”的定义从而引申出不同的共识机制,但是他们的目的都一样,代表‘大多数’的利益。

共识机制的作用

在区块链中各个参与节点都有平等的记录数据并产生区块的的权力。 共识机制就是为了解决在成千上万的节点中下一个区块到底由谁产生。优秀的共识机制,能够避免共识机制成为少数人控制区块链的工具,也不会给作弊者,篡改者恶意修改区块链的可乘之机,也可以避免出现像比特币一样浪费资源,效率低的问题,从而高效安全的产出区块。

常见的共识机制有哪些?

共识机制特点应用场景缺点优点
工作量证明(PoW)通过计算难题来解决双花问题,但需要大量计算资源和能源比特币、莱特币等公链能源消耗大安全性高
权益证明(PoS)通过锁定代币来解决双花问题,但需要大量代币和网络稳定性以太坊、EOS等公链寡头垄断能源消耗小
股份授权证明(DPoS)通过选举节点来解决双花问题,但需要大量代币和网络稳定性EOS等公链寡头垄断能源消耗小
混合共识机制(Hybrid Consensus)结合多种共识机制的优点来解决双花问题,但需要更多的计算资源和能源多种公链复杂度高安全性高
Pool验证池(Pool Validation)通过验证池来解决双花问题,但需要更多的计算资源和能源Ripple瑞波等公链中心化安全性高
PBFT(Practical Byzantine Fault Tolerance)通过节点间的消息传递来解决双花问题,但需要更多的计算资源和能源Hyperledger Fabric等联盟链节点数量有限复杂度低

工作量证明(PoW)

工作量证明(PoW)该共识机制通过算力的比拼来选取一个节点,由该节点决定下一轮共识的区块内容(记账权)。PoW要求节点消耗自身算力尝试不同的随机数(nonce),从而寻找符合算力难度要求的哈希值,不断重复尝试不同随机数直到找到符合要求为止,此过程称为“挖矿”。

PoW要求所有的节点消耗大量的算力来争夺记账权,但在每一轮共识中,只有一个节点的工作量有效,意味着有大量的资源被浪费。随着有效区块的不断积累,恶意节点需要消耗极大的算力才有可能推翻以前的区块,完成「双花」攻击。因此,权益证明机制Proof of Stake(PoS)在2013年被提出并首次应用在PeerCoin系统中,目的是解决资源浪费的问题

权益证明(PoS)

权益证明(PoS)该共识机制通过验证者持有的代币数量来选取一个节点,由该节点决定下一轮共识的区块内容(记账权)。PoS要求节点持有一定数量的代币,这些代币被称为“权益”,并将其锁定在区块链上,以此来证明自己对区块链的贡献和信任。在PoS中,验证者不需要消耗大量的算力来争夺记账权,而是通过持有代币来获得记账权。

相比于PoW,PoS不需要大量的算力来争夺记账权,因此能够节省大量的能源和硬件资源。同时,PoS还可以防止51%攻击,因为攻击者需要拥有51%以上的代币才能对区块链进行攻击

股份授权证明(DPoS)

DPoS(Delegated Proof of Stake)该共识算法由Bitshares的首席开发者Dan Larimer提出并应用。在DPoS中,股东投票给某个受托人,系统根据股东所持股权在系统中占比计算出票数最高的一定数量受托人,受托人们按照事先规定的顺序轮流负责生成区块。这种方式可以避免PoW(工作量证明)算法中矿池导致算力越来越集中、电力耗费过大等问题

DPoS是一种基于投票选举的共识算法,类似于代议制民主。在PoS的基础上,DPoS先选举若干代理人,由代理人验证和记账,代理人之间轮流出块。DPoS相比PoS能大幅度提升选举效率,在牺牲一部分去中心化特性的情况下得到性能提升

混合共识机制

混合共识机制是指将两种或多种共识机制运用在同一区块链公链的底层架构中。合理运用混合共识,可以弥补单一共识机制带来的效率低下、失去安全防护或牺牲中心化程度的缺陷。混合共识机制的实现方式有很多种,比如混合PoW/PoS共识机制、混合PoS/DPOS共识机制等

Pool验证池(Pool Validation)

Pool验证池是一种基于传统的分布式一致性技术以及数据验证机制建立的共识机制。它是目前区块链中广泛使用的一种共识机制,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。Pool验证池不需要依赖代币就可以工作,更加灵活

PBFT(Practical Byzantine Fault Tolerance)

PBFT(Practical Byzantine Fault Tolerance)是一种拜占庭容错算法,可以在少数节点作恶(如伪造消息)场景中达成共识。它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别。在一个由 (3f+1)个节点构成的系统中,只要有不少于 (2f+1)个非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误 ,5个节点同意即通过。 from刘金,转载请注明原文链接。感谢!