CN110633323B - 业务数据存储方法、装置、存储介质和计算机设备 - Google Patents
业务数据存储方法、装置、存储介质和计算机设备 Download PDFInfo
- Publication number
- CN110633323B CN110633323B CN201910872678.1A CN201910872678A CN110633323B CN 110633323 B CN110633323 B CN 110633323B CN 201910872678 A CN201910872678 A CN 201910872678A CN 110633323 B CN110633323 B CN 110633323B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- service
- current block
- block chain
- 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.)
- Active
Links
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
Abstract
本申请涉及一种业务数据存储方法、装置、存储介质和计算机设备,所述方法包括:获取用户的业务数据,根据业务标识从多条区块链中确定对应的目标区块链标识,生成业务数据对应的当前区块,并生成业务数据对应的操作流水数据;将当前区块分发至目标区块链标识对应的多个区块链节点,使多个区块链节点对当前区块进行共识验证;当共识验证通过后,将操作流水数据和当前区块存储至缓存库;当操作流水数据和当前区块存储成功后,将当前区块写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储。本申请提供的方案能够有效地对业务数据进行同步存储,有效地保障了数据存储的一致性和完整性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种业务数据处理方法、装置、存储介质和计算机设备。
背景技术
随着计算机技术的迅速发展,区块链技术逐渐被广泛应用。区块链的分布式存储的独特性体现在区块链每个节点都按照块链式结构存储完整的数据,且区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性。现有的区块链系统中,通常是采用单机存储的分布式存储方式。随着用户量增多,数据处理量也随之增加,区块链节点的数据处理压力较大。而单机存储的存储量有限,数据量较大时无法有效地确认交易结果是否同步成功,导致交易数据的一致性无法得到有效保障。
发明内容
基于此,有必要针对数据量较大时无法有效地确认交易结果是否同步成功,导致交易数据的一致性无法得到有效保障的技术问题,提供一种业务数据处理方法、装置、存储介质和计算机设备。
一种业务数据存储方法,包括:
获取用户的业务数据,所述业务数据包括业务标识;
根据所述业务标识从多条区块链中确定对应的目标区块链标识,生成所述业务数据对应的当前区块,并生成所述业务数据对应的操作流水数据;
将所述当前区块分发至所述目标区块链标识对应的多个区块链节点,使所述多个区块链节点对所述当前区块进行共识验证;
当共识验证通过后,将所述操作流水数据和所述当前区块存储至缓存库;
当所述操作流水数据和所述当前区块存储成功后,将所述当前区块写入所述目标区块链中,使所述目标区块链的多个区块链节点对所述当前区块进行存储。
一种业务数据存储装置,所述装置包括:
数据获取模块,用于获取用户的业务数据,所述业务数据包括业务标识;
数据生成模块,用于根据所述业务标识从多条区块链中确定对应的目标区块链标识,生成所述业务数据对应的当前区块,并生成所述业务数据对应的操作流水数据;
共识验证模块,用于将所述业务数据分发至所述目标区块链标识对应的多个区块链节点,使所述多个区块链节点对所述业务数据进行共识验证;
数据存储模块,用于当共识验证通过后,将所述操作流水数据和所述当前区块存储至缓存库;当所述当前区块存储成功后,将所述当前区块写入所述目标区块链中,使所述目标区块链的多个区块链节点对所述当前区块进行存储。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述业务数据存储方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述业务数据存储方法的步骤。
上述业务数据存储方法、装置、存储介质和计算机设备,获取用户的业务数据后,根据业务标识确定对应的目标区块链标识,并生成对应的当前区块和操作流水数据。操作流水数据中记录了业务数据的详细交易信息,将当前区块同步至目标区块链中的多个区块链节点,使多个区块链节点对当前区块进共识验证,共识验证通过后,先将操作流水数据和当前区块存储至缓存库,以保证操作流水数据和当前区块在本地缓存库中成功缓存和备份。本地存储成功后再将当前区块写入目标区块链中,使多个区块链分别对当前区块进行存储,能够有效地对交易数据进行同步存储,由此有效地保障了数据存储的一致性和完整性。当业务数据量较大时,能够有效地利用本地缓存库中存储的数据确认交易结果是否同步成功,业务数据能够得到有效地保障。
附图说明
图1为一个实施例中业务数据存储方法的应用环境图;
图2为一个实施例中业务数据存储方法的流程示意图;
图3为一个实施例中生成业务数据对应的当前区块步骤的流程示意图;
图4为一个实施例中数据重写步骤的流程示意图;
图5为另一个实施例中数据重写步骤的流程示意图;
图6为一个具体的实施例中业务数据存储方法的流程示意图;
图7为一个实施例中业务数据存储方法的时序图;
图8为一个实施例中业务数据存储装置的结构框图;
图9为另一个实施例中业务数据存储装置的结构框图;
图10为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中业务数据存储方法的应用环境图。参照图1,该业务数据存储方法应用于业务数据存储系统。该业务数据存储系统包括终端110和多个区块链节点120,区块链节点120为区块链网络中部署的计算机节点,区块链节点120中可以包括多个逻辑节点1202、共识节点1204以及记账节点1206。终端110和区块链节点120通过网络进行通信。终端110具体可以是台式终端或移动终端,终端110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。计算机节点具体可以是终端或服务器。其中,终端具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
其中,区块链系统还可以是基于区块链业务系统,业务系统中可以包括多个节点,整个区块链系统中的节点均可表示为区块链节点,每个节点可被提供为一个服务器。区块链节点可以包括多个层级的节点:共识节点、记账节点、代理节点以及逻辑节点等。共识节点可以是相应的权威机构部署的计算机节点,如国家级机构和省级机构部署的计算机节点,共识节点可以部署有多个。代理节点可以是相应的服务机构部署的计算机节点,如服务商机构部署的计算机节点。区块链系统还可以部署有逻辑节点,逻辑节点可以是与用户终端以及各个区块链节点相连接的最靠近用户终端侧的节点。代理节点和逻辑节点部署有多个。共识节点与记账节点通过网络连接,每个记账节点分别与每个代理节点通过网络连接。其中,每个系统中还可以包括至少一个逻辑节点,逻辑节点与其所在的系统中的各个节点之间通过网络连接,逻辑节点可用于接收用户的业务数据,并根据业务属性将业务数据转发给该业务系统中相应的节点。该系统中配置区块链的节点用于基于该业务数据进行响应,并将获取的业务数据存储至该区块链相应的节点中。
如图2所示,在一个实施例中,提供了一种业务数据存储方法。本实施例主要以该方法应用于上述图1中的区块链节点120来举例说明。参照图2,该业务数据存储方法具体包括如下步骤:
步骤202,获取用户的业务数据,业务数据包括业务标识。
区块链技术是一种去中心化的利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的互联网数据库技术。区块链系统是运行区块链技术的载体和组织方式,具体可以是多个服务器构成的区块链集群。本实施例中,区块链系统可以是公有链系统、也可以是私有链系统、还可以是联盟链系统。
区块链系统可以是基于区块链的业务系统,在区块链系统平台中,可以预先按照业务类型部署多个区块链,每个区块链都具有对应的业务类型,同一业务类型也可以对应多个区块链。每个区块链都可以具有相应的区块链标识。用户终端中可以安装相应的业务应用,用于用户终端发起相应业务类型的业务请求。区块链系统中包括多个区块链节点,区块链节点可以是部署的服务器,服务器与多个区块链建立了连接,并与多个用户终端建立了连接。
其中,业务数据是指用户所需业务对应生成的数据,业务数据可以有多种形式,例如,可以是用户终端对某一业务发起的业务请求、用户对某一业务的确认请求、用户针对某业务的数据读写操作等。区块链系统中包括多个节点,每个节点都可以对接收的业务数据进行相应的处理。
具体地,服务器接收用户终端发送的业务请求和业务请求携带的数据包,业务请求携带了相应的业务标识,服务器首先对用户的权限和身份进行校验。签名验证通过后,进行步骤204;若匹配失败,则确定该签名验证失败,表示该业务请求存在恶意攻击或业务数据存在恶意篡改的风险,服务器则可以拦截该业务请求和数据包。本实施例中的服务器可以为区块链节点中逻辑节点所对应的服务器。
在一个实施例中,服务器对业务请求和数据包进行解析,从业务请求和数据包获取相应的业务类型和用户对该数据包的签名信息。签名信息可以是用户终端利用基于该业务系统的用户私钥对业务数据的签名,使得服务器基于用户的私钥匹配相应的用户公钥以对用户的签名信息进行验证。服务器获取与业务类型对应的区块链标识,其中,业务类型对应的区块链可能有多个。服务器则根据业务类型和业务标识与多条区块链分别进行哈希计算,得到相应的哈希结果集合,当哈希结果集合中存在与该业务数据对应的目标区块链标识时,则表示对目标区块链具有访问权限。服务器进一步利用签名信息对数据包进行签名验证。具体地,服务器可以利用用户公钥解析相应的签名,得到摘要信息,并按照预设算法计算出数据包的摘要信息,将两个摘要信息进行匹配,若匹配成功则确定签名验证通过。
步骤204,根据业务标识从多条区块链中确定对应的目标区块链标识,生成业务数据对应的当前区块,并生成业务数据对应的操作流水数据。
其中,区块是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和之前一个区块的哈希值的容器数据结构,区块经过网络的共识机制验证并确认区块中的交易。区块账本是指用于记录一段时间产生的待存证数据的载体,记录了多个数据区块的信息。多个数据区块在区块账本中按照生成时间顺序串联。区块包括区块头和区块体。
其中,区块头记录了前一顺序区块的时间戳以及当前数据区块的时间戳。区块还包括区块高度,区块高度是区块链接在主链的个数,也就是连接在区块链上的块数。区块高度可以为区块的标示符,区块的标示符可以包括多个,例如可以包括区块头的哈希值,还可以包括区块高度,每个区块有一个明确的、固定的区块高度。
其中,操作流水数据可以表示业务数据中的详细操作流水信息,可以包括业务请求和业务数据中的具体操作过程信息。例如,当业务数据里包括转账数据时,服务器则提取详细的转账操作信息和转账流水信息,例如赋值对象、赋值路径以及赋值数值等信息,并生成对应的操作流水数据。操作流水数据反映当前业务请求的业务处理过程。
服务器根据业务标识从多条区块链中确定出对应的目标区块链标识后,根据业务数据生成对应的当前区块。具体地,服务器可以获取目标区块链中与当前区块相关联的上一区块的区块头信息,根据上一区块的区块头信息生成当前区块,并将该业务数据写入当前区块中。在生成当前区块时,还可以根据上一区块的区块头信息生成当前区块的特征值,具体可以采用多种哈希算法进行并联计算,从而得到当前区块的特征值。
服务器同时还可以根据业务数据解析出对应的操作流水数据。例如,当业务数据为交易数据时,交易数据中包括了交易信息,例如交易账户、交易数值等信息,服务器则解析出交易信息中的账户流转信息以及对相应帐户的操作步骤信息等操作过程数据,用于记录业务数据的详细操作过程,服务器并利用这些操作过程数据生成该业务数据的操作流水数据。
步骤206,将当前区块分发至目标区块链标识对应的多个区块链节点,使多个区块链节点对当前区块进行共识验证。
其中,区块链节点中包括多个共识节点,共识节点用于对当前区块进行共识机制验证。共识机制是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对于一笔交易,如果利益不相干的若干个节点能够达成共识,就可以认为全网对该交易也能够达成共识。具体地,区块链中的多个节点之间建立了连接通道可以向区块链中的多个节点同步分发数据。
服务器生成业务数据对应的当前区块后,则将当前区块分发至目标区块链标识对应的多个区块链节点。目标区块链中的各个共识节点获取到当前区块后,对当前区块进行共识验证。具体地,共识节点可以采用工作量证明共识机制、权益证明共识机制、股份授权证明共识机制、瑞波币共识机制以及验证池共识机制等任意一种公式算法,对当前区块进行共识验证,以验证当前区块的一致性和有效性。
步骤208,当共识验证通过后,将操作流水数据和当前区块存储至缓存库。
其中,缓存库可以是服务器中的本地存储库,用于存储业务数据对应的操作流水数据和区块。缓存库可以是服务器的磁盘中部署的数据库,例如可以是硬盘存储库。将操作流水数据和当前区块存储至磁盘能够有效地保证数据的存储有效性,从而保障了数据的完整性。
当区块链中的共识节点对当前区块共识验证通过后,服务器则将该业务数据的操作流水数据和当前区块存储至服务器中的缓存库。缓存库对操作流水数据和当前区块进行存储。
在一个实施例中,服务器将操作流水数据进行存储时,还可以对操作流水数据进行合并。例如可以采用全量操作的方式对操作流水数据进行数据同步以及数据合并。其中,全量操作可以指周期性地获取更新的数据,并将更新的数据全部进行同步更新的数据同步方式。对应的增量操作则可以指抓取某个更新时间点之后新增的数据,将新增的部分数据进行同步更新的数据同步方式。
具体地,服务器获取当前区块后,还可以根据当前区块的交易数据与初始的操作流水数据进行合并。例如,服务器可以直接将当前区块的交易数据与初始的操作流水数据根据逻辑进行合并,如初始的操作流水数据包括了业务数据对应的详细操作流水信息,当前区块的交易数据中包括了交易账户数值,则直接将当前区块的交易账户数值新增至操作流水数据中,得到合并更新后的操作流水数据。当初始的操作流水数据中为增量操作的方式存储数据时,服务器可以将增量操作的方式替换为全量操作的方式对操作流水数据进行合并更新。其中,服务器可以将操作流水数据中存储的交易数据的写操作简化为插入、删除两种,例如,可以是针对操作流水数据中某数值的增量操作(如加、减、追加等操作)替换为全量操作,从而得到合并更新后的操作流水数据。其中,对于智能合约中对数据存储有变更逻辑的,也需要根据变更逻辑进行合并。通过对操作流水数据进行合并存储,能够有效地保障存储的数据的一致性和完整性。
在一个实施例中,服务器还可以在生成该业务数据对应的操作流水数据和当前区块之后,并将当前区块分发至区块链中的多个区块链节点之前,将生成的操作流水数据和当前区块存储至缓存库。服务器再将当前区块分发至目标区块链标识对应的多个区块链节点,使多个区块节点对当前区块进行共识验证。
在一个实施例中,服务器将该业务数据的操作流水数据和当前区块存储至缓存库后,还可以将操作流水数据和当前区块同步存储至服务器的磁盘数据库。当节点需要在数据库中读取区块链数据时,节点首先从内存数据库中进行读取。内存数据库的读取速度高于磁盘数据库的读取速度,因此节点从内存数据库中读取区块链数据能够有效提高读取效率。如果读取失败,则节点从磁盘数据库中读取,读取成功后将读取到的区块链数据同步至内存数据库,以便于下次能够直接在内存数据库中进行读取,以便提高读取速度。如果在磁盘数据库中仍然未能读取到所需的区块链数据,则向对应节点返回读取失败的消息。
步骤210,当操作流水数据和当前区块存储成功后,将当前区块写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储。
服务器对操作流水数据和当前区块进行存储,当检测到操作流水数据和当前区块写入磁盘成功后,则获取该当前区块对应的区块高度,根据区块高度将当前区块写入目标区块链中。其中,写入磁盘成功表示操作流水数据和当前区块存储至硬盘的状态为存储成功状态。
具体地,服务器对操作流水数据和当前区块存储成功后,根据区块高度将当前区块进行广播并写入目标区块链的区块账本中,使区块链中的区块链节点根据区块高度将当前区块写入各自节点对应的区块账本中,并对当前区块进程存储,即将当前区块写入目标区块链对应的远程分布式存储库中。
本实施例中,基于区块链的业务系统对业务数据进行处理,服务器获取用户的业务数据后,根据业务标识确定对应的目标区块链标识,并生成对应的当前区块和操作流水数据。操作流水数据中记录了业务数据的详细交易信息,服务器将当前区块同步至目标区块链中的多个区块链节点,使多个区块链节点对当前区块进共识验证,共识验证通过后,服务器先将操作流水数据和当前区块存储至缓存库,以保证操作流水数据和当前区块在本地缓存库中成功缓存和备份。本地存储成功后再将当前区块写入目标区块链中,使多个区块链节点分别对当前区块进行存储,能够有效地对交易数据进行同步存储,由此有效地保障了数据存储的一致性和完整性。当业务数据量较大时,能够有效地利用本地缓存库中存储的数据确认交易结果是否同步成功,业务数据能够得到有效地保障。
在一个实施例中,业务数据包括业务类型,根据业务标识从多条区块链中确定对应的目标区块链标识包括:获取与业务类型对应的区块链标识;若与业务类型对应的区块链标识为多个,对业务标识和多个区块链标识分别进行哈希计算,得到相应的哈希结果集合;从哈希结果集合中选择与业务标识对应的目标区块链标识。
其中,基于区块链的业务系统中可以部署多个业务类型的区块链,在区块链平台中,可以预先按照业务类型生成多个区块链。每个区块链都具有对应的业务类型,同一业务类型也可以对应多个区块链。每个区块链都可以具有相应的区块链标识。例如,区块链标识可以是区块链对应的编号。服务器与多个区块链建立了连接,并与多个用户终端建立了连接。
服务器获取用户终端发送的业务数据后,对业务数据进行解析,得到相应的业务类型和业务标识。服务器则根据业务类型获取业务系统中对应的区块链标识,若与业务类型对应的区块链标识为多个,分别对业务标识和多个区块链标识进行哈希计算,从而得到相应的哈希结果集合。例如,服务器可以采用最高随机权重的哈希算法对业务类型、业务标识和多个区块链标识进行哈希计算,从而得到相应的哈希结果集合。服务器则根据哈希结果集合的一致性选择与业务数据对应的区块链标识,从而将该区块链标识确定为业务数据对应的目标区块链标识。
本实施例中,通过对业务类型、业务标识和多个区块链标识进行哈希计算,能够准确地识别该业务数据对应的目标区块链标识,并将业务数据分发至目标区块链标识对应的区块链中的多个节点,使得相应的节点对业务数据进行进一步处理。从而有效地保证了将业务数据分发至对应的区块链,有效确保了区块链的数据的一致性。
在一个实施例中,如图3所示,业务数据包括用户标识,步骤204,即生成业务数据对应的当前区块具体包括以下步骤:
步骤302,根据业务标识别对应的数据表,从数据表中提取用户标识对应的签名信息。
步骤304,对用户的业务数据和签名信息分别采用不同的哈希算法进行计算,得到至少两部分数据的哈希值。
步骤306,将至少两部分数据的哈希值拼接,得到当前区块的特征值。
步骤308,根据业务数据、签名信息、目标区块链中前一区块的特征值以及当前区块的特征值生成当前区块。
其中,数据表可以是与该用户标识和业务标识相关联的用户表以及交易表等存储相关数据的数据库表。用户可以利用用户终端预先在相应的业务系统中进行注册,生成该用户标识的一对公私钥,并将公私钥上传至业务系统平台。业务系统平台则根据用户注册的用户标识以及选择的业务标识生成该用户的用户数据表,并将该用户数据表进行存储。
其中,区块链中的每个区块的区块数据均包括输入信息(也即是业务数据)、签名信息、父区块的区块头特征值、输入信息特征值、版本号、时间戳和难度值等。父区块为与当前区块相关联的上一个区块。
用户终端向业务系统平台发起业务请求后,服务器获取业务请求携带的业务数据,并根据业务标识确定对应的目标区块链标识。服务器进一步根据目标区块链标识生成该业务数据对应的当前区块。
具体地,服务器根据业务数据中携带的用户标识获取对应的数据表,从数据表中获取该用户标识对应的签名信息,签名信息中包括了该用户标识的密钥信息。服务器还根据目标区块链标识获取目标区块链中上一区块的区块头信息,并提取出上一区块的区块头信息中的区块头特征值。服务器在生成该业务数据对应的区块时,根据业务数据、签名信息、上一区块的区块头特征值以及时间戳等信息进行特征值计算,从而计算得到当前区块的区块特征值。
服务器在生成当前区块的区块特征值时,还可以进一步地采用多种哈希算法进行并联计算。例如,哈希算法可以包括SHA256算法、SM3算法等。具体地,服务器可以将该业务数据和签名信息等用于生成区块特征值的信息分为至少两部分数据,服务器则对该至少两部分数据分别采用不同的哈希算法进行计算,分别得到至少两部分数据对应的哈希值,并将得到的至少两部分数据的哈希值进行拼接,从而得到当前区块的区块特征值。服务器进而根据区块特征值、业务数据、签名信息、上一区块的区块头特征值以及时间戳等信息生成该业务数据的当前区块。
本实施例中,通过利用不同的哈希算法计算得到区块特征值,进而生成该业务数据的当前区块,有效提高了区块数据的安全性。
在一个实施例中,生成业务数据对应的操作流水数据包括:对业务数据进行解析,得到业务数据中的赋值对象、赋值路径以及赋值数值;根据赋值对象、赋值路径以及赋值数值生成业务数据的操作流水数据。
其中,赋值对象可以表示业务数据中的业务发起方和业务接收方,例如,若业务数据中包括交易信息时,赋值对象可以交易发起方和交易接收方;赋值路径可以表示业务数据的数据流向以及处理路径信息等;赋值数值可以表示该业务数据中的操作数值,如交易数额信息。操作流水数据则记录了该业务数据的详细操作过程信息。
服务器获取用户的业务数据后,根据业务数据携带的业务标识确定对应的目标区块链标识,服务器则对业务数据进行解析。具体地,业务数据中包括业务标识和业务详情信息,业务详情信息中包括了业务类型、业务操作对象、业务标的等详情信息,服务器则从业务详情信息中识别并提取出对应的赋值对象、赋值路径以及赋值数值等信息。
服务器进一步根据目标区块链标识利用提取出的赋值对象、赋值路径以及赋值数值生成该业务数据的操作流水数据,由此能够有效地生成该业务数据对应的详细操作过程信息,能够有效地用于对后续远程分布式存储库中的区块数据进行校验,以有效地保障数据存储的一致性和完整性。
在一个实施例中,将操作流水数据和当前区块存储至缓存库包括:根据当前区块的交易详情对操作流水数据进行全量合并处理,得到合并后的操作流水数据;获取当前区块的缓存高度,根据缓存高度将当前区块和操作流水数据分别存储至缓存库中。
其中,缓存库可以为区块链中区块链节点的本地存储库,例如可以是服务器中的硬盘数据库。区块链中的每个区块链节点都有各自对应的本地存储库。全量数据可以表示为针对某交易的对应的所有数据,包括详细的交易过程数据。增量数据可以表示在上一次全量数据的基础上新增的部分数据。
服务器获取业务数据,根据业务数据携带的业务标识确定对应的目标区块链标识,并根据目标区块链标识生成业务数据对应的当前区块以及业务数据对应的操作流水数据。服务器则将当前区块分发至目标区块链标识对应的多个区块链节点。目标区块链中的各个共识节点获取到当前区块后,对当前区块进行共识验证。当区块链中共识节点对当前区块共识验证通过后,服务器则将该业务数据的操作流水数据和当前区块存储至服务器中的缓存库。
在一个实施例中,服务器生成业务数据对应的操作流水数据和当前区块后,初始生成的操作流水数据和当前区块可暂存于服务器的高速缓冲区中,即服务器的高速缓冲存储器中。当区该业务数据的当前区块共识验证通过后,则将高速缓冲区中的操作流水数据和当前区块写入服务器磁盘的缓存库中。
具体地,服务器对该业务数据的操作流水数据进行存储时,还可以根据当前区块中的交易信息对操作流水数据进行合并。具体地,该操作流水数据中包括了该业务数据的详细的交易过程数据,生成的当前区块中也包括交易详情数据,当前区块的交易详情数据可以将写入的交易数据简化为插入、删除操作的数据,当前区块的交易详情数据还可以包括账户结果信息,例如可以包括对应账户的账户剩余数值。服务器对业务数据的操作流水数据进行存储时,可以对操作流水数据中的交易过程数据和当前区块的交易详情数据进行合并,将针对该业务数据的增量操作替换为全量操作。例如,可以将业务数据中针对某数值的增量操作(如加、减、追加等操作)替换为全量操作。其中,对于智能合约中对数据存储有变更逻辑的,也可以根据变更逻辑进行合并。
服务器对操作流水数据进行合并处理后,得到合并后的操作流水数据,从而能够利用操作流水数据有效地记录业务数据对应的完整的交易过程信息,并将合并后的操作流水数据存储至服务器本地的缓存库中。服务器进而根据目标区块链标识获取当前区块的缓存高度,并根据缓存高度将当前区块存储至缓存库中。其中,当前区块的缓存高度可以为目标区块链中的共识节点对该当前区块进行共识,所确定的当前区块的区块高度。
当检测到操作流水数据和当前区块均写入磁盘成功后,服务器则将当前区块在区块链中进行广播。具体地,服务器获取该当前区块对应的区块高度,根据区块高度将当前区块进行广播并写入目标区块链的区块账本中,使区块链中的区块链节点根据区块高度将当前区块写入各自节点对应的区块账本中,即将当前区块写入目标区块链对应的远程分布式存储库中。
本实施例中,先对业务数据对应的合并后的操作流水数据以及当前区块进行存储,再将业务数据对应的当前区块写入区块链的分布式存储库中,能够有效地保证本地存储库中存储了完整的该业务数据对应的交易过程信息,即使当区块链节点中存储的数据存在异常,或者对区块链节点的数据读取存在异常,也能够有效地从本地存储库中获取完整的备份数据,从而有效地保障了交易数据的有效性和完整性。
在一个实施例中,将当前区块写入目标区块链中包括:获取当前区块的区块高度;根据区块高度将当前区块写入目标区块链的区块账本中,使目标区块链中的多个区块链节点对当前区块进行存储。
其中,当前区块的区块高度可以为目标区块链中的共识节点对该当前区块进行共识,所确定的当前区块的区块高度。
服务器取业务数据后,根据业务数据携带的业务标识确定对应的目标区块链标识,并生成业务数据对应的当前区块以及业务数据对应的操作流水数据。服务器则将当前区块分发至目标区块链标识对应的多个区块链节点。目标区块链中的各个共识节点进而对当前区块进行共识验证。当区块链中共识节点对当前区块共识验证通过后,服务器则将该业务数据的操作流水数据和当前区块存储至服务器中的缓存库。
当检测到操作流水数据和当前区块均写入磁盘成功后,服务器根据目标区块链标识获取目标区块链中该当前区块对应的区块高度,根据区块高度将当前区块在目标区块链中进行广播,以通知目标区块链中的各个区块链节点该当前区块已共识通过。目标区块链中的多个区块链节点响应该条广播,进而将当前区块根据区块高度写入各自节点对应的区块账本中,从而实现将当前区块写入目标区块链对应的远程分布式存储库中。通过将共识验证通过后的当前区块写入区块链对应的分布式存储库中,能够有效地保障区块存储的有效性。
在一个实施例中,该方法还包括:当检测到当前区块写入失败时,从缓存库中获取业务数据对应的当前区块。将当前区块重新写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储。
其中,当网络出现波动,或其它问题导致区块链节点中的数据读写或存储失败时,还可以加入重试机制。同时暂停后续区块的处理,以免造成数据不一致。其中,重试机制可以为将服务器中本地磁盘的缓存库中存储的该业务数据的当前区块重新写入目标区块链中。
服务器对获取的业务数据确定对应的目标区块链标识后,生成业务数据对应的当前区块以及业务数据对应的操作流水数据。服务器则将当前区块分发至目标区块链标识对应的多个区块链节点,使目标区块链中的各个共识节点进而对当前区块进行共识验证。当区块链中共识节点对当前区块共识验证通过后,服务器则将该业务数据的操作流水数据和当前区块存储至服务器中的缓存库。当检测到操作流水数据和当前区块存储成功后,将当前区块写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储,从而能够有效地将业务数据对应的当前区块写入目标区块链的分布式存储库中。
其中,在将当前区块写入目标区块链的分布式存储库的过程中,可能会出现网络波动等问题,则可能会导致当前区块写入目标区块链失败。
具体地,服务器将当前区块在目标区块链中进行广播,使目标区块链中的各个区块链节点将当前区块根据区块高度写入各自节点对应的区块账本中,从而实现将当前区块写入目标区块链对应的远程分布式存储库中。每个区块链节点将当前区块写入成功后,还可以返回对应的写入状态信息,区块链节点将当前区块写入成功,则对应的写入状态为写入成功状态。
当服务器检测到区块链节点对当前区块的写入失败,或未接收到返回的写入状态信息时,表示该当前区块可能存在写入异常。服务器则从缓存库中获取该业务数据对应的当前区块以及对应的区块高度。根据区块高度将当前区块重新写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储。本实施例中,若区块存储失败时,通过将本地缓存库中存储的区块重新写入目标区块链中,由此能够在数据丢失的情况下获取完整的备份数据,从而能够有效地保障数据的一致性和完整性。
在一个实施例中,如图4所示,该方法还包括数据重写的步骤,该步骤具体包括以下内容:
步骤402,当检测到目标区块链节点存在异常时,获取缓存库中的缓存高度和目标区块链的区块高度。
步骤404,根据缓存高度和区块高度检测区块的写入状态。
步骤406,若写入状态为未写入,将相应的重新写入目标区块链节点。
其中,服务器和区块链中的各个区块链节点通过网络进行连接,各个节点可以获取到区块链网络中每个节点的节点状态,例如在线状态。当区块链中的区块链节点异常退出时,可能会导致区块写入失败,或者数据缺失。则可以从服务器中本地磁盘的缓存库中获取相应的区块重新写入目标区块链中。
缓存库中的缓存高度为完整缺准确的区块的区块高度,在数据同步成功的情况下,将区块写入目标区块链后,目标区块链的区块高度应当与缓存库中该目标区块链标识对应的缓存高度一致。
服务器对获取的业务数据确定对应的目标区块链标识后,生成业务数据对应的区块以及业务数据对应的操作流水数据。服务器则将对应的区块分发至目标区块链标识对应的多个区块链节点,使目标区块链中的各个共识节点进而对区块进行共识验证。当区块链中共识节点对该区块共识验证通过后,服务器则将该业务数据的操作流水数据和对应的区块存储至服务器中的缓存库。当检测到操作流水数据和该区块存储成功后,将该区块写入目标区块链中,使目标区块链的多个区块链节点对该区块进行存储。
当服务器检测到区块链网络中存在区块链节点异常时,表示对应的区块链节点可能存在区块写入失败的情况。服务器则获取缓存库中目标区块链标识对应的缓存高度和目标区块链的区块高度,根据缓存高度和区块高度检测区块的写入状态。当缓存库中的缓存高度与目标区块链的区块高度一致时,此时区块的写入状态为写入成功,即表示区块已经同步存储成功。当缓存库中的缓存高度与目标区块链的区块高度不一致时,表示区块丢失或存储失败,区块的写入状态则为未写入。
当对应区块的写入状态为未写入时,服务器则将相应的区块重新写入目标区块链节点中。若区块存储失败时,通过将本地缓存库中存储的区块重新写入目标区块链中,由此能够在数据丢失的情况下获取完整的备份数据,从而能够有效地保障数据的一致性和完整性。
在一个实施例中,如图5所示,区块链节点包括主节点和对应的备份节点,该方法还包括数据重写的步骤,该步骤具体包括以下内容:
步骤502,当目标区块链中存在主节点与备份节点的数据不同步时,获取主节点和备份节点之间的时间差或数据量差。
步骤504,根据时间差或数据量差从缓存库中获取相应的操作流水数据。
步骤506,根据操作流水数据确定区块链节点的交易记录中的待补入数据,并根据操作流水数据恢复交易记录中的待补入数据。
步骤508,根据待补入数据将对应的区块重新写入目标区块链节点的存储库中。
其中,区块链系统中包括多个区块链节点,区块链节点可以是部署的服务器,服务器与区块链网络中的各个区块链节点建立了网络连接,各个节点可以获取到区块链网络中每个节点的节点状态,例如在线状态和异常状态等。每个区块链节点还包括主节点和对应的备份节点,以便于对大量的数据进行处理。
目标区块链中还包括由交易输入和交易输出组成的交易记录,例如可以利用UTXO(Unspent Transaction Output,未花费的交易输出)模型的数据结构来存储具体交易数据,UTXO是交易输入和输出的一部分,UTXO可以是交易最基本的组成单元。
服务器对获取的业务数据确定对应的目标区块链标识后,生成业务数据对应的区块以及业务数据对应的操作流水数据。服务器则将对应的区块分发至目标区块链标识对应的多个区块链节点,使目标区块链中的各个共识节点进而对区块进行共识验证。当区块链中共识节点对该区块共识验证通过后,服务器则将该业务数据的操作流水数据和对应的区块存储至服务器中的缓存库。当检测到操作流水数据和该区块存储成功后,将该区块写入目标区块链中,使目标区块链的多个区块链节点对该区块进行存储。
当目标区块链中分布式存储发生主备切换时,可能会导致数据不同步或者数据丢失,区块链系统中的区块链节点的主节点与备节点之间的数据则可能存在差异,主节点和备份节点之间的数据差异可以体现为存在一定的时间差或数据量差。
当检测到目标区块链中存在主节点与备份节点的数据不同步时,对应的区块链节点可以向服务器发送数据同步失败的状态信息,也可以向服务器发送数据同步请求。服务器则获取主节点和备份节点之间的时间差或数据量差,从而确定丢失的部分数据。服务器则根据时间差或数据量差从缓存库中获取相应的操作流水数据。根据操作流水数据确定区块链节点的交易记录中的待补入数据,即丢失的部分数据。服务器并根据操作流水数据恢复交易记录中的待补入数据,进而根据待补入数据将对应的区块重新写入目标区块链节点的存储库中。
本实施例中,当区块链中的分布式节点发生主备切换或者主节点宕机时,需要备份节点进行处理。主节点与备份节点之间可能存在时间差,会导致数据不同步。通过获取主机与备机之间的时间差或数据量记录差,进而根据时间差或数据量记录差从服务器的本地缓存库中获取这部分丢失的数据,发送给备份节点,使得备份节点能够及时对相应的数据进行处理。通过预先在本地缓存库中存储相应的操作流水数据和区块,由此能够在数据丢失的情况下获取完整的备份数据,从而能够有效地保障数据的一致性和完整性。例如在一些交易处理过程,能够有效防止双重支付的情况,有效保障了交易安全。
在一个实施例中,图6为一个具体实施例中业务数据存储方法的流程示意图。如图6所示,该业务数据存储方法具体包括以下步骤:
步骤602,获取用户的业务数据,业务数据包括业务标识。
步骤604,获取与业务类型对应的区块链标识,若与业务类型对应的区块链标识为多个,根据业务类型和业务标识与多条区块链分别进行哈希计算,得到相应的哈希结果集合,根据哈希结果集合选择与业务数据对应的目标区块链标识。
步骤606,根据业务标识别对应的数据表,从数据表中提取用户标识对应的签名信息,对用户的业务数据和签名信息分别采用不同的哈希算法进行计算,得到至少两部分数据的哈希值。
步骤608,将至少两部分数据的哈希值拼接,得到当前区块的特征值,根据业务数据、签名信息、目标区块链中前一区块的特征值以及当前区块的特征值生成当前区块。
步骤610,对业务数据进行解析,得到业务数据中的赋值对象、赋值路径以及赋值数值,根据赋值对象、赋值路径以及赋值数值生成业务数据的操作流水数据。
步骤612,将当前区块分发至目标区块链标识对应的多个区块链节点,使多个区块链节点对当前区块进行共识验证。
步骤614,当共识验证通过后,根据当前区块的交易详情对操作流水数据进行全量合并处理,得到合并后的操作流水数据。
步骤616,获取当前区块的缓存高度,根据缓存高度将当前区块和操作流水数据分别存储至缓存库中。
步骤618,当操作流水数据和当前区块存储成功后,获取当前区块的区块高度;根据区块高度将当前区块写入目标区块链的区块账本中,使目标区块链中的多个区块链节点对当前区块进行存储。
在一个具体的实施例中,参考图7,图7为一个实施例中业务数据存储方法的时序图。如图7所示,服务器获取用户终端发送的业务数据后,根据业务标识从多条区块链中确定对应的目标区块链标识,生成业务数据对应的当前区块,并生成业务数据对应的操作流水数据。服务器则将当前区块分发至目标区块链标识对应的多个区块链节点,使多个区块链节点对当前区块进行共识验证。当共识验证通过后,根据当前区块的交易详情对操作流水数据进行全量合并处理,得到合并后的操作流水数据,获取当前区块的缓存高度,根据缓存高度将当前区块和操作流水数据分别存储至缓存库中。当操作流水数据和当前区块存储成功后,获取当前区块的区块高度;根据区块高度将当前区块写入目标区块链的区块账本中,使目标区块链中的多个区块链节点对当前区块进行存储。
图2-6为一个实施例中业务数据存储方法的流程示意图。应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种业务数据存储装置800,该装置包括数据获取模块802、数据生成模块804、共识验证模块806和数据存储模块808,其中:
数据获取模块802,用于获取用户的业务数据,业务数据包括业务标识。
数据生成模块804,用于根据业务标识从多条区块链中确定对应的目标区块链标识,生成业务数据对应的当前区块,并生成业务数据对应的操作流水数据。
共识验证模块806,用于将业务数据分发至目标区块链标识对应的多个区块链节点,使多个区块链节点对业务数据进行共识验证。
数据存储模块808,用于当共识验证通过后,将操作流水数据和当前区块存储至缓存库;当当前区块存储成功后,将当前区块写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储。
在一个实施例中,业务数据包括业务类型,数据获取模块802还用于获取与业务类型对应的区块链标识;若与业务类型对应的区块链标识为多个,对业务标识和多个区块链标识分别进行哈希计算,得到相应的哈希结果集合;从哈希结果集合中选择与业务标识对应的目标区块链标识。
在一个实施例中,业务数据包括用户标识,数据生成模块804还用于根据业务标识别对应的数据表,从数据表中提取用户标识对应的签名信息;对用户的业务数据和签名信息分别采用不同的哈希算法进行计算,得到至少两部分数据的哈希值;将至少两部分数据的哈希值拼接,得到当前区块的特征值;根据业务数据、签名信息、目标区块链中前一区块的特征值以及当前区块的特征值生成当前区块。
在一个实施例中,数据获取模块802还用于对业务数据进行解析,得到业务数据中的赋值对象、赋值路径以及赋值数值;根据赋值对象、赋值路径以及赋值数值生成业务数据的操作流水数据。
在一个实施例中,数据存储模块808还用于根据当前区块的交易详情对操作流水数据进行全量合并处理,得到合并后的操作流水数据;获取当前区块的缓存高度,根据缓存高度将当前区块和操作流水数据分别存储至缓存库中。
在一个实施例中,数据存储模块808还用于获取当前区块的区块高度;根据区块高度将当前区块写入目标区块链的区块账本中,使目标区块链中的多个区块链节点对当前区块进行存储。
在一个实施例中,如图9所示,上述业务数据存储装置800还包括数据重写模块810,用于当检测到当前区块写入失败时,从缓存库中获取业务数据对应的当前区块;将当前区块重新写入目标区块链中,使目标区块链的多个区块链节点对当前区块进行存储。
在一个实施例中,数据重写模块810还用于当检测到目标区块链节点存在异常时,获取缓存库中的缓存高度和目标区块链的区块高度;根据缓存高度和区块高度检测区块的写入状态;若写入状态为未写入,将相应的区块重新写入目标区块链节点。
在一个实施例中,区块链节点包括主节点和对应的备份节点,数据重写模块810还用于当目标区块链中存在主节点与备份节点的数据不同步时,获取主节点和备份节点之间的时间差或数据量差;根据时间差或数据量差从缓存库中获取相应的操作流水数据;根据操作流水数据确定区块链节点的交易记录中的待补入数据,并根据操作流水数据恢复交易记录中的待补入数据;根据待补入数据将对应的区块重新写入目标区块链的备份节点的存储库中。
图10示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的区块链节点120)。如图10所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现业务数据存储方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行业务数据存储方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的业务数据存储装置可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行。计算机设备的存储器中可存储组成该业务数据存储装置的各个程序模块,比如,图8所示的数据获取模块802、数据生成模块804、共识验证模块806和数据存储模块808。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的业务数据存储方法中的步骤。
例如,图10所示的计算机设备可以通过如图8所示的业务数据存储装置中的数据获取模块802执行步骤202。计算机设备可通过数据生成模块804执行步骤204。计算机设备可通过共识验证模块806执行步骤206。计算机设备可通过数据存储模块808执行步骤208和步骤210。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述业务数据存储方法的步骤。此处业务数据存储方法的步骤可以是上述各个实施例的业务数据存储方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述业务数据存储方法的步骤。此处业务数据存储方法的步骤可以是上述各个实施例的业务数据存储方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (20)
1.一种业务数据存储方法,包括:
获取用户的业务数据,所述业务数据包括业务标识;
根据所述业务标识从多条区块链中确定对应的目标区块链标识,生成所述业务数据对应的当前区块,并生成所述业务数据对应的操作流水数据;
将所述当前区块分发至所述目标区块链标识对应的多个区块链节点,使所述多个区块链节点对所述当前区块进行共识验证;
当共识验证通过后,将所述操作流水数据和所述当前区块存储至缓存库;
当所述操作流水数据和所述当前区块存储成功后,将所述当前区块写入所述目标区块链中,使所述目标区块链的多个区块链节点对所述当前区块进行存储;所述区块链节点包括主节点和对应的备份节点;
当所述目标区块链中存在主节点与备份节点的数据不同步时,获取所述主节点和所述备份节点之间的时间差或数据量差;根据所述时间差或数据量差从所述缓存库中获取相应的操作流水数据;根据所述操作流水数据确定区块链节点的交易记录中的待补入数据,并根据所述操作流水数据恢复所述交易记录中的待补入数据;根据所述待补入数据将对应的区块重新写入所述目标区块链的备份节点的存储库中。
2.根据权利要求1所述的方法,其特征在于,所述业务数据包括业务类型,所述根据所述业务标识从多条区块链中确定对应的目标区块链标识包括:
获取与所述业务类型对应的区块链标识;
若与所述业务类型对应的区块链标识为多个,对所述业务标识和多个区块链标识分别进行哈希计算,得到相应的哈希结果集合;
从所述哈希结果集合中选择与所述业务标识对应的目标区块链标识。
3.根据权利要求1所述的方法,其特征在于,所述业务数据包括用户标识,所述生成所述业务数据对应的当前区块包括:
根据所述业务标识别对应的数据表,从所述数据表中提取所述用户标识对应的签名信息;
对所述用户的业务数据和所述签名信息分别采用不同的哈希算法进行计算,得到至少两部分数据的哈希值;
将所述至少两部分数据的哈希值拼接,得到当前区块的特征值;
根据所述业务数据、所述签名信息、所述目标区块链中前一区块的特征值以及当前区块的特征值生成所述当前区块。
4.根据权利要求1所述的方法,其特征在于,所述生成所述业务数据对应的操作流水数据包括:
对所述业务数据进行解析,得到所述业务数据中的赋值对象、赋值路径以及赋值数值;
根据所述赋值对象、赋值路径以及赋值数值生成所述业务数据的操作流水数据。
5.根据权利要求1所述的方法,其特征在于,所述将所述操作流水数据和所述当前区块存储至缓存库包括:
根据所述当前区块的交易详情对所述操作流水数据进行全量合并处理,得到合并后的操作流水数据;
获取所述当前区块的缓存高度,根据所述缓存高度将所述当前区块和所述操作流水数据分别存储至缓存库中。
6.根据权利要求1所述的方法,其特征在于,所述将所述当前区块写入所述目标区块链中包括:
获取所述当前区块的区块高度;
根据所述区块高度将所述当前区块写入所述目标区块链的区块账本中,使所述目标区块链中的多个区块链节点对所述当前区块进行存储。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
当检测到所述当前区块写入失败时,从所述缓存库中获取所述业务数据对应的当前区块;
将所述当前区块重新写入所述目标区块链中,使所述目标区块链的多个区块链节点对所述当前区块进行存储。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
当检测到所述目标区块链节点存在异常时,获取所述缓存库中的缓存高度和所述目标区块链的区块高度;
根据所述缓存高度和所述区块高度检测区块的写入状态;
若所述写入状态为未写入,将相应的区块重新写入所述目标区块链节点。
9.根据权利要求1至6中任一项所述的方法,其特征在于,所述业务数据包括对业务发起的业务请求、对所述业务的确认请求或针对所述业务的数据读写操作。
10.一种业务数据存储装置,其特征在于,所述装置包括:
数据获取模块,用于获取用户的业务数据,所述业务数据包括业务标识;
数据生成模块,用于根据所述业务标识从多条区块链中确定对应的目标区块链标识,生成所述业务数据对应的当前区块,并生成所述业务数据对应的操作流水数据;
共识验证模块,用于将所述业务数据分发至所述目标区块链标识对应的多个区块链节点,使所述多个区块链节点对所述业务数据进行共识验证;
数据存储模块,用于当共识验证通过后,将所述操作流水数据和所述当前区块存储至缓存库;当所述当前区块存储成功后,将所述当前区块写入所述目标区块链中,使所述目标区块链的多个区块链节点对所述当前区块进行存储;所述区块链节点包括主节点和对应的备份节点;
数据重写模块,用于当所述目标区块链中存在主节点与备份节点的数据不同步时,获取所述主节点和所述备份节点之间的时间差或数据量差;根据所述时间差或数据量差从所述缓存库中获取相应的操作流水数据;根据所述操作流水数据确定区块链节点的交易记录中的待补入数据,并根据所述操作流水数据恢复所述交易记录中的待补入数据;根据所述待补入数据将对应的区块重新写入所述目标区块链的备份节点的存储库中。
11.根据权利要求10所述的装置,其特征在于,所述业务数据包括业务类型;所述数据获取模块,还用于获取与所述业务类型对应的区块链标识;若与所述业务类型对应的区块链标识为多个,对所述业务标识和多个区块链标识分别进行哈希计算,得到相应的哈希结果集合;从所述哈希结果集合中选择与所述业务标识对应的目标区块链标识。
12.根据权利要求10所述的装置,其特征在于,所述业务数据包括用户标识;所述数据生成模块,还用根据所述业务标识别对应的数据表,从所述数据表中提取所述用户标识对应的签名信息;对所述用户的业务数据和所述签名信息分别采用不同的哈希算法进行计算,得到至少两部分数据的哈希值;将所述至少两部分数据的哈希值拼接,得到当前区块的特征值;根据所述业务数据、所述签名信息、所述目标区块链中前一区块的特征值以及当前区块的特征值生成所述当前区块。
13.根据权利要求10所述的装置,其特征在于,所述数据获取模块,还用于对所述业务数据进行解析,得到所述业务数据中的赋值对象、赋值路径以及赋值数值;根据所述赋值对象、赋值路径以及赋值数值生成所述业务数据的操作流水数据。
14.根据权利要求10所述的装置,其特征在于,所述数据存储模块,还用于根据所述当前区块的交易详情对所述操作流水数据进行全量合并处理,得到合并后的操作流水数据;获取所述当前区块的缓存高度,根据所述缓存高度将所述当前区块和所述操作流水数据分别存储至缓存库中。
15.根据权利要求10所述的装置,其特征在于,所述数据存储模块,还用于获取所述当前区块的区块高度;根据所述区块高度将所述当前区块写入所述目标区块链的区块账本中,使所述目标区块链中的多个区块链节点对所述当前区块进行存储。
16.根据权利要求10至15中任一项所述的装置,其特征在于,所述装置还包括:
数据重写模块,用于当检测到所述当前区块写入失败时,从所述缓存库中获取所述业务数据对应的当前区块;将所述当前区块重新写入所述目标区块链中,使所述目标区块链的多个区块链节点对所述当前区块进行存储。
17.根据权利要求10至15中任一项所述的装置,其特征在于,所述装置还包括:
数据重写模块,用于当检测到所述目标区块链节点存在异常时,获取所述缓存库中的缓存高度和所述目标区块链的区块高度;根据所述缓存高度和所述区块高度检测区块的写入状态;若所述写入状态为未写入,将相应的区块重新写入所述目标区块链节点。
18.根据权利要求10至15中任一项所述的装置,其特征在于,所述业务数据包括对业务发起的业务请求、对所述业务的确认请求或针对所述业务的数据读写操作。
19.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
20.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910872678.1A CN110633323B (zh) | 2019-09-16 | 2019-09-16 | 业务数据存储方法、装置、存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910872678.1A CN110633323B (zh) | 2019-09-16 | 2019-09-16 | 业务数据存储方法、装置、存储介质和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110633323A CN110633323A (zh) | 2019-12-31 |
CN110633323B true CN110633323B (zh) | 2023-10-20 |
Family
ID=68971459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910872678.1A Active CN110633323B (zh) | 2019-09-16 | 2019-09-16 | 业务数据存储方法、装置、存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110633323B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111275553B (zh) * | 2020-01-20 | 2023-08-11 | 联动优势科技有限公司 | 一种区块链的数据存储方法及区块链系统 |
CN111339089B (zh) * | 2020-02-21 | 2023-09-22 | 联动优势科技有限公司 | 一种应用于区块链的数据存储与获取方法及装置 |
CN111400328A (zh) * | 2020-03-12 | 2020-07-10 | 北京阿尔山金融科技有限公司 | 数据更新方法、装置及节点服务器 |
CN111522873B (zh) * | 2020-03-19 | 2023-09-05 | 金蝶软件(中国)有限公司 | 区块生成方法、装置、计算机设备和存储介质 |
CN111522874B (zh) * | 2020-03-20 | 2023-09-05 | 金蝶软件(中国)有限公司 | 区块链共识方法、装置、计算机设备和存储介质 |
CN111460504B (zh) * | 2020-03-31 | 2021-11-05 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置、节点设备及存储介质 |
CN113495877A (zh) * | 2020-04-03 | 2021-10-12 | 北京罗克维尔斯科技有限公司 | 数据同步方法及系统 |
CN111488348A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 业务数据区块链的数据存储方法及其装置 |
CN111541756B (zh) * | 2020-04-17 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 区块生成方法、装置、节点设备及存储介质 |
CN111625593B (zh) * | 2020-04-21 | 2023-09-08 | 金蝶软件(中国)有限公司 | 基于区块链的数据处理方法、装置、计算机设备 |
CN111415161B (zh) * | 2020-04-27 | 2024-03-19 | 财付通支付科技有限公司 | 基于区块链的数据验证方法、装置及计算机可读存储介质 |
CN111611321B (zh) * | 2020-06-29 | 2023-07-25 | 度小满科技(北京)有限公司 | 一种数据存储方法、装置及区块链系统 |
CN111885133B (zh) * | 2020-07-10 | 2023-06-09 | 深圳力维智联技术有限公司 | 基于区块链的数据处理方法、装置及计算机存储介质 |
CN112102081B (zh) * | 2020-08-19 | 2024-04-09 | 天星数科科技有限公司 | 生成区块链的方法、装置、可读存储介质及区块链网络 |
CN112150146B (zh) * | 2020-09-22 | 2023-11-03 | 京东科技控股股份有限公司 | 区块链的区块处理方法、装置、设备及存储介质 |
CN112087530B (zh) * | 2020-11-02 | 2022-06-03 | 支付宝(杭州)信息技术有限公司 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
CN112231414B (zh) * | 2020-12-14 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 区块链系统的数据同步方法、装置、可读介质及电子设备 |
CN112738213B (zh) * | 2020-12-25 | 2023-06-30 | 深圳Tcl新技术有限公司 | 基于区块链的任务需求响应方法、装置、系统及存储介质 |
CN112650735B (zh) * | 2020-12-28 | 2022-05-24 | 杭州趣链科技有限公司 | 联盟链的丢失区块确定方法、装置、设备及存储介质 |
CN112866346B (zh) * | 2020-12-31 | 2023-02-03 | 海南大学 | 一种基于区块链的数据分发方法与装置 |
CN112866359B (zh) * | 2021-01-05 | 2023-05-09 | 卓望数码技术(深圳)有限公司 | 数据上链方法、装置、电子设备及存储介质 |
CN112799879B (zh) * | 2021-01-15 | 2024-04-05 | 北京百度网讯科技有限公司 | 节点的故障处理方法、装置、设备和存储介质 |
CN112765275A (zh) * | 2021-01-26 | 2021-05-07 | 成都佳发安泰教育科技股份有限公司 | 基于单一时间坐标系的数据同步交换方法、设备及介质 |
CN112434114B (zh) * | 2021-01-26 | 2021-07-02 | 腾讯科技(深圳)有限公司 | 电子票据处理方法、装置、介质及电子设备 |
CN112905553A (zh) * | 2021-02-07 | 2021-06-04 | 全链通有限公司 | 基于区块链的数据共享方法、装置及系统 |
CN113031883A (zh) * | 2021-02-26 | 2021-06-25 | 广东核电合营有限公司 | 标牌数据打印方法、装置、计算机设备和存储介质 |
WO2022227694A1 (zh) * | 2021-04-29 | 2022-11-03 | 郑杰骞 | 链式结构地址生成、交易数据处理方法、装置及存储介质 |
CN113364874B (zh) * | 2021-06-09 | 2022-06-10 | 网易(杭州)网络有限公司 | 基于区块链的节点同步方法、装置、存储介质及服务器 |
CN113590638A (zh) * | 2021-07-20 | 2021-11-02 | 南京国准数据有限责任公司 | 一种基于区块链的分布式数据存储系统 |
CN113949518A (zh) * | 2021-10-18 | 2022-01-18 | 甘肃同兴智能科技发展有限责任公司 | 一种提高区块链吞吐量的共识方法及系统 |
CN114860847B (zh) * | 2022-06-29 | 2022-09-27 | 深圳红途科技有限公司 | 应用于大数据平台的数据链路处理方法、系统及介质 |
CN115589577B (zh) * | 2022-12-12 | 2023-03-31 | 融合通信技术(天津)有限公司 | 一种通信业务访问管理方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124278A (zh) * | 2017-03-30 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置以及数据共享系统 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN107395659A (zh) * | 2017-03-28 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种业务受理及共识的方法及装置 |
WO2018161478A1 (zh) * | 2017-03-09 | 2018-09-13 | 上海亿账通区块链科技有限公司 | 多区块链的分片处理方法、装置、服务器和存储介质 |
CN109034809A (zh) * | 2018-08-16 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109756582A (zh) * | 2019-03-15 | 2019-05-14 | 腾讯科技(深圳)有限公司 | 区块链网络中的信息记录方法、装置、节点及存储介质 |
CN109785136A (zh) * | 2019-01-30 | 2019-05-21 | 北京京东尚科信息技术有限公司 | 一种区块链的交易处理方法、客户端及区块链网络 |
CN110209681A (zh) * | 2019-05-22 | 2019-09-06 | 深圳壹账通智能科技有限公司 | 区块链数据入链方法、装置、计算机设备和存储介质 |
-
2019
- 2019-09-16 CN CN201910872678.1A patent/CN110633323B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018161478A1 (zh) * | 2017-03-09 | 2018-09-13 | 上海亿账通区块链科技有限公司 | 多区块链的分片处理方法、装置、服务器和存储介质 |
CN107395659A (zh) * | 2017-03-28 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种业务受理及共识的方法及装置 |
CN107124278A (zh) * | 2017-03-30 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置以及数据共享系统 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN109034809A (zh) * | 2018-08-16 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109785136A (zh) * | 2019-01-30 | 2019-05-21 | 北京京东尚科信息技术有限公司 | 一种区块链的交易处理方法、客户端及区块链网络 |
CN109756582A (zh) * | 2019-03-15 | 2019-05-14 | 腾讯科技(深圳)有限公司 | 区块链网络中的信息记录方法、装置、节点及存储介质 |
CN110209681A (zh) * | 2019-05-22 | 2019-09-06 | 深圳壹账通智能科技有限公司 | 区块链数据入链方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110633323A (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110633323B (zh) | 业务数据存储方法、装置、存储介质和计算机设备 | |
CN109741039B (zh) | 记账方法、矿池服务器、终端设备、挖矿节点及矿池 | |
CN110442652B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
CN110598446A (zh) | 基于区块链的测试方法、装置、存储介质和计算机设备 | |
CN106982203B (zh) | 基于区块链技术的鲁棒的atm网络系统及其信息处理方法 | |
EP3591564A1 (en) | Event attestation for an electronic device | |
CN110378755B (zh) | 电子发票生成方法、装置、计算机设备和存储介质 | |
CN110826111B (zh) | 测试监管方法、装置、设备及存储介质 | |
EP3631668B1 (en) | High integrity logs for distributed software services | |
CN111433803A (zh) | 区块链通信和排序 | |
CN110690974B (zh) | 基于区块链的数据验证方法、装置、设备及可读存储介质 | |
CN111191294B (zh) | 基于区块链的单节点记账方法、系统、设备和存储介质 | |
CN111597567B (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN112001731A (zh) | 区块链账户余额的存证、恢复方法及装置 | |
CN114372296B (zh) | 一种基于区块链的用户行为数据审计方法及系统 | |
CN110598375B (zh) | 一种数据处理方法、装置及存储介质 | |
CN111899019A (zh) | 一种黑名单多方交叉验证和共享的方法及系统 | |
CN112448946A (zh) | 基于区块链的日志审计方法及装置 | |
CN108540447B (zh) | 一种基于区块链的证书验证方法及系统 | |
CN111209339B (zh) | 区块同步方法、装置、计算机以及存储介质 | |
CN110912892B (zh) | 一种证书管理方法、装置、电子设备及存储介质 | |
CN110519287B (zh) | 一种信息管理方法及相关设备 | |
KR102622665B1 (ko) | 블록체인 기반의 데이터 관리 방법 및 장치 | |
CN108882230B (zh) | 通话记录管理方法、装置及系统 | |
CN110490005B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |