一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种区块链的可扩展共识方法与流程

2021-10-24 06:25:00 来源:中国专利 TAG:区块 共识 扩展 方法

技术特征:
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将更新完毕的区块写入本地账本,最终将分布式独立的区块形成可追溯的区块链。

技术总结
本发明公开了一种区块链的可扩展共识方法,通过DHT路由思想,将所有的排序节点映射到哈希环,利用一致性哈希算法将交易Tx路由到指定区块,以此实现区块的并行化出块。同时,为了保证并行化出块的区块顺序一致性。在哈希环中排序节点选举一个主节点mainNode负责将所有区块编号。使用单个节点mainNode对区块进行排序保证分布式出块的区块顺序一致性。使得区块打包具有非常好的扩展性和灵活性,符合当今企业级区块链应用的需求。业级区块链应用的需求。业级区块链应用的需求。


技术研发人员:李若欣 薛瑞尼 王诏贤 宋泽欣 唐大贺 杨中宇
受保护的技术使用者:电子科技大学
技术研发日:2021.07.08
技术公布日:2021/10/23
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