基于区块链的交易验证方法、装置、存储介质及电子设备与流程

文档序号:16632909发布日期:2019-01-16 06:44阅读:182来源:国知局
基于区块链的交易验证方法、装置、存储介质及电子设备与流程

本发明涉及互联网金融技术领域,尤其涉及一种基于区块链的交易验证方法、装置、存储介质及电子设备。



背景技术:

资产支持证券(asset-backedsecurities,简称abs)是指以基础资产未来可产生的稳定现金流为支撑,通过标准化产品设计进行信用增级,在此基础上发行证券的金融活动。区块链技术是一种新型的去中心化协议,能安全的存储交易数据,信息不可伪造和篡改,可自动执行智能合约,无需任何中心化机构的审核,这种“去中心化”、“去信任”的区块链机制从更深远地意义来说,降低了全球交易链条里的信用成本。

其中,将区块链应用在资产证券化领域,目前业界主要使用了区块链的共享存证特性。主要实施流程包括:将各类资产以固定时序记录入链,将资产相关指令记录入链,将资产相关变更凭证记录入链等等。资产证券化业务围绕着资产的所有权变迁来开展,将所有资产涉及的数据、指令与凭证记录到区块链中,仅仅可以起到数据存证的目的。

但是,现有的资产证券化业务流程仅仅将区块链的存证特性应用在了资产证券化的业务流程中,虽然,一定程度上只是满足各个参与方之间数据共享的需求,但这仅仅是数据上链共享,并没有对于资产状态变迁的有效交易验证,从而没有办法保证资产严格按照业务流程上链。



技术实现要素:

本发明提供一种基于区块链的交易验证方法、装置、存储介质及电子设备,以将业务流程的依赖关系以及交易验证集成到区块链的智能合约中,以契合资产证券化的整体业务流程。

第一方面,本发明实施例提供一种基于区块链的交易验证方法,包括:

确定当前待写入区块链账本的待交易数据,所述待交易数据包括:待变更状态名以及前序链接,所述前序链接用于链接所述待交易数据与已交易数据,其中,所述已交易数据为所述待交易数据的前一次成功交易数据;

根据所述前序链接获取已交易数据,所述已交易数据包括:后续可能变更状态集合,所述后续可能变更状态集合包括所述已交易数据后续所有可能的变更状态;

判断所述待变更状态名是否属于所述后续可能变更状态集合;

若判断结果为是,则所述待交易数据流程检验成功,若所述判断结果为否,则所述待交易数据流程检验错误。

在一种可能的设计中,在所述根据所述前序链接获取所述已交易数据之前,还包括:

确定所述待变更状态名所属的第一子流程;

确定所述第一子流程在当前业务状态数据集合中的数据状态,所述数据状态为空数据状态或非空数据状态。

在一种可能的设计中,所述第一子流程为以下流程中的任意一个流程:

贷款申请、质押文件上传、差额划拨、本息还款、非本息还款、回购。

在一种可能的设计中,在所述确定所述第一子流程在当前业务状态数据集合中的数据状态之后,还包括:

若所述数据状态为所述空数据状态,则根据所述前序链接遍历所述当前业务状态数据集合中每个子流程所对应的最新状态;

若存在与所述前序链接匹配的第二子流程,则所述第二子流程的最新状态的交易数据为所述已交易数据。

在一种可能的设计中,在所述确定所述第一子流程在当前业务状态数据集合中的数据状态之后,还包括:

若所述数据状态为所述空数据状态,则根据所述前序链接遍历所述当前业务状态数据集合中每个子流程所对应的最新状态;

若不存在与所述前序链接匹配的第二子流程,则所述待交易数据流程检验错误。

在一种可能的设计中,所述第二子流程为以下流程中的任意一个流程:

贷款申请、质押文件上传、差额划拨、本息还款、非本息还款、回购。

在一种可能的设计中,在所述确定所述第一子流程在当前业务状态数据集合中的数据状态之后,还包括:

若所述数据状态为所述非空数据状态,则从所述当前业务状态数据集合中获取所述第一子流程的最新状态;

判断所述前序链接是否匹配所述第一子流程的最新状态的交易数据,判断结果为是。

在一种可能的设计中,在所述确定所述第一子流程在当前业务状态数据集合中的数据状态之后,还包括:

