一种基于区块链的业务溯源方法、装置以及电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的业务溯源方法、装置以及电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
有鉴于此,本说明书提供一种基于区块链的业务溯源方法、装置以及电子设备,用以实现针对目标业务维度的业务溯源。
具体地,本说明书是通过如下技术方案实现的:
根据本说明书第一方面,提供一种基于区块链的业务溯源方法,所述方法应用于业务系统,所述区块链存证了多个业务维度的业务凭证;所述多个业务维度的业务凭证构成了多个业务凭证链表;所述业务系统维护了各业务凭证链表的尾节点和各业务凭证链表所属业务维度的业务索引之间的对应关系;
所述方法包括:
响应于客户端发起的针对任一目标业务维度的业务溯源请求;所述业务溯源请求携带所述目标业务维度的业务索引;
查询所述对应关系,确定与所述目标业务维度的业务索引对应的尾节点;
基于所述尾节点中记录的链表指针查询所述区块链存证的所述目标业务维度的业务凭证,并将查询到的业务凭证返回给所述客户端,以完成对目标业务维度的业务溯源。
可选的,所述对应关系通过如下方式更新:
监听所述区块链上存证的目标业务维度的业务凭证;
当监听到所述区块链存证了作为与所述目标业务维度对应的目标业务凭证链表中的新加入节点的目标业务凭证时,将所述目标业务维度的业务索引由解锁状态更新为锁定状态,并将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证;以及,
在将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证之后,将所述目标业务维度的业务凭证由锁定状态更新为解锁状态。
可选的,所述业务凭证包括多个指针字段;各指针字段分别对应不同的业务维度;
所述指针字段用于填充链表指针;所述区块链存证的多个业务维度的业务凭证,基于所述业务凭证的指针字段中的链表指针,构成了多个业务凭证链表。
可选的,所述链表指针为哈希指针。
可选的,所述业务凭证链表为单向链表。
可选的,所述业务凭证链表,包括:
基于区块链上存证的同一笔业务的不同业务阶段的业务凭证,按照业务阶段的顺序构成的第一类业务凭证链表;或者,
基于区块链上存证的多笔业务的业务凭证,按照业务的发生顺序构成的第二类业务凭证链表。
可选的,所述第一类业务凭证链表由同一笔缴费代收业务的出账凭证、支付凭证、销账凭证、结算凭证,按照缴费代收业务的业务阶段顺序构成的链表。
可选的,所述第二类业务凭证链表由以下任意之一构成:
多笔出账凭证按照出账发生顺序构成;
多笔支付凭证按照支付发生顺序构成;
多笔销账凭证按照销账发生顺序构成;
多笔结算凭证按照结算发生顺序构成。
可选的,所述区块链包括缴费机构和支付平台构成的联盟链;
所述业务包括:支付平台面向缴费机构提供的缴费代收业务;所述业务凭证包括:缴费账单、支付凭证、销账凭证、结算凭证、退款凭证。
根据本说明书的第二方面,提供一种基于区块链的业务溯源装置,所述装置应用于业务系统,所述区块链存证了多个业务维度的业务凭证;所述多个业务维度的业务凭证构成了多个业务凭证链表;所述业务系统维护了各业务凭证链表的尾节点和各业务凭证链表所属业务维度的业务索引之间的对应关系;
所述装置包括:
响应单元,用于响应于客户端发起的针对任一目标业务维度的业务溯源请求;所述业务溯源请求携带所述目标业务维度的业务索引;
确定单元,用于查询所述对应关系,确定与所述目标业务维度的业务索引对应的尾节点;
溯源单元,用于基于所述尾节点中记录的链表指针查询所述区块链存证的所述目标业务维度的业务凭证,并将查询到的业务凭证返回给所述客户端,以完成对目标业务维度的业务溯源。
可选的,所述装置还包括:
监听单元,用于监听所述区块链上存证的目标业务维度的业务凭证;
锁定更新单元,用于当监听到所述区块链存证了作为与所述目标业务维度对应的目标业务凭证链表中的新加入节点的目标业务凭证时,将所述目标业务维度的业务索引由解锁状态更新为锁定状态,并将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证;以及,
解锁单元,用于在将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证之后,将所述目标业务维度的业务凭证由锁定状态更新为解锁状态。
可选的,所述业务凭证包括多个指针字段;各指针字段分别对应不同的业务维度;
所述指针字段用于填充链表指针;所述区块链存证的多个业务维度的业务凭证,基于所述业务凭证的指针字段中的链表指针,构成了多个业务凭证链表。
可选的,所述链表指针为哈希指针。
可选的,所述业务凭证链表为单向链表。
可选的,所述业务凭证链表,包括:
基于区块链上存证的同一笔业务的不同业务阶段的业务凭证,按照业务阶段的顺序构成的第一类业务凭证链表;或者,
基于区块链上存证的多笔业务的业务凭证,按照业务的发生顺序构成的第二类业务凭证链表。
可选的,所述第一类业务凭证链表由同一笔缴费代收业务的出账凭证、支付凭证、销账凭证、结算凭证,按照缴费代收业务的业务阶段顺序构成的链表。
可选的,所述第二类业务凭证链表由以下任意之一构成:
多笔出账凭证按照出账发生顺序构成;
多笔支付凭证按照支付发生顺序构成;
多笔销账凭证按照销账发生顺序构成;
多笔结算凭证按照结算发生顺序构成。
可选的,所述区块链包括缴费机构和支付平台构成的联盟链;
所述业务包括:支付平台面向缴费机构提供的缴费代收业务;所述业务凭证包括:缴费账单、支付凭证、销账凭证、结算凭证、退款凭证。
根据本说明书的第三方面,提供一种电子设备,包括:
处理器;
用于存储机器可执行指令的存储器;
其中,通过读取并执行所述存储器存储的与基于区块链的业务溯源的控制逻辑对应的机器可执行指令,所述处理器被促使:
响应于客户端发起的针对任一目标业务维度的业务溯源请求;所述业务溯源请求携带所述目标业务维度的业务索引;
查询已维护的各业务凭证链表的尾节点和各业务凭证链表所属业务维度的业务索引之间的对应关系,确定与所述目标业务维度的业务索引对应的尾节点;
基于所述尾节点中记录的链表指针查询所述区块链存证的所述目标业务维度的业务凭证,并将查询到的业务凭证返回给所述客户端,以完成对目标业务维度的业务溯源;
所述区块链存证了多个业务维度的业务凭证;所述多个业务维度的业务凭证构成了多个业务凭证链表。
由上述描述可以看出,一方面,本说明书采用区块链存证多个业务维度的业务凭证,不仅可以利用区块链中存证的数据具有不可篡改的特性,提高业务溯源的准确性,还可以以多个业务维度对业务凭证进行描述,从而可以为用户提供多个业务维度的溯源服务,有效地提高了溯源服务的丰富性,满足用户多样需求。
另一方面,由于区块链存证的多个业务维度的业务凭证构成多个业务凭证链表,并且业务系统本地维护了各业务凭证链表尾节点和各业务维度的业务索引的对应关系,使得业务系统可以基于尾节,查找到包含该尾节点的业务凭证链表的各节点对应的业务凭证,从而实现业务溯源。
附图说明
图1是本说明书一示例性实施例示出的一种基于区块链的业务溯源系统的示意图;
图2是本说明书一示例性实施例示出的一种业务凭证的示意图;
图3是本说明书一示例性实施例示出的一种基于区块链的业务溯源方法的流程图;
图4是本说明书一示例性实施例示出的一种电子设备的硬件结构图;
图5是本说明书一示例性实施例示出的一种基于区块链的业务溯源装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本说明书旨在提出一种利用区块链存证的多个业务维度的业务凭证,完成针对任一业务维度的业务溯源的技术方案。
一方面,本说明书采用区块链存证多个业务维度的业务凭证,不仅可以利用区块链中存证的数据具有不可篡改的特性,提高业务溯源的准确性,还可以以多个业务维度对业务凭证进行描述,从而可以为用户提供多个业务维度的溯源服务,有效地提高了溯源服务的丰富性,满足用户多样需求。
另一方面,由于区块链存证的多个业务维度的业务凭证构成多个业务凭证链表,并且业务系统本地维护了各业务凭证链表尾节点和各业务维度的业务索引的对应关系,使得业务系统在接收到客户端发送的针对目标业务维度的业务溯源请求后,可以基于该业务溯源请求中的目标业务索引,在该对应关系中确定与该目标业务索引对应的尾节点,并利用该尾节点中的链表指针查找到该尾节点所在业务凭证链表中的每一节点对应的业务凭证,从而完成针对该目标业务维度的业务溯源。
参见图1,图1是本说明书一示例性实施例示出的一种基于区块链的业务溯源系统的示意图。
该区块链的溯源系统包括:区块链、业务系统、客户端。
其中,上述业务系统是指参与业务执行,并为用户提供业务溯源服务的系统。
例如,在缴费代收业务中,用户可以通过支付平台向缴费机构完成缴费。上述业务系统可以为缴费代收业务中的支付平台,或者缴费代收业务中的缴费机构等,这里只是对业务系统进行示例性地说明,不进行具体地限定。
其中,上述缴费机构是指可以出具账单的机构。比如,当该缴费代收业务为缴纳水费、电费业务时,该缴费机构可以为水、电费收款方机构。用户可以通过支付平台,向收款方机构缴纳水、电费等。再比如,当该缴费代收业务为信用卡还款业务时,该缴费结构可以为银行机构,用户可以通过支付平台向银行机构完成信用卡还款业务。
上述支付平台是指可以执行缴费代收功能的第三方平台,比如支付平台可以是支付宝、京东金融、微信和银行具有缴费代收功能的同类产品等。
上述客户端是指与上述业务系统对接的客户端,用户可以通过客户端发起业务溯源,业务系统可向客户端返回业务溯源结果。这里不对客户端进行具体地限定。
上述区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。
而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。
联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
在本说明书描述的区块链,具体可以包括任意类型的区块链网络;在实际应用中,可以采用共有链、私有链、或者联盟链中的任意一种。
例如,在缴费代收场景下,该区块链可以是由上述缴费机构和支付平台构成的联盟链。这里只是示例性地说明,不进行具体地限定。
在介绍本说明书提供的基于区块链的业务溯源方法之前,先对本说明书涉及的概念进行说明。
1)业务维度和业务索引
业务维度是指描述业务的角度。
比如,在缴费代收场景下,一笔缴费代收业务涉及到业务流水号、缴费用户和缴费机构等。该缴费代收业务可以通过业务流水号角度描述,也可以从缴费用户角度进行描述,也可以通过缴费机构角度描述,该业务流水号、缴费用户和缴费机构即是缴费代收业务的业务维度。
业务索引与业务维度对应,一个业务维度下可包括多个业务索引。
比如,业务维度为业务流水号,业务索引为具体的流水号,比如业务索引为业务流水号1234567,业务索引为流水号1345678。
再比如,业务维度为缴费用户,业务索引为具体的缴费用户标识。比如,业务索引是缴费用户王某的用户ID等。
这里只是对业务维度和业务索引进行示例性地说明,不进行具体地限定。
2)业务凭证
业务凭证是指执行各笔业务各个阶段所生成的凭证数据。
比如,用户购买了一些服务或者商品等后,缴费机构会生成该用户的出账凭证。而用户支付这些服务或商品时需要通过支付平台来完成支付。
具体地,支付平台在收到用户支付的资金后可将资金存入中间账户,并生成支付凭证。支付平台通知缴费机构进行销账,缴费机构生成销账凭证。在结算时,支付平台会将各用户针对该缴费机构支付资金结算给该缴费机构,并生成结算凭证。若交易不成功发生退款,支付平台可用户缴纳的资金退还给用户,并生成退款凭证。
上述出账凭证、支付凭证、销账凭证、结算凭证、退款凭证均是业务凭证。这里只是对业务凭证进行示例性地说明,不进行具体地限定。
在本说明书实施例中,当业务执行方生成业务凭证后,可将凭证发布至区块链进行存证。
仍以缴费代收场景为例进行说明,用户购买一些服务或商品等后,缴费机构会生成该用户的出账凭证,并将出账凭证发布至区块链进行存证。
当支付平台监听到区块链存证的出账凭证后,可向用户发起支付服务。在用户完成支付后,支付平台可生成支付凭证,并将该支付凭证发布至区块链进行存证。
当缴费机构监听到该区块链存证的支付凭证后,可进行销账处理,并生成销账凭证,并将销账凭证发布至区块链进行存证。
当支付平台监听到区块链上存证的销账凭证后,可获取缴费机构的销账结果。
支付平台可以基于区块链存证的支付凭证和销账凭证,完成结算,并将结算凭证发布至区块链进行存证。
2)业务凭证链表
在本说明书实施例中,本说明书区块链上存证的业务凭证包括多个指针字段。各指针字段分别与多个维度的业务相对应。
针对每一个业务维度,与该业务维度对应的指针字段中填充有指向上一笔业务凭证或者上一个业务阶段的业务凭证的链表指针。与该业务维度对应的业务凭证通过自身指针字段填充的链表指针,构成与该业务维度对应的业务凭证链表。
由此可以看出,区块链上存证的业务凭证通过自身储存的与不同业务维度对应的指针字段中的链表指针,形成了与各业务维度对应的各业务凭证链表。
本说明书业务凭证链表可包括:
基于区块链上存证的同一笔业务的不同业务阶段的业务凭证,按照业务阶段的顺序构成的第一类业务凭证链表;或者,
基于区块链上存证的多笔业务的业务凭证,按照业务的发生顺序构成的第二类业务凭证链表。
例如,在缴费代收场景下,该第一类业务凭证链表可以是由区块链存证的出账凭证、支付凭证、销账凭证、结算凭证,按照缴费代收业务的业务阶段顺序构成的链表。
比如在缴费代收场景下,该第二类业务凭证链表可以是由多笔缴费账单凭证按照出账顺序构成。该第二类业务凭证链表还可以是由多笔支付凭证按照支付发生顺序构成。该第二类业务凭证链表还可以是由多笔销账凭证按照销账发生顺序构成。该第二类业务凭证还可以是由多笔结算凭证按照结算发生顺序构成。
例如,如图2所示,假设业务凭证为第三笔支付凭证。
比如,第三笔支付凭证中包含2个指针字段,分别为指针字段1、指针字段2。指针字段1、指针字段2分别与业务流水号维度、缴费用户维度这两个业务维度对应。
假设该第三笔支付凭证的业务流水号为1234567,该第三笔支付凭证对应的缴费用户为用户1
该第三笔支付凭证的指针字段1填充了流水号为1234567的业务的上一个阶段的业务凭证,即填充了流水号为1234567的第三笔出账凭证的链表指针。当然区块链上还存证有该流水号为1234567的业务的第三笔销账凭证和第三笔结算凭证。该第三笔销账凭证中与该流水号维度对应的指定字段里填写了该第三笔支付凭证的链表指针。该第三笔结算凭证中与该流水号维度对应的指定字段里填充了该第三笔销账凭证的链表指针。通过流水号为1234567的业务各阶段的业务凭证按照业务阶段的顺序,形成了与流水号业务维度对应的业务凭证链表1,即该业务凭证链表1各节点依次为第三笔出账凭证、第三笔支付凭证、第三笔销账凭证和第三笔结算凭证。该业务凭证链表1对应的业务维度为流水号业务维度、该业务凭证链表1对应的业务索引为流水号1234567。该与流水号维度对应的业务凭证链表即为上述第一类业务凭证链表。
该第三笔支付凭证的指针字段2填充了与缴费用户1对应的第二笔支付凭证的链表指针,该第二笔支付凭证中与该缴费用户1对应的指针字段填充了与该缴费用户1对应的第一笔支付凭证的链表指针。通过与缴费用户1对应的各笔支付指针按照支付发生顺序形成了与缴费用户1对应的业务凭证链表2,即该业务凭证链表2的各节点依次为与该缴费用户1对应的第一笔支付凭证、第二笔支付凭证和第三笔支付凭证。业务凭证链表2对应的业务维度为缴费用户维度、业务索引为缴费用户1的标识。业务凭证链表2级为上述第二类业务凭证链表。
其中,上述业务凭证链表可以为单向链表,上述链表指针可以为哈希指针。这里只是示例性地说明,不进行具体地限定。
由上述描述可知,一方面,本说明书采用区块链存证多个业务维度的业务凭证,不仅可以利用区块链中存证的数据具有不可篡改的特性,提高业务溯源的准确性,还可以以多个业务维度对业务凭证进行描述,从而可以为用户提供多个业务维度的溯源服务,有效地提高了溯源服务的丰富性,满足用户多样需求。
此外,业务系统还维护了各业务凭证链表的尾节点和各业务凭证链表所属业务维度的业务维度的业务索引之间的对应关系。
例如,假设包括3条业务凭证链表,分别为业务凭证链表1、业务凭证链表2、业务凭证链表3。
业务凭证链表1对应的业务维度为业务流水号,业务凭证链表1的业务索引为流水号1234567,尾节点为业务凭证链表1中的第4个节点。
业务凭证链表2对应的业务维度为业务流水号,业务凭证链表2的业务索引为流水号1314288,尾节点为业务凭证链表1中的第3个节点。
业务凭证链表3对应的业务维度为缴费用户,业务凭证链表3的业务索引为流水号缴费用户1的标识,尾节点为业务凭证链表1中的第3个节点。
业务系统维护的对应关系如表1所示。
表1
需要说明的是,业务系统维护的对应关系中的尾节点可以是业务凭证链表尾节点对应的业务凭证,也可以是指向该业务凭证链表尾节点的哈希指针。这里只是示例性地说明,不进行具体地限定。
通过在业务系统本地维护各链表尾节点和各业务凭证链表所属业务维度的业务维度的业务索引之间的对应关系,使得业务系统可以基于尾节点,在区块链上查找到包含该尾节点的业务凭证链表中各节点对应的业务凭证,从而实现了业务溯源,并提高了业务溯源的效率。
参见图3,图3是本说明书一示例性实施例示出的一种基于区块链的业务溯源方法的流程图,该方法可应用在业务系统上,可包括如下所示步骤。
步骤302:业务系统可响应于客户端发起的针对任一目标业务维度的业务溯源请求;所述业务溯源请求携带所述目标业务维度的业务索引。
步骤304:业务系统查询所述对应关系,确定与所述目标业务维度的业务索引对应的尾节点。
在实现时,当客户端监听到用户针对目标业务维度的业务溯源的发起操作后,可向业务系统发起针对该目标业务维度的业务溯源请求。该业务溯源请求中携带有目标业务维度的业务索引。
业务系统可响应于该客户端发起的针对该目标业务维度的业务溯源请求,在上述业务系统维护的对应关系中,确定与该目标业务维度的业务索引对应的尾节点。
例如,客户端向业务系统发起的业务溯源请求携带的目标业务维度的业务索引为流水号1234567。
业务系统可响应于该业务溯源请求,在表1所示的对应关系中,查找与流水号1234567对应的尾节点。在本例中,查找到的尾节点为业务凭证链表1的第3个节点。
步骤306:业务系统基于所述尾节点中记录的链表指针查询所述区块链存证的所述目标业务维度的业务凭证,并将查询到的业务凭证返回给所述客户端,以完成对目标业务维度的业务溯源。
在实现时,当该业务系统维护的尾节点为尾节点对应的业务凭证时,业务系统可基于该业务凭证中与该目标业务维度的业务索引对应的指针字段,查找到该尾节点所属业务凭证链表上一个链表节点,再依据该上一个链表节点中与该目标业务维度的业务索引对应的指针字段,查找该业务凭证链表倒数第三个链表节点。依次类推,获取该目标业务维度的业务索引对应的业务凭证链表上各链表节点对应的业务凭证,并将该业务凭证返回给客户端,从而完成该目标业务维度的业务溯源。
当该业务系统维护的尾节点是指向该尾节点的哈希指针时,业务系统可基于本地维护的哈希指针找到尾节点,再基于该尾节点对应的业务凭证中与该目标业务维度的业务索引对应的指针字段,查找到该尾节点所属业务凭证链表上一个链表节点,再依据该上一个链表节点中与该目标业务维度的业务索引对应的指针字段,查找该业务凭证链表倒数第三个链表节点。依次类推,获取该目标业务维度的业务索引对应的业务凭证链表上各链表节点对应的业务凭证,并将该业务凭证返回给客户端,从而完成该目标业务维度的业务溯源。
仍以步骤302中例子为例,假设业务系统查找到的尾节点为业务凭证链表1的第3个节点。
假设业务凭证链表1的第一个链表节点对应出账凭证、第二个链表节点对应支付凭证、第三个链表节点对应销账凭证。
其中,支付凭证中与业务流水号1234567对应的指针字段填充了指向出账凭证的哈希指针。销账凭证中与业务流水号1234567对应的指针字段填充了指向支付凭证的哈希指针。
当业务系统维护的尾节点为该销账凭证时,业务系统可基于销账凭证中指向支付凭证的哈希指针,在区块链中找到支付凭证。业务系统再依据支付凭证中指向出账凭证的哈希指针,在区块链中找到出账凭证。业务系统可将查找到的出账凭证、支付凭证、销账凭证返回给用户,从而实现针对业务流水号1234567的业务溯源。
当业务系统维护的尾节点为指向该销账凭证的哈希指针时,业务系统可基于该哈希指针在区块链中查找销账凭证,并基于销账凭证中指向支付凭证的哈希指针,在区块链中找到支付凭证。业务系统再依据支付凭证中指向出账凭证的哈希指针,在区块链中找到出账凭证。业务系统可将查找到的出账凭证、支付凭证、销账凭证返回给用户,从而实现针对业务流水号1234567的业务溯源。
由上述描述可知,由于区块链存证的多个业务维度的业务凭证构成多个业务凭证链表,并且业务系统本地维护了各业务凭证链表尾节点和各业务维度的业务索引的对应关系,使得业务系统在接收到客户端发送的针对目标业务维度的业务溯源请求后,可以基于该业务溯源请求中的目标业务索引,在该对应关系中确定与该目标业务索引对应的尾节点,并利用该尾节点中的链表指针查找到该尾节点所在业务凭证链表中的每一节点对应的业务凭证,从而完成针对该目标业务维度的业务溯源。
此外,本说明书还提供了一种针对业务系统维护的对应关系的更新方法。为了保证在对对应关系更新时,不会对对应关系进行重复更新。因此,在对对应关系进行更新时,先将该对应关系中的业务索引加锁,使得该业务索引对应的尾节点不能被重复更新。在对该业务索引的尾节点进行更新后,业务系统可将该业务索引解锁。
在实现时,业务系统监听所述区块链上存证的目标业务维度的业务凭证;
当业务系统监听到所述区块链存证了作为与所述目标业务维度对应的目标业务凭证链表中的新加入节点的目标业务凭证时,将所述目标业务维度的业务索引由解锁状态更新为锁定状态,并将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证;以及,
业务系统在将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证之后,将所述目标业务维度的业务凭证由锁定状态更新为解锁状态;其中,当所述业务索引为锁定状态时,无法重复更新与所述业务索引对应的尾节点。
例如,假设,当前业务系统维护了销账凭证(与业务流水号1234567对应的业务凭证链表的尾节点)、业务流水号1234567(业务索引)的对应关系1。
当业务系统监听到区块链上存证的与业务流水号1234567对应的结算凭证以新加入节点的身份加入到与业务流水号1234567对应的业务凭证链表时,业务系统可将业务流水号1234567由解锁状态更新为锁定状态,并将本地维护的对应关系1中的尾节点由销账凭证更新为结算凭证。在尾节点更新完成后,将该流水号1234567由锁定状态更新为解锁状态。
与上述方法实施例相对应,本说明书还提供了一种基于区块链的业务溯源装置的实施例。本说明书基于区块链的业务溯源装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书的区块的业务配置装置所在电子设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
参见图5,图5是本说明书一示例性实施例示出的一种基于区块链的业务溯源装置的框图,所述装置应用于业务系统,所述区块链存证了多个业务维度的业务凭证;所述多个业务维度的业务凭证构成了多个业务凭证链表;所述业务系统维护了各业务凭证链表的尾节点和各业务凭证链表所属业务维度的业务索引之间的对应关系;
所述装置包括:
响应单元501,用于响应于客户端发起的针对任一目标业务维度的业务溯源请求;所述业务溯源请求携带所述目标业务维度的业务索引;
确定单元502,用于查询所述对应关系,确定与所述目标业务维度的业务索引对应的尾节点;
溯源单元503,用于基于所述尾节点中记录的链表指针查询所述区块链存证的所述目标业务维度的业务凭证,并将查询到的业务凭证返回给所述客户端,以完成对目标业务维度的业务溯源。
可选的,所述装置还包括:
监听单元504,用于监听所述区块链上存证的目标业务维度的业务凭证;
锁定更新单元505,用于当监听到所述区块链存证了作为与所述目标业务维度对应的目标业务凭证链表中的新加入节点的目标业务凭证时,将所述目标业务维度的业务索引由解锁状态更新为锁定状态,并将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证;以及,
解锁单元506,用于在将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证之后,将所述目标业务维度的业务凭证由锁定状态更新为解锁状态。
可选的,所述业务凭证包括多个指针字段;各指针字段分别对应不同的业务维度;
所述指针字段用于填充链表指针;所述区块链存证的多个业务维度的业务凭证,基于所述业务凭证的指针字段中的链表指针,构成了多个业务凭证链表。
可选的,所述链表指针为哈希指针。
可选的,所述业务凭证链表为单向链表。
可选的,所述业务凭证链表,包括:
基于区块链上存证的同一笔业务的不同业务阶段的业务凭证,按照业务阶段的顺序构成的第一类业务凭证链表;或者,
基于区块链上存证的多笔业务的业务凭证,按照业务的发生顺序构成的第二类业务凭证链表。
可选的,所述第一类业务凭证链表由同一笔缴费代收业务的出账凭证、支付凭证、销账凭证、结算凭证,按照缴费代收业务的业务阶段顺序构成的链表。
可选的,所述第二类业务凭证链表由以下任意之一构成:
多笔出账凭证按照出账发生顺序构成;
多笔支付凭证按照支付发生顺序构成;
多笔销账凭证按照销账发生顺序构成;
多笔结算凭证按照结算发生顺序构成。
可选的,所述区块链包括缴费机构和支付平台构成的联盟链;
所述业务包括:支付平台面向缴费机构提供的缴费代收业务;所述业务凭证包括:缴费账单、支付凭证、销账凭证、结算凭证、退款凭证。
与上述方法实施例对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的业务溯源的控制逻辑对应的机器可执行指令,所述处理器被促使:
响应于客户端发起的针对任一目标业务维度的业务溯源请求;所述业务溯源请求携带所述目标业务维度的业务索引;
查询已维护的各业务凭证链表的尾节点和各业务凭证链表所属业务维度的业务索引之间的对应关系,确定与所述目标业务维度的业务索引对应的尾节点;
基于所述尾节点中记录的链表指针查询所述区块链存证的所述目标业务维度的业务凭证,并将查询到的业务凭证返回给所述客户端,以完成对目标业务维度的业务溯源;
所述区块链存证了多个业务维度的业务凭证;所述多个业务维度的业务凭证构成了多个业务凭证链表。
可选的,通过读取并执行所述存储器存储的与基于区块链的业务溯源的控制逻辑对应的机器可执行指令,所述处理器被促使:
监听所述区块链上存证的目标业务维度的业务凭证;
当监听到所述区块链存证了作为与所述目标业务维度对应的目标业务凭证链表中的新加入节点的目标业务凭证时,将所述目标业务维度的业务索引由解锁状态更新为锁定状态,并将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证;以及,
在将维护的所述目标业务凭证链表的尾节点更新为所述目标业务凭证之后,将所述目标业务维度的业务凭证由锁定状态更新为解锁状态。
可选的,所述业务凭证包括多个指针字段;各指针字段分别对应不同的业务维度;
所述指针字段用于填充链表指针;所述区块链存证的多个业务维度的业务凭证,基于所述业务凭证的指针字段中的链表指针,构成了多个业务凭证链表。
可选的,所述链表指针为哈希指针。
可选的,所述业务凭证链表为单向链表。
可选的,所述业务凭证链表,包括:
基于区块链上存证的同一笔业务的不同业务阶段的业务凭证,按照业务阶段的顺序构成的第一类业务凭证链表;或者,
基于区块链上存证的多笔业务的业务凭证,按照业务的发生顺序构成的第二类业务凭证链表。
可选的,所述第一类业务凭证链表由同一笔缴费代收业务的出账凭证、支付凭证、销账凭证、结算凭证,按照缴费代收业务的业务阶段顺序构成的链表。
可选的,所述第二类业务凭证链表由以下任意之一构成:
多笔出账凭证按照出账发生顺序构成;
多笔支付凭证按照支付发生顺序构成;
多笔销账凭证按照销账发生顺序构成;
多笔结算凭证按照结算发生顺序构成。
可选的,所述区块链包括缴费机构和支付平台构成的联盟链;
所述业务包括:支付平台面向缴费机构提供的缴费代收业务;所述业务凭证包括:缴费账单、支付凭证、销账凭证、结算凭证、退款凭证。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。