中移链共识机制介绍

2024-02-08 12:59
文章标签 介绍 机制 共识 中移

本文主要是介绍中移链共识机制介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这篇关于中移链共识机制介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/BSN_yanxishe/article/details/134437979
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/691115

相关文章

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取