若所述数据状态为所述非空数据状态,则从所述当前业务状态数据集合中获取所述第一子流程的最新状态;

判断所述前序链接是否匹配所述第一子流程的最新状态的交易数据;

若判断结果为否,则所述待交易数据流程检验错误。

在一种可能的设计中,所述已交易数据还包括:已交易标识号以及已交易业务信息;

所述已交易标识号用于与所述待交易数据中的所述前序链接建立链接关系;

所述已交易业务信息为已写入所述区块链账本的具体业务交易信息。

在一种可能的设计中,所述待交易数据还包括:待交易标识号以及待交易业务信息;

所述待交易标识号为用于所述待交易数据的唯一身份标识号;

所述待交易业务信息为待写入所述区块链账本的具体业务交易信息。

在一种可能的设计中,在所述根据所述前序链接获取已交易数据之前,还包括:

获取待写入区块链账本的账户的用户数字证书;

判断所述用户数字证书是否与所述区块链账本中预设的数字证书是否相同,判断结果为是。

第二方面,本发明实施例还提供一种基于区块链的交易验证装置,包括:

确定模块,用于确定当前待写入区块链账本的待交易数据,所述待交易数据包括:待变更状态名以及前序链接;

获取模块,用于根据所述前序链接获取已交易数据,所述前序链接用于链接所述待交易数据与所述已交易数据,其中,所述已交易数据为所述待交易数据的前一次成功交易数据,所述已交易数据包括:后续可能变更状态集合,所述后续可能变更状态集合包括所述已交易数据后续所有可能的变更状态;

判断模块,用于判断所述待变更状态名是否属于所述后续可能变更状态集合;

校验模块,用于返回所述待交易数据流程检验成功或检验错误。

在一种可能的设计中,所述确定模块,还用于确定所述待变更状态名所属的第一子流程;

所述确定模块,还用于确定所述第一子流程在当前业务状态数据集合中的数据状态,所述数据状态为空数据状态或非空数据状态。

在一种可能的设计中,所述第一子流程为以下流程中的任意一个流程:

贷款申请、质押文件上传、差额划拨、本息还款、非本息还款、回购。

在一种可能的设计中,所述交易验证装置还包括:

匹配模块,用于若所述数据状态为所述空数据状态,则根据所述前序链接遍历所述当前业务状态数据集合中每个子流程所对应的最新状态;

若存在与所述前序链接匹配的第二子流程,则所述第二子流程的最新状态的交易数据为所述已交易数据。

在一种可能的设计中,所述交易验证装置还包括:

匹配模块,用于若所述数据状态为所述空数据状态,则根据所述前序链接遍历所述当前业务状态数据集合中每个子流程所对应的最新状态;

若不存在与所述前序链接匹配的第二子流程,则所述待交易数据流程检验错误。

在一种可能的设计中,所述第二子流程为以下流程中的任意一个流程:

贷款申请、质押文件上传、差额划拨、本息还款、非本息还款、回购。

在一种可能的设计中,所述获取模块,还用于若所述数据状态为所述非空数据状态,则从所述当前业务状态数据集合中获取所述第一子流程的最新状态;

所述判断模块,还用于判断所述前序链接是否匹配所述第一子流程的最新状态的交易数据。

在一种可能的设计中,所述已交易数据还包括:已交易标识号以及已交易业务信息;

所述已交易标识号用于与所述待交易数据中的所述前序链接建立链接关系;

所述已交易业务信息为已写入所述区块链账本的具体业务交易信息。

在一种可能的设计中,所述待交易数据还包括:待交易标识号以及待交易业务信息;

所述待交易标识号为用于所述待交易数据的唯一身份标识号;

所述待交易业务信息为待写入所述区块链账本的具体业务交易信息。

在一种可能的设计中,所述获取模块,还用于获取待写入区块链账本的账户的用户数字证书;

所述判断模块,还用于判断所述用户数字证书是否与所述区块链账本中预设的数字证书是否相同。

第三方面,本发明实施例还提供一种电子设备,包括:

处理器;以及,

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行第一方面中任意一种可能的基于区块链的交易验证方法。

第四方面,本发明实施例还提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现第一方面中任意一种可能的基于区块链的交易验证方法。

