CN116089526A - 一种区块链智能合约状态数据同步方法及系统 - Google Patents

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

Info

Publication number
CN116089526A
CN116089526A CN202211662656.0A CN202211662656A CN116089526A CN 116089526 A CN116089526 A CN 116089526A CN 202211662656 A CN202211662656 A CN 202211662656A CN 116089526 A CN116089526 A CN 116089526A
Authority
CN
China
Prior art keywords
block
data
key
synchronization
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211662656.0A
Other languages
English (en)
Inventor
戴振利
赵伟
李若寒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Blockchain Research Institute
Original Assignee
Shandong Blockchain Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Blockchain Research Institute filed Critical Shandong Blockchain Research Institute
Priority to CN202211662656.0A priority Critical patent/CN116089526A/zh
Publication of CN116089526A publication Critical patent/CN116089526A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种区块链智能合约状态数据同步方法及系统
技术领域
本发明属于区块链技术领域,尤其涉及一种区块链智能合约状态数据同步方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
智能合约的特性决定了区块链网络会自动执行智能合约代码,无须持续监督和评估智能合约代码中编码的义务是否已经履行。更大的好处是,基于区块链的弹性和防篡改特性,各方均确信,智能合约的底层代码不会被改变,而且将来也不会改变。由于已编码的义务确定会自动执行,智能合约将极大地促进互不认识或互不信任的个人和机构之间的交易,因此智能合约的安全性和执行效率变得尤为重要。
基于区块链的特性,数据被篡改不会影响到整体的共识结果,如果有节点的数据不一致,也不会影响最终的共识结果。但如果有数据被篡改了,区块链需要有一定的恢复机制,即检查出哪些数据被篡改了,并且将被篡改的数据恢复成正确数据。
现阶段Hyperledger Fabric平台采用了预执行合约,并通过背书节点进行验证的方式,防止错误数据上链,当节点出错时,会被踢出,直到此节点数据恢复。这种方式虽然可以实现链上无错误数据的节点,但面对BFT(Byzantine Fault-Tolerant)类共识时,如果没有自动恢复机制,很容易出现超过f个错误节点,导致共识无法继续执行下去。
还有采用默克尔树(Merkle Tree)作为状态数据存储数据结构,通过对比MerkleTree的根发现是否数据是否不一致,并通过Merkle Tree的快速定位不一致的叶子节点的特性,同步错误数据;但Merkle Tree的存储和查询效率相比于键值(Key-Value)存储方式低。
发明内容
为了解决上述背景技术中存在的技术问题,本发明提供一种区块链智能合约状态数据同步方法及系统,当缺失数据时无需重新执行合约,只需同步区块中的读写集,可以提高数据同步的效率。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一个方面提供一种区块链智能合约状态数据同步方法,其包括:
当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;
如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。
进一步地,在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。
进一步地,响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。
进一步地,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。
本发明的第二个方面提供一种区块链智能合约状态数据同步系统,其包括:
比对模块,其被配置为:当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;
数据同步模块,其被配置为:如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。
进一步地,所述数据同步模块,还被配置为:在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。
进一步地,还包括,重启后同步模块,其被配置为:响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。
进一步地,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。
本发明的第三个方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的一种区块链智能合约状态数据同步方法中的步骤。
本发明的第四个方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的一种区块链智能合约状态数据同步方法中的步骤。
与现有技术相比,本发明的有益效果是:
本发明提供了一种区块链智能合约状态数据同步方法,其当缺失数据时无需重新执行合约,只需同步区块中的读写集,可以提高数据同步的效率。
本发明提供了一种区块链智能合约状态数据同步方法,其避免了节点重启的情况下支持实时的数据校验并同步,只要有新的区块产生就能实时验证并同步数据。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明实施例一的数据同步整体流程图;
图2是本发明实施例一的存在错误数据时的节点数据同步流程图;
图3是本发明实施例一的重启时数据同步流程图;
图4是本发明实施例一的重启时数据同步具体实施流程图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
实施例一
本实施例提供了一种区块链智能合约状态数据同步方法,采用一种实时检查智能合约状态数据的一致性方法,并且不影响共识模块,避免节点重启的情况下支持实时的数据同步,底层采用Key-Value存储方式,读写速率高。
合约执行过程中会依赖于上一次的执行结果,为了避免可能产生的错误数据直接落盘,采用缓存机制,合约执行过程中产生的数据先写入缓存,当执行结果被验证后,数据才会落盘。
因此,为合约执行设计了3个缓存:执行缓存、结果缓存和验证缓存。
执行缓存:用于存放合约执行过程中产生的各种状态数据。
执行缓存采用2个map数据结构,一个为状态缓存,一个为版本缓存。其中状态缓存中存了状态数据key->value的当前状态,存储结构为key#version->value;版本缓存中存了当前key最新的版本号version,存储结构为key->version。
合约执行过程中读取数据需要先从执行缓存中读取最高版本的数据,如果执行缓存中没有此数据,则从数据库中读取,并向执行缓存中放入最新的版本号和数据。如果合约执行过程中需要写入数据,则需要更新执行缓存中当前数据的最新版本号,并且更新最新的状态缓存。
例如:有一对数据key1->value1,执行缓存中没有任何数据。此时读了key1,则先更新版本缓存,记录key1->1;再更新状态缓存,记录key1#v1->value1;如果此时又更新了key1的值为value1’,则需要先更新key1的版本号,即将版本缓存内的key1->1变为key1->2;再更新key1的状态缓存为key1#v2->value1’;此时执行缓存中的版本缓存包含一条数据key1->2,状态缓存中包含2条数据key1#v1->value1、key1#v2->value1’。
结果缓存:用于存放合约执行完的各种结果数据。结果缓存采用一个map数据结构,直接存储本次执行产生结果的key->value。
验证缓存:用于存放合约待验证的结果集,包括本次执行产生的读集(ReadSet)、写集(WriteSet)和结果集(ResultSet),定时打包到区块中。
验证缓存采用一个map数据结构(key->value的存储结构),其中,key为区块号,value为本次区块执行产生的所有数据的读写集,验证缓存结构包括读集HASH、写集HASH、读集、写集、结果集,即验证缓存中value的数据结构如下:
ReadSetHash:读集的Hash;
WriteSetHash:写集的Hash;
ReadSet:本次合约执行读的key,value;
WriteSet:本次合约执行写的key,value;
ResultSet:本次执行的结果。
所有节点都有一份执行缓存、结果缓存和验证缓存;区块中存储有验证缓存,且区块里的验证缓存是经过所有节点共识后的验证缓存。
区块的结构包含区块头和区块体,其中区块头中包含区块号、交易根、时间戳、区块HASH、上一区块的HASH;区块体中包括交易请求和验证缓存。
如图1所示,当区块共识完成之后,各个节点需要根据区块中的验证缓存和本地的验证缓存进行比对;如果一致则正常处理;如果不一致则进入数据同步状态(Sync),一致到数据同步完成并且没有新区块产生,则此节点恢复为正常状态(Formal)。
其中,数据同步流程如下:
(1)不考虑ResultSet是否一致,只要节点收到正确的块,ResultSet中的数据就是正确的,直接写入数据库即可;
(2)同步时只用考虑ReadSet,只有ReadSet会导致WriteSet可能不一致,而收到的WriteSet是正确的,直接写入数据库即可;这时候只需要考虑ReadSet中不一致的key有没有在后续的WriteSet中被覆盖掉;
(3)遍历ReadSet找到具体哪些key不一致,生成一个map,在向数据库里写数据时检查map中是否有对应的key,如果有,删除map中的key,直到最后数据同步完;如果map中还有key,就去主节点拉这个key的数据。
假设有4个节点0,1,2,3,其中3节点的数据是错误的,对于数据同步流程使用如下:
(1)因为0,1,2节点的数据是正确的,因此3个节点依旧能达成共识,3节点可以收到一个正确的区块,区块里包含了正确的验证缓存;
(2)3节点数据错误,本地的验证缓存数据也是错误的,在和收到的正确区块里的验证缓存对比时,可以发现3节点的数据不一致;
(3)此时3节点开始数据同步,遍历ReadSet和收到的验证缓存比对,找到具体哪些key不一致,生成一个map(其中的Key为ReadSet和收到的验证缓存比对后不一致的数据);
(4)因为3节点收到的ResultSet和WriteSet中的数据是正确的,可以直接写入数据库,同时删除第3步中生成的map里对应的key;
(5)检查第3步中生成的map里是否还有未被删除的key,如果有,则向其主节点主动拉取这个key的数据并写入本地数据库。
其中,对于读写集中是否需要去其他节点同步数据的说明如下,即,找到不一致的key的具体方法说明如下:
1.需要去其他节点同步数据
区块3:writeSet[key1,key2,key3]readSet[key5,key6]result
区块8:writeSet[key1,key2]readSet[key6]result
假设区块3的readSet key5是错误数据,那么影响交易tx的执行结果result也是错误的,但是后续区块中没有对key5进行任何操作,这时候需要从其他节点(主节点)将key5的最新结果同步,同步到本地状态数据库db。
2.不需要去其他节点同步数据
区块3:writeSet[key1,key2,key3]readSet[key5,key6]result
区块8:writeSet[key1,key5]readSet[key6]result
假设区块3的readSet key5是错误数据,且后续区块对key5进行了操作,那么区块的中就记录了正确的key5的最新状态,这时候只要将区块中的所有writeSet写入db即可。
具体实施流程如图2所示:
(1)区块1的交易在区块3验证成功了,区块3的交易在区块8时某个节点验证失败了,但不影响这个节点收到正确的块,则区块8和区块10都是正确的。
(2)这时候错误节点找到区块8验证失败的交易是在区块3中打包的,则从区块3开始往后遍历,找到区块3、区块8、区块10中包含验证的result、writeSet,按顺序写入数据库。
(3)因为区块8此节点已经停止运行合约了,区块9中的合约在区块10中验证通过了,此节点同步了区块10中交易的result、writeSet,同时也要把合约队列中区块9的交易移除。
(4)如果错误的数据是key1,而且区块3到区块10中的writeSet都没有key1,这时候还要去其他节点将key1同步。
以上为节点出错时的数据同步流程,当节点重启时如果缺数据,同样需要考虑到数据同步,如图3所示,具体流程如下:
1、节点重启判断是否缺区块,如果缺,则进入区块同步状态(Catchup),将区块同步完成后,则进入合约数据重构状态(Rebuild);
2、合约数据重构需要记录当前同步时的最大区块,同步完成后检查是否有新区块产生,如果有则重复进行合约数据重构;如果没有则进入正常状态。
以节点重启后进行合约请求同步为例,如图4所示,具体实施流程如下:
(1)假设Catchup节点在第a(20)个块的时候断开,第b(25)个块的时候重启;
(2)Catchup节点重启,获取到最大区块为b(25),然后加入系统,在此过程中,其他正常节点继续出块到c(30),然后从c+1(31)开始,Catchup节点可以收到正确的区块;
(3)Catchup节点重启后进入Catchup状态,开始同步a-b(20-25)的区块;
(4)Catchup节点同步完成后,发现最大块b(25),没有追上最大收到的区块c(30),再次进行Catchup,此时节点依旧处于Catchup状态,同步b-c(25-30)区块;
(5)这时候缺失的数据已经全部同步完成,进入Rebuild状态,并记录当前最大区块d(35),针对合约请求,将区块a-d(20-35)中包含的验证消息写入db,并重构元数据;
(6)如果Rebuild完成,比对记录的最大区块是否等于收到的最大区块,如果小于,继续重复步骤(5),否则进入formal状态,可以正常执行合约,并共识包含验证消息的区块。
现在大多数都是先执行完合约,执行过程中不能产生新的区块,执行完成后产生一个新区块在将合约结果放进去共识。本实施例提供的一种区块链智能合约状态数据同步方法,不影响共识模块,合约验证和共识可以异步执行,等待合约执行完成后放到最新的区块中被验证。
Hyperledger Fabric必须重启才能数据恢复。本实施例提供的一种区块链智能合约状态数据同步方法,避免了节点重启的情况下支持实时的数据校验并同步,只要有新的区块产生就能实时验证并同步数据。
本实施例提供的一种区块链智能合约状态数据同步方法,底层采用Key-Value存储方式,读写速率高。
本实施例提供的一种区块链智能合约状态数据同步方法,当缺失数据时无需重新执行合约,只需同步区块中的读写集,可以提高数据同步的效率。
实施例二
本实施例提供了一种区块链智能合约状态数据同步系统,其具体包括:
比对模块,其被配置为:当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;
数据同步模块,其被配置为:如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。
数据同步模块,还被配置为:在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。
重启后同步模块,其被配置为:响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。
在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。
此处需要说明的是,本实施例中的各个模块与实施例一中的各个步骤一一对应,其具体实施过程相同,此处不再累述。
实施例三
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的一种区块链智能合约状态数据同步方法中的步骤。
实施例四
本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一所述的一种区块链智能合约状态数据同步方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种区块链智能合约状态数据同步方法,其特征在于,包括:
当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;
如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。
2.如权利要求1所述的一种区块链智能合约状态数据同步方法,其特征在于,在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。
3.如权利要求1所述的一种区块链智能合约状态数据同步方法,其特征在于,响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。
4.如权利要求3所述的一种区块链智能合约状态数据同步方法,其特征在于,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。
5.一种区块链智能合约状态数据同步系统,其特征在于,包括:
比对模块,其被配置为:当区块共识完成之后,接收区块中的验证缓存,将区块中的验证缓存和本地验证缓存进行比对;
数据同步模块,其被配置为:如果区块中的验证缓存和本地验证缓存不一致,则遍历本地验证缓存中的读集,并与区块中的验证缓存比对,找到不一致的key,并生成一个map后,将接收到的写集和结果集直接写入数据库;在向数据库写数据时,检查map中是否有写集和结果集中的key,若有,则删除map中的key;在接收到的写集和结果集全部写入数据库后,检查map里是否还有未被删除的key,如果有,则向主节点拉取key的数据,并写入数据库。
6.如权利要求5所述的一种区块链智能合约状态数据同步系统,其特征在于,所述数据同步模块,还被配置为:在与某个区块中的验证集进行对比,且找到一个不一致的key时,若该区块的后续区块中没有对找到的key进行操作,则向主节点拉取key的数据;若该区块的后续区块中有对找到的key进行操作,则不需要向主节点拉取key的数据。
7.如权利要求5所述的一种区块链智能合约状态数据同步系统,其特征在于,还包括,重启后同步模块,其被配置为:响应于重启指令,判断是否缺区块,如果缺,则进入区块同步,将区块同步完成后,则进入合约数据重构。
8.如权利要求7所述的一种区块链智能合约状态数据同步系统,其特征在于,在进行合约数据重构时,记录同步时的最大区块,并在同步完成后检查是否有新区块产生,如果有,则重复进行合约数据重构;如果没有,则进入正常状态。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的一种区块链智能合约状态数据同步方法中的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4中任一项所述的一种区块链智能合约状态数据同步方法中的步骤。
CN202211662656.0A 2022-12-23 2022-12-23 一种区块链智能合约状态数据同步方法及系统 Pending CN116089526A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211662656.0A CN116089526A (zh) 2022-12-23 2022-12-23 一种区块链智能合约状态数据同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211662656.0A CN116089526A (zh) 2022-12-23 2022-12-23 一种区块链智能合约状态数据同步方法及系统

