区块链的打包存储方法技术

技术编号:14861898 阅读:42 留言:0更新日期:2017-03-19 15:03
区块链的打包存储方法,一个公钥地址有多笔支出时,必须依次验证余额是否足够,这里将支出地址按地址的区间分类,可用不同的线程或进程来分别校验交易,可确保同一支出地址不超过余额,每个地址区间收款增加的余额再传送到相应的地址区间所在的服务器,再一次统计最后的余额。存储数据时,为克服写盘速度的限制,可循环依次向多台服务器写盘,可以将区块链区块高度和服务器的个数做除法取模映射,或将区块高度与服务器的对应关系作为元数据,交给专门的元数据服务器来管理,访问数据时,首先访问元数据服务器,获得区块高度对应的服务器,设置每次写盘的数据量,可以使每次写盘结束的时刻不大于下次轮到写盘的时刻。

【技术实现步骤摘要】

本专利技术涉及互联网
,特别是区块链技术。
技术介绍
现有以比特币为主的区块链技术方案,都是用单台机器来处理余额校验和打包,受带宽和硬盘读写的限制,大规模的并发量受到限制。
技术实现思路
为了克服上述现有技术的不足,本专利技术区块链的打包存储方法,将交易记录分类,可使交易校验、余额校验、打包存储都可以分散到多台服务器上,提高了并发量。本专利技术所采用的技术方案是:1.同一区块中,一个公钥地址有多笔支出时,必须依次验证余额是否足够,这里将支出地址按地址的区间分类,可用不同的线程或进程来分别校验交易,可确保同一支出地址不超过余额,步骤如下:步骤S1:打包服务器接收交易记录,根据地址区间按序分段(如A1、A2、A3、A4及对应的服务器),将支出地址按上述地址区间分段放入相应的不同线程或不同进程或不同服务器;步骤S2:对同一分段的支出地址再用多线程进行有效性校验,校验每笔交易是否能用公钥解开签名,并将解开的哈希值与交易内容的哈希值对比,如果一致就通过真实性校验;步骤S3:通过真实性校验的交易后,依次计算交易中每个支出地址扣除所有支出金额后支付地址的余额,放到集合B中,超过余额的交易放到一个等待集合C中待处理或作废,接收地址的增加金额也放到一个集合D中;步骤S4:将本机多线程或多进程的计算结果(集合B和D)合并到本机一个线程中计算累计的帐户地址的余额,分三种情况:(1)若某地址在本区块既有接收又有支出交易的(集合B和D同时有):接收地址的余额=累计本区块接收地址的增加金额+本区块中B中的该地址的余额(2)若某地址在本区块只有接收没有支出交易的(只在集合D中有,B中没有):接收地址的余额=累计本区块接收地址的增加金额+最近历史区块的该地址的余额(3)若某地址在本区块只有支出交易没有接收交易的(只在集合B中有,D中没有):支出地址的余额=本区块中B中的该地址的余额步骤S5:将S4计算好的余额发送到地址分类(如A1、A2、A3、A4等)相应的线程或进程或服务器中(步骤S3相应的线程或进程中);步骤S6:各线程或进程分别按分段交易哈希值排序生成梅克尔树,计算分段梅克尔树根哈希值,若和其他对应的默克尔树根哈希值一致,则存储到硬盘;步骤S7:将步骤S6生成的梅克尔树根哈希值依次再建一个梅克尔树,计算本区块的梅克尔树根哈希值。在步骤S5中,根据地址区间按序分段的交易是在不同服务器处理的情况下,可将收款方的增加余额的信息进行压缩,并完整地发送到相应的服务器上(按地址分类),每台服务器也可以向其他服务器请求相应地址区间的余额信息压缩包。在步骤S6,将交易排序后构造梅克尔树打包,将本地址分段区间的地址余额信息集合打包,打包信息可以存储在本地,也可以传送给相应的服务器保存。在步骤S6中,将交易排序后构造梅克尔树的根哈希值与其他对应的根哈希值对比,若与达成共识的分段区块梅克尔根哈希值是不一致的,则下载相应的部分数据。在步骤S7中,将本服务器当前区块的根哈希值与其他服务器对应区块的根哈希值对比,若与达成共识的区块根哈希值是不一致的,则对比其下分段区块的根哈希值,将有差异的分段区块同步更新即可。在步骤S6中,在存储数据时,为克服写盘速度的限制,可循环依次向多台服务器写盘,可以将区块链区块高度和服务器的个数做除法取模映射,或将区块高度与服务器的对应关系作为元数据,交给专门的元数据服务器来管理,访问数据时,首先访问元数据服务器,获得区块高度对应的服务器,设置每次写盘的数据量,可以使每次写盘结束的时刻不大于下次轮到写盘的时刻。与现有技术相比,本专利技术的有益效果是本专利技术的区块链的打包方法可将在一台服务器上处理的交易真实性校验、余额校验统计、打包存储可以分散到多台服务器上,可大幅度提高了交易的并发数量,加快处理速度,减少因交易拥堵导致的延时或错误。附图说明图1为将支出地址按地址区间分段放入相应的不同线程或不同进程或不同服务器分别打包,并汇总余额的图。实施例1,参照图1:区块链的打包存储方法,同一区块中,一个公钥地址有多笔支出时,必须依次验证公钥地址余额是否足够,这里将支出地址按地址的区间分4类(00**、01**、10**、11**),可用独立的线程或进程或服务器分别校验交易,可确保同一支出地址不超过余额,步骤如下:步骤S1:打包服务器接收交易记录,根据地址区间按序分段(如00**、01**、10**、11**),对应A1、A2、A3、A4服务器,将支出地址按上述地址区间分段放入相应的不同线程或不同进程或不同服务器;步骤S2:对同一分段的支出地址再用多线程进行有效性校验,校验每笔交易是否能用公钥解开签名,并将解开的哈希值与交易内容的哈希值对比,如果一致就通过真实性校验;步骤S3:通过真实性校验的交易后,依次计算交易中每个支出地址扣除所有支出金额后支付地址的余额,放到集合B中,超过余额的交易放到一个等待集合C中待处理或作废,接收地址的增加金额也放到一个集合D中;步骤S4:将本机多线程或多进程的计算结果(集合B和D)合并到本机一个线程中计算累计的帐户地址的余额,分三种情况:(1)若某地址在本区块既有接收又有支出交易的(集合B和D同时有):接收地址的余额=累计本区块接收地址的增加金额+本区块中B中的该地址的余额(2)若某地址在本区块只有接收没有支出交易的(只在集合D中有,B中没有):接收地址的余额=累计本区块接收地址的增加金额+最近历史区块的该地址的余额(3)若某地址在本区块只有支出交易没有接收交易的(只在集合B中有,D中没有):支出地址的余额=本区块中B中的该地址的余额步骤S5:将S4计算好的余额发送到地址分类(如A1、A2、A3、A4等)相应的线程或进程或服务器中(步骤S3相应的线程或进程中);步骤S6:各线程或进程分别按分段交易哈希值排序生成梅克尔树,计算分段梅克尔树根哈希值,若和其他对应的默克尔树根哈希值一致,则存储到硬盘;步骤S7:将步骤S6生成的梅克尔树根哈希值依次再建一个梅克尔树,计算本区块的梅克尔树根哈希值。在步骤S5中,根据地址区间按序分段的交易是在不同服务器处理的情况下,可将收款方的增加余额的信息进行压缩,并完整地发送到相应的服务器上(按地址分类),每台服务器也可以向其他服务器请求相应地址区间的余额信息压缩包。在步骤S6,将交易排序后构造梅克尔树打包,将本地址分段区间的地址余额信息集合打包,打包信息可以存储在本地,也可以传送给相应的服务器保存。在步骤S6中,将交易本文档来自技高网...