本发明实施例提供的一种基于区块链的交易验证方法、装置、存储介质及电子设备,通过确定当前待写入区块链账本的待交易数据,待交易数据包括:待变更状态名以及前序链接,前序链接用于链接待交易数据与已交易数据,然后,根据前序链接获取已交易数据,其中,已交易数据包括:后续可能变更状态集合,再通过判断待变更状态名是否属于后续可能变更状态集合,从而来确认待交易数据流程检验是否成功,通过对每个待交易数据流程进行流程校验,对于资产状态变迁的有效交易验证,从而没有办法保证资产严格按照业务流程上链,以实现对资产交易状态在区块链账本中上变更的可靠验证。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明根据一示例实施例的应用场景的示意图;

图2是本发明根据一示例实施例示出的基于区块链的交易验证方法的流程示意图;

图3是图2所示实施例中各子资产业务子流程的关系示意图;

图4是本发明根据另一示例实施例示出的基于区块链的交易验证方法的流程示意图;

图5是本发明根据一示例实施例示出的基于区块链的交易验证装置的结构示意图;

图6是本发明根据另一示例实施例示出的基于区块链的交易验证装置的结构示意图;

图7是本发明根据一示例实施例示出的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

图1是本发明根据一示例实施例的应用场景的示意图。如图1所示,本发明实施例所提供的基于区块链的交易验证方法与装置可应用于图1所示的区块链网络,其中,该区块链网络可以具有多个节点,该节点可以为资金方,也可以为资产方。

其中,参照图1,本发明实施例所提供的基于区块链的交易验证方法与装置所应用的区块链本质上是几种技术方案的统称,包括点对点的对等网络传输协议,密码学加密算法,分布式的共识机制,以及纳什均衡的博弈设计。基于这几种技术的结合,可以实现去中心化去信任的可靠数据库,使用算法证明机制来保证链上所记录信息的可追踪溯源,不可伪造,不可纂改。联盟区块链是指其共识过程受到预选节点控制的区块链;例如例如一个有15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中10个机构的确认(2/3确认)。区块链或许允许每个人都可读取,或者只受限于参与者,或走混合型路线,例如区块的根哈希及其应用程序接口对外公开,应用程序接口可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”。联盟链采用多中心方式,参与方节点也是事先所设定,通过共识机制确认。在联盟链中,区别于公有链,可以进行数字证书设定和控制,拥有更高的可应用和可扩展性。

本发明实施例所提供的基于区块链的交易验证方法与装置在pre-abs以及abs的业务场景下,对复杂的资产状态变迁流程,提供一种交易验证方法,将业务流程的依赖关系以及交易验证集成到区块链的智能合约中,保障区块链中的存证数据不仅体现时间序列,也能同时体现业务流程序列,其中,业务流程可以包括贷款申请子流程、质押文件上传子流程、本息还款子流程、非本息还款子流程、差额划拨子流程以及回购子流程。此外,对于每个流程仍会包含更加详细的资产处理状态,例如,贷款申请子流程中各节点所需实施的各个处理状态,质押文件上传子流程中各节点所需实施的各个处理状态,本息还款子流程中各节点所需实施的各个处理状态,非本息还款子流程中各节点所需实施的各个处理状态,差额划拨子流程中各节点所需实施的各个处理状态以及回购子流程中各节点所需实施的各个处理状态。

图2是本发明根据一示例实施例示出的基于区块链的交易验证方法的流程示意图。如图2所示,本实施例提供的基于区块链的交易验证方法,包括:

步骤101、确定当前待写入区块链账本的待交易数据。

确定当前待写入区块链账本的待交易数据,其中,待交易数据包括:待变更状态名以及前序链接,前序链接用于链接待交易数据与已交易数据,其中,已交易数据为待交易数据的前一次成功交易数据。

其中,对于上述的待交易数据,可以理解在针对区块链中任一节点实施了相应的资产处理后,可使得区块链中该资产在该流程下的状态根据上述的待交易数据发生变化,对于不同的待交易数据可对应于在区块链账本产生不同的变化。

并且,对于上述的已交易数据还可以包括:已交易标识号以及已交易业务信息,其中,已交易标识号用于与待交易数据中的前序链接建立链接关系,而已交易业务信息为已写入区块链账本的具体业务交易信息。

