首页 / 专利库 / 银行与财务事项 / 智能合约 / 基于区块链的交易验证方法及系统

基于链的交易验证方法及系统

阅读:146发布:2022-01-12

专利汇可以提供基于链的交易验证方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于 区 块 链 的交易验证方法及系统,该方法包括:区块链上 节点 在处理带有交易类型和交易金额的交易时,通过交易方发送的第一解密参数解密各个交易方的原始余额,对各个原始余额进行计算得到新余额,将新余额通过交易方发来的加密参数加密得到加密新余额,将各加密新余额广播到该区块链各节点上;当该区块链的节点收到广播的各交易方的加密新余额后,启动 智能合约 进行合数验证;若合数验证均通过,则基于各对应的加密新余额更新;调用外部负数余额验证系统对单个账户余额进行负数余额检验,若负数余额检验均通过,则判定该交易验证通过。本发明既能验证交易是否正常,又能在不占用系统开销的情况下保证区块链上的交易处理速度。,下面是基于链的交易验证方法及系统专利的具体信息内容。

1.一种基于链的交易验证方法,其特征在于,所述方法包括以下步骤:
a1、区块链上的一个节点在处理一个带有交易类型和交易金额的交易时,该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上;
a2、当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;
a3、若该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,则该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额对自身数据进行更新;
a4、调用该区块链外部预设的负数余额验证系统启动多个线程,每个线程同时负责对该区块链上各个节点的单个账户的余额进行负数余额检验,若该区块链上各个节点的单个账户余额的负数余额检验通过,则判定该交易验证通过。
2.如权利要求1所述的基于区块链的交易验证方法,其特征在于,该方法还包括:
将第二解密参数通过该区块链的节点与该区块链上的监管方节点对应的秘钥进行加密,并将加密后的第二解密参数通过智能合约广播到该区块链上的监管方节点上,所述第二解密参数用于对各个所述交易方对应的加密新余额进行解密;
该区块链上的监管方节点读取更新过的各个所述交易方对应的加密新余额,并通过所述秘钥对加密后的第二解密参数进行解密,通过解密后的第二解密参数对各个所述交易方对应的加密新余额进行解密,并对解密后的各个新余额进行负数余额验证。
3.如权利要求1或2所述的基于区块链的交易验证方法,其特征在于,该方法还包括:
若有账户未通过负数余额检验,则所述监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向除所述异常区块链节点外的其他节点进行通知。
4.如权利要求1或2所述的基于区块链的交易验证方法,其特征在于,该方法还包括:
若有账户未通过负数余额检验,则所述监管方节点通过预设的区块链权限管理系统取消所述异常区块链节点在该区块链上的交易权限。
5.如权利要求1或2所述的基于区块链的交易验证方法,其特征在于,该方法还包括:
若该区块链节点对应的智能合约对所述交易参数的合数验证不通过,则向该交易事件所有参与节点发送该交易事件合数验证失败的通知,或者,向该区块链上的所有节点发送该交易事件合数验证失败的通知。
6.一种基于区块链的交易验证系统,其特征在于,所述交易验证系统包括:
广播模块,用于当区块链上的一个节点在处理一个带有交易类型和交易金额的交易时,由该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上;
合数验证模块,用于当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;
更新模块,用于若该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,则由该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额对自身数据进行更新;
余额检验模块,用于调用该区块链外部预设的负数余额验证系统启动多个线程,每个线程同时负责对该区块链上各个节点的单个账户的余额进行负数余额检验,若该区块链上各个节点的单个账户余额的负数余额检验通过,则判定该交易验证通过。
7.如权利要求6所述的交易验证系统,其特征在于,所述广播模块还用于:
将第二解密参数通过该区块链的节点与该区块链上的监管方节点对应的秘钥进行加密,并将加密后的第二解密参数通过智能合约广播到该区块链上的监管方节点上,所述第二解密参数用于对各个所述交易方对应的加密新余额进行解密;
所述余额检验模块还用于:
由该区块链上的监管方节点读取更新过的各个所述交易方对应的加密新余额,并通过所述秘钥对加密后的第二解密参数进行解密,通过解密后的第二解密参数对各个所述交易方对应的加密新余额进行解密,并对解密后的各个新余额进行负数余额验证。
8.如权利要求6或7所述的交易验证系统,其特征在于,所述余额检验模块还用于:
若有账户未通过负数余额检验,则由所述监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向除所述异常区块链节点外的其他节点进行通知。
9.如权利要求6或7所述的交易验证系统,其特征在于,所述余额检验模块还用于:
若有账户未通过负数余额检验,则由所述监管方节点通过预设的区块链权限管理系统取消所述异常区块链节点在该区块链上的交易权限。
10.如权利要求6或7所述的交易验证系统,其特征在于,所述合数验证模块还用于:
若该区块链节点对应的智能合约对所述交易参数的合数验证不通过,则向该交易事件所有参与节点发送该交易事件合数验证失败的通知,或者,向该区块链上的所有节点发送该交易事件合数验证失败的通知。

