区块链中作业数据处理方法、装置、电子设备及存储介质与流程

文档序号:19007210发布日期:2019-10-29 23:50阅读:202来源:国知局
区块链中作业数据处理方法、装置、电子设备及存储介质与流程

本发明涉及信息处理领域,具体涉及一种区块链中作业数据处理方法、装置、电子设备及存储介质。



背景技术:

区块链中的每个区块通过哈希(hash)算法生成数据指纹并嵌入后续区块中,该指纹充当了后一区块指向前序区块的指针,区块的指纹或指针实际上就是区块的hash值,这种牢固的关系使得入了链的数据是不能被篡改的,并通过共识算法使得全网络中具有多份完全一致的数据,即区块链。区块中的数据主要是多个交易脚本(称为智能合约),这些智能合约被指定了次序,该次序由所在区块和所在区块中的位置所确定,从应用层面讲,区块链应用系统就是依次执行智能合约的系统。

当前的区块链是通过交易排序策略来处理冲突。对于联盟链,采用两级交易排序:一级是区块在链中是有先后顺序的;二级是交易在区块中是有序的。交易在区块中的排序通常在构建区块时进行,但构建区块本质上不能并行执行交易排序操作,因为它需要前一个区块头的hash值,同时区块存储时需要投票表决,因此基于上述原因,区块链应用的效率较低,这使得一些应用的本身特征不能很好地在区块链的基础设施中体现,也使得应用本身的技术积累得不到很好的利用和发挥,从而影响了应用系统的性能与效率。

同时,区块链防篡改的特性又是银行业务所急需的。银行系统的核心功能,是处理账户间资产转移的交易。在真正进行资产转移前,系统往往经过多个审核子程序对交易的相关信息执行准入判断,只有通过准入控制的情况下,目标交易才会被最终执行。由此可知,区块链系统的执行效率较低,如果把上述交易过程中的准入判断也放在核心交易的共识算法中执行,则效率将更低。另外,一些不满足交易准入条件的交易记录也会进入核心处理模块,这更加大了核心处理模块的负担,也降低了交易的命中率。



技术实现要素:

有鉴于此,本发明提供一种区块链中作业数据处理方法、装置、电子设备及存储介质,以解决上述提及的至少一个问题。

根据本发明的第一方面,提供一种区块链中的作业数据处理方法,所述方法包括:接收来自不同用户的多个并行作业数据,对所述多个并行作业数据分别进行验证,每个作业数据包括智能合约;响应于验证成功,对已验证作业数据进行哈希运算生成哈希值,将具有相同哈希值的已验证作业数据发送至同一打包节点;根据同一打包节点的已验证作业数据生成部分区块,对所述部分区块进行验证,所述部分区块包括:区块体和部分区块头,所述区块体记录所述同一打包节点的已验证作业数据,所述部分区块头记录所述区块体中的已验证作业数据的哈希值;响应于验证成功,根据区块数据结构将验证成功的部分区块生成完整区块,所述完整区块包括:所述区块体、所述部分区块头、以及另一部分区块头,所述另一部分区块头包括:所述完整区块的前一区块的哈希值;根据所述完整区块中的作业数据执行相应的作业。

根据本发明的第二方面,提供一种区块链中的作业数据处理装置,所述装置包括:作业数据接收单元,用于接收来自不同用户的多个并行作业数据,每个作业数据包括智能合约;作业数据验证单元,用于对所述多个并行作业数据分别进行验证;作业数据发送单元,用于响应于验证成功,对已验证作业数据进行哈希运算生成哈希值,将具有相同哈希值的已验证作业数据发送至同一打包节点;部分区块生成单元,用于根据同一打包节点的已验证作业数据生成部分区块,所述部分区块包括:区块体和部分区块头,所述区块体记录所述同一打包节点的已验证作业数据,所述部分区块头记录所述区块体中的已验证作业数据的哈希值;部分区块验证单元,用于对所述部分区块进行验证;完整区块生成单元,用于响应于验证成功,根据区块数据结构将验证成功的部分区块生成完整区块,所述完整区块包括:所述区块体、所述部分区块头、以及另一部分区块头,所述另一部分区块头包括:所述完整区块的前一区块的哈希值;作业执行单元,用于根据所述完整区块中的各作业数据的智能合约执行相应的作业。

根据本发明的第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述区块链中的作业数据处理方法的步骤。

根据本发明的第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述区块链中的作业数据处理方法的步骤。

由上述技术方案可知,通过将接收到的验证成功的并行作业数据进行哈希运算,根据具有相同哈希值的作业数据提前生成部分区块,并在对部分区块进一步验证成功时,生成完整区块,并执行相应作业,通过提前生成部分区块,可以解决目前区块链在构建区块时效率较低的问题,从而可以提高区块链系统的执行性能和效率。

附图说明

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

图1是根据本发明实施例的区块链中的作业数据处理方法的流程图;

图2是根据本发明实施例的作业数据结构示意图;

图3是根据本发明实施例的区块链中的作业数据处理装置的结构框图;

图4是根据本发明实施例的部分区块生成单元34的结构框图;

图5是根据本发明实施例的区块链中的作业数据处理装置的详细结构框图;

图6是根据本发明实施例的基于区块链的银行核心系统的示例图;