而对于待交易数据还可以包括:待交易标识号以及待交易业务信息。其中,待交易标识号为用于待交易数据的唯一身份标识号,待交易业务信息为待写入区块链账本的具体业务交易信息。

结合上述的上述对于待交易数据和已交易数据的数据结构类型可以是相同的,可以为前后相连接的两个区块数据,通过待交易数据中的前序链接可以获取到已交易数据的已交易标识号,而若待交易数据验证通过之后,该数据将写入到区块链账本中,而此时,待交易数据则会变成下一次待交易操作的前一区块数据,从而形成前后区块数据的相关连性以及确保不可篡改特性。

而对于上述的待交易标识号以及已交易标识号分别对应为为待交易数据以及已交易数据的唯一身份标识号。对于区块链账本中的资产交易变更在该流程下的状态变更需要一个唯一的身份标识号来进行辨识,例如上述的待交易标识号以及已交易标识号。而对于标识号的生成在简单依靠随机序列而生成之后,还需锚定资产的相关特性,并提供一定的证明机制。其中,以上述的待交易标识号为例,可以将待交易标识号表征为assetuid,而assetuid由几个部分组成:原始权益方签名,可以表征为signorgcode,具备公信力的资产编号,可以表征为assetno,资产初始状态的详细数据摘要,可以表征为assethash。进而,对于每个区块数据中的标识号可参照以下所描述的公式进行获取:assetuid=signorgcode+assetno+assethash。

其中,值得说明地:

权益方签名,即signorgcode,可以理解为是对资产的发行机构,也就是原始权益机构的约定机构编码进行签名,比如:jdjr是京东金融的机构编码,对jdjr使用京东金融的私钥进行签名,以此证明jdjr的身份。

资产编号,即assetno,可以理解为对应具备公信力的机构颁发的编号,比如京东金融的白条资产,需要对应白条的借贷合同编号,借贷合同由监管机构审计,具备一定的公信力,目的是消除资产编号的随意性。

资产初始状态的详细数据摘要,既assethash,可以理解为使用哈希hash算法对处于原始状态的资产信息进行摘抄处理而得到的。

本实施例锚定资产原始状态数据,在源头控制资产数据的不可篡改特性。

步骤102、根据前序链接获取已交易数据。

由于待交易数据包括:待变更状态名以及前序链接,前序链接用于链接待交易数据与已交易数据,其中,已交易数据为待交易数据的前一次成功交易数据,则可以根据前序链接获取已交易数据,其中,已交易数据包括:后续可能变更状态集合。值得理解地,后续可能变更状态集合包含了已交易数据在写入区块链账本之后,后续可能进行的所有其他交易变更状态。

其中,因为状态序列过于复杂时,区块链合约中的交易验证处理流程就会更加复杂难以处理,因此,可以对业务流程进行分层处置。使用分层处置的方案,可以有效降低区块链合约验证的复杂度,使其在资产证券化过程中具备可实施性。图3是图2所示实施例中各子资产业务子流程的关系示意图。如图3所示,分层处置方案将preabs业务场景下,分为六个子流程分支:六个子分支仍会包含更加详细的资产状态变迁流程,此处做一个分层处置,将业务分模块,降低对于特定交易验证的难度。交易验证可以局限在特定分层下进行,排除其他分层的状态干扰。其中,六个子分支分别为:贷款申请子流程、质押文件上传子流程、差额划拨子流程、本息还款子流程、非本息还款子流程、回购子流程。通常的,贷款申请子流程、质押文件上传子流程,以及本息还款子流程为必要流程,其他子流程为可选流程。

以上述的贷款申请子流程为例,其按流程顺序可以包括:贷款申请状态、贷款申请通过状态、贷款申请拒绝状态、放款结果通知状态、放款结果拒绝状态以及放款结果确认状态。对于贷款申请通过状态,其后续可能变更状态集合则包含了贷款申请通过状态以及贷款申请拒绝状态;而对于贷款申请通过状态,其后续可能变更状态集合则包含了放款结果通知状态;而对于放款结果通知状态,其后续可能变更状态集合则包含了放款结果拒绝状态以及放款结果确认状态。

步骤103、判断待变更状态名是否属于后续可能变更状态集合,若判断结果为是,则执行步骤104,若判断结果为否则执行步骤105。