【技术保护点】
区块链的打包存储方法,其特征在于,同一区块中,一个公钥地址有多笔支出时,必须依次验证余额是否足够,这里将支出地址按地址的区间分类,可用不同的线程或进程来分别校验交易,可确保同一支出地址不超过余额,步骤如下:步骤S1:打包服务器接收交易记录,根据地址区间按序分段(如A1、A2、A3、A4及对应的服务器),将支出地址按上述地址区间分段放入相应的不同线程或不同进程或不同服务器;步骤S2:对同一分段的支出地址再用多线程进行有效性校验,校验每笔交易是否能用公钥解开签名,并将解开的哈希值与交易内容的哈希值对比,如果一致就通过真实性校验;步骤S3:通过真实性校验的交易后,依次计算交易中每个支出地址扣除所有支出金额后支付地址的余额,放到集合B中,超过余额的交易放到一个等待集合C中待处理或作废,接收地址的增加金额也放到一个集合D中;步骤S4:将本机多线程或多进程的计算结果(集合B和D)合并到本机一个线程中计算累计的帐户地址的余额,分三种情况:(1)若某地址在本区块既有接收又有支出交易的(集合B和D同时有):接收地址的余额=累计本区块接收地址的增加金额+本区块中B中的该地址的余额(2)若某地址在本区块只有接收没有支出交易的(只在集合D中有,B中没有):接收地址的余额=累计本区块接收地址的增加金额+最近历史区块的该地址的余额(3)若某地址在本区块只有支出交易没有接收交易的(只在集合B中有,D中没有):支出地址的余额=本区块中B中的该地址的余额步骤S5:将S4计算好的余额发送到地址分类(如A1、A2、A3、A4等)相应的线程或进程或服务器中(步骤S3相应的线程或进程中);步骤S6:各线程或进程分别按分段交易哈希值排序生成梅克尔树,计算分段梅克尔树根哈希值,若和其他对应的默克尔树根哈希值一致,则存储到硬盘;步骤S7:将步骤S6生成的梅克尔树根哈希值依次再建一个梅克尔树,计算本区块的梅克尔树根哈希值。...

【技术特征摘要】
1.区块链的打包存储方法,其特征在于,同一区块中,一个公钥地址有多笔支出时,必
须依次验证余额是否足够,这里将支出地址按地址的区间分类,可用不同的线程或进程来
分别校验交易,可确保同一支出地址不超过余额,步骤如下:
步骤S1:打包服务器接收交易记录,根据地址区间按序分段(如A1、A2、A3、A4及对应的
服务器),将支出地址按上述地址区间分段放入相应的不同线程或不同进程或不同服务器;
步骤S2:对同一分段的支出地址再用多线程进行有效性校验,校验每笔交易是否能用
公钥解开签名,并将解开的哈希值与交易内容的哈希值对比,如果一致就通过真实性校验;
步骤S3:通过真实性校验的交易后,依次计算交易中每个支出地址扣除所有支出金额
后支付地址的余额,放到集合B中,超过余额的交易放到一个等待集合C中待处理或作废,接
收地址的增加金额也放到一个集合D中;
步骤S4:将本机多线程或多进程的计算结果(集合B和D)合并到本机一个线程中计算累
计的帐户地址的余额,分三种情况:
(1)若某地址在本区块既有接收又有支出交易的(集合B和D同时有):
接收地址的余额=累计本区块接收地址的增加金额+本区块中B中的该地址的余额
(2)若某地址在本区块只有接收没有支出交易的(只在集合D中有,B中没有):
接收地址的余额=累计本区块接收地址的增加金额+最近历史区块的该地址的余额
(3)若某地址在本区块只有支出交易没有接收交易的(只在集合B中有,D中没有):
支出地址的余额=本区块中B中的该地址的余额
步骤S5:将S4计算好的余额发送到地址分类(如A1、A2、A3、A4等)相应的线程或进程或
服务器中(步骤S3相应的线程或进程中);
步骤S6:各线程或进程分别按分段交易哈希值排序生成梅克尔树,计算分段...

【专利技术属性】
技术研发人员:吴思进王志文
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1