一种区块链智能合约状态数据同步方法及系统与流程

文档序号:34105880发布日期:2023-05-10 19:58阅读:31来源:国知局
一种区块链智能合约状态数据同步方法及系统与流程

本发明属于区块链,尤其涉及一种区块链智能合约状态数据同步方法及系统。


背景技术:

1、本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。

2、智能合约的特性决定了区块链网络会自动执行智能合约代码,无须持续监督和评估智能合约代码中编码的义务是否已经履行。更大的好处是,基于区块链的弹性和防篡改特性,各方均确信,智能合约的底层代码不会被改变,而且将来也不会改变。由于已编码的义务确定会自动执行,智能合约将极大地促进互不认识或互不信任的个人和机构之间的交易,因此智能合约的安全性和执行效率变得尤为重要。

3、基于区块链的特性,数据被篡改不会影响到整体的共识结果,如果有节点的数据不一致,也不会影响最终的共识结果。但如果有数据被篡改了,区块链需要有一定的恢复机制,即检查出哪些数据被篡改了,并且将被篡改的数据恢复成正确数据。

4、现阶段hyperledger fabric平台采用了预执行合约,并通过背书节点进行验证的方式,防止错误数据上链,当节点出错时,会被踢出,直到此节点数据恢复。这种方式虽然可以实现链上无错误数据的节点,但面对bft(byzantine fault-tolerant)类共识时,如果没有自动恢复机制,很容易出现超过f个错误节点,导致共识无法继续执行下去。

5、还有采用默克尔树(merkle tree)作为状态数据存储数据结构,通过对比merkletree的根发现是否数据是否不一致,并通过merkle tree的快速定位不一致的叶子节点的特性,同步错误数据;但merkle tree的存储和查询效率相比于键值(key-value)存储方式低。


技术实现思路

1、为了解决上述背景技术中存在的技术问题,本发明提供一种区块链智能合约状态数据同步方法及系统,当缺失数据时无需重新执行合约,只需同步区块中的读写集,可以提高数据同步的效率。

2、为了实现上述目的,本发明采用如下技术方案:

3、本发明的第一个方面提供一种区块链智能合约状态数据同步方法,其包括:

4、当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;

5、如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。

6、进一步地,在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。

7、进一步地,响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。

8、进一步地,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。

9、本发明的第二个方面提供一种区块链智能合约状态数据同步系统,其包括:

10、比对模块,其被配置为:当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;

11、数据同步模块,其被配置为:如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。

12、进一步地,所述数据同步模块,还被配置为:在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。

13、进一步地,还包括,重启后同步模块,其被配置为:响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。

14、进一步地,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。

15、本发明的第三个方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的一种区块链智能合约状态数据同步方法中的步骤。

16、本发明的第四个方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的一种区块链智能合约状态数据同步方法中的步骤。

17、与现有技术相比,本发明的有益效果是:

18、本发明提供了一种区块链智能合约状态数据同步方法,其当缺失数据时无需重新执行合约,只需同步区块中的读写集,可以提高数据同步的效率。

19、本发明提供了一种区块链智能合约状态数据同步方法,其避免了节点重启的情况下支持实时的数据校验并同步,只要有新的区块产生就能实时验证并同步数据。



技术特征:

1.一种区块链智能合约状态数据同步方法,其特征在于,包括:

2.如权利要求1所述的一种区块链智能合约状态数据同步方法,其特征在于,在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。

3.如权利要求1所述的一种区块链智能合约状态数据同步方法,其特征在于,响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。

4.如权利要求3所述的一种区块链智能合约状态数据同步方法,其特征在于,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。

5.一种区块链智能合约状态数据同步系统,其特征在于,包括:

6.如权利要求5所述的一种区块链智能合约状态数据同步系统,其特征在于,所述数据同步模块,还被配置为:在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。

7.如权利要求5所述的一种区块链智能合约状态数据同步系统,其特征在于,还包括,重启后同步模块,其被配置为:响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。

8.如权利要求7所述的一种区块链智能合约状态数据同步系统,其特征在于,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的一种区块链智能合约状态数据同步方法中的步骤。

10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4中任一项所述的一种区块链智能合约状态数据同步方法中的步骤。


技术总结
本发明涉及区块链技术领域,提供了一种区块链智能合约状态数据同步方法及系统,包括:当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。提高了数据同步的效率。

技术研发人员:戴振利,赵伟,李若寒
受保护的技术使用者:山东区块链研究院
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1