在确定了当前待写入区块链账本的待交易数据中的待变更状态名以及已交易数据中的后续可能变更状态集合之后,判断待变更状态名是否属于后续可能变更状态集合。

例如,已交易数据中的后续可能变更状态集合中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为放款结果确认状态,则说明待变更状态名属于后续可能变更状态集合;但是,若已交易数据中的后续可能变更状态集合中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为贷款申请拒绝状态,则说明待变更状态名不属于后续可能变更状态集合。

步骤104、待交易数据流程检验成功。

若待变更状态名属于后续可能变更状态集合,则说明待交易数据流程检验成功。

例如,已交易数据中的后续可能变更状态集合中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为放款结果确认状态,则说明待变更状态名属于后续可能变更状态集合,则待交易数据流程检验成功。

步骤105、待交易数据流程检验错误。

若待变更状态名不属于后续可能变更状态集合,则说明待交易数据流程检验错误。

例如,若已交易数据中的后续可能变更状态集合中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为贷款申请拒绝状态,则说明待变更状态名不属于后续可能变更状态集合,则待交易数据流程检验成功。

在本实施例中,通过确定当前待写入区块链账本的待交易数据,待交易数据包括:待变更状态名以及前序链接,前序链接用于链接待交易数据与已交易数据,然后,根据前序链接获取已交易数据,其中,已交易数据包括:后续可能变更状态集合,再通过判断待变更状态名是否属于后续可能变更状态集合,从而来确认待交易数据流程检验是否成功,通过对每个待交易数据流程进行流程校验,对于资产状态变迁的有效交易验证,从而没有办法保证资产严格按照业务流程上链,以实现对资产交易状态在区块链账本中上变更的可靠验证。

图4是本发明根据另一示例实施例示出的基于区块链的交易验证方法的流程示意图。如图4所示,本实施例提供的基于区块链的交易验证方法,包括:

步骤201、确定当前待写入区块链账本的待交易数据。

确定当前待写入区块链账本的待交易数据,其中,待交易数据包括:待变更状态名以及前序链接,前序链接用于链接待交易数据与已交易数据,其中,已交易数据为待交易数据的前一次成功交易数据。

其中,对于上述的待交易数据,可以理解在针对区块链中任一节点实施了相应的资产处理后,可使得区块链中该资产在该流程下的状态根据上述的待交易数据发生变化,对于不同的待交易数据可对应于在区块链账本产生不同的变化。

并且,对于上述的已交易数据还可以包括:已交易标识号以及已交易业务信息,其中,已交易标识号用于与待交易数据中的前序链接建立链接关系,而已交易业务信息为已写入区块链账本的具体业务交易信息。

而对于待交易数据还可以包括:待交易标识号以及待交易业务信息。其中,待交易标识号为用于待交易数据的唯一身份标识号,待交易业务信息为待写入区块链账本的具体业务交易信息。

结合上述的上述对于待交易数据和已交易数据的数据结构类型可以是相同的,可以为前后相连接的两个区块数据,通过待交易数据中的前序链接可以获取到已交易数据的已交易标识号,而若待交易数据验证通过之后,该数据将写入到区块链账本中,而此时,待交易数据则会变成下一次待交易操作的前一区块数据,从而形成前后区块数据的相关连性以及确保不可篡改特性。

而对于上述的待交易标识号以及已交易标识号分别对应为为待交易数据以及已交易数据的唯一身份标识号。对于区块链账本中的资产交易变更在该流程下的状态变更需要一个唯一的身份标识号来进行辨识,例如上述的待交易标识号以及已交易标识号。而对于标识号的生成在简单依靠随机序列而生成之后,还需锚定资产的相关特性,并提供一定的证明机制。其中,以上述的待交易标识号为例,可以将待交易标识号表征为assetuid,而assetuid由几个部分组成:原始权益方签名,可以表征为signorgcode,具备公信力的资产编号,可以表征为assetno,资产初始状态的详细数据摘要,可以表征为assethash。进而,对于每个区块数据中的标识号可参照以下所描述的公式进行获取:assetuid=signorgcode+assetno+assethash。

其中,值得说明地:

权益方签名,即signorgcode,可以理解为是对资产的发行机构,也就是原始权益机构的约定机构编码进行签名,比如:jdjr是京东金融的机构编码,对jdjr使用京东金融的私钥进行签名,以此证明jdjr的身份。