图7是根据本发明实施例的前置预处理装置的网络逻辑示意图;

图8是根据本发明实施例的交易提交子网络11的结构示例图;

图9是根据本发明实施例的集散地12的结构示例图;

图10是根据本发明实施例的准入控制层的审核子网结构示意图;

图11是根据本发明实施例的区块链的结构示意图;

图12是根据本发明实施例的区块结构示意图;

图13是根据本发明实施例的区块链中世纪块的示意图;

图14是根据本发明实施例的账户状态快照梅克尔树示意图;

图15是根据本发明实施例的交易在区块链中的排列示意图;

图16是根据本发明实施例的备份与恢复装置结构示意图;

图17是根据本发明实施例的电子设备的示意图。

具体实施方式

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

本发明实施例提供一种区块链中的作业数据处理方法,图1是该方法的流程图,如图1所示,该方法包括:

步骤101,接收来自不同用户的多个并行作业数据,对所述多个并行作业数据分别进行验证,每个作业数据包括智能合约;

步骤102,响应于验证成功,对已验证作业数据进行哈希运算生成哈希值,将具有相同哈希值的已验证作业数据发送至同一打包节点;

步骤103,根据同一打包节点的已验证作业数据生成部分区块,对所述部分区块进行验证,所述部分区块包括:区块体和部分区块头,所述区块体记录所述同一打包节点的已验证作业数据,所述部分区块头记录所述区块体中的已验证作业数据的哈希值;

步骤104,响应于验证成功,根据区块数据结构将验证成功的部分区块生成完整区块,所述完整区块包括:所述区块体、所述部分区块头、以及另一部分区块头,所述另一部分区块头包括:所述完整区块的前一区块的哈希值;

步骤105,根据所述完整区块中的作业数据执行相应的作业。

通过将接收到的验证成功的并行作业数据进行哈希运算,根据具有相同哈希值的作业数据提前生成部分区块,并在对部分区块进一步验证成功时,生成完整区块,并执行相应作业,通过提前生成部分区块,可以解决目前区块链在构建区块时效率较低的问题,从而可以提高区块链系统的执行性能和效率。

为了更好地理解本发明实施例,以下基于银行系统来描述本发明实施例。

在步骤101中,对所述多个并行作业数据(也可以称为交易数据或者业务数据)分别进行验证包括:对每个作业数据中的智能合约进行模拟测试;响应于模拟测试结果为成功,则该作业数据中的智能合约成立。

在实际操作中,作业数据的数据结构如图2所示,作业数据包括:智能合约21和签字列表22。

智能合约21可以是执行具体作业(或交易)的脚本,例如,在银行系统应用中,是进行账务处理的脚本,具体可以包括用户账号和所要执行的交易(以下以开户、转账为例)。

(1)账号(acc):客户(人或机构)可以先在可靠平台上产生一对私钥与公钥对(ikey,pkey),pkey对应于账号,ikey对应于密码(由客户自己保管)。由于pkey是二进制码,难以识别与书写,通常将pkey先压缩再转化为base58编码,转化后的账号记为acc。该过程是单向的,即由pkey易算出acc,但反过来是算不出的,故需要一个acc到pkey的对照机制。开户交易脚本需要客户提供信息:(open,my_acc,pkey,type,info,bank_acc),其中,type标识该账号是银行本身还是银行的客户,info包含客户信息(如,身份证号、联系手机号等),bank_acc表示在哪家银行开户;对该交易进行审核后,账户链就有了一条记录:(my_acc,pkey,type,info,bank_acc)。当执行该交易后,账务体系中就有了一条记录:(acc,amnt=0,…),其中amnt=0表示余额为0。

(2)转账(transfer)交易:客户可能仅提供(transfer,a_acc,b_acc,amnt),表示从a账号转账amnt给账户b,称为交易申请,将其转化为脚本为:(transfer,a_acc,-amnt;b_acc,+amnt,…),即,a_acc的余额将减少amnt,b_acc的余额将加上amnt。

前述的两个交易(开户和转账)可以分别表示为如下形式:

(open,bank_acc,-0;my_acc,+0,…)

(deposit,bank_acc,-amnt;my_acc,+amnt,…)

签名列表22:采用非对称密钥体系技术,通常用私钥签名,他人用其公钥验证签名,签名具有防篡改和防抵赖的作用。

设定客户1(人或机构)的账户对应于一对私钥与公钥对(ikey1,pkey1),签名算法为f,交易数据为message,则对交易数据块用私钥签名为sign1=f(message,ikey1),再带上签名者(以便知道是谁,并由验证者验证),则该签名可以表示为(pkey1,sign1)。一个交易可以由多个人签名。,例如,一个存款交易有客户签名(pkey1,sign1)、银行收款员的签名(pkey2,sign2)和银行复核员签名(pkey3,sign3),这就是一个签名列表。

在本发明实施例中,交易数据结构为:[智能合约;签名列表],因此,上述交易可表示为:

[(deposit,bank_acc,-amnt;my_acc,+amnt,…);

(pkey1,sign1),

(pkey2,sign2),

(pkey3,sign3)

]

