CN113505125A - 数据上链的方法及上链代理装置 - Google Patents
数据上链的方法及上链代理装置 Download PDFInfo
- Publication number
- CN113505125A CN113505125A CN202110654567.0A CN202110654567A CN113505125A CN 113505125 A CN113505125 A CN 113505125A CN 202110654567 A CN202110654567 A CN 202110654567A CN 113505125 A CN113505125 A CN 113505125A
- Authority
- CN
- China
- Prior art keywords
- data
- uplink
- version
- identification information
- current version
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012545 processing Methods 0.000 claims abstract description 56
- 238000012795 verification Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种数据上链的方法和上链代理装置。该方法包括:接收用户发来的需要上传到区块链系统中的第一数据;对接收到的第一数据进行校验;在校验通过后,确定第一数据的当前版本信息;根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系;根据所述关联关系,对第一数据进行上链处理。本说明书实施例能够根据数据之间的关联关系进行上链处理。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术,尤其涉及数据上链的方法及上链代理装置。
背景技术
区块链是一种由分布式数据存储、智能合约、共识机制、加密算法等多种技术形成的组合创新型技术,核心机制是在不可信的竞争环境中,利用数学原理而非第三方来低成本创造可信任的新型计算范式和协作模式。作为一种由多方共同维护的分布式记账技术,具有开放性、防篡改性、匿名性、去中心化以及可追溯性等特征,可以大幅拓展人们协作的广度和深度。
在区块链技术中,需要将用户的数据上传到区块链中,以便进行数据的上链存证。但是,目前已有的数据上链的方法只会将数据上传到区块链中,而不会考虑上传的各数据之间的关联关系,因此无法满足业务需求。
发明内容
本说明书一个或多个实施例描述了数据上链的方法及上链代理装置,能够根据数据之间的关联关系进行上链处理。
根据第一方面,提供了一种数据上链的方法,应用于上链代理装置,该上链代理装置设置于用户与区块链系统之间,包括:
接收用户发来的需要上传到区块链系统中的第一数据;
对接收到的第一数据进行校验;
在校验通过后,确定第一数据的当前版本信息;
根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系;
根据所述关联关系,对第一数据进行上链处理。
其中,所述确定第一数据的当前版本信息,包括:
获取第一数据的标识信息;
在预先建立的索引表中查找该标识信息;所述索引表存储:每一笔交易数据的标识信息及该标识信息对应的版本信息;
如果不能查找到该标识信息,则确定第一数据的当前版本信息为第一个版本;
如果能够查找到该标识信息,则从所述索引表中获取对应于该标识信息的原最后一个版本,并确定第一数据的当前版本信息为所述原最后一个版本的下一个版本。
其中,所述获取第一数据的标识信息,包括:
从第一数据的第一个字段中获取第一数据的主键。
其中,所述根据第一数据的当前版本信息得到第一数据与已上链的数据之间的关联关系,包括:如果当前版本信息为第一个版本,则确定第一数据不是用于对区块链系统中的数据进行更新;
所述根据所述关联关系对第一数据进行上链处理,包括:在预先建立的索引表中存储第一记录,该第一记录中包括:第一数据的标识信息、第一个版本信息、第一数据的hash值以及该三者之间的对应关系;将第一数据上传到区块链系统中。
其中,所述根据第一数据的当前版本信息得到第一数据与已上链的数据之间的关联关系,包括:如果当前版本信息不是第一个版本,则确定第一数据用于对区块链系统中的数据进行更新;
所述根据所述关联关系对第一数据进行上链处理,包括:
利用第一数据的标识信息,从预先建立的索引表中检索该标识信息对应的最后一个版本及该最后一个版本对应的hash值;其中,所述索引表存储:每一笔交易数据的标识信息、该标识信息对应的版本信息、该版本信息对应的hash值;
利用检索到的hash值在区块链系统中查找该hash值对应的数据;
如果能查找到,则利用该查找到的数据及接收到的第一数据,生成对应当前版本的交易数据;
在所述索引表中存储第二记录,该第二记录包括:第一数据的标识信息、所述当前版本信息、对应当前版本的交易数据的hash值以及该三者之间的对应关系;及
将对应当前版本的交易数据上传到区块链系统中。
在所述利用检索到的hash值在区块链系统中查找该hash值对应的数据之后,进一步包括:
如果不能查找到,终止对所述第一数据的上链处理,并向用户返回上链失败消息,结束当前流程。
在所述索引表中存储第二记录之后,并在将对应当前版本的交易数据上传到区块链系统中之前,进一步包括:
判断在所述索引表中是否存在第三记录,该第三记录与第二记录中包括的数据的标识信息、版本信息及hash值均分别相同,如果是,则从所述第三记录与第二记录中选择一条记录,并仅将所选记录对应的当前版本的交易数据上传到区块链系统中。
其中,在所述接收用户发来的需要上传到区块链系统中的第一数据之后,并在所述对接收到的第一数据进行校验之前,进一步包括:
对第一数据进行解析,解析出对应于至少两种交易的至少两个子数据;每一个子数据的大小不超过区块链系统中一个区块的存储空间的大小;
针对每一个子数据,均执行从所述校验的步骤直至所述上链处理的步骤。
进一步包括:如果针对任意一个子数据,未能在所述索引表中存储该子数据的所述记录时,则终止对所述第一数据中包括的所有子数据的上链处理,并向用户返回上链失败消息,结束当前流程。
根据第二方面,提供了上链代理装置,位于用户与区块链系统之间,包括:
上链数据接收模块,被配置为接收用户发来的需要上传到区块链系统中的第一数据;以及对接收到的第一数据进行校验;
关联关系处理模块,被配置为在对第一数据校验通过后,确定第一数据的当前版本信息;根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系;
上链执行模块,被配置为根据所述关联关系,对第一数据进行上链处理。
其中,所述关联关系处理模块,被配置为执行:如果当前版本信息为第一个版本,则确定第一数据不是用于对区块链系统中的数据进行更新;在预先建立的索引表中存储第一记录,该第一记录中包括:第一数据的标识信息、第一个版本信息、第一数据的hash值以及该三者之间的对应关系;
所述上链执行模块,被配置为执行:将第一数据上传到区块链系统中。
其中,所述关联关系处理模块,被配置为执行:
如果当前版本信息不是第一个版本,则确定第一数据用于对区块链系统中的数据进行更新;
利用第一数据的标识信息,从预先建立的索引表中检索该标识信息对应的最后一个版本及该最后一个版本对应的hash值;其中,所述索引表存储:每一笔交易数据的标识信息、该标识信息对应的版本信息、该版本信息对应的hash值;
利用检索到的hash值在区块链系统中查找该hash值对应的数据;
如果能查找到,则利用该查找到的数据及接收到的第一数据,生成对应当前版本的交易数据;
在所述索引表中存储第二记录,该第二记录包括:第一数据的标识信息、所述当前版本信息、对应当前版本的交易数据的hash值以及该三者之间的对应关系;
所述上链执行模块,被配置为执行:将对应当前版本的交易数据上传到区块链系统中。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书任一实施例所述的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书任一实施例所述的方法。
本说明书实施例提供的数据上链的方法及上链代理装置,通过记录每一个上链数据的当前版本信息,就能够得到上链的不同数据的不同版本信息,一个数据的不同版本信息可以体现一个数据被更新的次数及各次更新的先后顺序,因此,通过版本信息就可以体现在区块链系统上存证的各数据之间的关联关系,基于此种关联关系进行数据上链处理,可以满足业务的需求。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书一个实施例所应用的系统架构的示意图。
图2是本说明书一个实施例中数据上链方法的流程图。
图3是本说明书一个实施例中根据关联关系对第一数据进行上链处理的方式1的流程图。
图4是本说明书一个实施例中根据关联关系对第一数据进行上链处理的方式2的流程图。
图5是本说明书一个实施例中上链代理装置的结构示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,目前已有的数据上链的方法只会将数据上传到区块链中,而不会考虑各次上传的数据之间的关联关系,更不会基于各数据之间的关联关系进行数据上链处理,因此往往无法满足业务需求。
比如,在现有的数据上链处理中,一个交易的数据发生变化后,不能对已经上链的该交易的数据进行更新,只能针对该交易重新生成一个新的交易数据,并将新的交易数据上链。而现有技术的此种处理方式往往无法满足业务需求。比如在物流业务过程中,一笔交易的数据在到达不同运输地点时,会由不同的用户针对该交易的数据(比如到达的运输节点或者是否完成运输等信息)进行更改,但是在运输途中的一个用户往往没有完整的交易数据(比如一个用户没有上一个用户处的运输节点的信息,看不到收件人的信息等),而只有本用户侧对应该交易的部分数据,因此,该用户无法针对该交易生成一个完整的新的交易数据。另外,现有技术中,每次发生数据修改后,都需要用户重新生成一个新的完整的交易数据,导致用户的处理更为复杂,不利于业务的推广应用。
可见,如果要解决现有技术的问题,就需要记录在区块链系统上存证的各数据之间的关联关系。而考虑到一个数据的不同版本信息可以体现一个数据被更新的次数及各次更新的先后顺序,即体现数据之间的关联关系,因此,在本说明书实施例中,可以利用数据的版本信息来体现在区块链系统上存证的各数据之间的关联关系,并进而进行数据上链处理。
下面描述以上构思的具体实现方式。
为了方便对本说明书的理解,首先对本说明书所应用的系统架构进行描述。如图1中所示,该系统架构主要包括用户、上链代理装置以及区块链系统。其中,用户是需要将本端的数据上传到区块链系统中进行存证的任意一种用户,上链代理装置是设置在用户与区块链系统之间的一个代理装置,用于帮助用户完成数据上链处理。用户、上链代理装置以及区块链系统三者之间通过网络交互。其中,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等。
图2示出了本说明书一个实施例中数据上链方法的流程图。该方法的执行主体为上链代理装置。可以理解,该方法也可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。参见图2,该方法包括:
步骤201:接收用户发来的需要上传到区块链系统中的第一数据。
步骤203:对接收到的第一数据进行校验。
步骤205:在校验通过后,确定第一数据的当前版本信息。
步骤207:根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系。
步骤209:根据所述关联关系,对第一数据进行上链处理。
根据上述图2所示的流程可以看出,在本说明书的实施例中,通过记录每一个上链数据的当前版本信息,就能够得到上链的不同数据的不同版本信息,一个数据的不同版本信息可以体现一个数据被更新的次数及各次更新的先后顺序,因此,通过版本信息就可以体现在区块链系统上存证的各数据之间的关联关系,基于此种关联关系进行数据上链处理,可以满足业务的需求。
比如,一个交易的数据发生变化后,采用本说明书实施例的方法则可以对已经上链的该交易的数据进行更新,而无需针对该交易重新生成一个新的交易数据,能够满足业务的需求。比如在物流业务过程中,一笔交易的数据在到达不同运输地点时,会由不同的用户针对该交易的数据(比如到达的运输节点或者是否完成运输等信息)进行更改,但是在运输途中的一个用户往往没有之前完整的交易数据(比如一个用户没有上一个用户处的运输节点的信息,看不到收件人的信息等),而只有本用户侧对应该交易的部分数据,采用本说明书实施例的方法,该用户只需要将被更改的部分发给上链代理装置,上链代理装置根据已经上链的数据的版本信息以及被更改的部分的版本信息,就可以进行更新,从而满足了物流业务的区块链存证需求。另外,采用本说明书实施例的方法,每次发生数据修改后,无需用户重新生成一个新的完整的交易数据,用户只需提供被更改的那部分数据,降低了用户处理的复杂度。
下面对图2中的每一个步骤分别进行说明。
首先在步骤201中,接收用户发来的需要上传到区块链系统中的第一数据。
在实际的业务中,不同的用户有不同的业务需求,有的用户希望一次上链只上传一笔交易的数据,而有的用户则希望在一次上链中同时上传多笔交易的数据(比如,在物流业务中,一个收件人的手机号变更后,需要同时变更多笔交易的数据,用户则希望一次上链该多笔交易的变更数据),因此,在本说明书一个实施例中,预先设置有单交易接口及便于用户理解的多交易接口。相应地,在本步骤201中,上链代理装置如果是通过单交易接口接收到第一数据,则解析出的是一笔交易的数据,而如果是通过多交易接口接收到的第一数据,则说明第一数据中包括至少两种交易的至少两个子数据,如果是至少两个子数据,则需要针对每一个子数据均分别执行步骤203至步骤209中的处理,其中,为了便于后续每一个子数据分别上传到区块链系统中的不同区块,每一个子数据的大小不超过区块链系统中一个区块的存储空间的大小。
接下来,在步骤203中对接收到的第一数据进行校验。
步骤203中的校验可以包括各种数据上链之前的校验,比如数据合法性的校验、业务逻辑的校验等。
接下来,在步骤205中校验通过后,确定第一数据的当前版本信息。
在本说明书的一个实施例中,为了记录每一个数据的版本信息,可以预先在上链代理装置侧的数据库中设置一个索引表,该索引表存储:每一笔交易数据的标识信息及该标识信息对应的版本信息。这样,在步骤205中,可以通过查询该索引表来确定第一数据的当前版本信息。比如,索引表中的部分内容可以包括如下表1所示的形式:
表1
这样,步骤205的一种具体实现过程包括:
步骤2051:获取第一数据的标识信息;
数据的标识信息可以为数据的第一个字段中的主键。也就是说,如果两个数据的主键相同,则说明该两个数据指向的是同一个交易数据,比如原始的交易数据以及之后该交易数据的更改部分的数据,其主键都是相同的,因此,上述表1中的数据的标识可以是主键值。步骤2051的实现过程可以是:从第一数据的第一个字段中获取第一数据的主键。
步骤2052:在索引表比如上述表1中查找该标识信息;
步骤2053:如果不能查找到该标识信息,则确定第一数据的当前版本信息为第一个版本;
在本步骤2053中,在索引表比如上述表1中不能查找到第一数据的标识信息,则可以确定第一数据是一笔交易数据首次上链,而不是针对一笔交易数据进行更新的数据,因此其版本信息为版本1,即第一个版本。
步骤2054:如果能够查找到该标识信息,则从索引表中获取对应于该标识信息的原最后一个版本,并确定第一数据的当前版本信息为原最后一个版本的下一个版本。
在本步骤2054中,在索引表比如上述表1中能够查找到第一数据的标识信息,则可以确定第一数据是更新数据,因此,以查询到的标识信息为数据的标识1为例,索引表比如上述表1中对应于标识1的原最后一个版本是版本3,那么,则确定第一数据的当前版本为版本3的下一个版本,比如加1后得到的版本4,即当前的第一数据为该笔交易数据的第4个版本(即第三次更新)。
接下来,在步骤207中根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系。
本步骤207包括如下两种情况:
情况1:如果当前版本信息为第一个版本,则确定第一数据不是用于对区块链系统中已上链的数据进行更新。
情况2:如果当前版本信息不是第一个版本,则确定第一数据用于对区块链系统中已上链的数据进行更新。
接下来,在步骤209中根据得到的关联关系,对第一数据进行上链处理。
本步骤209中包括如下方式1和方式2的两种处理:
方式1:
本方式1对应上述情况1,因为是对一笔交易数据首次进行上链处理,而不是进行链上数据的更新,因此,在该方式1下,参见图3,步骤209的过程具体包括:
步骤20910:生成对应第一数据的hash值。
步骤20911:在索引表中存储第一记录,该第一记录中包括:第一数据的标识信息、第一个版本信息、第一数据的hash值以及该三者之间的对应关系;
步骤20911是数据库的事务阶段的处理。
在该事务阶段中,如果本步骤20911在索引表中存储第一记录失败,则说明当前可能有其他线程也在对相同的数据进行相同的数据上链处理操作,存在冲突,因此,终止本线程对第一数据的上链处理,并向用户返回上链失败消息,从而避免了数据的重复上链过程。如果本步骤20911在索引表中存储第一记录成功,则可以执行下述步骤20912。
步骤20912:将第一数据上传到区块链系统中。
对于上述步骤20911,记录该第一数据的hash值比如为表2中所示的D1,是为了在第一数据上传区块链之后,如果需要在该第一数据的基础上进行更新(比如对该第一数据的一个参数的值进行修改),可以根据在索引表中记录的hash值D1从区块链系统中找到该第一数据。比如,第一数据的标识信息为数据标识4,则索引表中的部分内容的存储方式可以包括如下表2所示的形式:
表2
方式2:
本方式2对应上述情况2,因为是对区块链系统中已上链的数据进行更新,因此,在该方式2下,参见图4,步骤209的过程具体包括:
步骤20921:利用第一数据的标识信息,从所述索引表中检索该标识信息对应的最后一个版本及该最后一个版本对应的hash值;
步骤20922:利用检索到的hash值在区块链系统中查找该hash值对应的数据;
步骤20923:如果能查找到,则利用该查找到的数据及接收到的第一数据,生成对应当前版本的交易数据;
步骤20924:生成对应当前版本的交易数据的hash值;
上述步骤20921至步骤20924可以是在内存中执行的数据准备阶段。
步骤20925:在索引表中存储第二记录,该第二记录包括:第一数据的标识信息、所述当前版本信息、对应当前版本的交易数据的hash值以及该三者之间的对应关系;
步骤20925是数据库的事务阶段的处理。在该事务阶段中,如果本步骤20925在索引表中存储第二记录成功,则可以执行下述步骤20926。
步骤20926:将对应当前版本的交易数据上传到区块链系统中。
比如,在步骤20921中,第一数据的标识信息为数据标识1,那么可以从比如上述表3所示的索引表中查询到该数据标识1对应的最后一个版本为版本3,该版本3对应的hash值为A3。那么在步骤20922中,则可以利用A3在区块链系统中进行查找,查找到一个区块存储的数据的hash值也为A3时,则该区块存储的数据,即为该笔交易数据上一次上传区块链系统的版本3的数据,因为当前接收到的第一数据的当前版本信息为版本4,因此,是对该版本3数据的更新数据,比如区块链系统中版本3对应的数据内容是交易1的完整数据内容,其中包括一个参数S,其值为0.5,而第一数据不包括该交易1的完整数据内容,而只包括该参数S的更改后的值1.2,那么,在步骤20923中,则可以利用第一数据即参数S的值1.2替换从区块链上下载的版本3的数据中的S的值,从而针对该交易1生成了一个对应于版本4的完整的交易数据。之后,在步骤20925中,在表3中增加一条第二记录,包括数据标识1、版本4、版本4交易数据的hash值记为A4,并在更新表3成功之后,执行步骤20926,即,将对应版本4的交易数据上传到区块链系统中。
表3
通过上述图4所示的流程可以看出,上链代理装置借助在数据库中存储的索引表也可以找到对于该交易,已经上传区块链的最新的版本,从而可以保证在已经上链的最后一次更新后的交易数据的基础上进行更新,比如,已经上链的交易数据的最后一个版本是版本3,不会基于版本2或者版本1进行更新,从而避免了更新采用的数据出错的问题,另外,因为索引表中记录了每一个版本对应的该交易数据的hash值,因此在定位好已经上链的最后一个版本后,利用该hash值则可以从区块链上进行拉块,从而利用从区块链上获取的数据(已经上链的该交易的最新交易数据)及当前需要被更改的数据(由用户发来的第一数据),生成当前更新需求下的交易数据,可见,用户只需要发来当前需要被更改的数据,而无需发送交易的完整数据,对于用户无法获取交易完整数据的业务场景,比如上述物流业务场景中的一个中间节点的用户,则可以保证业务的实施及不出错。
本说明书一个实施例中还能够避免当在短时间内针对同一交易数据先后发生多次更新时,所造成的更新错误的问题。下面具体说明:
上述图4中,步骤20923至步骤20925描述的是利用检索到的hash值在区块链系统中查找到该hash值对应的数据之后,所执行的交易数据的更新处理。然而,在实际的业务应用中,可能会出现利用检索到的hash值在区块链系统中不能查找到该hash值对应的数据,即出现这样一种情况:虽然在索引表中记录存在一个交易数据的最新版本比如版本3及该最新版本的数据的hash值如A3,但是在区块链系统中却无法查找到该A3对应的数据,即版本3的交易数据没有完成上传区块链系统的过程。出现此种情况的原因包括对同一个交易数据在短时间内发生多次更新。比如有两个用户在短时间内分别针对数据标识1对应的交易数据发起更新,一个用户发来上述的第一数据,另一个用户发来第二数据,第一数据及第二数据均是更新数据,如果上链代理装置针对第二数据在上述表3所示的索引表中记录其版本为版本3,对应的hash值为A3,并针对第二数据执行上述图4所示的更新处理,但是由于区块的生成是需要时间的,在根据第二数据生成的对应版本3的交易数据还在生成区块的过程中,即还未完成上传区块链的过程时,又收到了第一数据,则会出现上述的利用A3在区块链系统中无法查找到对应的数据,此种情况,因为要保证每一次更新都基于上一个版本的已上传区块链的交易数据进行更新,不能基于更早版本的上链交易数据进行更新,因此,针对第一数据的更新处理则需要终止,等待第二数据对应的交易数据上链结束后,可以重新发起更新。因此,在上述图4中,如果步骤20922中利用检索到的hash值在区块链系统中不能查找到该hash值对应的数据,则不再执行步骤20923至步骤20926的处理,而是终止对所述第一数据的上链处理,并向用户返回上链失败消息。
本说明书一个实施例中还能够避免在同一时间针对同一交易数据同时发生多次更新时,所造成的更新错误的问题。下面具体说明:
在本说明书一个实施例中,因为针对每一个交易数据,必须按照版本的顺序,依次更新,因此,对于针对同一个交易数据的同时并发更新,只能允许其中一个更新成功,而其他更新失败,否则无法实现每一次更新按照版本的顺序,依次更新的目的。此时,在上述图4所示流程中,在步骤20925之后,并在步骤20926之前,进一步包括:
判断在索引表中是否存在第三记录,该第三记录与第二记录中包括的数据的标识信息、版本信息及hash值均分别相同,如果是,则从所述第三记录与第二记录中选择一条记录,并仅将所选记录对应的当前版本的交易数据上传到区块链系统中,而其他未被选择的记录所对应的当前版本的交易数据则终止上链处理,并向相应的用户返回上链失败消息。
如前所述,在步骤201中,上链代理装置通过多交易接口接收到的第一数据中可能会包括至少两种交易的至少两个子数据(比如包括2个子数据,子数据1为一笔交易的物流订单数据,子数据2为该笔交易的物流账单数据),针对子数据1会执行结合上述步骤203至步骤209中所描述的相关处理,针对子数据2也会执行结合上述步骤203至步骤209中所描述的相关处理,从而按照业务的逻辑针对两个子数据分别进行上链。在本说明书一个实施例中,因为用户通过多交易接口一次发来的多个子数据往往会存在关联关系,比如,子数据1是物流订单数据,其运输状态为运输完毕,只有在这种情况下,才能同时上传子数据2即物流账单数据,因此,对于通过多交易接口一次发来的多个子数据,需要保证其同时上链成功,或者同时上链失败,以避免一个子数据上链成功,比如物流账单数据的子数据2上链成功,但是标识运输状态完毕的子数据1却没有上链成功,此种情况,应避免,避免在区块链上存储的数据出现业务逻辑错误。因此,如果针对任意一个子数据,未能在索引表中存储该子数据的记录(上述第一记录或者第二记录),则说明针对该子数据的上链处理需要终止,该子数据不能上链,因此,为了保证第一数据中的所有子数据同时上链成功或者同时上链失败,此时,可以终止对所述第一数据中包括的所有子数据的上链处理,并向用户返回上链失败消息。
通过上述本说明书中的各个实施例,可以得到,数据虽然是存证在区块链系统中,但是,通过上链代理装置中存储的索引表就能够快速找到一个数据存储在区块链的哪个位置(通过索引表中的hash值定位),以及区块链系统上各个数据之间的关联关系(通过索引表中的版本信息体现),从而通过索引表这种简单的实现形式体现数据在区块链系统中的存储方式。
通过上述本说明书中的各个实施例,可以得到,通过索引表这种简单的形式可以实现区块链系统上数据的可更新、可溯源,形成了数据更新的一个完整的链条,保证了数据更新不会出错。
在上述本说明书实施例中,以版本加1的方式来体现版本的逐级更新,比如版本3是对版本2的更新,在实际的业务实现中,只需要能够体现两个版本之间的逐级更新关系即可,不一定是加1的方式,比如版本1.0,版本1.1,版本1.2虽然不是版本加1的方式,但是也体现了版本逐级更新的关系。
在本说明书的一个实施例中,提供了一种数据上链代理装置,参见图5,该装置500包括:
上链数据接收模块501,被配置为接收用户发来的需要上传到区块链系统中的第一数据;以及对接收到的第一数据进行校验;
关联关系处理模块502,被配置为在对第一数据校验通过后,确定第一数据的当前版本信息;根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系;
上链执行模块503,被配置为根据所述关联关系,对第一数据进行上链处理。
在本说明书装置的一个实施例中,关联关系处理模块502被配置为执行:
获取第一数据的标识信息;
在预先建立的索引表中查找该标识信息;所述索引表存储:每一笔交易数据的标识信息及该标识信息对应的版本信息;
如果不能查找到该标识信息,则确定第一数据的当前版本信息为第一个版本;
如果能够查找到该标识信息,则从所述索引表中获取对应于该标识信息的原最后一个版本,并确定第一数据的当前版本信息为所述原最后一个版本的下一个版本。
在本说明书装置的一个实施例中,关联关系处理模块502,被配置执行:如果当前版本信息为第一个版本,则确定第一数据不是用于对区块链系统中的数据进行更新;在预先建立的索引表中存储第一记录,该第一记录中包括:第一数据的标识信息、第一个版本信息、第一数据的hash值以及该三者之间的对应关系;
上链执行模块503,被配置为执行:将第一数据上传到区块链系统中。
在本说明书装置的一个实施例中,关联关系处理模块502,被配置执行:
如果当前版本信息不是第一个版本,则确定第一数据用于对区块链系统中的数据进行更新;
利用第一数据的标识信息,从预先建立的索引表中检索该标识信息对应的最后一个版本及该最后一个版本对应的hash值;其中,所述索引表存储:每一笔交易数据的标识信息、该标识信息对应的版本信息、该版本信息对应的hash值;
利用检索到的hash值在区块链系统中查找该hash值对应的数据;
如果能查找到,则利用该查找到的数据及接收到的第一数据,生成对应当前版本的交易数据;
在所述索引表中存储第二记录,该第二记录包括:第一数据的标识信息、所述当前版本信息、对应当前版本的交易数据的hash值以及该三者之间的对应关系;
上链执行模块503,将对应当前版本的交易数据上传到区块链系统中。
在本说明书装置的一个实施例中,上链执行模块503,进一步被配置为执行:如果利用检索到的hash值在区块链系统中不能查找到该hash值对应的数据,则终止对所述第一数据的上链处理,并向用户返回上链失败消息。
在本说明书装置的一个实施例中,关联关系处理模块502,被配置执行:
在所述索引表中存储第二记录之后,并在将对应当前版本的交易数据上传到区块链系统中之前,判断在所述索引表中是否存在第三记录,该第三记录与第二记录中包括的数据的标识信息、版本信息及hash值均分别相同,如果是,则从所述第三记录与第二记录中选择一条记录;
上链执行模块503,进一步被配置为执行:仅将所选记录对应的当前版本的交易数据上传到区块链系统中。
在本说明书装置的一个实施例中,上链数据接收模块501,被配置为在接收用户发来的需要上传到区块链系统中的第一数据之后,并在对接收到的第一数据进行校验之前,对第一数据进行解析,如果解析出对应于至少两种交易的至少两个子数据,则分别针对每一个子数据,均执行校验的步骤;其中,每一个子数据的大小不超过区块链系统中一个区块的存储空间的大小;
关联关系处理模块502,被配置为针对每一个子数据,均执行确定该子数据的当前版本信息;根据该子数据的当前版本信息,得到该子数据与已上链的数据之间的关联关系;
上链执行模块503,被配置为针对每一个子数据,均执行根据所述关联关系,对该子数据进行上链处理。
在本说明书装置的一个实施例中,关联关系处理模块502,被配置为如果针对任意一个子数据,未能在所述索引表中存储该子数据的上述第一记录或者第二记录,则触发上链执行模块503执行终止对第一数据中包括的所有子数据的上链处理,并向用户返回上链失败消息。
本说明书一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行说明书中任一个实施例中的方法。
本说明书一个实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现执行说明书中任一个实施例中的方法。
可以理解的是,本说明书实施例示意的结构并不构成对本说明书实施例中装置的具体限定。在说明书的另一些实施例中,装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
上述装置、系统内的各模块之间的信息交互、执行过程等内容,由于与本说明书方法实施例基于同一构思,具体内容可参见本说明书方法实施例中的叙述,此处不再赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (14)
1.数据上链的方法,应用于上链代理装置,该上链代理装置设置于用户与区块链系统之间,包括:
接收用户发来的需要上传到区块链系统中的第一数据;
对接收到的第一数据进行校验;
在校验通过后,确定第一数据的当前版本信息;
根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系;
根据所述关联关系,对第一数据进行上链处理。
2.根据权利要求1所述的方法,其中,所述确定第一数据的当前版本信息,包括:
获取第一数据的标识信息;
在预先建立的索引表中查找该标识信息;所述索引表存储:每一笔交易数据的标识信息及该标识信息对应的版本信息;
如果不能查找到该标识信息,则确定第一数据的当前版本信息为第一个版本;
如果能够查找到该标识信息,则从所述索引表中获取对应于该标识信息的原最后一个版本,并确定第一数据的当前版本信息为所述原最后一个版本的下一个版本。
3.根据权利要求2所述的方法,其中,所述获取第一数据的标识信息,包括:
从第一数据的第一个字段中获取第一数据的主键。
4.根据权利要求1所述的方法,其中,
所述根据第一数据的当前版本信息得到第一数据与已上链的数据之间的关联关系,包括:如果当前版本信息为第一个版本,则确定第一数据不是用于对区块链系统中的数据进行更新;
所述根据所述关联关系对第一数据进行上链处理,包括:在预先建立的索引表中存储第一记录,该第一记录中包括:第一数据的标识信息、第一个版本信息、第一数据的hash值以及该三者之间的对应关系;将第一数据上传到区块链系统中。
5.根据权利要求1所述的方法,其中,所述根据第一数据的当前版本信息得到第一数据与已上链的数据之间的关联关系,包括:如果当前版本信息不是第一个版本,则确定第一数据用于对区块链系统中的数据进行更新;
所述根据所述关联关系对第一数据进行上链处理,包括:
利用第一数据的标识信息,从预先建立的索引表中检索该标识信息对应的最后一个版本及该最后一个版本对应的hash值;其中,所述索引表存储:每一笔交易数据的标识信息、该标识信息对应的版本信息、该版本信息对应的hash值;
利用检索到的hash值在区块链系统中查找该hash值对应的数据;
如果能查找到,则利用该查找到的数据及接收到的第一数据,生成对应当前版本的交易数据;
在所述索引表中存储第二记录,该第二记录包括:第一数据的标识信息、所述当前版本信息、对应当前版本的交易数据的hash值以及该三者之间的对应关系;及
将对应当前版本的交易数据上传到区块链系统中。
6.根据权利要求5所述的方法,在所述利用检索到的hash值在区块链系统中查找该hash值对应的数据之后,进一步包括:
如果不能查找到,终止对所述第一数据的上链处理,并向用户返回上链失败消息,结束当前流程。
7.根据权利要求5所述的方法,在所述索引表中存储第二记录之后,并在将对应当前版本的交易数据上传到区块链系统中之前,进一步包括:
判断在所述索引表中是否存在第三记录,该第三记录与第二记录中包括的数据的标识信息、版本信息及hash值均分别相同,如果是,则从所述第三记录与第二记录中选择一条记录,并仅将所选记录对应的当前版本的交易数据上传到区块链系统中。
8.根据权利要求4至7中任一所述的方法,其中,在所述接收用户发来的需要上传到区块链系统中的第一数据之后,进一步包括:
对第一数据进行解析,解析出对应于至少两种交易的至少两个子数据;每一个子数据的大小不超过区块链系统中一个区块的存储空间的大小;
针对每一个子数据,均执行从所述校验的步骤直至所述上链处理的步骤。
9.根据权利要求8所述的方法,进一步包括:如果针对任意一个子数据,未能在所述索引表中存储该子数据的所述记录时,则终止对所述第一数据中包括的所有子数据的上链处理,并向用户返回上链失败消息,结束当前流程。
10.上链代理装置,位于用户与区块链系统之间,包括:
上链数据接收模块,被配置为接收用户发来的需要上传到区块链系统中的第一数据;以及对接收到的第一数据进行校验;
关联关系处理模块,被配置为在对第一数据校验通过后,确定第一数据的当前版本信息;根据第一数据的当前版本信息,得到第一数据与已上链的数据之间的关联关系;
上链执行模块,被配置为根据所述关联关系,对第一数据进行上链处理。
11.根据权利要求10所述的装置,其中,
所述关联关系处理模块,被配置为执行:如果当前版本信息为第一个版本,则确定第一数据不是用于对区块链系统中的数据进行更新;在预先建立的索引表中存储第一记录,该第一记录中包括:第一数据的标识信息、第一个版本信息、第一数据的hash值以及该三者之间的对应关系;
所述上链执行模块,被配置为执行:将第一数据上传到区块链系统中。
12.根据权利要求10所述的装置,其中,所述关联关系处理模块,被配置为执行:
如果当前版本信息不是第一个版本,则确定第一数据用于对区块链系统中的数据进行更新;
利用第一数据的标识信息,从预先建立的索引表中检索该标识信息对应的最后一个版本及该最后一个版本对应的hash值;其中,所述索引表存储:每一笔交易数据的标识信息、该标识信息对应的版本信息、该版本信息对应的hash值;
利用检索到的hash值在区块链系统中查找该hash值对应的数据;
如果能查找到,则利用该查找到的数据及接收到的第一数据,生成对应当前版本的交易数据;
在所述索引表中存储第二记录,该第二记录包括:第一数据的标识信息、所述当前版本信息、对应当前版本的交易数据的hash值以及该三者之间的对应关系;
所述上链执行模块,被配置为执行:将对应当前版本的交易数据上传到区块链系统中。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-9中任一项所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110654567.0A CN113505125A (zh) | 2021-06-11 | 2021-06-11 | 数据上链的方法及上链代理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110654567.0A CN113505125A (zh) | 2021-06-11 | 2021-06-11 | 数据上链的方法及上链代理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113505125A true CN113505125A (zh) | 2021-10-15 |
Family
ID=78010034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110654567.0A Pending CN113505125A (zh) | 2021-06-11 | 2021-06-11 | 数据上链的方法及上链代理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113505125A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886399A (zh) * | 2021-10-25 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 更新索引数据库和基于索引数据库进行检索的方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017051420A1 (en) * | 2015-09-21 | 2017-03-30 | Yissum Research Development Company Of The Hebrew University Of Jerusalem Ltd. | Advanced computer implementation for crawling and/or detecting related electronically catalogued data using improved metadata processing |
CN108959228A (zh) * | 2018-07-13 | 2018-12-07 | 众安信息技术服务有限公司 | 基于区块链创建、检索、编辑数据的方法及可读存储介质 |
CN111090385A (zh) * | 2018-10-23 | 2020-05-01 | 中思博安科技(北京)有限公司 | 一种基于区块链的数据管理方法及装置 |
KR20200048440A (ko) * | 2018-10-30 | 2020-05-08 | 삼성에스디에스 주식회사 | 블록체인 기반 조회 서비스 제공 시스템 및 그 방법 |
CN111327627A (zh) * | 2020-03-04 | 2020-06-23 | 西安热工研究院有限公司 | 基于区块链的网络安全评估数据处理方法 |
CN111506909A (zh) * | 2020-04-13 | 2020-08-07 | 深圳微众信用科技股份有限公司 | 一种银税数据交互方法及系统 |
KR20200136073A (ko) * | 2019-05-27 | 2020-12-07 | 넷마블 주식회사 | 블록체인 네트워크에 기반한 게임 데이터 저장 및 활용 방법 |
WO2021008113A1 (zh) * | 2019-07-18 | 2021-01-21 | 创新先进技术有限公司 | 基于区块链的数据存证方法、数据校验方法及相关装置 |
-
2021
- 2021-06-11 CN CN202110654567.0A patent/CN113505125A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017051420A1 (en) * | 2015-09-21 | 2017-03-30 | Yissum Research Development Company Of The Hebrew University Of Jerusalem Ltd. | Advanced computer implementation for crawling and/or detecting related electronically catalogued data using improved metadata processing |
CN108959228A (zh) * | 2018-07-13 | 2018-12-07 | 众安信息技术服务有限公司 | 基于区块链创建、检索、编辑数据的方法及可读存储介质 |
CN111090385A (zh) * | 2018-10-23 | 2020-05-01 | 中思博安科技(北京)有限公司 | 一种基于区块链的数据管理方法及装置 |
KR20200048440A (ko) * | 2018-10-30 | 2020-05-08 | 삼성에스디에스 주식회사 | 블록체인 기반 조회 서비스 제공 시스템 및 그 방법 |
KR20200136073A (ko) * | 2019-05-27 | 2020-12-07 | 넷마블 주식회사 | 블록체인 네트워크에 기반한 게임 데이터 저장 및 활용 방법 |
WO2021008113A1 (zh) * | 2019-07-18 | 2021-01-21 | 创新先进技术有限公司 | 基于区块链的数据存证方法、数据校验方法及相关装置 |
CN111327627A (zh) * | 2020-03-04 | 2020-06-23 | 西安热工研究院有限公司 | 基于区块链的网络安全评估数据处理方法 |
CN111506909A (zh) * | 2020-04-13 | 2020-08-07 | 深圳微众信用科技股份有限公司 | 一种银税数据交互方法及系统 |
Non-Patent Citations (2)
Title |
---|
TIEN TUAN ANH DINH ET AL: "Untangline Blockchain:A Data Processing View of Blockchain Systems", 《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》, vol. 30, no. 7, 4 January 2018 (2018-01-04) * |
张学旺等: "基于区块链与可信计算的数据交易方案", 《计算机应用》, vol. 41, no. 4, 16 December 2020 (2020-12-16) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886399A (zh) * | 2021-10-25 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 更新索引数据库和基于索引数据库进行检索的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086825B2 (en) | Telemetry system for a cloud synchronization system | |
CN112003703B (zh) | 一种跨链发送可认证消息的方法和装置 | |
CN101009516B (zh) | 一种进行数据同步的方法、系统及装置 | |
CN102970284B (zh) | 用户信息处理方法和服务器 | |
KR20140047580A (ko) | 다중-서버 예약 시스템 상의 동기화 메커니즘 시스템 및 방법 | |
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN106713469B (zh) | 用于分布式容器的动态加载方法、装置及系统 | |
CN111338637A (zh) | 一种代码生成方法及装置 | |
US11281438B2 (en) | Platform for web services development and method therefor | |
CN112883117B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
US20200153889A1 (en) | Method for uploading and downloading file, and server for executing the same | |
US20160308801A1 (en) | Email service adapter | |
CN114971827A (zh) | 一种基于区块链的对账方法、装置、电子设备及存储介质 | |
CN113505125A (zh) | 数据上链的方法及上链代理装置 | |
US20150088958A1 (en) | Information Processing System and Distributed Processing Method | |
CN115687276B (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
CN112615868B (zh) | 一种跨链发送可认证消息的方法和装置 | |
US20100268784A1 (en) | Data synchronization system and method | |
CN104580429A (zh) | 一种加载通讯信息的方法、服务器和云盘客户端 | |
CN116739397B (zh) | 一种新能源指标的动态管理方法 | |
CN110764927A (zh) | 一种多机间异步通信的方法及设备 | |
CN111079199B (zh) | 基于区块链技术的企业信用数据截图防篡改方法 | |
CN113010589B (zh) | 一种数据转换方法、系统及存储介质和服务器 | |
CN109885309B (zh) | 生成用于建立协议栈软件的配置文件的方法 | |
CN118069518A (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 |