资产编号,即assetno,可以理解为对应具备公信力的机构颁发的编号,比如京东金融的白条资产,需要对应白条的借贷合同编号,借贷合同由监管机构审计,具备一定的公信力,目的是消除资产编号的随意性。

资产初始状态的详细数据摘要,既assethash,可以理解为使用哈希hash算法对处于原始状态的资产信息进行摘抄处理而得到的。

本实施例锚定资产原始状态数据,在源头控制资产数据的不可篡改特性。

在一种可能的实现方式中,可以定义:

用于描述状态的stage类型,其中,stage描述了某个状态的前序可能状态及合法写入者的数字证书;

用于描述状态转移及相关操作的businessflow类型,其中,businessflow由stage为要素构成其主要数据,并定义了对businessflow的基本操作函数;

worldstate数据结构,其中,worldstate:当前业务状态数据集合,以较小的数据存储花销记录当前业务状态,确保智能合约实现快速的状态校验和写入数字证书校验。

对于每个状态的stage类型参考如下:

对于businessflow类型参考如下:

而对于worldstate当前业务状态数据集合的设计参考如下表所示:

可以先获取待交易数据中调用相关参数,例如function:函数名,与待交易数据中的待变更状态名同名,例如“loan_apply”,previoustxid:已交易数据中的已交易标识号;assetuid:待交易数据中的待交易标识号;以及bizcontent:待交易业务信息,可以理解为待写入所述区块链账本的具体业务交易信息。

然后,使用getstate(“business_flow”)函数从区块链数据库中取出状态转移图定义,并以此为参数调用frombytes函数初始化businessflow。

并且,通过使用businessflow.getstageinstancebyname(function),得到stageinstance。

可选地,在进行流程校验之前,还可以事先进行权限校验,可以获取待写入区块链账本的账户的用户数字证书,然后判断用户数字证书是否与区块链账本中预设的数字证书是否相同,若用户数字证书是否与区块链账本中预设的数字证书相同,则权限校验通过,以进入后续的流程校验程序,而若用户数字证书是否与区块链账本中预设的数字证书不相同,则权限校验不通过,说明该交易行为为非法行为,直接不进入后续的流程校验程序。

步骤202、确定第一子流程在当前业务状态数据集合中的数据状态。

可选地,可以通过使用getstate([assetuid]_[stageinstance.category]),得到function(待变更状态名)所属的第一子流程在worldstate当前业务状态数据集合中的状态,并且检查当前业务状态数据集合中的第一子流程的数据状态是否为空。

步骤2031、数据状态为空数据状态,则执行步骤204。

第一子流程在当前业务状态数据集合中的数据状态为空,则说明之前尚未有交易写入此第一子流程。

步骤2032、数据状态为非空数据状态,则执行步骤205。

第一子流程在当前业务状态数据集合中的数据状态为非空数据状态,则说明之前已有交易写入此第一子流程,因此待交易数据只能写到链接在第一子流程中已有的最新交易状态之后。

步骤204、根据前序链接遍历当前业务状态数据集合中每个子流程所对应的最新状态。

可以根据前序链接previoustxid遍历当前业务状态数据集合worldstate中各个子流程的目前最新状态,然后再通过与previoustxid进行比较,匹配出合适的子流程与子流程的目前最新状态。

步骤2041、存在与前序链接匹配的第二子流程,则执行步骤207。

根据前序链接previoustxid遍历当前业务状态数据集合worldstate中各个子流程的目前最新状态,并且存在与前序链接previoustxid匹配的第二子流程。

步骤2042、不存在与前序链接匹配的第二子流程,则执行步骤210。

根据前序链接previoustxid遍历当前业务状态数据集合worldstate中各个子流程的目前最新状态,但是,不存在与前序链接previoustxid匹配的第二子流程,则说明该待交易数据不符合预设的流程序列,则说明待交易数据流程检验错误。

步骤205、从当前业务状态数据集合中获取第一子流程的最新状态。

若第一子流程在当前业务状态数据集合中的数据状态为非空数据状态,则说明之前已有交易写入此第一子流程,为了将待交易数据只能写到链接在第一子流程中已有的最新交易状态之后,可以先从当前业务状态数据集合worldstate中获取第一子流程的最新状态。