在实际操作中,交易格式可以由交易(智能合约)模板定义。签名(pkey,sign)中的pkey并不必由客户提供,客户只需提供相应的账号,由系统组装交易时查询“账户链”可以得到对应的pkey。在交易提交申请时,可以不断追加相关方的签名,这些签名有:交易申请者、交易确认者(可能多个)、交易模拟节点等,不满足要求的交易会被丢弃。

在交易数据申请完成时,即,验证成功时,可以对多个验证成功交易数据进行排队操作,之后,执行步骤102。

在步骤102中,以梅克尔树结构对所述同一打包节点的已验证作业数据进行哈希运算,根据哈希运算结果来设置所述部分区块头。

在一个实施例中,根据已验证作业数据、及其哈希值建立数据库,其中,该已验证作业数据在预定时间之后被丢弃。如此,可以防止作业(交易)被重复提交。

在步骤103中,对所述部分区块进行验证包括:对所述部分区块中的已验证作业数据对应的用户身份和对应的作业可执行性进行验证。通过该验证,可以进一步对作业进行审核,进一步提高区块链系统的执行效率。

在实际操作中,可以将区块链中的预定位置的区块设置为世纪区块cn,世纪区块c1与所述区块链的第一个区块c0之间间隔为x个区块,两个世纪区块之间间隔为x个区块,n为大于等于1的正整数,x为大于1的正整数。

当一个区块为世纪区块cn时,可以根据区块c0与cn-1之间的区块执行的作业生成作业状态快照;这样,世纪区块cn的另一部分区块头还包括用于指向所述作业状态快照的指针。通过作业状态快照可以追溯得到作业明细(交易明细)。

在一个实施例中,作业状态快照可以以梅克尔树结构生成。

通过该作业状态快照,还可以对作业数据、及相应的作业进行备份、恢复操作。

本发明实施例还提供一种区块链中的作业数据处理装置,优选地,该装置用于实现上述的方法。图3是该装置的结构框图,如图3所示,该装置包括:作业数据接收单元31、作业数据验证单元32、作业数据发送单元33、部分区块生成单元34、部分区块验证单元35、完整区块生成单元36和作业执行单元37,其中:

作业数据接收单元31,用于接收来自不同用户的多个并行作业数据,每个作业数据包括智能合约;

作业数据验证单元32,用于对所述多个并行作业数据分别进行验证;

作业数据发送单元33,用于响应于验证成功,对已验证作业数据进行哈希运算生成哈希值,将具有相同哈希值的已验证作业数据发送至同一打包节点;

部分区块生成单元34,用于根据同一打包节点的已验证作业数据生成部分区块,所述部分区块包括:区块体和部分区块头,所述区块体记录所述同一打包节点的已验证作业数据,所述部分区块头记录所述区块体中的已验证作业数据的哈希值;

部分区块验证单元35,用于对所述部分区块进行验证,具体用于对所述部分区块中的已验证作业数据对应的用户身份和对应的作业可执行性进行验证。

完整区块生成单元36,用于响应于验证成功,根据区块数据结构将验证成功的部分区块生成完整区块,所述完整区块包括:所述区块体、所述部分区块头、以及另一部分区块头,所述另一部分区块头包括:所述完整区块的前一区块的哈希值;

作业执行单元37,用于根据所述完整区块中的各作业数据的智能合约执行相应的作业。

通过作业数据发送单元33将接收到的验证成功的并行作业数据进行哈希运算后、将具有相同哈希值的作业数据发送到同一节点,之后部分区块生成单元34根据同一节点的作业数据提前生成部分区块,并在部分区块验证单元35对部分区块进一步验证成功时,完整区块生成单元36生成完整区块,作业执行单元37执行相应作业,通过部分区块生成单元34提前生成部分区块,可以解决目前区块链在构建区块时效率较低的问题,从而可以提高区块链系统的执行性能和效率。

上述作业数据验证单元包括:模拟测试模块(图中未示出),用于对每个作业数据中的智能合约进行模拟测试,响应于模拟测试结果为成功,则该作业数据中的智能合约成立。

如图4所示,上述部分区块生成单元34包括:哈希运算模块341和部分区块头设置模块342,其中:

哈希运算模块341,用于以梅克尔树结构对所述同一打包节点的已验证作业数据进行哈希运算;

部分区块头设置模块342,用于根据哈希运算结果设置所述部分区块头。

如图5所示,上述装置还包括:数据库建立单元38、世纪区块设置单元39、作业状态快照生成单元40和备份单元41,其中:

数据库建立单元38,用于根据作业数据验证单元32已验证成功的作业数据、及其哈希值建立数据库,其中,该已验证作业数据在预定时间之后被丢弃。如此,可以防止作业(交易)被重复提交。

世纪区块设置单元39,用于将区块链中的预定位置的区块设置为世纪区块cn,世纪区块c1与所述区块链的第一个区块c0之间间隔为x个区块,两个世纪区块之间间隔为x个区块,n为大于等于1的正整数,x为大于1的正整数。

作业状态快照生成单元40,用于根据区块c0与cn-1之间的区块执行的作业生成作业状态快照;当一区块为世纪区块时,其在完整区块生成单元36中生成的另一部分区块头还包括用于指向所述作业状态快照的指针。优选地,作业状态快照生成单元39可以以梅克尔树结构来生成作业状态快照。

