1.本发明属于区块链技术领域,具体涉及一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法。
背景技术:2.区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础。而区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块,然而市面上各种的区块链仍存在各种各样的问题。
3.如授权公告号为cn112637297a所公开的基于区块链的数据分布式存储以及数据获取方法、装置,其虽然实现了配置有d2d协议的终端设备可以将数据迅速上传至区块链服务器后,区块链服务器利用区块链技术分布式存储于其他节点。同时,各个节点之间可以通过复用小区资源(d2d协议)直接进行通信,快速地、高效地获取分布式存储于其他节点上的数据,但是并未解决现有不能够有效的进行高性能的分布式存储数据、并且实现对数据进行时间戳的携带,进行有效的跨链通信和数据协同等的问题,为此我们提出一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法。
技术实现要素:4.本发明的目的在于提供一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法,包括有以下方法步骤:
6.s1、实现对区块数据信息进行上传,并且进行有效的存储:在进行数据信息的区块存储的时候,先向区块链中的某一个节点进行发送请求,通过共识算法完成快速确定,然后将数据文件分片,并且实现对每个数据分片进行加密和生成哈希,然后进行复制、分化和记录到分类账上;
7.s2、区块数据信息在进行链式连接:在s1中进行分片之后,将每一数据文件中的所有分片进行连接,通过地址时间戳进行支链链式连接,完成对同一个数据文件中的所有分片进行有机的数据连接,提高数据信息在进行检索时候的快速性;
8.s3、数据文件信息在进行上传的时候,携带时间戳:在数据文件信息进行上传的时候,在数据文件信息的区块头上进行携带时间戳,并且在改数据文件信息的每个分片的区块头上都携带相同的时间戳,并且在最终依照区块生成时间的先后顺序相连成区块链,并且再根据不同时间戳实现对数据文件信息进行分布式存储,每个独立节点又通过p2p网络建立联系,这样就为信息数据的记录形成了一个去中心化的分布式时间戳服务系统;
9.s4、通过分布式存储使得数据文件信息分别存储在所有的节点内:通过分布式存储使得数据文件信息分别存储在所有的节点内,继而使得数据文件信息在进行查询和存储的时候能够快速的进行,有效的提高数据协同的操作,并且在区块链中心处设有服务器,实现对区块链节点的所有信息进行接收和转发,减少节点在进行数据查询的时候,对所有节点进行访问的复杂程度;
10.s5、在不同区块链之间进行跨链通讯,完成有效的跨链通讯,提高数据信息的协同:在不同的区块链之间通过公证人机制、侧链、中继、哈希锁定、分布式私钥控制或者异构跨链pegzone实现跨链连接,使得不同区块链之间能够实现通讯连接。
11.较佳的,所述s1中的共识算法中包括有工作量证明、权益证明、委托权益证明和实用拜占庭容错算法,所述实用拜占庭容错算法一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作,将所有的副本组成的集合使用大写字母r表示,使用0到|r|-1的整数表示每一个副本,假设|r|=3f+1,这里f是有可能失效的副本的最大个数,尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。
12.较佳的,所述s1中的分片的数据大小保持在128m bytes,然后以序列成字节码的形式写入dat文件中,在序列化的过程中,若检测到当前写入文件尺寸加上区块尺寸大于128m bytes,则会重新生成一个dat文件,具体的序列化过程如下所述:
13.获取当前dat文件大小npos,并将区块大小追加写入至dat文件中,
14.序列化区块数据和区块中的交易数据,并将序列化的数据追加至dat文件中,
15.在写入数据的过程中,会生成区块和交易相关的元数据,
16.若检测到当前写入文件尺寸加上区块尺寸小于等于128m bytes,则直接生成一个dat文件。
17.较佳的,所述s1中的分片包括有以下步骤:
18.创建数据分片:存储系统将数据分成更小的片段,这个过程称为分片,这一步将数据分解为可管理的块,这些块可以分布在多个节点上;
19.加密每个分片:分片之后,存储系统需要加密本地系统上的每个数据分片,内容所有者完全控制此过程,目标是确保内容所有者以外的任何人都无法查看/访问分片中的数据,无论数据位于何处、该数据是静态还是动态;
20.为每个分片生成哈希:区块链存储系统根据分片的数据或加密密钥生成唯一的哈希——即固定长度的加密输出字符串,哈希将添加到分类帐和分片元数据,以便将事务链接到存储的分片;
21.复制每个分片:存储系统会复制每个分片,因此有足够的冗余副本,可确保可用性和性能,并防止性能下降和数据丢失,由内容所有者来决定每个分片的副本数量以及这些分片所在的位置,此过程中,内容所有者为需要维护的最小副本数建立阈值,以确保不会丢
失数据;
22.分发复制的分片:p2p网络将复制的分片分发到地理上分散的存储节点,无论是区域还是全局,多个组织或个人拥有存储节点,通过租用额外的存储空间可换取某种类型的补偿,没有一个实体能够拥有所有存储资源,或者控制存储基础架构,只有内容所有者才能完全访问其所有数据,无论这些节点位于何处;
23.将交易记录到分类帐:存储系统记录区块链分类帐中的所有事务,并在所有节点之间同步该信息,分类帐存储与事务相关的详细信息,由于分类帐基于区块链技术,因此它具有透明性、可验证性、可追溯性以及防篡改性。
24.较佳的,所述s3中的时间戳处于区块头中,区块头和区块体共同构成区块,区块体中记录着该区块被创建这段时间内的所有交易数据,这些记录通过merkle树组织起来,merkle树根的哈希值作为本区块中所有交易记录的总结、摘要、“指纹”被放入区块头当中,区块头中不光有merkle树根,还有前一个区块头的摘要,也就是前一区块的merkle树根、本区块的时间戳、高度:即从第一个区块开始数,本区块是第几个区块的信息。
25.较佳的,所述s2中的分片之间的连接通过地址信息和哈希算法进行实现精准的算法,保持分片之间的连接,能够实现查询时的连接,完成查询时的数据文件的全部提取。
26.较佳的,所述s4中的存储支持存储自定义类型的结构化数据,从而增加了扩展;nervos支持通过generator部署不同的共识算法获得性能与网络分散度的平衡,nervos提出了一种新的区块链设计,分别由可以存放多个数据的cell,应用的执行逻辑生成器generator,validator,type,identity五种元素组成能够自治及验证分离的分布式架构,nervos改变了原有的数据输入,验证,打包的流程,当事件x发生时,客户端先通过identity验证确定身份,同时将链外的状态y通过共识做对应的映射存储到客户端中,执行逻辑生成器generator将事件状态y,通过哈希传递到记账的节点,节点上只需要validator验证链上的映射是否与链下的事件状态y一致,若确认,打包成下一个区块。
27.较佳的,所述存储的是状态的映射,链条通过反向逻辑可推断链上与链下数据是否一致,且对于新加入的节点要是同步节点,担计算工作的记账节点都是在运营方或参与方,管理合约还可以对记账节点的权重进行设置,这个层面要更好的节点投票决议和动态加入。
28.较佳的,所述s5中的异构跨链pegzone包括有五部分,分别为:
29.smart contract:资产托管在以太坊和cosmos中代币托管中的作用,它主要提供四种方法:锁定,解锁,铸造和销毁;
30.witness:这是一个完整的以太坊节点,它监视以太坊合约的事件并等待生成100个区块,封装的见证人tx被提交给pegzone以证明以太坊区块链上的状态变化;
31.pegzone:pegzone是基于tendermint的区块链,可维护用户帐户信息,允许用户之间进行资产转移并提供交易查询;
32.signer:secp256k1用于签名交易,以便可以通过智能合约有效地验证签名;这对应于智能合约的验证者公钥集;
33.relay:relay负责所有事务转发,将已签名的signtx转发到智能合约。
34.较佳的,所述实用拜占庭容错算法中的每个主节点的工作过程称为一个视图,用v表示视图编号,
35.主节点由普通节点轮流当选,具体计算过程为主节点p=v mod|r|(|r|为节点个数),
36.其运行方法过程:正常工作时,接收客户端的事务请求,验证request身份后,为该请求设置编号,广播pre-prepare消息;
37.新主节点当选时,根据自己收集的view-change消息,发送view-new信息,让其它节点同步数据;
38.主节点与所有的其它节点维系心跳;
39.主节点宕机,会因为心跳超时,而触发重新选举,保证系统运行稳定;
40.主节点恶意发送错误编号的消息,那么会在后续的操作中,被副本节点察觉,因为prepare和commit阶段都是会进行广播的,一旦不一致,触发view-change;
41.主节点不发送接收到的request,客户端在超时未回复时,会重发request到所有的副本节点,并触发view-change;
42.主节点节点篡改消息,因为有request里面有数据和客户端的签名,所以primary无法篡改消息,其它副本会先验证消息的合法性,否则丢弃,并触发view-change。
43.与现有技术相比,本发明的有益效果是:
44.本发明实现对区块链的数据信息进行分布式存储,并且通过共识算法完成对快速的认定过程,加快对区块链内部的数据信息进行存储上传,并且实现对数据信息进行分片存储,加快存储速度和查询速度,便于进行处理使用,以及对数据进行携带时间戳,可以便于数据信息进行存储和查询,以及实现对不同区块链之间进行跨链通信,完成对数据信息之间的数据协同,提高区块链之间的数据信息传输和连接,便于进行使用和操作。
附图说明
45.图1为本发明的步骤结构示意图;
46.图2为本发明的dat文件序列化步骤示意图;
47.图3为本发明的分片步骤示意图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.请参阅图1-3,本发明提供一种技术方案:一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法,包括有以下方法步骤:
50.s1、实现对区块数据信息进行上传,并且进行有效的存储:在进行数据信息的区块存储的时候,先向区块链中的某一个节点进行发送请求,通过共识算法完成快速确定,然后将数据文件分片,并且实现对每个数据分片进行加密和生成哈希,然后进行复制、分化和记录到分类账上;
51.s2、区块数据信息在进行链式连接:在s1中进行分片之后,将每一数据文件中的所有分片进行连接,通过地址时间戳进行支链链式连接,完成对同一个数据文件中的所有分
片进行有机的数据连接,提高数据信息在进行检索时候的快速性;
52.s3、数据文件信息在进行上传的时候,携带时间戳:在数据文件信息进行上传的时候,在数据文件信息的区块头上进行携带时间戳,并且在改数据文件信息的每个分片的区块头上都携带相同的时间戳,并且在最终依照区块生成时间的先后顺序相连成区块链,并且再根据不同时间戳实现对数据文件信息进行分布式存储,每个独立节点又通过p2p网络建立联系,这样就为信息数据的记录形成了一个去中心化的分布式时间戳服务系统;
53.s4、通过分布式存储使得数据文件信息分别存储在所有的节点内:通过分布式存储使得数据文件信息分别存储在所有的节点内,继而使得数据文件信息在进行查询和存储的时候能够快速的进行,有效的提高数据协同的操作,并且在区块链中心处设有服务器,实现对区块链节点的所有信息进行接收和转发,减少节点在进行数据查询的时候,对所有节点进行访问的复杂程度;
54.s5、在不同区块链之间进行跨链通讯,完成有效的跨链通讯,提高数据信息的协同:在不同的区块链之间通过公证人机制、侧链、中继、哈希锁定、分布式私钥控制或者异构跨链pegzone实现跨链连接,使得不同区块链之间能够实现通讯连接。
55.为了提高对节点上传数据信息进行快速的认定操作,本实施例中,优选的,所述s1中的共识算法中包括有工作量证明、权益证明、委托权益证明和实用拜占庭容错算法,所述实用拜占庭容错算法一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作,将所有的副本组成的集合使用大写字母r表示,使用0到|r|-1的整数表示每一个副本,假设|r|=3f+1,这里f是有可能失效的副本的最大个数,尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。
56.为了使得数据信息存储的快捷和便于进行查询,本实施例中,优选的,所述s1中的分片的数据大小保持在128m bytes,然后以序列成字节码的形式写入dat文件中,在序列化的过程中,若检测到当前写入文件尺寸加上区块尺寸大于128m bytes,则会重新生成一个dat文件,具体的序列化过程如下所述:
57.获取当前dat文件大小npos,并将区块大小追加写入至dat文件中,
58.序列化区块数据和区块中的交易数据,并将序列化的数据追加至dat文件中,
59.在写入数据的过程中,会生成区块和交易相关的元数据,
60.若检测到当前写入文件尺寸加上区块尺寸小于等于128m bytes,则直接生成一个dat文件。
61.为了实现对数据信息进行分片操作,本实施例中,优选的,所述s1中的分片包括有以下步骤:
62.创建数据分片:存储系统将数据分成更小的片段,这个过程称为分片,这一步将数据分解为可管理的块,这些块可以分布在多个节点上;
63.加密每个分片:分片之后,存储系统需要加密本地系统上的每个数据分片,内容所有者完全控制此过程,目标是确保内容所有者以外的任何人都无法查看/访问分片中的数据,无论数据位于何处、该数据是静态还是动态;
64.为每个分片生成哈希:区块链存储系统根据分片的数据或加密密钥生成唯一的哈希——即固定长度的加密输出字符串,哈希将添加到分类帐和分片元数据,以便将事务链
接到存储的分片;
65.复制每个分片:存储系统会复制每个分片,因此有足够的冗余副本,可确保可用性和性能,并防止性能下降和数据丢失,由内容所有者来决定每个分片的副本数量以及这些分片所在的位置,此过程中,内容所有者为需要维护的最小副本数建立阈值,以确保不会丢失数据;
66.分发复制的分片:p2p网络将复制的分片分发到地理上分散的存储节点,无论是区域还是全局,多个组织或个人拥有存储节点,通过租用额外的存储空间可换取某种类型的补偿,没有一个实体能够拥有所有存储资源,或者控制存储基础架构,只有内容所有者才能完全访问其所有数据,无论这些节点位于何处;
67.将交易记录到分类帐:存储系统记录区块链分类帐中的所有事务,并在所有节点之间同步该信息,分类帐存储与事务相关的详细信息,由于分类帐基于区块链技术,因此它具有透明性、可验证性、可追溯性以及防篡改性。
68.为了实现对数据信息进行携带时间戳,本实施例中,优选的,所述s3中的时间戳处于区块头中,区块头和区块体共同构成区块,区块体中记录着该区块被创建这段时间内的所有交易数据,这些记录通过merkle树组织起来,merkle树根的哈希值作为本区块中所有交易记录的总结、摘要、“指纹”被放入区块头当中,区块头中不光有merkle树根,还有前一个区块头的摘要,也就是前一区块的merkle树根、本区块的时间戳、高度:即从第一个区块开始数,本区块是第几个区块的信息。
69.为了实现对分片之间进行地址连接,本实施例中,优选的,所述s2中的分片之间的连接通过地址信息和哈希算法进行实现精准的算法,保持分片之间的连接,能够实现查询时的连接,完成查询时的数据文件的全部提取。
70.为了实现对存储的进行自定义类型的结构化数据存储,本实施例中,优选的,所述s4中的存储支持存储自定义类型的结构化数据,从而增加了扩展;nervos支持通过generator部署不同的共识算法获得性能与网络分散度的平衡,nervos提出了一种新的区块链设计,分别由可以存放多个数据的cell,应用的执行逻辑生成器generator,validator,type,identity五种元素组成能够自治及验证分离的分布式架构,nervos改变了原有的数据输入,验证,打包的流程,当事件x发生时,客户端先通过identity验证确定身份,同时将链外的状态y通过共识做对应的映射存储到客户端中,执行逻辑生成器generator将事件状态y,通过哈希传递到记账的节点,节点上只需要validator验证链上的映射是否与链下的事件状态y一致,若确认,打包成下一个区块,所述存储的是状态的映射,链条通过反向逻辑可推断链上与链下数据是否一致,且对于新加入的节点要是同步节点,担计算工作的记账节点都是在运营方或参与方,管理合约还可以对记账节点的权重进行设置,这个层面要更好的节点投票决议和动态加入。
71.为了实现对跨链通信,本实施例中,优选的,所述s5中的异构跨链pegzone包括有五部分,分别为:
72.smart contract:资产托管在以太坊和cosmos中代币托管中的作用,它主要提供四种方法:锁定,解锁,铸造和销毁;
73.witness:这是一个完整的以太坊节点,它监视以太坊合约的事件并等待生成100个区块,封装的见证人tx被提交给pegzone以证明以太坊区块链上的状态变化;
74.pegzone:pegzone是基于tendermint的区块链,可维护用户帐户信息,允许用户之间进行资产转移并提供交易查询;
75.signer:secp256k1用于签名交易,以便可以通过智能合约有效地验证签名;这对应于智能合约的验证者公钥集;
76.relay:relay负责所有事务转发,将已签名的signtx转发到智能合约。
77.为了实现进行共识算法,确定节点之间的确定地位,本实施例中,优选的,所述实用拜占庭容错算法中的每个主节点的工作过程称为一个视图,用v表示视图编号,
78.主节点由普通节点轮流当选,具体计算过程为主节点p=v mod|r|(|r|为节点个数),
79.其运行方法过程:正常工作时,接收客户端的事务请求,验证request身份后,为该请求设置编号,广播pre-prepare消息;
80.新主节点当选时,根据自己收集的view-change消息,发送view-new信息,让其它节点同步数据;
81.主节点与所有的其它节点维系心跳;
82.主节点宕机,会因为心跳超时,而触发重新选举,保证系统运行稳定;
83.主节点恶意发送错误编号的消息,那么会在后续的操作中,被副本节点察觉,因为prepare和commit阶段都是会进行广播的,一旦不一致,触发view-change;
84.主节点不发送接收到的request,客户端在超时未回复时,会重发request到所有的副本节点,并触发view-change;
85.主节点节点篡改消息,因为有request里面有数据和客户端的签名,所以primary无法篡改消息,其它副本会先验证消息的合法性,否则丢弃,并触发view-change。
86.本发明的工作原理及使用流程:
87.第一步、实现对区块数据信息进行上传,并且进行有效的存储:在进行数据信息的区块存储的时候,先向区块链中的某一个节点进行发送请求,通过共识算法完成快速确定,然后将数据文件分片,并且实现对每个数据分片进行加密和生成哈希,然后进行复制、分化和记录到分类账上;
88.第二步、区块数据信息在进行链式连接:在s1中进行分片之后,将每一数据文件中的所有分片进行连接,通过地址时间戳进行支链链式连接,完成对同一个数据文件中的所有分片进行有机的数据连接,提高数据信息在进行检索时候的快速性;
89.第三步、数据文件信息在进行上传的时候,携带时间戳:在数据文件信息进行上传的时候,在数据文件信息的区块头上进行携带时间戳,并且在改数据文件信息的每个分片的区块头上都携带相同的时间戳,并且在最终依照区块生成时间的先后顺序相连成区块链,并且再根据不同时间戳实现对数据文件信息进行分布式存储,每个独立节点又通过p2p网络建立联系,这样就为信息数据的记录形成了一个去中心化的分布式时间戳服务系统;
90.第四步、通过分布式存储使得数据文件信息分别存储在所有的节点内:通过分布式存储使得数据文件信息分别存储在所有的节点内,继而使得数据文件信息在进行查询和存储的时候能够快速的进行,有效的提高数据协同的操作,并且在区块链中心处设有服务器,实现对区块链节点的所有信息进行接收和转发,减少节点在进行数据查询的时候,对所有节点进行访问的复杂程度;
91.第五步、在不同区块链之间进行跨链通讯,完成有效的跨链通讯,提高数据信息的协同:在不同的区块链之间通过公证人机制、侧链、中继、哈希锁定、分布式私钥控制或者异构跨链pegzone实现跨链连接,使得不同区块链之间能够实现通讯连接。
92.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。