步骤206、前序链接是否匹配第一子流程的最新状态的交易数据,若判断结果为是,则执行步骤207,若判断结果为否,则执行步骤210。

判断前序链接previoustxid是否匹配第一子流程的最新状态的交易数据,如果不匹配,则返回待交易数据流程检验错误,直接不进入后续的流程校验程序。

步骤207、根据前序链接获取已交易数据。

由于待交易数据包括:待变更状态名以及前序链接,前序链接previoustxid用于链接待交易数据与已交易数据,其中,已交易数据为待交易数据的前一次成功交易数据,则可以根据前序链接获取已交易数据,其中,已交易数据包括:后续可能变更状态集合。值得理解地,后续可能变更状态集合worldstate包含了已交易数据在写入区块链账本之后,后续可能进行的所有其他交易变更状态。

其中,因为状态序列过于复杂时,区块链合约中的交易验证处理流程就会更加复杂难以处理,因此,可以对业务流程进行分层处置。使用分层处置的方案,可以有效降低区块链合约验证的复杂度,使其在资产证券化过程中具备可实施性。如图3所示,分层处置方案将preabs业务场景下,分为六个子流程分支:六个子分支仍会包含更加详细的资产状态变迁流程,此处做一个分层处置,将业务分模块,降低对于特定交易验证的难度。交易验证可以局限在特定分层下进行,排除其他分层的状态干扰。其中,六个子分支分别为:贷款申请子流程、质押文件上传子流程、差额划拨子流程、本息还款子流程、非本息还款子流程、回购子流程。通常的,贷款申请子流程、质押文件上传子流程,以及本息还款子流程为必要流程,其他子流程为可选流程。

以上述的贷款申请子流程为例,其按流程顺序可以包括:贷款申请状态、贷款申请通过状态、贷款申请拒绝状态、放款结果通知状态、放款结果拒绝状态以及放款结果确认状态。对于贷款申请通过状态,其后续可能变更状态集合则包含了贷款申请通过状态以及贷款申请拒绝状态;而对于贷款申请通过状态,其后续可能变更状态集合则包含了放款结果通知状态;而对于放款结果通知状态,其后续可能变更状态集合则包含了放款结果拒绝状态以及放款结果确认状态。

步骤208、判断待变更状态名是否属于后续可能变更状态集合,若判断结果为是,则执行步骤209,若判断结果为否,则执行步骤210。

在确定了当前待写入区块链账本的待交易数据中的待变更状态名以及已交易数据中的后续可能变更状态集合worldstate之后,并判断待变更状态名是否属于后续可能变更状态集合worldstate。

例如,已交易数据中的后续可能变更状态集合worldstate中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为放款结果确认状态,则说明待变更状态名属于后续可能变更状态集合;但是,若已交易数据中的后续可能变更状态集合worldstate中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为贷款申请拒绝状态,则说明待变更状态名不属于后续可能变更状态集合。

步骤209、待交易数据流程检验成功。

若待变更状态名属于后续可能变更状态集合worldstate,则说明待交易数据流程检验成功。

例如,已交易数据中的后续可能变更状态集合worldstate中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为放款结果确认状态,则说明待变更状态名属于后续可能变更状态集合,则待交易数据流程检验成功。

步骤210、待交易数据流程检验错误。

若待变更状态名不属于后续可能变更状态集合worldstate,则说明待交易数据流程检验错误。

例如,若已交易数据中的后续可能变更状态集合worldstate中包含了放款结果拒绝状态以及放款结果确认状态,而当前的待交易数据中的待变更状态名为贷款申请拒绝状态,则说明待变更状态名不属于后续可能变更状态集合,则待交易数据流程检验成功。

图5是本发明根据一示例实施例示出的基于区块链的交易验证装置的结构示意图。如图5所示,本实施例提供的一种基于区块链的交易验证装置,包括:

确定模块301,用于确定当前待写入区块链账本的待交易数据,所述待交易数据包括:待变更状态名以及前序链接;

获取模块302,用于根据所述前序链接获取已交易数据,所述前序链接用于链接所述待交易数据与所述已交易数据,其中,所述已交易数据为所述待交易数据的前一次成功交易数据,所述已交易数据包括:后续可能变更状态集合;

判断模块303,用于判断所述待变更状态名是否属于所述后续可能变更状态集合;