备份单元41,用于根据所述作业状态快照对作业数据、及相应的作业进行备份、恢复操作。

在实际操作中,上述各单元、各模块之间可以单一设置、也可以合一设置,本发明不限于此。

上述各单元、各模块的具体执行操作,可以参见上述方法实施例中的描述,此处不再赘述。

为了更好地理解本发明实施例,以下以银行系统为例,基于区块链构建银行核心系统框架。图6是根据本发明实施例的基于区块链的银行核心系统的示例图,如图6所示,该基于区块链的银行核心系统包括:前置预处理装置、准入控制装置和账务处理装置,其中:

前置预处理装置:该装置可以提高区块链处理交易的有效性,加快银行核心系统的处理效率。该装置对需要进入账务处理联盟链的交易,先进行合法性和有效性的验证,剔除非法交易,提高账务处理联盟链的成功率。与此同时,对于校验通过的交易,利用队列机制,对提交到系统的交易进行排序,使一次共识过程能处理多笔交易,进一步加快系统的处理速度。在提交子网中,会部署多个交易收集子网11,用于接收交易。当交易数量达到一定值后,就会进行排序然后提交到准入控制联盟链。

准入控制装置:位于审核联盟链,准入控制装置对提交子网提交的交易信息,进行统一审核。例如,联盟链会建立黑名单(针对用户)和白名单(针对银行),对账户能做哪些交易,不能做哪些交易进行准入控制。准入控制层中还会使用共识算法判断客户使用交易的权限。若交易中的账户未能通过准入控制,则交易不能进入账务处理层。

账务处理装置:位于账务联盟链,属于银行系统的核心功能,实现账户管理,以及不同账户之间的资产转移。该账务联盟链可以由一条联盟链16构成,链中的一个账务区块记录了一组(也可以是多组)资产转移的业务。为提高账务处理的效率,账务处理层会引入了世纪区块和交易状态快照。通过世纪区块和交易状态快照,系统用户可以追溯得到账户的交易明细和余额。

该框架体系充分利用了区块链的优点来进行银行核心账务的处理,同时通过世纪区块、审核节点等方法,提高账务处理的效率。除此以外还利用区块链实现了核心交易的准入控制,进一步提高核心账务处理的准确性。

以下分别对前置预处理装置、准入控制装置和账务处理装置进行详细描述。

(一)前置预处理装置

图7是前置预处理装置的网络逻辑示意图,如图7所示,前置预处理装置包括:多个交易提交子网11,用于提交交易数据;以及包括多个打包节点126的集散地12,用于生成部分区块。

本发明实施例的交易提交子网络可以有多个。图8是交易提交子网络11的结构示例图,如图8所示,交易数据(例如,智能合约)在该子网络中,实现交易申请、确认、模拟(即,测试智能合约是否成立)、审核等流程环节,从而确认该交易合理,再向交易“集散地”提交该交易。到达“集散地”的交易数据(tx)含有确认环节的各关联节点的签名,取到了防篡改和防抵赖的作用。

图9是集散地12的结构示例图,如图9所示,当交易121提交到“集散地”时,首先经过交易排队装置122,再经过路由处理的软负载均衡策略到达打包节点123。通过“集散地”方式可提升应对交易高并发的能力。在打包节点123中,生成部分区块(或称为区块半成品),通过并行生成区块半成品可以解决区块链的生成效率瓶颈。

如图9所示,“集散地”包括:交易排队装置122、打包节点123和防重检查模块124,其中:

交易排队装置122,接收并行产生的交易,转化为一个串行流。类似于mq(messagequeue,消息队列)的中间件。

打包节点123,包括打包处理模块,将交易的串行流生成一个“区块半成品”125,该区块半成品为数据结构的实线部分,包括区块体(交易数据组txs)及区块头的h(txs),h(txs)为txs的哈希值,指向交易组txs,当txs以梅克尔树来组织时,h(txs)为其根(root)。本发明实施例通过将构建区块中的可以并行的部分分离出来,形成“区块半成品”,以此提高区块链的生成效率。

防重检查模块124,由打包处理模块调用,防止交易被重复提交。具体而言,建立(key=h(tx),value=tx)的数据库,该数据库表会定期清理,可以设立时间窗口,当tx中的timestamp(时间戳)超过该窗口则丢弃,可以防止重复提交交易。

在并行环境下,区块链是通过交易排序策略来处理冲突的。排序策略有两类:(1)交易直接关联前序交易(指针方式),即交易(智能合约)中直接含有指针指向前序交易(如,比特币);(2)交易间接关联前序交易(排序方式),即交易(智能合约)中不直接指定前序交易,而由交易在区块链中的位置,决定其前后关系。本发明实施例采用交易间接关联前序交易(排序方式)的策略,交易排序为两级:一级是交易在区块间,区块在链中有先后顺序;二级是交易在区块中的排序。在现有技术中,交易在区块中的排序通常在构建区块时进行,但构建区块本质上不能并行进行,因为它需要前一个区块头的hash值。

从效率角度,可以用一组打包节点(如,k个)来应对高并发的业务应用系统,并以软负载均衡策略,使并发的交易均衡地发向各打包节点,如,使用分散策略:将tx交易发送到id号为hash(tx)%k的打包节点,保证相同hash值的交易送往同一打包节点。

