基于区块链的数据同步方法、系统及存储介质
文献发布时间:2023-06-19 12:18:04
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种基于区块链的数据同步方法、系统及存储介质。
背景技术
客户在中国大陆的金融机构办理跨境人民币汇款业务时,付款方银行接受客户的汇款申请并发出汇款指令,付款方银行直接将款项划转给收款行,或者,付款方银行通过代理行将款项划转给收款行,收款行根据汇款指令的要求将款项解付给收款人。客户汇款中,付款人和收款人中至少一方不是金融机构。
在现行的跨境人民币汇款业务中,汇款路径上的每家银行,依次根据收到的汇款指令进行自身的账务处理,并对收到的汇款指令中的回路信息进行转换得到新的汇款指令信息,将新的汇款指令信息再通过报文的形式传递给其后续的机构,直至汇款头寸到达最终的收款人开户行或收款金融机构,并经其解付入客户账号或收款行自身账户。在整个汇款过程中,只有在前一步骤所关联的两家银行间的资金清算完成以后,新的汇款指令信息才会由此步骤的信息接收方经过转换、再加工处理,顺序推送给该笔汇款业务在发起时所指定的汇款路径上此步骤的信息接收方后续紧临的金融机构。该种汇款方法效率低。
发明内容
本申请实施例提供一种基于区块链的数据同步方法、系统及存储介质,涉及计算机技术领域,有助于提升业务处理的效率。
第一方面,本申请实施例提供一种数据同步方法,应用于区块链数据同步系统,区块链数据同步系统包括:多个节点,该方法包括:第一节点接收第一请求;第一请求包括业务数据和目标节点的标识;目标节点为多个节点中除第一节点外的节点;第一节点获取业务处理路径;业务处理路径中,第一节点为起始节点,目标节点为结束节点,业务处理路径中还包括至少一个中间节点;第一节点向目标节点和至少一个中间节点发送业务数据和业务处理路径;目标节点和至少一个中间节点分别验证业务数据和业务处理路径的合法性,得到各自的第一验证结果或第二验证结果;第一验证结果用于表征验证通过,第二验证结果用于表征验证不通过;目标节点和至少一个中间节点分别向业务处理路径中的各节点发送各自的第一验证结果或第二验证结果,以及各自的关联节点;各节点的关联节点为业务处理路径中该节点的前一个节点或后一个节点;业务处理路径中的各节点拼接接收到的各节点的关联节点,得到从第一节点到目标节点的拼接路径,并验证拼接路径与业务处理路径的一致性,得到各自的第三验证结果或第四验证结果;第三验证结果用于表征验证通过,第四验证结果用于表征验证不通过;业务处理路径中的各节点分别向业务处理路径中的其他节点发送各自的第三验证结果或第四验证结果;在业务处理路径中的各节点的验证结果均包括第一验证结果和第三验证结果的情况下,业务处理路径中的各节点同步处理第一请求所请求的业务。
本申请实施例中,第一节点接收到第一请求后,获取该请求的业务数据和目标节点对应的业务处理路径,并向业务处理路径中每个节点发送业务数据以及业务处理路径,这样,业务处理路径中的每个节点就可以对该业务数据以及业务处理路径分别进行验证,得到验证结果,并向业务处理路径中的其他节点发送得到的验证结果,业务处理路径中的各节点在业务处理路径中的每个节点均验证通过的情况下,同步处理第一请求所请求的业务,节省了等待时间,从而提高了第一请求所请求的业务的处理效率。
一种可能的实现方式中,多个节点还包括管理节点;该方法还包括:第一节点向管理节点发送业务数据和业务处理路径;上述目标节点和至少一个中间节点分别验证业务数据和业务处理路径的合法性,得到各自的第一验证结果或第二验证结果,包括:
目标节点和至少一个中间节点确定各节点的关联节点与各节点是否存在目标对应关系,得到第一子结果;目标对应关系包括各节点的关联节点的标识与各节点的标识的对应关系;目标节点和至少一个中间节点确定各节点的目标数据是否满足预设条件,得到第二子结果;目标数据为各节点在处理第一请求所请求的业务的过程中的待扣减数据;目标节点和至少一个中间节点确定各节点的关联节点是否为已登记节点,得到第三子结果;管理节点确定业务处理路径中的各节点是否为已登记节点,得到第四子结果。
对于目标节点和至少一个中间节点中的各节点:在各节点的第一子结果、第二子结果以及第三子结果均为是的情况下,该节点确定业务数据和业务处理路径合法,得到该节点的第一验证结果;或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点为已登记节点的情况下,该节点确定业务数据和业务处理路径合法,得到该节点的第一验证结果;或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点非已登记节点的情况下,该节点确定业务数据和业务处理路径不合法,得到该节点的第二验证结果;或者,在各节点的第一子结果或第二子结果中任意一个验证结果为否的情况下,该节点确定业务数据和业务处理路径不合法,得到该节点的第二验证结果。
在另一种可能的实现方式中,上述目标节点和至少一个中间节点确定各节点的目标数据是否满足预设条件,得到第二子结果,包括:目标节点和至少一个中间节点中的各节点确定该节点的目标数据大于或者等于业务数量的情况下,该节点确定第二子结果为是;目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为预设的目标类别的情况下,该节点确定第二子结果为是;目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别非目标类别的情况下,该节点确定第二子结果为否。
在另一种可能的实现方式中,该方法还包括:目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为目标类别的情况下,该节点向业务路径中除该节点外的其他节点发送提示信息;提示信息用于表征该节点处理第一请求所请求的业务导致目标数据为负。
在另一种可能的实现方式中,该方法还包括:在业务处理路径中的至少一个节点的验证结果包括第二验证结果或第四验证结果的情况下,至少一个节点向业务处理路径中除该节点外的其他节点发送至少一个节点的验证结果。这样,在业务处理路径汇总的任意一个节点验证不通过的情况下,其他节点均能及时收到该节点的验证结果,提高了业务处理路径中节点间信息的同步性。
第二方面,本申请实施例提供一种数据同步系统,数据同步系统包括多个节点;第一节点用于接收第一请求;第一请求包括业务数据和目标节点的标识;目标节点为多个节点中除第一节点外的节点;第一节点用于获取业务处理路径;业务处理路径中,第一节点为起始节点,目标节点为结束节点,业务处理路径中还包括至少一个中间节点;第一节点用于向目标节点和至少一个中间节点发送业务数据和业务处理路径;目标节点和至少一个中间节点分别用于验证业务数据和业务处理路径的合法性,得到各自的第一验证结果或第二验证结果;第一验证结果用于表征验证通过,第二验证结果用于表征验证不通过;目标节点和至少一个中间节点分别用于向业务处理路径中的各节点发送各自的第一验证结果或第二验证结果,以及各自的关联节点;各节点的关联节点为业务处理路径中该节点的前一个节点或后一个节点;业务处理路径中的各节点用于拼接接收到的各节点的关联节点,得到从第一节点到目标节点的拼接路径,并验证拼接路径与业务处理路径的一致性,得到各自的第三验证结果或第四验证结果;第三验证结果用于表征验证通过,第四验证结果用于表征验证不通过;业务处理路径中的各节点分别用于向业务处理路径中的其他节点发送各自的第三验证结果或第四验证结果;在业务处理路径中的各节点的验证结果均包括第一验证结果和第三验证结果的情况下,业务处理路径中的各节点用于同步处理第一请求所请求的业务。
在一种可能的实现方式中,多个节点还包括管理节点;第一节点还用于向管理节点发送业务数据和业务处理路径;目标节点和至少一个中间节点具体用于确定各节点的关联节点与各节点是否存在目标对应关系,得到第一子结果;目标对应关系包括各节点的关联节点的标识与各节点的标识的对应关系;目标节点和至少一个中间节点具体用于确定各节点的目标数据是否满足预设条件,得到第二子结果;目标数据为各节点在处理第一请求所请求的业务的过程中的待扣减数据;目标节点和至少一个中间节点具体用于确定各节点的关联节点是否为已登记节点,得到第三子结果;管理节点用于确定业务处理路径中的各节点是否为已登记节点,得到第四子结果。
对于目标节点和至少一个中间节点中的各节点:在各节点的第一子结果、第二子结果以及第三子结果均为是的情况下,该节点具体用于确定业务数据和业务处理路径合法,得到该节点的第一验证结果;或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点为已登记节点的情况下,该节点具体用于确定业务数据和业务处理路径合法,得到该节点的第一验证结果;或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点非已登记节点的情况下,该节点具体用于确定业务数据和业务处理路径不合法,得到该节点的第二验证结果;或者,在各节点的第一子结果或第二子结果中任意一个验证结果为否的情况下,该节点具体用于确定业务数据和业务处理路径不合法,得到该节点的第二验证结果。
在另一种可能的实现方式中,目标节点和至少一个中间节点中的各节点确定该节点的目标数据大于或者等于业务数量的情况下,该节点具体用于确定第二子结果为是;目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为预设的目标类别的情况下,该节点具体用于确定第二子结果为是;目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别非目标类别的情况下,该节点具体用于确定第二子结果为否。
在另一种可能的实现方式中,目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为目标类别的情况下,该节点还用于向业务路径中除该节点外的其他节点发送提示信息;提示信息用于表征该节点处理第一请求所请求的业务导致目标数据为负。
在另一种可能的实现方式中,在业务处理路径中的至少一个节点的验证结果包括第二验证结果或第四验证结果的情况下,至少一个节点还用于向业务处理路径中除该节点外的其他节点发送至少一个节点的验证结果。
第三方面,本申请实施例提供一种数据同步装置,包括处理器和存储器,存储器用于存储代码指令,处理器用于运行代码指令,以执行第一方面或第一方面的任意一种可能的实现方式中的第一节点、中间节点、目标节点或管理节点所执行的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中的第一节点、中间节点、目标节点或管理节点所执行的方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中的第一节点、中间节点、目标节点或管理节点所执行的方法。
第六方面,本申请实施例提供一种数据同步系统,该系统包括:能够实现第一方面或第一方面的任意一种可能的实现方式中描述的一种数据同步方法中的第一节点、中间节点、目标节点或管理节点的功能。
第七方面,本申请提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行第一方面或第一方面的任意一种可能的实现方式中第一节点、中间节点、目标节点或管理节点所执行的方法;其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一种可能的实现中,本申请中上述描述的芯片或者芯片系统还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
应当理解的是,本申请的第二方面至第七方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请一实施例提供一笔汇款业务的处理过程的示意图;
图2为本申请一实施例提供的数据同步系统的结构示意图;
图3为本申请一实施例提供的电子设备的结构示意图;
图4为本申请一实施例提供的数据同步方法的流程示意图;
图5为本申请一实施例提供的一种数据同步装置的结构示意图;
图6为本申请一实施例提供的一种芯片的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1)跨境资金收付
跨境资金收付为两个或两个以上国家或者地区之间因国际贸易、国际投资及其它方面所发生的国际间债权债务,借助一定的结算工具和支付系统,实现资金跨国和跨地区的转移的行为。
2)区块链
区块链为去中心化的数据库。区块就是数据块。区块链能够按照时间顺序,借助分布式节点,将区块以顺序相连的方式组合成为链式数据结构。
3)联盟链
联盟链为区块链的一种重要应用类型。联盟链只针对某个特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,每个区块的生成由所有的预选节点共同决定。示例性的,一笔待处理的业务(例如:跨境汇款业务)可以对应联盟链中的一个区块。本申请实施例中处理该业务的节点可以为联盟链中的预选节点(又称记账人)。
4)共识机制
共识机制为区块链事务达成分布式共识的算法,该机制解决了分布式网络中各节点处理事务的一致性问题,也就是网络中所有节点采取何种方式、就某个提案或某一状态达成一致的共识。例如,处理跨境汇款业务的各个节点均采用相同的验证方法对跨境汇款业务进行验证和确认,在每个节点均验证通过的情况下,各节点达成共识。
在中国大陆的金融机构办理跨境人民币汇款业务时,越来越多地对接人民币跨境支付系统(Cross border Inter bank Payment System,CIPS)进行处理。该系统由人民银行主导负责管理与运维。当前,CIPS系统在处理跨境人民币汇款业务的过程中,付款方银行接受客户的汇款申请并发出汇款指令,付款方银行直接将款项划转给收款行,或者,付款方银行通过代理行将款项划转给收款行,收款行根据汇款指令的要求将款项解付给收款人。
示例性的,如图1所示为一笔汇款业务的处理过程,图1中付款方银行101接收客户汇款申请并发出汇款指令,付款方银行101处理汇款申请中的汇款业务对应的账务,然后,付款方银行101向第一中介机构102发送汇款指令,第一中介机构102处理汇款业务对应的账务后,向第二中介机构103发送汇款指令,第二中介机构103处理汇款业务对应的账务后,向收款行104发送汇款指令,收款行104将汇款指令中的款项解付给收款人。在整个汇款过程中,只有在前一步骤所关联的两家机构(如:付款方银行101和第一中介机构102)间的账务处理完成以后,新的汇款指令才会由此步骤的接收方(如:第一中介机构102)经过转换、再加工处理,顺序推送给该汇款业务在发起时所指定的汇款路径上此接收方的后续节点(如:第二中介机构103)。导致汇款业务处理时间长,效率低下。
基于此,本申请实施例提供一种基于区块链的数据同步方法,本申请实施例的数据同步方法可以应用在区块链数据同步系统中,示例性的,图2为本申请实施例提供的一种区块链数据同步系统的结构示意图。图2所示的区块链数据同步系统20包括第一节点201、第一中间节点202、第二中间节点203以及目标节点204,可选的,区块链数据同步系统20还包括管理节点205。该区块链数据同步系统20中的各个节点之间均可以进行通信。
第一节点201用于接收用户的业务请求,该业务请求包括业务数据和目标节点204的标识。第一节点201还用于获取从第一节点201至目标节点204的业务处理路径(例如:第一节点201-第一中间节点202-第二中间节点203-目标节点204),向业务处理路径中的每个节点(如:图2中的第一中间节点202至目标节点204)发送业务数据和获取的业务处理路径。
业务处理路径中的每个节点用于验证接收到的业务数据和业务处理路径,并向业务处理路径中的每个节点发送验证结果,以及该节点的关联节点。业务处理路径中的每个节点还用于根据每个节点的关联节点得到拼接路径,验证拼接路径与业务处理路径是否相同,若不同,则验证不通过,在业务处理路径中的任意一个节点获取的该业务相关的任意一个验证结果表征验证不通过的情况下,向业务处理路径中的其他节点发送表征验证不通过的该验证结果。改业务为业务请求所请求的业务。在业务处理路径中的每个节点得到的该业务相关的验证结果均表征验证通过的情况下,业务处理路径中的每个节点并发处理该业务。这样,在保障了业务处理的安全性的基础上,提升了业务处理的效率。
上述区块链数据同步系统中的各节点(例如:包括第一节点201、第一中间节点202、第二中间节点203、目标节点204以及管理节点206)的功能均可以由如图3所示的电子设备30实现。图3中电子设备30包括但不限于:处理器301、存储器302、通信接口303和电源304等。
处理器301是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器302内的软件程序和/或模块,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器301可包括一个或多个处理单元;可选的,处理器301可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器301中。
存储器302可用于存储软件程序以及各种数据。存储器302可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能单元所需的应用程序等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。可选地,存储器302可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
通信接口303为外部装置与电子设备30连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。通信接口303可以用于接收来自外部装置的输入(例如,数据信息等)并且将接收到的输入传输到电子设备30内的一个或多个元件或者可以用于在电子设备30和外部装置之间传输数据。
电源304(比如:电池)可以用于为各个部件供电,可选的,电源304可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
可选的,本申请实施例中的计算机指令也可以称之为应用程序代码或系统,本申请实施例对此不作具体限定。
需要说明的是,图3所示的电子设备仅为示例,其不对本申请实施例可适用的电子设备构成限定。实际实现时,电子设备可以包括比图3中所示的更多或更少的设备或器件。
图4为本申请实施例提供的一种数据同步方法的流程示意图,图4所示的数据同步方法适用于图2所示的区块链数据同步系统。如图4所示,可以包括以下步骤:
S100:第一节点接收第一请求。第一请求包括业务数据和目标节点的标识;目标节点为区块链数据同步系统中除第一节点外的节点。
在一种可能的实现方式中,第一节点接收终端设备发送的第一请求。
示例性的,假设,第一节点为付款方银行在区块链数据同步系统中的节点,该节点接收终端设备发送的第一请求。其中,终端设备可以为运行该付款方银行的目标系统的客户端的设备,其中,目标系统与区块链数据同步系统存在通信接口,该通信接口可以用于第一节点接收来自该终端设备的数据。
在另一种可能的实现方式中,第一节点在请求录入界面中接收用户的请求录入操作,获取第一请求。
示例性的,假设,第一节点为付款方银行在区块链数据同步系统中的节点,第一节点在请求录入界面中接收用户录入的第一请求。第一请求用于请求处理汇款业务,第一请求可以包括汇款金额和收款账户等信息,其中,该汇款业务的业务数据包括汇款金额,该汇款业务的目标节点的标识为收款账户。
S101:第一节点获取业务处理路径。其中,第一节点为获取的业务处理路径中的起始节点,目标节点为业务处理路径中的结束节点,该业务处理路径中还包括至少一个中间节点。
在一种可能的实现方式中,第一节点获取用户输入的第一请求所请求业务的业务处理路径。
在另一种可能的实现方式中,第一节点根据预设规则确定第一请求所请求业务的业务处理路径。
第一节点中可以预存该区块链数据同步系统中节点与其他节点的目标对应关系,其中,目标对应关系包括节点的标识与关联节点的标识的对应关系。第一节点从多个目标对应关系中确定能将第一节点与目标节点关联起来的节点。第一节点确定从第一节点关联至目标节点的各个节点,组成所请求业务的业务处理路径。
在一个例子中,假设,目标对应关系中包括第一节点与第一中间节点的对应关系、第一中间节点与第二中间节点的对应关系、以及第二中间节点与目标节点的对应关系。那么,第一节点确定第一请求所请求业务的业务处理路径为第一节点、第一中间节点、第二中间节点以及目标节点。
可以理解的是,在第一节点确定的第一请求所请求的业务处理路径的数量大于1的情况下,第一节点可以从多个业务处理路径中任意选择一个业务路径作为第一请求所请求业务的业务处理路径,第一节点也可以从多个业务处理路径中选择默认优先级最高的业务处理路径。
示例性的,第一节点确定的业务处理路径包括第一路径和第二路径,第一路径包括第一节点、第一中间节点、第二中间节点以及目标节点,第二路径包括第一节点、第二中间节点以及目标节点。其中,第一中间节点为第一节点的默认关联节点的情况下,第一节点确定第一路径为第一请求所请求业务的业务处理路径。可以理解的是,每个节点的默认关联节点可以是该节点接收用户输入得到的。
区块链数据同步系统中各个节点可以接收除该节点外的其他节点发送的目标对应关系,各个节点也可以接收用户输入操作,获取目标对应关系。
示例性的,第一中间节点对应的金融机构(例如:银行或代理机构等)在第一节点中开立账户之后,第一节点即为第一中间节点的开户行,第一中间节点为第一节点的账户行,第一节点响应于用户的输入操作获取第一节点与第一中间节点的对应关系(又称账户开立关系)。第一节点向区块链数据同步系统中的各个节点发送该对应关系,区块链数据同步系统中的各个节点存储接收到的该对应关系。
S102:第一节点向目标节点和至少一个中间节点发送业务数据和业务处理路径。
可能的实现方式中,第一节点基于流行病协议(Gossip protocol)向目标节点和至少一个中间节点发送业务数据和业务处理路径。
基于S101中第一路径的示例,第一节点向其关联的第一中间节点发送业务数据和业务处理路径,第一中间节点向其关联的第二中间节点发送业务数据和业务处理路径。第二中间节点向其关联的目标节点发送业务数据和业务处理路径。
S103:目标节点和至少一个中间节点分别验证接收到的业务数据和业务处理路径的合法性,得到各自的第一验证结果或第二验证结果。其中,第一验证结果用于表征验证通过,第二验证结果用于表征验证不通过。
可能的实现方式中,目标节点和至少一个中间节点确定各节点的关联节点与各节点是否存在目标对应关系,得到第一子结果。目标对应关系包括各节点的关联节点的标识与各节点的标识的对应关系。
基于S101中目标对应关系以及第一路径的示例,以第一中间节点确定第一中间节点的关联节点与第一中间节点是否存在目标对应关系为例进行说明,第一路径中第一中间节点的关联节点为第二中间节点和第一节点,若第一中间节点对应的金融机构与第一节点对应的金融机构不存在账户开立关系,或者,第一中间节点对应的金融机构与第二中间节点对应的金融机构不存在账户开立关系,则第一中间节点确定该第一请求所请求的业务不合法,第一中间节点得到的第一子结果表征验证不通过。否则,第一中间节点得到的第一子结果表征验证通过。
需要说明的是,在账户开立关系的验证过程中,也可以仅由开户行所在节点,确定第一子结果,账户行所在节点得到中立信息。其中,中立信息对验证结果不造成影响。
目标节点和至少一个中间节点确定各节点的目标数据是否满足预设条件,得到第二子结果;目标数据为各节点在处理第一请求所请求的业务的过程中的待扣减数据。
可能的实现方式中,目标节点和至少一个中间节点中的各节点确定该节点的目标数据大于或者等于第一请求中业务数量的情况下,该节点确定第二子结果为是。目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于第一请求中业务数量,且目标数据的类别为预设的目标类别的情况下,该节点确定第二子结果为是。目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于第一请求中业务数量,且目标数据的类别非目标类别的情况下,该节点确定第二子结果为否。
基于S101中目标对应关系以及第一路径的示例,以第一中间节点为例进行说明:在第一中间节点中目标账户的余额大于或者等于第一请求所请求的汇款业务中汇款金额的情况下,第一中间节点确定第二子结果为是。其中,目标账户为第二中间节点在第一中间节点中的开户账户。在第一中间节点中目标账户的余额小于第一请求所请求的汇款业务中汇款金额,且第一中间节点中目标账户允许透支的情况下,第一中间节点确定第二子结果为是。在第一中间节点中目标账户的余额小于第一请求所请求的汇款业务中汇款金额,且第一中间节点中目标账户不允许透支的情况下,第一中间节点确定第二子结果为否。
可选的,目标节点和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为目标类别的情况下,该节点向业务路径中除该节点外的其他节点发送提示信息;该提示信息用于表征该节点处理第一请求所请求的业务导致目标数据为负。
示例性的,在第一中间节点中目标账户的余额小于第一请求所请求的汇款业务中汇款金额,且第一中间节点中目标账户允许透支的情况下,第一中间节点向第一节点、第二中间节点以及目标节点发送提示信息,该提示信息用于表征第一中间节点处理该汇款业务将导致第二中间节点在第一中间节点中的开户账户透支。这样,可以对业务处理路径中的其他节点进行风险提示。
目标节点和至少一个中间节点确定各节点的关联节点是否为已登记节点,得到第三子结果。
示例性的,第一中间节点判断第一节点与第二中间节点是否为已登记节点,在第一节点或第二中间节点中的任意一个节点非已登记节点的情况下,第一中间节点确定第三子结果为否,否则,第一中间节点确定第三子结果为是。在第一中间节点在已登记节点的标识中找到第一节点的标识与第二中间节点的标识的情况下,第一中间节点确定第三子结果为是。
需要说明的是,区块链数据同步系统中各节点存储有已登记节点的标识,该已登记节点的标识可以是管理节点发送的。管理节点对加入区块链数据同步系统中的每个节点进行验证,将验证通过的节点的标识加入已登记节点的标识中,并向区块链数据同步系统中各节点发送已登记节点的标识。
管理节点确定业务处理路径中的各节点是否为已登记节点,得到第四子结果。其中,管理节点可以根据预存的已登记节点的标识确定业务处理路径中的各节点是否为已登记节点。
对于目标节点和至少一个中间节点中的各节点:在各节点的第一子结果、第二子结果以及第三子结果均为是的情况下,该节点确定业务数据和业务处理路径合法,得到该节点的第一验证结果。
或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点为已登记节点的情况下,该节点确定业务数据和业务处理路径合法,得到该节点的第一验证结果。这样,结合管理节点得到的第四子结果,在管理节点中已登记该节点,但是该节点的登记信息并没有发送给业务处理路径中的节点的情况下,该节点为已登记节点不会被误判。
或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点非已登记节点的情况下,该节点确定业务数据和业务处理路径不合法,得到该节点的第二验证结果。
或者,在各节点的第一子结果或第二子结果中任意一个验证结果为否的情况下,该节点确定业务数据和业务处理路径不合法,得到该节点的所述第二验证结果。
S104:目标节点和至少一个中间节点分别向业务处理路径中的各节点发送各自的第一验证结果或第二验证结果,以及各自的关联节点;各节点的关联节点为业务处理路径中该节点的前一个节点或后一个节点。
示例性的,假设,第一中间节点验证业务数据与业务处理路径得到的验证结果为第一验证结果,第一中间节点向第一节点、第二中间节点以及目标节点发送第一验证结果,以及第一中间节点的关联节点为第二中间节点。
S105:业务处理路径中的各节点拼接接收到的各节点的关联节点,得到从第一节点到目标节点的拼接路径,并验证拼接路径与业务处理路径的一致性,得到各自的第三验证结果或第四验证结果;第三验证结果用于表征验证通过,第四验证结果用于表征验证不通过。
示例性的,第二中间节点接收到第一节点的关联节点为第一中间节点,第一中间节点的关联节点为第二中间节点,第二中间节点的关联节点为目标节点。第二中间节点得到的拼接路径为第一节点、第一中间节点、第二中间节点以及目标节点。第二中间节点确定该拼接路径与业务处理路径相同,则第二中间节点得到第三验证结果。
S106:业务处理路径中的各节点分别向业务处理路径中的其他节点发送各自的第三验证结果或第四验证结果。
基于S105中的示例,第二中间节点向第一节点、第一中间节点以及目标节点发送第三验证结果。
S107:在业务处理路径中的各节点的验证结果均包括第一验证结果和第三验证结果的情况下,业务处理路径中的各节点同步处理第一请求所请求的业务。
示例性的,第一节点、第一中间节点、第二中间节点以及目标节点分别验证业务数据与业务处理路径的验证结果均为第一验证结果,第一节点、第一中间节点、第二中间节点以及目标节点得到的拼接路径的验证结果均为第三验证结果的情况下,业务处理路径中的各节点同步处理第一请求所请求的业务。
可选的,S108:在业务处理路径中的至少一个节点的验证结果包括第二验证结果或第四验证结果的情况下,该节点向业务处理路径中除该节点外的其他节点发送该节点的验证结果。
示例性的,假设,第一中间节点验证业务数据与业务处理路径的验证结果为第二验证结果的情况下,第一中间节点向第一节点、第二中间节点以及目标节点发送得到的第二验证结果。这样,提高了业务处理的安全性。
本申请实施例中,第一节点在接收到第一请求后,获取第一请求所请求业务的业务处理路径,并向业务处理路径中的每个节点发送业务数据和业务处理路径,这样,实现了在业务请求一发生的时候业务处理路径中的各个节点即获取了业务数据以及业务处理路径等信息,并对获取的信息进行验证。例如,上述汇款业务一发生,处理该汇款业务的业务处理路径中的各节点即获取了汇款业务的汇款金额、目标账户以及汇款路径等信息,并验证这些信息的合法性。在各节点均验证通过的情况下,同步处理第一请求所请求的业务,提高了业务处理的效率。对于汇款业务来说汇款业务的处理时间缩短,加快了资金支付流动性,减少了在途无法利用的资金。
以上对本申请实施例的方法进行了说明,下面对本申请实施例提供的执行上述方法的区块链数据同步系统以及数据同步装置进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本申请实施例提供的数据同步装置可以执行上述数据同步方法中的步骤。
如图2所示为本申请实施例所提供的一种区块链数据同步系统的结构示意图,图2所示的区块链数据同步系统20包括:第一节点201、第一中间节点202、第二中间节点203以及目标节点204,可选的,区块链数据同步系统20还包括管理节点205。第一节点201用于:接收第一请求;第一请求包括业务数据和目标节点204的标识;目标节点204为多个节点中除第一节201点外的节点;第一节点201用于获取业务处理路径;业务处理路径中,第一节点201为起始节点,目标节点204为结束节点,业务处理路径中还包括至少一个中间节点;第一节点201用于向目标节点204和至少一个中间节点发送业务数据和业务处理路径;目标节点204和至少一个中间节点分别用于验证业务数据和业务处理路径的合法性,得到各自的第一验证结果或第二验证结果;第一验证结果用于表征验证通过,第二验证结果用于表征验证不通过;目标节点204和至少一个中间节点分别用于向业务处理路径中的各节点发送各自的第一验证结果或第二验证结果,以及各自的关联节点;各节点的关联节点为业务处理路径中该节点的前一个节点或后一个节点;业务处理路径中的各节点用于拼接接收到的各节点的关联节点,得到从第一节点201到目标节点204的拼接路径,并验证拼接路径与业务处理路径的一致性,得到各自的第三验证结果或第四验证结果;第三验证结果用于表征验证通过,第四验证结果用于表征验证不通过;业务处理路径中的各节点分别用于向业务处理路径中的其他节点发送各自的第三验证结果或第四验证结果;在业务处理路径中的各节点的验证结果均包括第一验证结果和第三验证结果的情况下,业务处理路径中的各节点用于同步处理第一请求所请求的业务。例如:结合图4,第一节点201可以用于执行S100~S108,目标节点204可以用于执行S103~S108。
在一种可能的实现方式中,多个节点还包括管理节点205;第一节点201还用于向管理节点205发送业务数据和业务处理路径;目标节点204和至少一个中间节点具体用于确定各节点的关联节点与各节点是否存在目标对应关系,得到第一子结果;目标对应关系包括各节点的关联节点的标识与各节点的标识的对应关系;目标节点204和至少一个中间节点具体用于确定各节点的目标数据是否满足预设条件,得到第二子结果;目标数据为各节点在处理第一请求所请求的业务的过程中的待扣减数据;目标节点204和至少一个中间节点具体用于确定各节点的关联节点是否为已登记节点,得到第三子结果;管理节点205用于确定业务处理路径中的各节点是否为已登记节点,得到第四子结果。
对于目标节点204和至少一个中间节点中的各节点:在各节点的第一子结果、第二子结果以及第三子结果均为是的情况下,该节点具体用于确定业务数据和业务处理路径合法,得到该节点的第一验证结果;或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点为已登记节点的情况下,该节点具体用于确定业务数据和业务处理路径合法,得到该节点的第一验证结果;或者,在各节点的第一子结果和第二子结果均为是,第三子结果为否,且第四子结果中该节点的关联节点非已登记节点的情况下,该节点具体用于确定业务数据和业务处理路径不合法,得到该节点的第二验证结果;或者,在各节点的第一子结果或第二子结果中任意一个验证结果为否的情况下,该节点具体用于确定业务数据和业务处理路径不合法,得到该节点的第二验证结果。
在另一种可能的实现方式中,目标节点204和至少一个中间节点中的各节点确定该节点的目标数据大于或者等于业务数量的情况下,该节点具体用于确定第二子结果为是;目标节点204和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为预设的目标类别的情况下,该节点具体用于确定第二子结果为是;目标节点204和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别非目标类别的情况下,该节点具体用于确定第二子结果为否。
在另一种可能的实现方式中,目标节点204和至少一个中间节点中的各节点确定该节点的目标数据小于业务数量,且目标数据的类别为目标类别的情况下,该节点还用于向业务路径中除该节点外的其他节点发送提示信息;提示信息用于表征该节点处理第一请求所请求的业务导致目标数据为负。
在另一种可能的实现方式中,在业务处理路径中的至少一个节点的验证结果包括第二验证结果或第四验证结果的情况下,至少一个节点还用于向业务处理路径中除该节点外的其他节点发送至少一个节点的验证结果。
本实施例的区块链数据同步系统对应地可用于执行上述方法实施例中执行的步骤,其实现原理和技术效果类似,此处不再赘述。
如图5所示,为本申请实施例提供的一种数据同步装置,该数据同步装置50可以包括至少一个处理器501、存储器502以及通信接口503,例如,图5中的处理器501。这些处理器501中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。存储器502用于存储代码指令;处理器501用于运行所述代码指令,以执行上述任意实施例所提供的数据同步方法。通信接口503可以用于实现上述任一实施例所提供的数据同步方法中的发送步骤或接收步骤。
示例性的,图6为本申请实施例提供的一种芯片的结构示意图。芯片120包括一个或两个以上(包括两个)处理器1210、通信总线1220以及通信接口1230,可选的,芯片120还包括存储器1240。
在一些实施方式中,存储器1240存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
上述本申请实施例描述的方法可以应用于处理器1210中,或者由处理器1210实现。处理器1210可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1210中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1210可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器1210可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electricallyerasable programmable read only memory,EEPROM)等本领域成熟的存储介质中。该存储介质位于存储器1240,处理器1210通过通信总线1220读取存储器1240中的信息,结合其硬件完成上述方法的步骤。通信接口1230可以用于实现上述任一实施例所提供的数据同步方法中的发送步骤或接收步骤。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
本申请实施例还提供一种计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
上述的组合也应包括在计算机可读介质的范围内。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
- 基于区块链的数据同步方法、系统及存储介质
- 基于区块链的业务数据同步方法及系统、数据库系统