01
为什么需要共识
共识是对某事达成的共同看法,它是区块链的灵魂,对确保区块链的完整性和安全性起着至关重要的作用。在传统的集中式系统中,单个实体或一组实体有权验证和记录交易。然而,区块链中的一个核心概念是去中心化,在区块链中没有和传统数据库系统一样的中心数据库,每个节点都是对等的,如大多区块链采用对等式网络(Peer-to-peer network, P2P网络)来组织参与数据验证和生产的节点。P2P网络中的每个节点以扁平式拓扑结构相互交互, 要保证交易统一和安全成一个难题,这样就需要一套算法和机制来保证所有对等节点之间可以有效协作,这套算法和方式称为共识机制。共识机制的存在可以有效保证各个节点之间按照既定的原则共同维护账本,实现对交易的验证和确认,并达成一致的决策。共识机制本质上是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。
随着区块链技术的不停发展,共识机制也发展出了很多版本,以满足不同区块链系统的需求。现今主流的共识机制如下:
共识机制 | 介绍 | 优缺点 |
工作量证明(Proof of Work,PoW) | 是比特币和一些其他区块链项目最早采用的共识机制。节点需要通过解决复杂的数学难题来竞争产生区块的权利。第一个解答正确的节点可以获得区块奖励。这种机制需要大量计算能力,安全性较高,但能耗较大。 | 优点:安全性高,经过比特币多年的验证。需要计算复杂的数学问题,确保节点通过解题来创建新的区块,从而防止恶意节点的攻击。 缺点:计算机资源消耗巨大,需要大量的计算能力,限制了网络的扩展性,记账权容易集中在拥有大量算力的矿工手中。 |
权益证明(Proof of Stake,PoS) | 节点的产生权和验证权依赖于它们持有的通证数量。拥有更多通证的节点在出块和验证交易方面有更大的机会,无需进行大量计算,节省了能源。PoS的变体有DPoS(委托权益证明)和PoS的多个版本。 | 优点:计算资源消耗较低,不需要大量计算,通过抵押通证来获得出块权。可以提高网络的扩展性。 缺点:可能导致“富者愈富”的情况,因为拥有更多通证的节点有更大的影响力。可能存在“令牌堆叠”问题,即一个实体拥有过多的通证从而控制整个网络。 |
拜占庭容错( Byzantine Fault Tolerance,BFT) | 在分布式系统中,存在节点间的通信可能失败、消息可能延迟、节点可能崩溃等问题,这些问题都可能导致共识协议的失败。BFT共识算法旨在应对这些问题,确保在最多容忍一定数量的节点故障的情况下,系统仍能够达成一致的共识。 | 优点:适用于联盟链和私有链,具有高度的安全性和效率。允许在节点出现故障或攻击时仍能保持一致性。 缺点:一般较难实现,需要节点之间进行复杂的协调和通信。可能存在性能限制。 |
委托权益证明(Delegated Proof of Stake,DPoS) | DPoS是PoS的一种扩展,选出代表节点负责出块和验证交易,提高网络性能和可扩展性。 | 优点:通过选举代表来执行出块,提高了网络的效率和扩展性。交易确认速度较快。 缺点:可能导致中心化,因为只有少数几个代表在出块。依赖于生产节点的诚实性和活跃性。 |
权威证明(Proof of Authority,POA) | 旨在解决一些传统的区块链共识机制(如Proof of Work和Proof of Stake)所面临的问题。网络的节点不是通过解决计算难题或抵押通证来获得权威,而是基于节点的身份和信任,由已知的权威实体或预选的验证者来验证和确认交易。这使得POA具有一定的中心化特点,但也赋予了网络更高的性能和可扩展性。 | 优点:高吞吐量和低延迟,适合快速交易确认。计算资源消耗较低,不需要大量计算。安全性可预测,与验证者信誉相关。 缺点:中心化风险,验证者选择集中。依赖验证者的信任,容易受到攻击。 |
总体来说,每种共识机制在不同的项目和应用场景中都有自己的适用性。选择合适的共识机制需要考虑项目的需求、性能要求、安全性需求以及社区治理等因素。随着技术的不断发展,未来可能还会出现新的共识机制或对现有机制进行改进,以满足不断变化的需求。
02
中移链的共识
在中移链中,使用委托权益证明(Delegated Proof of Stake,DPoS)和aBFT(异步拜占庭容错)结合的共识机制。委托权益证明(DPoS)用来选出活跃的生产者,这些生产者将被授权在网络中产生区块。异步拜占庭容错涉及交易确认过程和直到它成为最终(不可逆)的实际过程。
基于DPoS共识的核心思想,中移链通过选举产生多个生产节点,并由选举的生产节点按照顺序轮流产生区块。生产者每0.5秒生产一个区块,每个生产者可连续生产12个区块,即拥有6秒的连续出块时间。任何时刻,只会有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该块。这样即使某个生产节点出现问题,区块链网络依然能正常运转。整体的共识流程大致如下:
-
投票权重:对于每个账户,将其持有的通证数量除以总的通证数量,得到一个比例,这个比例就是账户的投票权重,它反映了该账户在整个网络中的通证占比。
-
选出生产节点:作为生产节点,需要通过投票系统来选择区块生产者,生产节点有责任维护区块链的安全和稳定。通常情况下,中移链网络中有一组固定数量的生产节点来保证链的稳定。同时取消了EOS中的区块产生的奖励和交易手续费,通过统一的资源管理员进行管理,保证了节点资源的稳定性。
-
生产节点轮流生产区块:一旦代表节点被选举为生产节点,他们就有权利轮流产生区块。生产节点按照事先约定的时间间隔(默认为0.5秒)依次执行出块任务。这样的安排确保了区块的连续性,并使得交易能够迅速得到确认和处理。
-
区块的生成和验证:当生产节点轮到执行出块任务时,他们会打包并确认一批待处理的交易。然后,这些交易被写入新的区块中,并附加到区块链的末尾。区块生成的过程通常包括对交易的签名和验证,以确保其有效性和安全性。
-
区块验证:当超过2/3+1的验证者在他们的本地区块链上确认某个区块时,这个区块被认为是被多数验证者同意的。一旦一个区块被多数验证者确认,它被认为是“不可逆块”,即不会被更改。
需要注意的是,交易的确认时间也取决于网络的拥塞程度和交易的复杂性。高交易量或复杂的交易可能会导致确认时间延迟。因此,在实际操作中,建议根据网络状况和交易的重要性来确定等待的确认深度,以确保交易的安全性和不可逆性。
03
共识安全
共识安全是区块链系统中的一个至关重要的概念,它指的是确保网络中所有节点就区块链的状态达成一致的过程。在区块链中,共识机制决定了哪些节点有权力添加新的区块到区块链中,并决定了网络中所有节点对于交易和状态的认同程度。共识安全对于区块链系统的稳定性、安全性和可信度有着重要的影响,中移链主要通过以下几点来实现共识安全:
-
去中心化:中移链中通过投票选出大量的区块生产者。这种分散的方法确保了权力在多个实体之间分配,而不是集中在少数人手中。网络越去中心化,恶意行为者就越难以勾结和破坏系统。
-
出块机制:生产节点轮流生产区块,不仅能提供更高的性能和吞吐量,还能确保区块链网络的连续性。每个代表节点都有一定的时间段来生产区块,即使某个节点暂时出现问题或离线,其他节点仍然可以继续产生区块,避免了整个网络的停滞。同时生产节点需要遵守共识规则并按照约定的时间产生区块,否则他们可能会失去出块资格和面临罚没。这样的机制有助于防止恶意节点的行为,保护网络的安全性。
-
罚没机制:如果一个代表节点违反共识规则或恶意行为,其可能会受到罚没。例如,如果代表节点出现双花攻击、延迟生产区块、拒绝确认合法交易等行为,其他节点可以发起投票将其罢免。罚没机制保证了生产节点必须遵守共识规则和维护网络的安全性。
-
不可逆转的区块确认:在中移链中,一旦一个区块被特定数量的后续区块确认,它就变得不可逆转。此功能确保记录在确认块中的交易是不可变的,保证了交易的永久可信。
-
定期升级周期:中移链会定期升级和改进。这些升级有助于解决任何潜在的安全漏洞,并确保网络与最新的安全最佳实践保持同步。
需要注意的是,没有任何共识机制可以完全免受安全风险的影响,持续警惕和改进对于维护安全的区块链生态系统至关重要。
04
总结
中移链是在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。其中,共识机制是确保区块链安全、稳定的核心机制。不同于传统中心化系统,区块链的共识是指网络中所有节点对交易有效性和顺序达成一致的过程,共识能确保节点交易状态的统一。缺乏共识会使区块链失去可靠性和防篡改特性。中移链使用DPoS(委托权益证明)共识算法来选出活跃的生产者,结合aBFT(异步拜占庭容错)共识算法进行快速的交易确认,确保网络连续性和更快的交易速度,保证了区块链系统安全高效。
参考资料
[1]BSN开放联盟链:
https://opb.bsnbase.com/main/index
[2]官方EOSIO共识介绍:
https://developers.eos.io/welcome/latest/protocol-guides/consensus_protocol#3-eosio-consensus-dpos--abft
[3]官方EOSIO白皮书:
https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md
[4]官方EOSIO核心概念:
https://developers.eos.io/welcome/latest/introduction-to-eosio/core_concepts