在预处理过程中,区块体所含的交易数可以设定为一个常数n,另外,还可设一个时间窗口,当业务低谷时,时间窗口内产生一个区块半成品,这时,交易个数如果不足n,可用某种空交易填充。

从可靠性角度,每一个打包节点可以物理上配一个或多个热备节点,执行与打包节点相同的工作,只是其区块半成品不传向区块链运行子网,可用于对相配的工作节点输出的区块半成品进行检验。

打包节点接收到的交易都含有签名,故不能篡改交易内容,也不能新增交易,当交易发生客观故障时,交易会丢失。丢失率容易被热备节点所测得,在实际操作中,可以设置一个阀值,达到阀值就认为该节点出故障了,根据预定策略该节点可以由热备节点取代。

在具体实施过程中,交易提交子网通过路由处理交易流转,打包节点向审核子网广播交易,主要广播区块半成品。

(二)准入控制装置

在本发明实施例中,将银行系统业务中账务处理的审核操作部署在准入控制层,准入控制层的主要构成是一条或多条称为审核链的区块链,用于对银行交易进行审核,同类型的业务都需要等待图10所示的审核节点141完成审核才能执行。该准入控制功能将部署在审核节点中,它可以是监管机构的代理,即,每个审核子网络中都含有一个交易审核节点,可以多个交易提交子网络同时提交区块半成品到同一个交易审核节点,如图7所示。这个交易审核子网可以为所有交易提交子网络提供特殊交易的审核服务。

这里的特殊交易包括如下两种:

一、账户调整类交易,主要涉及开户、销户以及账户信息调整等交易。开户时,审核子网需审核客户身份信息的真实性,是否在黑名单中、是否已开户等;调整账户信息时,也需要对客户身份进行验证,确保客户有足够的权限对账户信息进行调整。

二、资产转移类交易,区块链系统中资金流动是封闭的,如,比特币由区块链系统自身产生资金(挖矿发币过程),然后,该资金在区块链系统内不断地流通。在本发明实施例中,向区块链系统注入资金类似于银行的“存入”现金交易。本发明实施例将链下的“存入”现金交易对应到链上存入交易,如,客户a存入10000元:(银行账户,余额-10000;客户a账户,余额+10000),银行账户余额为零(开始时)或负数,也就是说,银行账户是一种特殊的账户,它可以为负数(相当于它的贷款额),在本发明实施例中,规定系统中余额总额为零守恒,因此,系统要审核该交易,前一个账户是否是银行账户(具有放贷资格)。

图10是准入控制层的审核子网结构示意图,如图10所示,该结构包括:

1、审核节点141:交易审核节点维护两份名单:一份是客户黑名单,用于控制客户开户;一份是银行白名单,白名单中的账户余额可以为负数(例如银行的贷款发放账号,用余额为负数表示已发放的贷款金额),用于审核客户的存入交易。

交易审核节点通常由监管机构(央行)提供,商业银行到央行提交相关手续,并执行开户交易,从而,在系统中加入该商业银行的名单(交易审核节点)并在系统中增加该商业银行的账号(区块链的账务系统中)等。

2、维护节点142:该网络节点连接到交易审核子网,通过该维护节点对上述两份名单进行更新维护。例如,增加/删除黑名单纪录、增加/删除白名单纪录。

3、交易审核模块1412:收到来自交易提交节点的交易时,该模块对开户交易和存入交易中的账户,按前述规则进行审核,并向交易提交节点返馈审核信息(含有签名)。

4、共识算法模块143,主要负责:

(1)审核子网中的区块半成品内容,即提交子网提交过来的交易区块半成品。审核通过的区块半成品会进一步提交到账户处理层,形成最终的完整区块成品。若审核不通过,则半成品在审核子网中被丢弃,不能继续进入账户处理层。

(2)账户管理类交易准入审核:①交易审核子网各节点都参与审核,用现有的共识算法,达成共识,新开的账户被记录在账户链中;②各审核节点都向交易提交节点返馈审核结果,由交易提交节点根据投票情况(未收到反馈的视为弃权)确定最终审核是否通过;③共识算法还会根据开户请求附带的信息,将开立成功的账户加入白名单或黑名单中。

(3)资产转移交易准入审核:交易审核子网各节点都参与审核,各审核节点都向交易提交节点返馈审核结果,由交易提交节点根据投票情况(未收到反馈的视为弃权)确定最终审核是否通过。审核的信息可以包括以下内容:

a)客户身份,审核客户能否对交易中上送的账户进行操作;

b)账户的交易准入,例如,取款时,需要对取款的金额进行预判断,检查账户余额是否充足,如果余额为负数时,账户是否为白名单,能否继续透支余额等。

c)联网核查,可通过区块链与其他外机构进行互连,对客户信息做进一步核查。

(三)账务处理装置

经过审核子网审核通过的交易,将进入账务处理层,完成实际的交易处理。账务处理层是由一条账户区块链构成,将提交子网生成的交易区块半成品转变为最终的完整区块,通过共识算法完成交易。

图11是根据本发明实施例的区块链的结构示意图,如图11所示,该结构包括:

(1)区块链131:根据现有技术构成区块链,每个区块中含有多个交易(智能合约),这些智能合约是根据预定规则排序,每个区块(第一个区块除外)含有其前序区块的指针,形成逻辑的链称为区块链,区块链不断“向右生长”,此数据结构的特点对应于传统银行核心系统的“联机交易日志”。

(2)账户状态表132:用来存储交易执行结果的键-值(key-value)数据库。对应于传统银行核心系统的“账户余额表”,反应客户账户的当前余额。即,主键key为唯一索引键值,可视为客户的账户id(账号),value视为账户余额及其它状态(即value可能是一组值),不断运行智能合约,从而不断更新(update)余额纪录。一个区块是由多个已排好次序的交易所组成,账户状态的变更是区块级的,即将“接收一个区块和变更该区块对账户状态的影响”视为一个事务。

(3)状态快照133:作为区块链的一部分,是一种特殊节点,反映了某个特定时刻账户状态表中的信息,对应于传统银行核心系统日终时的“日终余额表”。相对于传统核心银行系统的“日终余额表”,账户状态快照进行了防篡改处理,可以验证特定时刻账户状态表的正确性,通过hash值建立梅克尔树,并将树根(root)嵌入到这个特定时刻的区块中。

(4)状态轨迹134:前述已知,账户状态的变更是区块级的,我们用一种方式记录账户状态变化的轨迹,将上述(key-value)扩展为(key,action,value),意思为:账号key在执行action后余额变为value,如,(张三,a1,100),(李四,b1,100),执行智能合约a2=“张三转给李四80元”,结果为:(张三,a2,20),(李四,a2,180)。实际上这里没有必要存智能合约,因为区块链中已存有智能合约,这里只需要找到它即可,即action表示为指向该智能合约的指针(该指针指向该智能合约所在的区块+智能合约在该区块中的位置)。参见图12所示的区块结构,当txs以梅克尔树来组织时,指向区块的指针实际上为该区块的hash值,智能合约(交易)在该区块中的位置也可以用交易的hash值定位。根据区块链生成账户状态轨迹,参见图11所示,从过程来看,显然,①与②是同时执行,只不过①是以更新(update)方式,②是以插入(insert)方式。

继续参见图12所示的区块结构,在本发明实施例中,区块可以分为非世纪块1311和世纪块1312。

如图12所示,区块的数据结构分为两部分:区块头和区块体,区块体由一组交易txs(智能合约)组成,这组交易是由其存放结构规定了次序的(如,数组结构或树型结构等),即,区块中的交易是有次序的。区块头是由一些防篡改机制和其他数据组成。防篡改机制也提供检索机制,这就是hash值充当指纹和指针的作用。区块头中的指针有:h(txs),指向交易组txs(当txs以梅克尔树来组织时,h(txs)为其根root,如下图14所示的1334);*perblock指向前一个区块,*sate指向账户状态快照(世纪块时)或为空指针(非世纪块时)。当然,区块头还包括其它的信息,如,时间time-stamp,位置(cn,k)。

图13是区块链中世纪块的示意图,如图13所示,区块链中携带有“特殊时刻”的“三角形”(账户状态快照)的区块,我们称之为世纪块。

区块链可以视为一条向右不断生长的链,本发明实施例以一定的跨度(m个区块,该“m”可以根据实际需要进行设置,灵活性高)自左至右进行切分为“世纪”,即:以“创世纪”块(第一个区块)作为起始,记为c0,向右数,至第m+1个区块,将其定义为第一个世纪块c1,再以c1为起点(视为第一世纪块),向右数,至第m+1个区块,将其定义为第二个世纪块c2,并以此类推产生世纪块序列为:c0,c1,c2,c3,……。第一世纪为[c0,c1),第二世纪为[c1,c2),以此类推。c1,c2,c3,……,就是“特殊时刻”(世纪块)。

一般地,本发明实施例中的第n世纪:记号[cn-1,cn),表示区块链中cn-1到cn之间的所有区块(m个),包含前者cn-1但不包含后者cn。

cn处的账户状态快照定义为区块链运行(执行上面的智能合约)到cn前的账户状态,并进行了防篡改处理,该账户状态部分可以以两种方式获得:(1)运行从[c0,cn)间的所有智能合约;(2)以某个世纪块的账户状态快照为起点,运行之后所有世纪的所有智能合约。一般来说,以第(2)种方式,且取最近的一个快照来获得,即:以cn-1账户状态快照为起点,运行[cn-1,cn)间的所有智能合约。

当我们定义长度为m的链为一个世纪时,m是作为系统的一个常数,它确定了在线需要保存的数据量。m的取值可以通过业务情况进行框算,假设某应用计划每周进行一次“快照”,而每周的数据量约产生10000个区块,则m可以取值为10000。

在本发明实施例中,世纪块是账户状态正确性同步点,两个世纪块之间,账户状态可能被攻击。在受攻击的概率一定的情况下,可以认为网络节点被破坏数与时间相关,为保证两世纪块之间的时间段内共识机制不失效,在有攻击的网络环境下,必须保证m小于共识机制失效时间。当然,可以通过网络环境的安全措施来减少或消除攻击的有效性,从而使共识机制失效时间延长。

极端特例为m=1,这时,账户状态表、账户状态快照和账户状态轨迹三者可以合一,即只有账户状态快照,且记录的内容由(key-value)扩展为(key,action,value)。这可应对恶劣的网络环境安全环境。显然,这时效率极低,因需要大量的hash计算。

在实际操作中,数据块a的hash值h=hash(a)具有较好的“分散”性(即,数据块不同则hash值不同),a的微小变化能够使得h有较大的变化。因此,h既可以作为a的指纹又可以作为a的指针(键值对<h,a>的主键)。利用这个特性,我们可以建立防篡改的账户状态快照,步骤如下(1)-(3):

(1)矫证账户状态:以上一个账户状态快照开始,运行此后的区块链中的智能合约,以此时的数据更新账户状态表(原账户状态表可能被篡改)。

(2)将账户状态数据打包

最简单的办法是将账户状态数据打成一个包a(如,将账户状态从数据库中导出并排序),然后,计算h=hash(a),并将h嵌入到世纪块中,图12所示。

从应用角度讲,可能对账户acc有些分类的要求(如,不同监管要求的账户或不同地区的客户等),此时,账户状态数据就会被打包成n个数据包:每个数据包有一个编号id,如图14中的1331,包内的账户状态数据是按账户排序的。如图14所示,构建账户状态快照的梅克尔树:数据包作为叶子节点,逐层计算hash值,如1332、1333、1334,直到生成一个hash值,称为梅克尔树的树根(root),将root嵌入到世纪块中(图12所示)。

该梅克尔树同世纪块一并发布到全网,接收验证,达成共识。该梅克尔树作为区块链的不可分割的一部分。实现了账户状态快照的不可篡改性:区块链的不可篡改——>世纪块不可篡改——>root不可篡改——>梅克尔树的叶子不可篡改。同时,也实现了在快照中账户状态的检索:根据账户的分类id找到树的叶子,再在叶子的已排序的数据中找到需要的数据。

(3)提交账户状态快照,即将账户状态快照“嵌入”到区块链中,见图12中的133所示。

以“世纪”为频度进行的“快照”可以视为区块链网络全局的“定期备份”,各网络节点还可以自由地进行自己的“不定期备份”,如,在某些非世纪块(如,世纪中点)时,做上述的第1、2步,或仅做第3步。

在本发明实施例中,当网络接收区块时,会依次执行该区块中的智能合约来更新账务系统。因此,账务系统中交易依次执行,即,交易一旦入链(区块链),则它在交易序列中的位置就确定了,如图15所示,交易从左向右排列。为了方便理解,以下给出一个实例,如下为三个有关系的交易:

a:张三存入1000元,原余额为0

b:张三向李四转800元

c:张三向王五转600元

(1)、当这三个交易的次序为abc时,则这三个交易的执行次序从左至右,如图15所示①②③(这里忽略掉其它无关交易的执行),则交易a成功、b成功、c业务失败(余额不足)。但交易b和c都能通过前置预处理装置中的模拟测试,因为,a交易所在的区块接收后,张三有1000元,由于并行性,交易b和c几乎是同时提交(打包在一个区块中)。

(2)、当这三个交易的次序为bac时,则交易b业务失败(余额不足)、a成功、c成功。

本发明实施例是通过执行智能合约来维护账务体系的,具有如下特征:一、区块链中的交易是依次执行的,由于交易顺序固定了,因而执行结果也固定,即,对区块链再执行n遍,每次执行后账户结果都一致。二、区块链中的交易虽然都经过了模拟测试(测试没通过的被丢弃了),但还是有可能业务失败,这是由于存在并行性争夺情况。即,区块链中相关方都签名了的智能合约,有可能执行失败,排序的原因类似于“不可抗住因素”。三、假如打包节点“作恶”,则区块链中的交易有可能是虚假交易或被篡改了的交易,这是易于被区块链的验证节点所识破,即,它虽然在区块链中,但它不会被执行。区块链中交易的执行是否成功,不去被标识,因为区块链是防篡改的,去标识就是去篡改数据。但交易执行是否成功可以反映在账户体系中,在账户状态轨迹中可以跟踪成功交易。区块链中交易的执行结果,在账务体系中体现,可以通过如下三种方式进行查询:

①账户状态表,实时的但不防篡改,安全性基于网络和数据库环境,在恶劣环境下,可以用多个节点的数据对比来增加数据的可信度;

②最近快照,非实时但防篡改;

③最近快照+之后的区块链,实时且防篡改,但要对区块链中合约按序执行。

本发明实施例建立的区块链机制,较之一般区块链,易于实现账务状态的恢复,由于一般区块链没有快照,只能从区块链的创世纪块开始,重放所有的交易来恢复账务;而本发明实施例只需通过最近的账户状态快照,加上该快照之后的区块链,就可以恢复账户状态表,从而可以使账户体系正常运行。“最近的快照+之后的区块链”这是使账户体系正常运行的最小数据集,因而可以在线仅保留这个最小数据集,其余数据可以转入离线。

在一个实施例中,可以提供独立的备份与恢复的工具。图16是备份与恢复装置结构示意图,如图16所示,该结构包括:数据备份与清理模块121和账务数据恢复模块122,其中:

数据备份与清理模块121:备份与清理的目的是在不影响系统运行的前提下,减少在线数据,从而提高系统性能。从上面的分析可知,在线数据只需要最近的账户状态快照及该快照之后的区块链即可满足系统运行要求。因此,该快照之前的数据就可以进行备份和清理,主要是针对区块链和账户状态轨迹数据。

数据恢复模块122:账务数据恢复模块用于在新机器或旧机器硬盘损坏时,需要恢复(如果丢失了)或重建(如,遭到外部攻击后不信任了)本地账户体系。该模块实现恢复账户状态表只需要两个步骤:先将最近的账户状态快照导入到数据库中,形成快照时的账户状态;然后重放该快照后的区块链中的交易。当本网络节点的账户状态快照或其后的区块链缺失时,可以通过该区块链的p2p网络获得。

综上,基于图6所示的区块链银行核心系统的交易执行流程包括如下步骤:

步骤一:交易预处理s1

s11,交易进入提交子网,该子网实现交易申请、确认、模拟(即测试智能合约是否成立)、审核等流程环节,从而确认该交易合理,再向交易“集散地”提交该交易。

s12,“集散地”接收到交易,首先通过交易排队装置将接收的并行交易,转化为一个串行流,类似于mq(消息队列)的中间件,再经过路由处理的软负载均衡策略到达打包节点。

s13,打包节点将交易的串行流构建成一个“区块半成品”,包括区块体(交易组txs)及区块头的h(txs),h(txs)指向交易组txs,当txs以梅克尔树来组织时,h(txs)为其根。并且,调用防重模块,防止交易被重复提交。

步骤二:准入控制处理s2

s21,提交子网络提交区块半成品到审核子网,该审核子网为联盟链,审核子网通过黑、白名单等机制,使用共识算法对半成品区块进行审核。若审核不通过,则半成品区块在审核子网中被丢弃,不能继续进入账户处理层。交易审核节点或交易审核子网对资产转移类业务的合法性以及可执行性进行准入校验,使账务处理层的功能更加纯粹,效率更高。

步骤三:账务处理处理s3

s31,经过审核子网的审核通过的交易,最终进入账务处理联盟链。

s32,将接收到的交易进行排序处理。

s33,执行交易,并在某一特定的时间点,对账户状态作“快照”,并对该“快照”作防篡改处理、通过共识算法最终完成交易。

s34,形成m个区块后(“m”可以根据实际需要进行设置,灵活性高)设置世纪块。

由以上描述可知,通过建立前置预处理装置,将区块中可以并行构建的部分分离出来,形成“区块半成品”,该“区块半成品”可以提高区块链的生成效率,并且,通过集散地方式可以提升应对交易高并发的能力。通过建立交易准入控制装置,可以用于账户管理及交易准入的认定,准入控制层负责对交易的合法性、有效性进行审核,拒绝不满足执行条件的交易。从而使得账务处理层接收到的交易,都是经过准入控制的,是可靠的。通过上述各装置,可以使区块链技术与银行系统需求的适配性更好,从而可以提升应用系统的性能与效率。

图17是根据本发明实施例的电子设备的示意图。图17所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器1701和存储器1702。处理器1701和存储器1702通过总线1703连接。存储器1702适于存储处理器1701可执行的一条或多条指令或程序。该一条或多条指令或程序被处理器1701执行以实现上述区块链中的作业数据处理方法的步骤。

上述处理器1701可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器1701通过执行存储器1702所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线1703将上述多个组件连接在一起,同时将上述组件连接到显示控制器1704和显示装置以及输入/输出(i/o)装置1705。输入/输出(i/o)装置1705可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(i/o)装置1705通过输入/输出(i/o)控制器1706与系统相连。

其中,存储器1702可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现上述区块链中的作业数据处理方法的步骤。

综上所述,本发明实施例提供了基于账户状态的联盟区块链应用方案,适用于涉及资产所有权转移类应用的区块链交易系统,特别适合于银行业务系统。相对于现有的区块链应用系统,本发明实施例具有如下优势:

1、本发明实施例提供了一种完全取代传统核心银行系统的基于区块链的实现方案,各商业银行可以以盟的形式加入该链(以“开户”方式加入),形成一个含盖监管机构(央行)和多家商业银行的核心银行系统。

2、该系统理念上具有很强的类比性和融合性,使构建区块链工程实施易于实现、易于理解和易于验证。

3、集散地方式提升了应对交易高并发的能力,并行生成区块半成品策略解决了现有区块链的生成效率瓶颈。

4、本发明实施例结合了区块链和银行业务处理过程的特征,将账户管理以及资产转移交易的准入审核提取到一条独立的区块链中完成,使得系统的布局更合理,处理效率更高。

5、交易审核节点或交易审核子网对资产转移类业务的合法性以及可执行性进行了准入校验,使账务处理层的功能更加纯粹,效率更高。

6、在某一特定的时间点,对账户状态作“快照”,并对该“快照”作防篡改处理,基于最近的“快照”可以对账户状态进行更新、验证,较大地减少了数据的搜索范围,提升了系统的效率。

7、提供了备份与恢复机制,备份节省了网络节点的存储空间,提升了系统效率,而恢复则增强了系统的灾备、容错等特性。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

本说明书实施例中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。

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