校验模块304,用于返回所述待交易数据流程检验成功或检验错误。

在一种可能的设计中,所述确定模块301,还用于确定所述待变更状态名所属的第一子流程;

所述确定模块301,还用于确定所述第一子流程在当前业务状态数据集合中的数据状态,所述数据状态为空数据状态或非空数据状态。

在一种可能的设计中,所述第一子流程为以下流程中的任意一个流程:

贷款申请、质押文件上传、差额划拨、本息还款、非本息还款、回购。

在图5所示实施例的基础上,图6是本发明根据另一示例实施例示出的基于区块链的交易验证装置的结构示意图。如图6所示,本实施例提供的基于区块链的交易验证装置,还包括:

匹配模块305,用于若所述数据状态为所述空数据状态,则根据所述前序链接遍历所述当前业务状态数据集合中每个子流程所对应的最新状态;

若存在与所述前序链接匹配的第二子流程,则所述第二子流程的最新状态的交易数据为所述已交易数据。

在一种可能的设计中,所述交易验证装置还包括:

匹配模块305,用于若所述数据状态为所述空数据状态,则根据所述前序链接遍历所述当前业务状态数据集合中每个子流程所对应的最新状态;

若不存在与所述前序链接匹配的第二子流程,则所述待交易数据流程检验错误。

在一种可能的设计中,所述第二子流程为以下流程中的任意一个流程:

贷款申请、质押文件上传、差额划拨、本息还款、非本息还款、回购。

在一种可能的设计中,所述获取模块,还用于若所述数据状态为所述非空数据状态,则从所述当前业务状态数据集合中获取所述第一子流程的最新状态;

所述判断模块303,还用于判断所述前序链接是否匹配所述第一子流程的最新状态的交易数据。

在一种可能的设计中,所述已交易数据还包括:已交易标识号以及已交易业务信息;

所述已交易标识号用于与所述待交易数据中的所述前序链接建立链接关系;

所述已交易业务信息为已写入所述区块链账本的具体业务交易信息。

在一种可能的设计中,所述待交易数据还包括:待交易标识号以及待交易业务信息;

所述待交易标识号为用于所述待交易数据的唯一身份标识号;

所述待交易业务信息为待写入所述区块链账本的具体业务交易信息。

在一种可能的设计中,所述获取模块302,还用于获取待写入区块链账本的账户的用户数字证书;

所述判断模块303,还用于判断所述用户数字证书是否与所述区块链账本中预设的数字证书是否相同。

在本实施例中,通过确定当前待写入区块链账本的待交易数据,待交易数据包括:待变更状态名以及前序链接,前序链接用于链接待交易数据与已交易数据,然后,根据前序链接获取已交易数据,其中,已交易数据包括:后续可能变更状态集合,再通过判断待变更状态名是否属于后续可能变更状态集合,从而来确认待交易数据流程检验是否成功,通过对每个待交易数据流程进行流程校验,对于资产状态变迁的有效交易验证,从而没有办法保证资产严格按照业务流程上链,以实现对资产交易状态在区块链账本中上变更的可靠验证。值得说明地,图5-图6所示实施例提供的基于区块链的交易验证装置,可用于执行上述图2-图4所示实施例提供的基于区块链的交易验证方法,具体实现方式和技术效果类似,这里不再赘述。

图7是本发明根据一示例实施例示出的电子设备的结构示意图。如图7所示,本实施例提供的一种电子设备40包括:处理器41以及存储器42;其中:

存储器42,用于存储计算机程序,该存储器还可以是flash(闪存)。

处理器41,用于执行存储器存储的执行指令,以实现上述方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。

可选地,存储器42既可以是独立的,也可以跟处理器41集成在一起。

当所述存储器42是独立于处理器41之外的器件时,所述电子设备40还可以包括:

总线43,用于连接所述存储器42和处理器41。

本实施例还提供一种可读存储介质,可读存储介质中存储有计算机程序,当电子设备的至少一个处理器执行该计算机程序时,电子执行执行上述的各种实施方式提供的方法。

本实施例还提供一种程序产品,该程序产品包括计算机程序,该计算机程序存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该计算机程序,至少一个处理器执行该计算机程序使得电子设备实施上述的各种实施方式提供的方法。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1