CN113535849B - 一种区块链的可扩展共识方法 - Google Patents
一种区块链的可扩展共识方法 Download PDFInfo
- Publication number
- CN113535849B CN113535849B CN202110774096.7A CN202110774096A CN113535849B CN 113535849 B CN113535849 B CN 113535849B CN 202110774096 A CN202110774096 A CN 202110774096A CN 113535849 B CN113535849 B CN 113535849B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- cache
- transaction
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链的可扩展共识方法,通过DHT路由思想,将所有的排序节点映射到哈希环,利用一致性哈希算法将交易Tx路由到指定区块,以此实现区块的并行化出块。同时,为了保证并行化出块的区块顺序一致性。在哈希环中排序节点选举一个主节点mainNode负责将所有区块编号。使用单个节点mainNode对区块进行排序保证分布式出块的区块顺序一致性。使得区块打包具有非常好的扩展性和灵活性,符合当今企业级区块链应用的需求。
Description
技术领域
本发明属于区块链技术领域,更为具体地讲,涉及一种区块链的可扩展共识方法。
背景技术
区块链根据权限控制不同,一般分为三类:私有链,公有链和联盟链。私有链只对单独的个体或组织开放,如企业内部使用。公有链对所有人开放,链上的所有节点可随时加入或退出。目前在公有链系统中,默认所有参与节点不可信,故采用PoW(Proof of Work)等BFT算法解决分布式共识问题,其代价是海量计算导致共识速度缓慢、系统吞吐量下降。典型代表如Bitcoin,受其选取的PoW共识算法限制,平均出块时长为10分钟,TPS仅为7。是选择了去中心化和安全性而牺牲性能的典型代表之一。相比之下,联盟链增加了准入机制弱化了去中心化特性。典型代表如Hyperledger Fabric,所有参与者均需通过CA认证才能相互通信。这样的优势在于,整个系统原则上无恶意节点,故可以委托某可信服务负责出块,相比于公链可以极大缩短共识时间,提高了性能。同时,为了保证系统容错性,联盟链的共识服务也支持多实例同时运行:其共识服务的实现通过Paxos/Raft等协议选举Leader,由Leader实际负责将交易打包形成区块。虽然联盟链的交易速度天然要比公链快,但单个Leader串行出块的扩展性不佳,不能支持高并发事务系统。
联盟链排序服务主要功能是将Client接收到的交易进行排序后打包出块,其流程为:管理系统通道和应用通道、维护通道账本和配置、提供Broadcast广播服务接收交易,启动对应的Orderer共识排序服务打包出块、Deliver区块分发服务处理区块请求、Orderer从本地账本中返回请求范围内的区块数据。
现有的联盟链在排序服务阶段使用的共识服务技术通常为Solo、Kafka、Raft等共识算法,Solo算法只适用于测试环境。Kafka算法因配置繁琐与额外的管理开销等原因逐渐被弃用。默认采用的Raft共识算法有着复杂的选举机制,增加了系统开销。联盟链在排序服务阶段主要功能是将交易进行排序并打包成块。Raft共识算法是严格的单个Leader打包区块,多个Follower参与共识的算法。单个节点串行化出块会造成事务阻塞,严重降低了系统性能。
在联盟链排序服务中,不同的通道单独运行一套Raft协议的示例,该协议允许每个实例选择不同的Leader。通道的创建者和通道管理员能够选择当前系统中可用排序节点的子集,并根据需要添加或删除排序节点(暂不支持一次增删多个节点)。如其工作流程如下:
1)Client给Orderer发送交易,所有交易根据判断是配置交易还是普通交易转发给Raft集群中的Leader节点进行相应处理。
2)如果当前的Orderer是Leader节点,对交易进行打包出块。普通交易根据区块容量和超时时间进行打包出块,对于配置交易单独出块。如果Orderer不是Leader节点,则会通过rpc转发给Leader节点。
3)Leader节点将打包好的区块传递给底层的Raft状态机,将该日志广播给其他的Follower节点,收到半数以上的节点响应,Leader节点提交该日志,区块被写入本地账本。
然而,现有的Raft算法Raft是基于CFT的共识算法,为了达到分布式一致性,当出现1个Orderer故障时,系统需要保证存在至少3个可用节点才能正常工作,如果Leader节点故障,系统还需要重新进行Leader选举,Candidate节点将选举信息广播给所有节点,需获得半数以上的投票才能选举成功。并且Leader节点需要定期发送心跳消息给其他节点证明自己存活。其复杂的选举机制增加了额外开销,影响系统性能。其次,Raft算法的排序服务中区块的打包出块环节实质上只由Leader节点负责,无法实现并行化出块,在高并发系统中,Leader节点的负载也会成为排序服务的性能瓶颈。
发明内容
本发明的目的在于克服现有技术的不足,提供一种区块链的可扩展共识方法,基于DHT的一致性哈希理论,将所有交易通过DHT算法路由到环中具体的节点进行处理,环中所有的排序节点再独立进行打包出块,实现多节点并行化出块,这样解决现有的区块链共识方法在实现上造成的系统开销、串行化出块上存在的问题和不足。
为实现上述发明目的,本发明一种区块链的可扩展共识方法,其特征在于,包括以下步骤:
(1)、启动DHT-Orderer服务并初始化配置;
启动DHT-Orderer服务,将参与排序的DHT节点通过哈希算法形成一个二进制数组hash_node,每个DHT节点通过hash_node加入到DHT-Orderer的哈希环中;
通过写入配置文件方式对区块推荐容量PreferredSize和区块最大容量PreferredMaxSize、区块容纳交易最大数量MaxMessageCount、区块超时时间BatchTimeout进行初始化;
(2)、定义区块结构并初始化;
区块结构分为:区块头与数据域;区块头又包含PreviousHash、Number、DataHash三个字段,其中,PreviousHash用于记录了当前区块在区块链中的上一个区块的哈希值,初始化为空;区块高度Number用于记录当前区块在区块链中的顺序,初始化为0;DataHash记录了本区块在区块链中的哈希值,初始化为空;数据域用于记录该区块包含的所有的交易消息,初始化为空;
(3)、选举mainNode节点;
通过一致性哈希算法定位DHT环中key=0的后继节点,将该节点选举为主节点mainNode;mainNode节点包含lastBlockHash与blockNum两个字段,其中,lastBlockHash字段赋值为区块链中最后一个区块的哈希值DataHash,blockNum字段赋值为区块链中最后一个区块的区块高度Number;
(4)、消息预处理;
接收从客户端发来的交易消息Tx,先通过过滤器进行过滤处理,将交易消息Tx超过区块最大容量PreferredMaxSize过滤掉,再进入步骤(5);
(5)、交易路由;
经过预处理后的交易消息Tx通过哈希算法映射到由排序节点组成的哈希环,通过查询本地排序节点的路由表,得到该交易的后继节点的地址,如果本地节点未记录后继节点地址,在本地的路由表中找到距离后继节点最近的节点CloseNode,远程连接该节点,再通过迭代方式查询CloseNode的路由表中的后继节点,并记录后继节点地址,再进入步骤(6);
(6)、通过步骤(5)得到的地址,将交易消息Tx转发给相应的排序节点,并对交易消息Tx进行区块打包;
(6.1)、设置缓存pendingBatch,初始化为空;为缓存pendingBatch设置一个计时器timer,初始化为0,当缓存清空时,启动计时器;
(6.2)、定义区块打包法;
将缓存中的所有交易打包并作为返回值写入到区块的数据域,使用哈希算法对区块的数据域输出定长数组,再将该数组的长度值作为当前区块的哈希值,在DataHash字段中进行填充,从而生成包含多条交易消息的一个区块;区块打包完成后,将打包后的区块转发给mainNode;
(6.3)、将预处理后的交易消息Tx通过DHT的一致性哈希算法路由到指定的DHT节点,判断计时器timer的值是否到达预设的超时时间BatchTimeout,如果达到,则按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);否则,进入步骤(6.4);
(6.4)、判断当前的交易消息Tx的大小messageSize是否大于区块打包的推荐容量PreferredSize,如果messageSize>PreferredSize,则进一步判断缓存是否为空,如果缓存为空,则再按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);如果缓存不为空,则按照步骤(6.2)所述方法将缓存中的所有交易打包为一个区块转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);如果不满足messageSize>PreferredSize,进入步骤(6.5);
(6.5)、判断当前的交易消息Tx的大小messageSize与当前缓存大小pendingBatchSizeBytes之和是否大于最大容量PreferredMaxSize,如果超过了最大容量,则按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);否则,进入步骤(6.6);
(6.6)、将当前的交易消息Tx存放到缓存pendingBatch中,新的缓存大小pendingBatchSizeBytes为未加入当前交易的缓存大小pendingBatchSizeBytes与当前的普通交易Tx的大小messageSizeBytes之和;然后判断缓存中的交易消息Tx的个数是否超过区块容纳交易最大数量MaxMessageCount,如果超过,执行步骤(6.2),按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);
(7)、mainNode依次对接收的区块进行更新;
(7.1)、mainNode节点收到区块后,读取该区块的Number字段和PreviousHash字段,再通过mainNode本地的blockNum和lastBlockHash字段对该区块的区块高度Number与上一个区块的哈希值PreviousHash进行赋值操作,然后进入步骤(7.2);
(7.2)、mainNode更新本地的lastBlockHash和blockNum字段,其中,lastBlockHash更新为该区块的哈希值DataHash,blockNum更为blockNum加1;从而完成该区块的更新操作;
(7.3)、当mainNode收到下一个区块时,循环执行步骤(7.1)-(7.2),直到最后一个区块更新完成,然后进入步骤(8);
(8)、mainNode将更新完毕的区块写入本地账本,最终将分布式独立的区块形成可追溯的区块链。
本发明的发明目的是这样实现的:
本发明一种区块链的可扩展共识方法,通过DHT路由思想,将所有的排序节点映射到哈希环,利用一致性哈希算法将交易Tx路由到指定区块,以此实现区块的并行化出块。同时,为了保证并行化出块的区块顺序一致性。在哈希环中排序节点选举一个主节点mainNode负责将所有区块编号。使用单个节点mainNode对区块进行排序保证分布式出块的区块顺序一致性。使得区块打包具有非常好的扩展性和灵活性,符合当今企业级区块链应用的需求。
同时,本发明一种区块链的可扩展共识方法还具有以下有益效果:
(1)、本发明基于DHT-Orderer中的一致性哈希原理,主节点mainNode由哈希环上的资源Key=0所路由到的节点当选,这是由算法本身所天然达成的共识,不需要多余的选举与心跳机制。并且主节点可动态退出,退出后的主节点由下一个Key=0所映射的节点当选。
(2)、DHT算法通过定位收到的交易信息所属节点,在该节点进行打包操作,真正实现了节点的分布式出块。并且在所实现的DHT-Orderer中,支持节点动态加入和退出,系统容错性增强。
(3)、本发明基于DHT的一致性哈希理论,所有交易和排序节点都可通过哈希算法映射环中,交易通过DHT算法路由到环中具体的节点进行处理。因此,环中所有的排序节点均可独立进行打包出块工作,实现多节点并行化出块。
附图说明
图1是本发明一种区块链的可扩展共识方法流程图;
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
在本实施例中,如图1所示,一种区块链的可扩展共识方法,包括以下步骤:
S1、启动DHT-Orderer服务并初始化配置;
在本实施例中,系统命名为DHT-Orderer,启动该服务,通过写入配置文件方式对区块推荐容量PreferredSize和区块最大容量PreferredMaxSize、区块容纳交易最大数量MaxMessageCount、区块超时时间BatchTimeout进行初始化;
S2、定义区块结构并初始化;
区块结构分为:区块头与数据域;区块头又包含PreviousHash、Number、DataHash三个字段,其中,PreviousHash用于记录了当前区块在区块链中的上一个区块的哈希值,初始化为空;区块高度Number用于记录当前区块在区块链中的顺序,初始化为0;DataHash记录了本区块在区块链中的哈希值,初始化为空;数据域用于记录该区块包含的所有的交易消息,初始化为空;
S3、选举mainNode节点;
在本实施例中,将参与排序的DHT节点加入DHT-Orderer的哈希环中,每个DHT节点通过哈希算法形成一个二进制数组hash_node,每个DHT节点通过hash_node在环中一一对应;
通过一致性哈希算法定位DHT环中key=0的后继节点,将该节点选举为mainNode节点;mainNode节点包含lastBlockHash与blockNum两个字段,其中,lastBlockHash字段赋值为区块链中最后一个区块的哈希值DataHash,blockNum字段赋值为区块链中最后一个区块的区块高度Number;
S4、消息预处理;
客户端发起交易消息Tx,通过哈希算法得到交易的哈希值hash_tx;DHT-Orderer接收交易消息Tx,然后通过过滤器进行过滤处理,将交易消息Tx超过区块最大容量PreferredMaxSize过滤掉,交易消息Tx通过哈希算法映射到由排序节点组成的哈希环上,进入步骤S5;
S5、交易路由;
每个哈希环中的排序节点本地维护一张路由表,记录一部分哈希值的后继节点,当本地的排序节点接收到交易消息Tx时,通过查询本地路由表寻找交易的哈希值hash_tx的后继节点,如交易消息Tx的后继节点为本地节点进入步骤S5.1,否则,进入步骤S5.2。
S5.1、在本地节点进行区块打包;
S5.2、查询本地节点的路由表中是否记录了交易消息Tx的后继节点。如有,将交易消息Tx通过路由表记录的节点地址转发给该后继节点进行区块打包工作。如没有,进入步骤S5.3;
S5.3、在本地的路由表中找到距离后继节点最近的节点CloseNode,远程连接该节点,返回步骤S5.2查询CloseNode的路由表中是否记录后继节点。直到找到该后继节点。
S6、对交易消息Tx进行区块打包;
S6.1、设置缓存pendingBatch,初始化为空;为缓存pendingBatch设置一个计时器timer,初始化为0,当缓存清空时,启动计时器;
S6.2、定义区块打包法;
将缓存中的所有交易打包并作为返回值写入到区块的数据域,使用哈希算法对区块的数据域输出定长数组,再将该数组的长度值作为当前区块的哈希值,在DataHash字段中进行填充。生成包含多条交易消息的一个区块。区块打包完成,将打包后的区块转发给mainNode;
S6.3、将预处理后的交易消息Tx通过DHT的一致性哈希算法路由到指定的DHT节点,判断计时器timer的值是否到达预设的超时时间BatchTimeout,如果达到,则按照步骤S6.2所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤S7;否则,进入步骤S6.4;
S6.4、判断当前的交易消息Tx的大小messageSize是否大于区块打包的推荐容量PreferredSize,如果messageSize>PreferredSize,则进一步判断缓存是否为空,如果缓存为空,则再按照步骤S6.2所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤S7;如果缓存不为空,则按照步骤(6.2)所述方法,先将缓存中的所有交易打包为一个区块,再将当前的交易消息Tx打包成另一个区块,最后将两个区块转发给mainNode,,然后重置计时器,清空缓存,并跳转至步骤S7;如果不满足messageSize>PreferredSize,进入步骤S6.5;
S6.5、判断当前的交易消息Tx的大小messageSize与当前缓存大小pendingBatchSizeBytes之和是否大于最大容量PreferredMaxSize,如果超过了最大容量,则按照步骤S62所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤S8;否则,进入步骤S6.6;
S6.6、将当前的交易消息Tx存放到缓存pendingBatch中,新的缓存大小pendingBatchSizeBytes为未加入当前交易的缓存大小pendingBatchSizeBytes与当前的交易消息Tx的大小messageSizeBytes之和;然后判断缓存中的交易消息Tx的个数是否超过区块容纳交易最大数量MaxMessageCount,如果超过,执行步骤S6.2,按照步骤S6.2所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤S8;
S7、mainNode依次对接收的区块进行更新;
S7.1、mainNode节点收到区块后,读取该区块的Number字段和PreviousHash字段,再通过mainNode本地的blockNum和lastBlockHash字段对该区块的区块高度Number与上一个区块的哈希值PreviousHash进行赋值操作,然后进入步骤S7.2;
S7.2、mainNode更新本地的lastBlockHash和blockNum字段,其中,lastBlockHash更新为该区块的哈希值DataHash,blockNum更为blockNum加1;从而完成该区块的更新操作;
S7.3、当mainNode收到下一个区块时,循环执行步骤S7.1-S7.2,直到最后一个区块更新完成,然后进入步骤S8;
S8、mainNode将更新完毕的区块写入本地账本,最终将分布式独立的区块形成可追溯的区块链。
Claims (1)
1.一种区块链的可扩展共识方法,其特征在于,包括以下步骤:
(1)、启动DHT-Orderer服务并初始化配置;
启动DHT-Orderer服务,将参与排序的DHT节点通过哈希算法形成一个二进制数组hash_node,每个DHT节点通过hash_node加入到DHT-Orderer的哈希环中;
通过写入配置文件方式对区块推荐容量PreferredSize和区块最大容量PreferredMaxSize、区块容纳交易最大数量MaxMessageCount、区块超时时间BatchTimeout进行初始化;
(2)、定义区块结构并初始化;
区块结构分为:区块头与数据域;区块头又包含PreviousHash、Number、DataHash三个字段,其中,PreviousHash用于记录了当前区块在区块链中的上一个区块的哈希值,初始化为空;区块高度Number用于记录当前区块在区块链中的顺序,初始化为0;DataHash记录了本区块在区块链中的哈希值,初始化为空;数据域用于记录该区块包含的所有的交易消息,初始化为空;
(3)、选举mainNode节点;
通过一致性哈希算法定位DHT环中key=0的后继节点,将该节点选举为主节点mainNode;mainNode节点包含lastBlockHash与blockNum两个字段,其中,lastBlockHash字段赋值为区块链中最后一个区块的哈希值DataHash,blockNum字段赋值为区块链中最后一个区块的区块高度Number;
(4)、消息预处理;
接收从客户端发来的交易消息Tx,先通过过滤器进行过滤处理,将交易消息Tx超过区块最大容量PreferredMaxSize过滤掉,再进入步骤(5);
(5)、交易路由;
经过预处理后的交易消息Tx通过哈希算法映射到由排序节点组成的哈希环,通过查询本地排序节点的路由表,得到该交易的后继节点的地址,如果本地节点未记录后继节点地址,在本地的路由表中找到距离后继节点最近的节点CloseNode,远程连接该节点,再通过迭代方式查询CloseNode的路由表中的后继节点,并记录后继节点地址,再进入步骤(6);
(6)、通过步骤(5)得到的地址,将交易消息Tx转发给相应的排序节点,并对交易消息Tx进行区块打包;
(6.1)、设置缓存pendingBatch,初始化为空;为缓存pendingBatch设置一个计时器timer,初始化为0,当缓存清空时,启动计时器;
(6.2)、定义区块打包法;
将缓存中的所有交易打包并作为返回值写入到区块的数据域,使用哈希算法对区块的数据域输出定长数组,再将该数组的长度值作为当前区块的哈希值,在DataHash字段中进行填充,从而生成包含多条交易消息的一个区块;区块打包完成后,将打包后的区块转发给mainNode;
(6.3)、将预处理后的交易消息Tx通过DHT的一致性哈希算法路由到指定的DHT节点,判断计时器timer的值是否到达预设的超时时间BatchTimeout,如果达到,则按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);否则,进入步骤(6.4);
(6.4)、判断当前的交易Tx的大小messageSize是否大于区块打包的推荐容量PreferredSize,如果messageSize>PreferredSize,则进一步判断缓存是否为空,如果缓存为空,则再按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);如果缓存不为空,则按照步骤(6.2)所述方法将缓存中的所有交易打包为一个区块转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);如果不满足messageSize>PreferredSize,进入步骤(6.5);
(6.5)、判断当前的交易消息Tx的大小messageSize与当前缓存大小pendingBatchSizeBytes之和是否大于最大容量PreferredMaxSize,如果超过了最大容量,则按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);否则,进入步骤(6.6);
(6.6)、将当前的交易消息Tx存放到缓存pendingBatch中,新的缓存大小pendingBatchSizeBytes为未加入当前交易的缓存大小pendingBatchSizeBytes与当前的普通交易Tx的大小messageSizeBytes之和;然后判断缓存中的交易消息Tx的个数是否超过区块容纳交易最大数量MaxMessageCount,如果超过,执行步骤(6.2),按照步骤(6.2)所述方法进行区块打包并转发给mainNode,然后重置计时器,清空缓存,并跳转至步骤(7);
(7)、mainNode依次对接收的区块进行更新;
(7.1)、mainNode节点收到区块后,读取该区块的Number字段和PreviousHash字段,再通过mainNode本地的blockNum和lastBlockHash字段对该区块的区块高度Number与上一个区块的哈希值PreviousHash进行赋值操作,然后进入步骤(7.2);
(7.2)、mainNode更新本地的lastBlockHash和blockNum字段,其中,lastBlockHash更新为该区块的哈希值DataHash,blockNum更为blockNum加1;从而完成该区块的更新操作;
(7.3)、当mainNode收到下一个区块时,循环执行步骤(7.1)-(7.2),直到最后一个区块更新完成,然后进入步骤(8);
(8)、mainNode将更新完毕的区块写入本地账本,最终将分布式独立的区块形成可追溯的区块链。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110774096.7A CN113535849B (zh) | 2021-07-08 | 2021-07-08 | 一种区块链的可扩展共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110774096.7A CN113535849B (zh) | 2021-07-08 | 2021-07-08 | 一种区块链的可扩展共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535849A CN113535849A (zh) | 2021-10-22 |
CN113535849B true CN113535849B (zh) | 2023-03-07 |
Family
ID=78127191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110774096.7A Active CN113535849B (zh) | 2021-07-08 | 2021-07-08 | 一种区块链的可扩展共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535849B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737375A (zh) * | 2018-04-13 | 2018-11-02 | 中山大学 | 一种区块链共识方法及系统 |
WO2018234988A1 (en) * | 2017-06-20 | 2018-12-27 | nChain Holdings Limited | METHODS AND SYSTEMS FOR A COHERENT DISTRIBUTED TRANSACTION BASIN IN A BLOCK CHAIN |
CN109842606A (zh) * | 2018-02-24 | 2019-06-04 | 中国科学院计算技术研究所 | 基于一致性哈希算法的区块链共识算法和系统 |
CN110990497A (zh) * | 2019-12-19 | 2020-04-10 | 上海优扬新媒信息技术有限公司 | 一种基于区块链的信息处理方法及装置、设备、存储介质 |
CN111222984A (zh) * | 2018-11-26 | 2020-06-02 | 厦门本能管家科技有限公司 | 一种用于区块链分布式交易同步处理方法及系统 |
CN111242620A (zh) * | 2020-01-15 | 2020-06-05 | 阳光易购(湖南)科技有限公司 | 区块链交易系统的数据缓存及查询方法、终端及存储介质 |
CN111311414A (zh) * | 2020-02-27 | 2020-06-19 | 杭州云象网络技术有限公司 | 一种基于一致性哈希算法的区块链多方共识方法 |
WO2020191935A1 (zh) * | 2019-03-22 | 2020-10-01 | 深圳市网心科技有限公司 | 一种区块链跨链通信方法、系统、电子设备及存储介质 |
WO2020197514A1 (en) * | 2019-03-27 | 2020-10-01 | Koc Universitesi | A distributed hash table based blockchain architecture for resource constrained environments |
CN111770149A (zh) * | 2020-06-23 | 2020-10-13 | 江苏荣泽信息科技股份有限公司 | 基于分布式存储的新型联盟链 |
CN112073538A (zh) * | 2020-11-10 | 2020-12-11 | 南京可信区块链与算法经济研究院有限公司 | 一种在区块链中实现多节点交易并行执行的方法及系统 |
WO2021003985A1 (zh) * | 2019-07-08 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 区块链数据归档存储方法、装置、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110741372A (zh) * | 2017-06-07 | 2020-01-31 | 区块链控股有限公司 | 用于管理区块链网络上的交易的计算机实现的系统和方法 |
US10956377B2 (en) * | 2018-07-12 | 2021-03-23 | EMC IP Holding Company LLC | Decentralized data management via geographic location-based consensus protocol |
-
2021
- 2021-07-08 CN CN202110774096.7A patent/CN113535849B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018234988A1 (en) * | 2017-06-20 | 2018-12-27 | nChain Holdings Limited | METHODS AND SYSTEMS FOR A COHERENT DISTRIBUTED TRANSACTION BASIN IN A BLOCK CHAIN |
CN109842606A (zh) * | 2018-02-24 | 2019-06-04 | 中国科学院计算技术研究所 | 基于一致性哈希算法的区块链共识算法和系统 |
CN108737375A (zh) * | 2018-04-13 | 2018-11-02 | 中山大学 | 一种区块链共识方法及系统 |
CN111222984A (zh) * | 2018-11-26 | 2020-06-02 | 厦门本能管家科技有限公司 | 一种用于区块链分布式交易同步处理方法及系统 |
WO2020191935A1 (zh) * | 2019-03-22 | 2020-10-01 | 深圳市网心科技有限公司 | 一种区块链跨链通信方法、系统、电子设备及存储介质 |
WO2020197514A1 (en) * | 2019-03-27 | 2020-10-01 | Koc Universitesi | A distributed hash table based blockchain architecture for resource constrained environments |
WO2021003985A1 (zh) * | 2019-07-08 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 区块链数据归档存储方法、装置、计算机设备和存储介质 |
CN110990497A (zh) * | 2019-12-19 | 2020-04-10 | 上海优扬新媒信息技术有限公司 | 一种基于区块链的信息处理方法及装置、设备、存储介质 |
CN111242620A (zh) * | 2020-01-15 | 2020-06-05 | 阳光易购(湖南)科技有限公司 | 区块链交易系统的数据缓存及查询方法、终端及存储介质 |
CN111311414A (zh) * | 2020-02-27 | 2020-06-19 | 杭州云象网络技术有限公司 | 一种基于一致性哈希算法的区块链多方共识方法 |
CN111770149A (zh) * | 2020-06-23 | 2020-10-13 | 江苏荣泽信息科技股份有限公司 | 基于分布式存储的新型联盟链 |
CN112073538A (zh) * | 2020-11-10 | 2020-12-11 | 南京可信区块链与算法经济研究院有限公司 | 一种在区块链中实现多节点交易并行执行的方法及系统 |
Non-Patent Citations (4)
Title |
---|
BitXHub:基于侧链中继的异构区块链互操作平台;叶少杰等;《计算机科学》(第06期);第300-308页 * |
DHT应用于区块链;sun.shuo;《https://blog.csdn.net/gantleman/article/details/77747063》;全文 * |
基于联盟区块链的放射源溯源数据存储优化;郭子贤等;《计算机仿真》(第06期);第90-94页 * |
面向跨域可信的泛中心化区块链DNS架构研究;雷凯等;《网络与信息安全学报》(第02期);第23-38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113535849A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110213352B (zh) | 名字空间统一的分散自治存储资源聚合方法 | |
CN104011701B (zh) | 内容传送网络系统和能够在内容传送网络中操作的方法 | |
US9367600B2 (en) | Policy-based storage structure distribution | |
CN101102250B (zh) | 用于自组织网络的分布式散列机制 | |
CN108280080A (zh) | 一种数据同步方法、装置以及电子设备 | |
CN111770149B (zh) | 基于分布式存储的新型联盟链系统 | |
US10712964B2 (en) | Pre-forking replicas for efficient scaling of a distributed data storage system | |
JP2004334858A (ja) | クライアント/サーバ環境における同期を容易にするシステムおよび方法 | |
JP2010134518A (ja) | 計算機システムの構成管理方法、計算機システム及び構成管理プログラム | |
CN113079079A (zh) | 消息传输方法及装置 | |
CN111935000B (zh) | 消息传输方法及装置 | |
CN109815294A (zh) | 一种无主节点分布并行数据存储方法和系统 | |
CN112416908A (zh) | 基于Handle标识解析前缀分库存储数据的方法及系统 | |
CA3030250A1 (en) | File storage method and apparatus for blockchain network | |
CN112232619A (zh) | 联盟链的区块出块和定序方法、节点及区块链网络系统 | |
CN113411376A (zh) | 基于区块链分片存储的传感器数据处理方法及装置 | |
CN113535849B (zh) | 一种区块链的可扩展共识方法 | |
CN112632116B (zh) | 一种k-db数据库多节点集群调度的方法、系统、设备及介质 | |
CN117348804A (zh) | 面向数联网监管系统的分层存储方法、系统及存储介质 | |
CN112069259A (zh) | 一种基于区块链的多云环境数据存储系统及方法 | |
US20200210231A1 (en) | High availability cluster management of computing nodes | |
CN113254538B (zh) | 在区块链中执行交易的方法和区块链节点 | |
CN114116899A (zh) | 一种基于区块链的卫星集群分布式数据安全存储方法 | |
CN110597809B (zh) | 一种支持树状数据结构的一致性算法系统及其实现方法 | |
CN111161069B (zh) | 区块链系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |