2020-11-03

区块链节点数量与区块链网络计算、通讯、存储能力成正比(二)

背景技术
随着比特币的出现,区块链技术被越来越多的认识,区块链中的挖矿尤其受到很多技术迷的青睐,现有的区块链网络中,挖矿、打造区块、对数据进行签名验证均是单进程的,打造区块(对一定时间内对交易进行扎帐,简称打块)速度慢,时间成本较高,而且很多交易数据没法同时进行处理,而且,利用多核的计算机单次处理这些数据,浪费了计算资源,但是,无事务环境下同时进行多个交易数据的处理会出现差错,交易数据会出现错乱。发明内容[0003]本发明所要解决的技术问题在于提供一种打块速度快,效率高,有效利用计算机的多核计算资源的一种多进程打块方法及系统。[0004]为解决上述技术问题,本发明的技术解决方案是:[0005]一种多进程打块方法,包括如下步骤:0006启动系统,向系统输入交易数据,将交易数据进行分组;0007确定系统CPU核心数量确定交易数据最大分组,CPU核心数量与数据最大分组相同;0008采用求模的方式,将前面的分组数据依次映射到CPU组上,CPU组数量与数据最大分组相同;0009CPU对CPU组上的交易数据进行签名、验证,完成交易;0010将CPU组上的交易结算的结果通过权益汇总的形式输出;0011系统生成权益汇总记录;[0012]进一步的,步骤(4)完成交易后立即更新权益汇总记录,输出新一轮的CPU组上的交易结算结果。[0013]进一步的,步骤(1)中交易数据分组的方法是通过交易数据的交易类型来实现分组。[0014]进一步的,所述的按交易类型分组的方法具体是相同组里的交易按交易双方的关联性进行递归搜索,将所有与双方有关联关系的分到同组。[0015]进一步的,步骤(4)中对交易数据验证的方法是通过验证交易数据的公钥。[0016]一种多进程打块系统,包括:[0017]数据接收模块:一种接收交易数据的存储器;[0018]与数据接收模块连接的分组模块:对交易数据进行分组的处理器;[0019]与分组模块连接的映射模块:确定系统CPU核心数量分组数据依次映射到CPU组上的处理器;[0020]与映射模块连接的交易模块:是对交易数据进行签名、验证的处理器;[0021]与交易模块相连接的输出模块:是将交易数据通过权益汇总的形式输出并记录的处理器;[0022]与输出模块相连接的显示器:显示系统生成权益汇总数据的显示器;[0023]所述的数据接收模块、分组模块、映射模块、交易模块、输出模块与显示器之间采用顺序连接。[0024]进一步的,所述的分组模块对交易数据分组的方式是通过交易类型来分组。[0025]进一步的,所述的交易模块对交易数据识别的方法是通过验证数据的公钥。[0026]本发明的有益效果是:[0027]1、本发明通过交易分组完成,利用CPU核心数量确定最大分组进行多进程打块,提高了打块的效率,缩短了打块的时间,有效利用计算机的多核计算资源;[0028]2、本发明通过权益汇总的形式输出数据,使得每一笔计算的结果体现在汇总结果上,而不依赖任何一笔历史交易,有效解决了多组交易数据同时处理时出现的数据错乱的问题。附图说明[0029]图1是本发明对应方法的流程图;[0030]图2是本发明对应系统的结构框图;具体实施方式[0031]下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。[0032]如图1所示,一种多进程打块方法,包括如下步骤:0033启动系统,向系统输入交易数据,将交易数据进行分组,交易数据是人们日常生活中通过区块链来完成交易的数据,分组的方法是通过交易数据的交易类型来实现分组,不同类型的数据放在不同的组里,例如:对于个人而言,支出和收入就是两种不同的交易类型,这样就可以将支出的交易数据和收入的交易数据分成两组;但是,当数据非常庞大,交易类型非常复杂时,利用普通的分组会使得每组的数据过于庞大,不利于后续平均分配CPU多核的计算资源,该问题的解决方法是对于相同组里的交易按交易双方的关联性进行递归搜索,将所有与双方有关联关系的分到同组,例如,这笔交易是张三的与李四的交易,那么,当数据庞大时,会通过递归搜索将交易数据中关于张三和李四的数据分到同组,这样就有效的解决了数据庞大浪费CPU多核的计算资源的问题,同时交易数据庞大造成的交易效率低的问题。0034确定系统CPU核心数量确定交易数据最大分组,CPU核心数量与数据最大分组相同,例如现在的四核的系统,那它的CPU核心数量就是四个,这样我们的数据最大分组也是四个,如果交易数据一共有100个交易分组,那么4个CPU核心,那么每个核心上将平均分配25个分组,进行交易计算;0035采用求模的方式,将前面的分组数据依次映射到CPU组上,CPU组数量与数据最大分组相同,数据映射到CPU组上后,CPU能对其进行处理;0036CPU对CPU组上的交易数据进行签名、验证,完成交易;此处对交易数据验证的方法是通过验证交易数据的公钥,交易数据都是在整个区块链中的,每笔交易都会有交易节点的公钥作为验证,确保该笔交易的来源。0037将CPU组上的交易结算的结果通过权益汇总的形式输出;权益汇总的设计原理类似于账户快照。因为区块链中记录的是权益历史,当一个人要消耗他的权益时,需要对历史数据进行计算,验证他是否拥有这么多权益。而引入权益汇总机制后,就是将这个人的权益提前计算好,那么他使用权益时,立即就知道他是否有这么多权益,而不用再去校验历史数据,这样可以有效的提高交易的效率,而且,权益汇总的形式输出数据解决了分组同时计算多个交易数据数据错乱的问题,因为利用了权益汇总的形式输出数据,就不用确定多组数据是否按顺序计算,因为每一笔计算的结果是体现在汇总结果上,而不依赖任何一笔历史交易的过程。0038系统生成权益汇总记录;权益汇总记录用于查询实时的数据输出。[0039]进一步的,为了实现实时权益汇总,步骤(4)完成交易后会立即更新权益汇总记录,再输出新一轮的CPU组上的交易结算结果,交易完成后立即更新权益汇总记录便可以确定上一轮的权益值,因此,对于下一轮的数据就可以实时汇总此刻的总量,这样就可以为上面的分组交易并行打块提供了支持,每一个组里都不需要依赖是否已经收到完整历史数据,只需要从权益汇总中获取最新状态即可,当出现先发交易迟到的问题时,只要剩余权益大于零,就可以并行、甚至乱序执行,极大的提高了交易的并发处理速度。[0040]如图2所示,本发明还公开了一种多进程打块系统,包括:[0041]数据接收模块100:一种接收交易数据的存储器,交易数据预先都是存储在该存储器中的;[0042]与数据接收模块连接的分组模块200:具体是一种对交易数据进行分组的处理器,对交易数据分组的方式是通过交易类型来分组。[0043]与分组模块连接的映射模块300:具体是确定系统CPU核心数量分组数据依次映射到CPU组上的处理器;[0044]与映射模块连接的交易模块400:是对交易数据进行签名、验证的处理器;交易模块对交易数据识别的方法是通过验证数据的公钥,此处的交易模块400就是对应系统的处理器,如果是四核就是对应每一核处理器。[0045]与交易模块相连接的输出模块500:是将交易数据通过权益汇总的形式输出并记录的处理器;[0046]与输出模块相连接的显示器600:显示系统生成权益汇总数据的显示器;[0047]所述的数据接收模块100、分组模块200、映射模块300、交易模块400、输出模块500与显示器600之间采用顺序连接。[0048]本发明所对应系统的使用方法是:[0049]数据接收模块100接收到交易数据后,将数据传输给分组模块200,分组模块200根据交易类型对交易数据进行分组,当数据非常庞大时,分组方式是相同组里的交易按交易双方的关联性进行递归搜索,将所有与双方有关联关系的分到同组,控制每组的数据量;分完组后,将数据传输到映射模块300,映射模块300将数据映射到CPU组上的,然后发送至交易模块400,交易模块400签名验证后,完成交易,发送至输出模块500,输出模块500将交易数据通过权益汇总的形式输出后显示在显示器600上,完成一次交易。为了记录实时数据,输出模块500会立即更新权益汇总记录,再输出新一轮的CPU组上的交易结算结果,交易完成后立即更新权益汇总记录便可以确定上一轮的权益值,因此,对于下一轮的数据就可以实时汇总此刻的总量,这样就可以为上面的分组交易并行打块提供了支持,每一个组里都不需要依赖是否已经收到完整历史数据,只需要从权益汇总中获取最新状态即可,当出现先发交易迟到的问题时,只要剩余权益大于零,就可以并行、甚至乱序执行,极大的提高了交易的并发处理速度。[0050]本发明通过交易分组完成,利用CPU核心数量确定最大分组进行多进程打块,提高了打块的效率,缩短了打块的时间,有效利用计算机的多核计算资源;通过权益汇总的形式输出数据,使得每一笔计算的结果体现在汇总结果上,而不依赖任何一笔历史交易,有效解决了多组交易数据同时处理时出现的数据错乱的问题。

看图说话

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探索真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值