说明书全文

基于链的交易验证方法及系统

技术领域

[0001] 本发明涉及区块链技术领域,尤其涉及一种基于区块链的交易验证方法及系统。

背景技术

[0002] 区块链技术因其具备的去中心化、信息不可篡改性等特点,越来越受到金融、保险等领域的公司的青睐,尤其是运用区块链技术实现多方参与的交易事件(例如,转账交易、支付交易等事件)越来越成为人们关注的焦点,例如,当行A要买100票据给银行B,如果这笔交易在区块链上进行,那么所有其他在区块链上的节点都会看到这笔交易,好处是其他参与方可以一起参与确认交易准确性,防止信息的篡改。然而,由于在去中心化的区块链系统当中没有绝对权威机构节点,因此对每笔交易进行集体验证是必要的一步,这使得交易参与方的交易毫无秘密可言,一个机构的账户也有可能被其他节点上的机构跟踪,从而带来信息泄露的险。
[0003] 虽然,目前业界采用了一些解决信息泄露的区块链交易解决方案,然而现有的解决方案要么是信息泄露解决的不够彻底,要么是计算效率低下,且系统运行开销巨大,限制区块链技术在交易场景中的运用。
[0004] 综上所述,如何在既能有效保证交易信息的安全,又能有效保证交易处理的速度且降低系统开销的情况下,将区块链技术有效运用在交易场景下,已经成为一种亟待解决的技术问题。

发明内容

[0005] 本发明的主要目的在于提供一种基于区块链的交易验证方法及系统,旨在有效保证交易信息的安全,且能保证交易处理的速度。
[0006] 为实现上述目的,本发明提供的一种基于区块链的交易验证方法,所述方法包括以下步骤:
[0007] a1、区块链上的一个节点在处理一个带有交易类型和交易金额的交易时,该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上;
[0008] a2、当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;
[0009] a3、若该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,则该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额对自身数据进行更新;
[0010] a4、调用该区块链外部预设的负数余额验证系统启动多个线程,每个线程同时负责对该区块链上各个节点的单个账户的余额进行负数余额检验,若该区块链上各个节点的单个账户余额的负数余额检验通过,则判定该交易验证通过。
[0011] 优选地,该方法还包括:
[0012] 将第二解密参数通过该区块链的节点与该区块链上的监管方节点对应的秘钥进行加密,并将加密后的第二解密参数通过智能合约广播到该区块链上的监管方节点上,所述第二解密参数用于对各个所述交易方对应的加密新余额进行解密;
[0013] 该区块链上的监管方节点读取更新过的各个所述交易方对应的加密新余额,并通过所述秘钥对加密后的第二解密参数进行解密,通过解密后的第二解密参数对各个所述交易方对应的加密新余额进行解密,并对解密后的各个新余额进行负数余额验证。
[0014] 优选地,该方法还包括:
[0015] 若有账户未通过负数余额检验,则所述监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向除所述异常区块链节点外的其他节点进行通知。
[0016] 优选地,该方法还包括:
[0017] 若有账户未通过负数余额检验,则所述监管方节点通过预设的区块链权限管理系统取消所述异常区块链节点在该区块链上的交易权限。
[0018] 优选地,该方法还包括:
[0019] 若该区块链节点对应的智能合约对所述交易参数的合数验证不通过,则向该交易事件所有参与节点发送该交易事件合数验证失败的通知,或者,向该区块链上的所有节点发送该交易事件合数验证失败的通知。
[0020] 此外,为实现上述目的,本发明还提供一种基于区块链的交易验证系统,所述交易验证系统包括:
[0021] 广播模块,用于当区块链上的一个节点在处理一个带有交易类型和交易金额的交易时,由该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上;
[0022] 合数验证模块,用于当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;
[0023] 更新模块,用于若该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,则由该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额对自身数据进行更新;
[0024] 余额检验模块,用于调用该区块链外部预设的负数余额验证系统启动多个线程,每个线程同时负责对该区块链上各个节点的单个账户的余额进行负数余额检验,若该区块链上各个节点的单个账户余额的负数余额检验通过,则判定该交易验证通过。
[0025] 优选地,所述广播模块还用于:
[0026] 将第二解密参数通过该区块链的节点与该区块链上的监管方节点对应的秘钥进行加密,并将加密后的第二解密参数通过智能合约广播到该区块链上的监管方节点上,所述第二解密参数用于对各个所述交易方对应的加密新余额进行解密;
[0027] 所述余额检验模块还用于:
[0028] 由该区块链上的监管方节点读取更新过的各个所述交易方对应的加密新余额,并通过所述秘钥对加密后的第二解密参数进行解密,通过解密后的第二解密参数对各个所述交易方对应的加密新余额进行解密,并对解密后的各个新余额进行负数余额验证。
[0029] 优选地,所述余额检验模块还用于:
[0030] 若有账户未通过负数余额检验,则由所述监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向除所述异常区块链节点外的其他节点进行通知。
[0031] 优选地,所述余额检验模块还用于:
[0032] 若有账户未通过负数余额检验,则由所述监管方节点通过预设的区块链权限管理系统取消所述异常区块链节点在该区块链上的交易权限。
[0033] 优选地,所述合数验证模块还用于:
[0034] 若该区块链节点对应的智能合约对所述交易参数的合数验证不通过,则向该交易事件所有参与节点发送该交易事件合数验证失败的通知,或者,向该区块链上的所有节点发送该交易事件合数验证失败的通知。
[0035] 本发明提出的基于区块链的交易验证方法及系统,区块链上的节点在处理带有交易类型和交易金额的交易时,基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,并将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,广播到该区块链的各个节点上;当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;在合数验证通过,才由所述区块链节点对应的智能合约基于所述交易参数对自身数据进行更新。由于广播的各个所述交易方对应的新余额均进行了加密处理,该区块链的其他节点无法获知该新余额,且只有在合数验证通过后,才进行数据更新,能防止多方交易中各账户的余额泄露,有效地保证了交易信息的安全。此外,还将各个节点的单个账户的余额发给所述区块链外部预设的负数余额验证系统来进行负数余额检验。由于利用外部的负数余额验证系统来进行负数余额检验,既能进一步验证多方交易是否正常,又能在不占用系统开销的情况下保证区块链上的交易处理速度。
附图说明
[0036] 图1为本发明基于区块链的交易验证方法一实施例的流程示意图;
[0037] 图2为本发明交易验证系统一实施例的功能模块示意图。
[0038] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0039] 为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0040] 本发明提供一种基于区块链的交易验证方法。
[0041] 参照图1,图1为本发明基于区块链的交易验证方法一实施例的流程示意图。
[0042] 在一实施例中,该基于区块链的交易验证方法包括:
[0043] 步骤S10,区块链上的一个节点在处理一个带有交易类型和交易金额的交易时,该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上。
[0044] 当区块链上的一个节点在完成一个交易事件后,会将该交易事件对应的交易参数广播给该区块链上的其他节点。其中,所述交易参数可包括交易类型和/或交易金额,例如,若区块链上的A节点向B节点转账支付了金额X,则A节点将该交易事件对应的交易参数广播给该区块链上的其他节点,对外广播的交易参数中包括“交易类型:A节点转出”,A节点对外广播的交易参数中还包括“交易金额:X”;同时,B节点也将该交易事件对应的交易参数广播给该区块链上的其他节点,对外广播的交易参数中包括“交易类型:B节点转入”,B节点对外广播的交易参数中还包括“交易金额:X”。
[0045] 本实施例中,当区块链上的一个节点在处理一个带有交易类型(例如,A转账给B)和交易金额的交易时,该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算以算出对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数(所述加密参数与所述解密参数可以相同,也可以不同)进行加密,通过智能合约将各个所述交易方对应的加密后的新余额广播到该区块链的各个节点上。
[0046] 步骤S20,当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证。
[0047] 区块链上的数据通常会被存放在参与节点上的两个地方:智能合约(每个智能合约存有自己的当前状况)中和节点上的事务记录(transaction log,用来滚出每个智能合约上数据当前的状况)中,每个区块链节点对应一个事务记录和一个或多个智能合约。当一个交易参数传到区块链的节点上时,这个交易参数会被记录到该节点对应的事务记录上并同时传给与该交易参数对应的智能合约去运行,并由该交易参数对应的智能合约上的代码对智能合约的自身数据进行更新。
[0048] 本实施例中,若有区块链节点接收到该区块链上的其他节点广播来的各个所述交易方对应的加密新余额,则该区块链节点将所述加密新余额发给该区块链节点对应的智能合约进行合数验证,即验证交易前的所有节点的余额之和是否等于交易之后的所有节点的余额之和,以验证该交易是否正常。本实施例中,该区块链节点对应的智能合约可基于预设的同态加密验证算法来进行合数验证。
[0049] 其中,同态加密是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。本实施例中,基于预设的同态加密验证算法可验证交易前的所有节点的余额之和是否等于交易之后的所有节点的余额之和,从而验证该交易是否正常。例如,在一种实施方式中,该区块链节点对应的智能合约可以采用加法同态加密验证算法进行合数验证,假设R和S是域,称加密函数E:R→S为加法同态,如果存在有效算法⊕,使得E(x+y)=E(x)⊕E(y)或者x+y=D(E(x)⊕E(y))成立,该有效算法⊕即为加法同态加密验证算法,这个算法不仅能验证账户合数,同时,还能确保不泄漏账户的余额x和y。
[0050] 当运用区块链技术进行多方参与的交易事件例如转账交易、支付交易等事件时,在去中心化的区块链系统当中,由于没有绝对权威机构节点,因此对每笔交易都必须进行集体验证。本实施例中采用同态加密验证算法来进行合数验证,既能有效地验证运用区块链技术进行多方参与的交易是否正常,又能防止多方账户的余额泄露,有效地保证了交易信息的安全。
[0051] 步骤S30,若该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,则该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额对自身数据进行更新;
[0052] 若该区块链节点对应的智能合约对所述交易参数的合数验证通过,则说明该交易正常,则该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额进行更新。例如,若所述交易参数包括的交易类型是“A节点转出”,所述交易参数包括的交易金额是X,则该区块链节点对应的智能合约将自身数据中的A节点余额减少X。
[0053] S40、调用该区块链外部预设的负数余额验证系统启动多个线程,每个线程同时负责对该区块链上各个节点的单个账户的余额进行负数余额检验,若该区块链上各个节点的单个账户余额的负数余额检验通过,则判定该交易验证通过。
[0054] 因为每个节点的余额都是独立数组,所以可以对多个节点余额进行多线程检验,同时,因为同一个节点参与每次交易的账户、交易类型和金额是被记载在案的,所以通过虚假余额检验可以有效防止用户在某个节点通过分账户分摊余额的形式改变某个分账户的余额从而规避所述合数验证的校验,例如,银行A可把账号001上的100张票据通过以下分账户分摊余额的形式变成400张:先创建一个002账号并放上400余额,然后再在一个新的003账号上存-300。
[0055] 本实施例中通过在所述区块链外部的负数余额验证系统,即利用不在所述区块链上运行的负数余额验证系统来启动多个线程对参与该交易事件的各个节点的各个账户的余额进行负数余额检验,能避免用户通过制造存有负数的账号的方式来骗过合数验证的情况发生,能进一步地更加准确的验证交易是否正常,而且,负数余额验证系统并不在所述区块链上运行,而是在外部单独运行,不会对区块链上的交易处理速度造成影响,有效地保证了区块链上较快的交易处理速度。
[0056] 本实施例中若有区块链节点接收到区块链上的其他节点广播来的交易参数,区块链上的节点在处理带有交易类型和交易金额的交易时,基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,并将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,广播到该区块链的各个节点上;当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;在合数验证通过,才由所述区块链节点对应的智能合约基于所述交易参数对自身数据进行更新。由于广播的各个所述交易方对应的新余额均进行了加密处理,该区块链的其他节点无法获知该新余额,且只有在合数验证通过后,才进行数据更新,能防止多方交易中各账户的余额泄露,有效地保证了交易信息的安全。此外,还将各个节点的单个账户的余额发给所述区块链外部预设的负数余额验证系统来进行负数余额检验。由于利用外部的负数余额验证系统来进行负数余额检验,既能进一步验证多方交易是否正常,又能在不占用系统开销的情况下保证区块链上的交易处理速度。
[0057] 进一步地,在其他实施例中,该方法还可以包括:
[0058] 将第二解密参数通过该区块链的节点与该区块链上的监管方节点对应的秘钥进行加密,并将加密后的第二解密参数通过智能合约广播到该区块链上的监管方节点上,所述第二解密参数用于对各个所述交易方对应的加密新余额进行解密;
[0059] 该区块链上的监管方节点读取更新过的各个所述交易方对应的加密新余额,并通过所述秘钥对加密后的第二解密参数进行解密,通过解密后的第二解密参数对各个所述交易方对应的加密新余额进行解密,并对解密后的各个新余额进行负数余额验证。
[0060] 本实施例中,在该节点通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上的同时,还将用于对各个所述交易方对应的加密后的新余额进行解密的第二解密参数通过该节点与监管方节点对应的秘钥进行加密,并将加密后的解密参数通过智能合约广播到该区块链上的监管方节点上。在该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,且该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额进行更新后,由该区块链上的监管方节点在读取更新过的各个所述交易方对应的加密新余额后,通过所述秘钥对所述加密后的解密参数进行解密,通过解密后的解密参数对各个所述交易方对应的加密后的新余额进行解密,并对解密后的各个新余额进行负数余额验证,进一步地从区块链本身对该区块链上的各个账户的余额进行负数余额检验,以进一步验证该交易是否正常。
[0061] 进一步地,在其他实施例中,该方法还可以包括:
[0062] 若有账户未通过负数余额检验,则所述监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向除所述异常区块链节点外的其他节点进行通知。
[0063] 若有账户未通过负数余额检验,则有可能是出现了用户通过制造存有负数的账号的方式来骗过合数验证的情况,则由区块链上的监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向所述区块链中除所述异常区块链节点之外的其他节点进行通知,以提醒其他节点该账户处于异常状况,该账户对应的异常区块链节点参与的交易事件可能存在风险。
[0064] 进一步地,在其他实施例中,该方法还可以包括:
[0065] 若有账户未通过负数余额检验,则由所述监管方节点通过预设的区块链权限管理系统取消所述异常区块链节点在所述区块链上的交易权限。
[0066] 若由所述负数余额验证系统对单个账户的余额进行负数余额检验时,有账户未通过负数余额检验,则有可能是出现了用户通过制造存有负数的账号的方式来骗过合数验证的情况,说明该账户对应的异常区块链节点参与的交易事件可能存在风险,则通过预设的区块链权限管理系统取消所述异常区块链节点在所述区块链上的交易权限,以阻止所述异常区块链节点在所述区块链上继续参与交易,保证所述区块链中除所述异常区块链节点之外的其他节点的交易安全。
[0067] 进一步地,在其他实施例中,该方法还可以包括:
[0068] 若所述区块链节点对应的智能合约对所述交易参数的合数验证不通过,则向该交易事件的所有参与节点发送该交易事件合数验证失败的通知,或者,向所述区块链上的所有节点发送该交易事件合数验证失败的通知。以提醒该交易事件的所有参与节点或所述区块链上的所有节点该交易事件出现异常,所述区块链节点参与的交易事件可能存在风险。
[0069] 本发明进一步提供一种基于区块链的交易验证系统。
[0070] 参照图2,图2为本发明交易验证系统一实施例的功能模块示意图。
[0071] 在一实施例中,该交易验证系统包括:
[0072] 广播模块01,用于当区块链上的一个节点在处理一个带有交易类型和交易金额的交易时,由该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上。
[0073] 当区块链上的一个节点在完成一个交易事件后,会将该交易事件对应的交易参数广播给该区块链上的其他节点。其中,所述交易参数可包括交易类型和/或交易金额,例如,若区块链上的A节点向B节点转账支付了金额X,则A节点将该交易事件对应的交易参数广播给该区块链上的其他节点,对外广播的交易参数中包括“交易类型:A节点转出”,A节点对外广播的交易参数中还包括“交易金额:X”;同时,B节点也将该交易事件对应的交易参数广播给该区块链上的其他节点,对外广播的交易参数中包括“交易类型:B节点转入”,B节点对外广播的交易参数中还包括“交易金额:X”。
[0074] 本实施例中,当区块链上的一个节点在处理一个带有交易类型(例如,A转账给B)和交易金额的交易时,该节点通过该交易的交易方发送来的第一解密参数解密各个所述交易方的原始余额,并基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算以算出对应的新余额,将各个所述交易方对应的新余额通过所述交易方发送来的加密参数(所述加密参数与所述解密参数可以相同,也可以不同)进行加密,通过智能合约将各个所述交易方对应的加密后的新余额广播到该区块链的各个节点上。
[0075] 合数验证模块02,用于当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证。
[0076] 区块链上的数据通常会被存放在参与节点上的两个地方:智能合约(每个智能合约存有自己的当前状况)中和节点上的事务记录(transaction log,用来滚出每个智能合约上数据当前的状况)中,每个区块链节点对应一个事务记录和一个或多个智能合约。当一个交易参数传到区块链的节点上时,这个交易参数会被记录到该节点对应的事务记录上并同时传给与该交易参数对应的智能合约去运行,并由该交易参数对应的智能合约上的代码对智能合约的自身数据进行更新。
[0077] 本实施例中,若有区块链节点接收到该区块链上的其他节点广播来的各个所述交易方对应的加密新余额,则该区块链节点将所述加密新余额发给该区块链节点对应的智能合约进行合数验证,即验证交易前的所有节点的余额之和是否等于交易之后的所有节点的余额之和,以验证该交易是否正常。本实施例中,该区块链节点对应的智能合约可基于预设的同态加密验证算法来进行合数验证。
[0078] 其中,同态加密是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。本实施例中,基于预设的同态加密验证算法可验证交易前的所有节点的余额之和是否等于交易之后的所有节点的余额之和,从而验证该交易是否正常。例如,在一种实施方式中,该区块链节点对应的智能合约可以采用加法同态加密验证算法进行合数验证,假设R和S是域,称加密函数E:R→S为加法同态,如果存在有效算法⊕,使得E(x+y)=E(x)⊕E(y)或者x+y=D(E(x)⊕E(y))成立,该有效算法⊕即为加法同态加密验证算法,这个算法不仅能验证账户合数,同时,还能确保不泄漏账户的余额x和y。
[0079] 当运用区块链技术进行多方参与的交易事件例如转账交易、支付交易等事件时,在去中心化的区块链系统当中,由于没有绝对权威机构节点,因此对每笔交易都必须进行集体验证。本实施例中采用同态加密验证算法来进行合数验证,既能有效地验证运用区块链技术进行多方参与的交易是否正常,又能防止多方账户的余额泄露,有效地保证了交易信息的安全。
[0080] 更新模块03,用于若该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,则由该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额对自身数据进行更新。
[0081] 若该区块链节点对应的智能合约对所述交易参数的合数验证通过,则说明该交易正常,则该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额进行更新。例如,若所述交易参数包括的交易类型是“A节点转出”,所述交易参数包括的交易金额是X,则该区块链节点对应的智能合约将自身数据中的A节点余额减少X。
[0082] 余额检验模块04,用于调用该区块链外部预设的负数余额验证系统启动多个线程,每个线程同时负责对该区块链上各个节点的单个账户的余额进行负数余额检验,若该区块链上各个节点的单个账户余额的负数余额检验通过,则判定该交易验证通过。
[0083] 因为每个节点的余额都是独立数组,所以可以对多个节点余额进行多线程检验,同时,因为同一个节点参与每次交易的账户、交易类型和金额是被记载在案的,所以通过虚假余额检验可以有效防止用户在某个节点通过分账户分摊余额的形式改变某个分账户的余额从而规避所述合数验证的校验,例如,银行A可把账号001上的100张票据通过以下分账户分摊余额的形式变成400张:先创建一个002账号并放上400余额,然后再在一个新的003账号上存-300。
[0084] 本实施例中通过在所述区块链外部的负数余额验证系统,即利用不在所述区块链上运行的负数余额验证系统来启动多个线程对参与该交易事件的各个节点的各个账户的余额进行负数余额检验,能避免用户通过制造存有负数的账号的方式来骗过合数验证的情况发生,能进一步地更加准确的验证交易是否正常,而且,负数余额验证系统并不在所述区块链上运行,而是在外部单独运行,不会对区块链上的交易处理速度造成影响,有效地保证了区块链上较快的交易处理速度。
[0085] 本实施例中若有区块链节点接收到区块链上的其他节点广播来的交易参数,区块链上的节点在处理带有交易类型和交易金额的交易时,基于所述交易类型和交易金额对各个所述交易方的原始余额进行计算得到对应的新余额,并将各个所述交易方对应的新余额通过所述交易方发送来的加密参数进行加密得到加密新余额,广播到该区块链的各个节点上;当该区块链的节点接收到广播来的各个所述交易方对应的加密新余额后,启动对应的智能合约进行合数验证;在合数验证通过,才由所述区块链节点对应的智能合约基于所述交易参数对自身数据进行更新。由于广播的各个所述交易方对应的新余额均进行了加密处理,该区块链的其他节点无法获知该新余额,且只有在合数验证通过后,才进行数据更新,能防止多方交易中各账户的余额泄露,有效地保证了交易信息的安全。此外,还将各个节点的单个账户的余额发给所述区块链外部预设的负数余额验证系统来进行负数余额检验。由于利用外部的负数余额验证系统来进行负数余额检验,既能进一步验证多方交易是否正常,又能在不占用系统开销的情况下保证区块链上的交易处理速度。
[0086] 进一步地,在其他实施例中,上述广播模块01还可以用于:
[0087] 将第二解密参数通过该区块链的节点与该区块链上的监管方节点对应的秘钥进行加密,并将加密后的第二解密参数通过智能合约广播到该区块链上的监管方节点上,所述第二解密参数用于对各个所述交易方对应的加密新余额进行解密;
[0088] 上述余额检验模块04还可以用于:
[0089] 由该区块链上的监管方节点读取更新过的各个所述交易方对应的加密新余额,并通过所述秘钥对加密后的第二解密参数进行解密,通过解密后的第二解密参数对各个所述交易方对应的加密新余额进行解密,并对解密后的各个新余额进行负数余额验证。
[0090] 本实施例中,在该节点通过智能合约将各个所述交易方对应的加密新余额广播到该区块链的各个节点上的同时,还将用于对各个所述交易方对应的加密后的新余额进行解密的第二解密参数通过该节点与监管方节点对应的秘钥进行加密,并将加密后的解密参数通过智能合约广播到该区块链上的监管方节点上。在该区块链上各个节点对应的智能合约对各个所述交易方对应的加密新余额的合数验证通过,且该区块链上各个节点对应的智能合约基于各个所述交易方对应的加密新余额进行更新后,由该区块链上的监管方节点在读取更新过的各个所述交易方对应的加密新余额后,通过所述秘钥对所述加密后的解密参数进行解密,通过解密后的解密参数对各个所述交易方对应的加密后的新余额进行解密,并对解密后的各个新余额进行负数余额验证,进一步地从区块链本身对该区块链上的各个账户的余额进行负数余额检验,以进一步验证该交易是否正常。
[0091] 进一步地,在其他实施例中,上述余额检验模块04还可以用于:
[0092] 若有账户未通过负数余额检验,则由所述监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向除所述异常区块链节点外的其他节点进行通知。
[0093] 若有账户未通过负数余额检验,则有可能是出现了用户通过制造存有负数的账号的方式来骗过合数验证的情况,则由区块链上的监管方节点确定该账户对应的异常区块链节点,并将该账户的异常状况向所述区块链中除所述异常区块链节点之外的其他节点进行通知,以提醒其他节点该账户处于异常状况,该账户对应的异常区块链节点参与的交易事件可能存在风险。
[0094] 进一步地,在其他实施例中,上述余额检验模块04还可以用于:
[0095] 若有账户未通过负数余额检验,则由所述监管方节点通过预设的区块链权限管理系统取消所述异常区块链节点在所述区块链上的交易权限。
[0096] 若由所述负数余额验证系统对单个账户的余额进行负数余额检验时,有账户未通过负数余额检验,则有可能是出现了用户通过制造存有负数的账号的方式来骗过合数验证的情况,说明该账户对应的异常区块链节点参与的交易事件可能存在风险,则通过预设的区块链权限管理系统取消所述异常区块链节点在所述区块链上的交易权限,以阻止所述异常区块链节点在所述区块链上继续参与交易,保证所述区块链中除所述异常区块链节点之外的其他节点的交易安全。
[0097] 进一步地,在其他实施例中,上述合数验证模块02还可以用于:
[0098] 若所述区块链节点对应的智能合约对所述交易参数的合数验证不通过,则向该交易事件的所有参与节点发送该交易事件合数验证失败的通知,或者,向所述区块链上的所有节点发送该交易事件合数验证失败的通知。以提醒该交易事件的所有参与节点或所述区块链上的所有节点该交易事件出现异常,所述区块链节点参与的交易事件可能存在风险。
[0099] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0100] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0101] 以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0102] 本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