Publications (1)

Publication Number Publication Date
CN116089526A true CN116089526A (zh) 2023-05-09

Family

ID=86207402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211662656.0A Pending CN116089526A (zh) 2022-12-23 2022-12-23 一种区块链智能合约状态数据同步方法及系统

Country Status (1)

Country Link
CN (1) CN116089526A (zh)

Similar Documents

Publication Publication Date Title
CA3121919C (en) System and method for augmenting database applications with blockchain technology
US11256715B2 (en) Data backup method and apparatus
US9779128B2 (en) System and method for massively parallel processing database
US8078588B2 (en) Recoverable execution
US9575849B2 (en) Synchronized backup and recovery of database systems
CN107515874B (zh) 一种分布式非关系型数据库中同步增量数据的方法与设备
US7801846B2 (en) Generating log sequence identifiers to apply a transaction to a storage system
US9418094B2 (en) Method and apparatus for performing multi-stage table updates
CN109992628B (zh) 数据同步的方法、装置、服务器及计算机可读存储介质
US10324905B1 (en) Proactive state change acceptability verification in journal-based storage systems
US9542279B2 (en) Shadow paging based log segment directory
CN113868028B (zh) 一种在数据节点上回放日志的方法、数据节点及系统
US20230315713A1 (en) Operation request processing method, apparatus, device, readable storage medium, and system
CN104750755A (zh) 一种数据库主备切换后的数据回补方法及系统
CN110555770A (zh) 一种基于增量哈希的区块链世界状态校验和恢复方法
US20140250326A1 (en) Method and system for load balancing a distributed database providing object-level management and recovery
WO2013091183A1 (zh) 一种键值对的操作方法及装置
CN115858252B (zh) 一种数据恢复方法、装置及存储介质
CN116089526A (zh) 一种区块链智能合约状态数据同步方法及系统
CN115658391A (zh) 基于QianBase MPP数据库的WAL机制的备份恢复方法
CN115576494B (zh) 数据存储方法和计算设备
CN110147355B (zh) 数据同步方法、装置及服务器
CN111427989B (zh) 一种全文检索的索引处理方法、索引处理系统及存储介质
CN116700906A (zh) 一种数据库事务的处理方法及相关设备
CN116910064A (zh) 一种分布式系统中在线创建表索引方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination