基于区块链的交易验证方法、记账节点及介质与流程

文档序号:19791925发布日期:2020-01-24 14:24阅读:244来源:国知局
基于区块链的交易验证方法、记账节点及介质与流程

本发明实施例涉及区块链技术领域,尤其涉及一种基于区块链的交易验证方法、记账节点及介质。



背景技术:

在相关技术中,token(“令牌”)可以采用同态加密算法加密后记录在区块链中,同时可以采用同态加密机制对区块链中的交易进行验证,但是在该机制下,攻击者仍旧可以通过多次尝试验证比较,大致确定用户节点拥有的token数的范围,甚至可以碰撞尝试出所有区块链用户节点的token数,对区块链中用户节点的隐私构成威胁。



技术实现要素:

本发明实施例提供一种基于区块链的交易验证方法、记账节点及介质,用以提升区块链中的token数据的保密性,保护用户隐私。

本发明实施例第一方面提供一种基于区块链的交易验证方法,在该方法中,区块链中各节点拥有的token数与各节点自身生成的随机数构成字符串,该字符串采用预设的同态加密算法以及各节点自身的公钥加密后,记录在所述区块链的账本中,该方法包括:

记账节点接收第二用户节点发送的交易信息,所述交易信息包括第一加密数据,其中,所述第一加密数据为所述第二用户节点采用所述同态加密算法对第一字符串加密得到的,所述第一字符串由所述第一用户节点向所述第二用户节点发送的随机数和所述第一用户节点目标向所述第二用户节点转移的token数构成;

所述记账节点从所述区块链的账本中获取所述第一用户节点对应的第二加密数据,所述第二加密数据为采用所述同态加密算法对第二字符串加密得到的,所述第二字符串由所述随机数和所述第一用户节点拥有的token数构成;

所述记账节点在所述第一加密数据和所述第二加密数据之间进行数值比较处理,若所述第一加密数据和所述第二加密数据中对应所述随机数的部分相同,所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分,则验证通过,否则验证失败。

在一种实施方式中,所述记账节点在所述第一加密数据和所述第二加密数据之间进行数值比较处理,包括:

将所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分进行异或处理,若所述异或处理的结果为零,则确定所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分相同。

在一种实施方式中,所述记账节点在所述第一加密数据和所述第二加密数据之间进行数值比较处理,包括:

计算所述第一加密数据中对应的token数的部分与所述第二加密数据中对应的token数的部分的差值,若所述差值小于或等于零,则确定所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分。

在一种实施方式中,所述同态加密算法为全同态加密算法。

在一种实施方式中,所述方法还包括:

若验证失败,向所述第一用户节点发送用于指示数额不足的通知消息。

本发明实施例第二方面提供一种记账节点,该记账节点适用于一种区块链,所述区块链中各节点拥有的token数与各节点自身生成的随机数构成字符串,该字符串采用预设的同态加密算法以及各节点自身的公钥加密后,记录在所述区块链的账本中,所述记账节点包括:处理器和存储器,所述存储器中存储有指令,当所述处理器执行所述指令时执行如下操作:

接收第二用户节点发送的交易信息,所述交易信息包括第一加密数据,其中,所述第一加密数据为所述第二用户节点采用所述同态加密算法对第一字符串加密得到的,所述第一字符串由所述第一用户节点向所述第二用户节点发送的随机数和所述第一用户节点目标向所述第二用户节点转移的token数构成;

从所述区块链的账本中获取所述第一用户节点对应的第二加密数据,所述第二加密数据为采用所述同态加密算法对第二字符串加密得到的,所述第二字符串由所述随机数和所述第一用户节点拥有的token数构成;

在所述第一加密数据和所述第二加密数据之间进行数值比较处理,若所述第一加密数据和所述第二加密数据中对应所述随机数的部分相同,所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分,则验证通过,否则验证失败。

在一种实施方式中,所述处理器在所述第一加密数据和所述第二加密数据之间进行数值比较处理时,用于:

将所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分进行异或处理,若所述异或处理的结果为零,则确定所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分相同。

在一种实施方式中,所述处理器在所述第一加密数据和所述第二加密数据之间进行数值比较处理时,还用于:

计算所述第一加密数据中对应的token数的部分与所述第二加密数据中对应的token数的部分的差值,若所述差值小于或等于零,则确定所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分。

在一种实施方式中,所述同态加密算法为全同态加密算法。

本发明实施例第三方面提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。

在本发明实施例中,区块链中各节点拥有的token数与各节点自身生成的随机数构成字符串,该字符串采用预设的同态加密算法以及各节点自身的公钥加密并记录在区块链的账本上,在第一用户节点与第二用户节点执行交易时,记账节点接收第二用户节点发送的交易信息并从区块链的账本中获取第一用户节点对应的第二加密数据,其中,该交易信息包括第一加密数据,第一加密数据为第二用户节点采用同态加密算法对第一字符串加密得到的,第一字符串由第一用户节点向第二用户节点发送的随机数和第一用户节点目标向第二用户节点转移的token数构成;第二加密数据为采用同态加密算法对第二字符串加密得到的,第二字符串由随机数和第一用户节点拥有的token数构成;记账节点在得到第一加密数据和第二加密数据后,在第一加密数据和第二加密数据之间进行数值比较处理,并在第一加密数据和第二加密数据中对应随机数的部分相同,且第一加密数据中对应的token数的部分小于或等于第二加密数据中对应的token数的部分时,确定验证通过,否则验证失败。由于本发明实施例在对用户节点的token数进行加密时,不仅仅对token数加密还要增加一个随机数,该随机数只有在进行交易时才会被用户节点发送给交易对象,除了交易双方其他节点无法获知该随机数,因而交易中除交易双方之外,其他节点无法获知交易双方的token数,攻击端在无法获得该随机数据的情况下,不易通过碰撞尝试的方式获知用户节点的token数,提升了区块链中的token数据的保密性,保护了用户隐私。

附图说明

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

图1是本发明实施例提供的一种应用场景的示意图;

图2是本发明实施例提供的一种基于区块链的交易验证方法的流程图;

图3是本发明实施例提供的另一种基于区块链的交易验证方法的流程图;

图4是本发明实施例提供的一种记账节点的结构示意图。

具体实施方式

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

本发明的说明书和权利要求书的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤的过程或结构的装置不必限于清楚地列出的那些结构或步骤而是可包括没有清楚地列出的或对于这些过程或装置固有的其它步骤或结构。

本发明实施例提供的基于区块链的交易验证方法,旨在解决现有技术中存在的token数据的安全性问题,该方法可以适用于图1所示的通信系统。如图1所示,该通信系统包括:用户节点11、用户节点12和记账节点13、记账节点14,其中,用户节点11、用户节点12、记账节点13、记账节点14属于同一区块链网络,用户节点11、用户节点12具体可以是终端设备、服务器等设备,记账节点13和记账节点14具体可以是具有记账能力的计算机设备。记账节点13和记账节点14在区块链网络中争夺记账权,取得记账权的记账节点13或记账节点14可以在区块链网络上对用户节点11、用户节点12的交易进行验证和记录。另外,此处只是示意性说明,并不限定该区块链网络的结构和该区块链网络中的节点个数。

下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

图2是本发明实施例提供的一种基于区块链的交易验证方法的流程图,在该方法中区块链中各节点拥有的token数与各节点自身生成的随机数构成字符串,该字符串采用预设的同态加密算法以及各节点自身的公钥加密后,记录在区块链的账本中,以保证区块链中token数据的保密性。具体的,如图2所示,该方法包括如下步骤:

步骤101、记账节点接收第二用户节点发送的交易信息,所述交易信息包括第一加密数据,其中,所述第一加密数据为所述第二用户节点采用所述同态加密算法对第一字符串加密得到的,所述第一字符串由所述第一用户节点向所述第二用户节点发送的随机数和所述第一用户节点目标向所述第二用户节点转移的token数构成。

本实施例中所称的记账节点可以示例性的理解为图1场景中的记账节点13或记账节点14,第一用户节点可示例性的理解为图1场景中的用户节点11或用户节点12,当第一用户节点理解为用户节点11时,第二用户节点可示例性的理解为图1场景中的用户节点12,反之当第一节点理解为用户节点12时,第二用户节点可示例性的理解为用户节点11。在本实施例中假设第一用户节点在交易中向第二用户节点转移token。

在第一用户节点与第二用户节点执行交易时,第一用户节点将其目标转移给第二用户节点的token的数量广播到区块链中,并通过移动交换网例如短信、p2p等方式将自身生成的有效的随机数发送给第二用户节点,第二用户节点接收到该随机数,以及获知第一用户节点目标转移的token数后,将接收到的随机数与第一用户节点目标转移的token数量进行组合构成第一字符串,然后基于第一用户节点的公钥,采用预设的同态加密算法对第一字符串进行加密,得到第一加密数据,并将第一加密数据和第一用户节点的区块链标识发送给记账节点。

例如,当第一用户节点要转移n个token给第二用户节点,则第一用户节点通过移动交换网络的方式将自身的随机数randa和数量n告知第二用户节点,第二用户节点基于随机数randa和数量n生成的字符串为randa_n,则基于第一用户节点的公钥,采用同态加密算法生成的加密数据为c(randa_n).当然这里仅为示例说明并不是对本发明实施例的唯一限定。

本实施例中涉及的同态加密算法可以是任意一种同态加密算法,比如全同态加密算法、加法同态加密算法等。

步骤102、所述记账节点从所述区块链的账本中获取所述第一用户节点对应的第二加密数据,所述第二加密数据为采用所述同态加密算法对第二字符串加密得到的,所述第二字符串由所述随机数和所述第一用户节点拥有的token数构成。

示例的,假设第一用户节点当前的随机数为randa,拥有的token数为tokena,随机数randa和tokena构成的字符串为randa_tokena,基于第一用户节点的公钥采用同态加密算法对randa_tokena加密得到的加密数据为c(randa_tokena)。

可选的,在一些实施例中为了进一步提高随机数的保密性,区块链中的各节点可以定期对自身生成的随机数进行更新,比如间隔预设时间长度生成一个新的随机数,用新的随机数替换旧的随机数,并采用新生成的随机数据重新对节点自身拥有的token进行加密。

示例的,假设在上例中第一用户节点更新后的随机数为randa1,随机数randa1和tokena构成的字符串为randa1_tokena,基于第一用户节点的公钥采用同态加密算法对randa1_tokena加密得到的加密数据为c(randa1_tokena),即更新后的加密数据为c(randa1_tokena)。

步骤103、所述记账节点在所述第一加密数据和所述第二加密数据之间进行数值比较处理,若所述第一加密数据和所述第二加密数据中对应所述随机数的部分相同,所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分,则验证通过,否则验证失败。

在本实施例中对第一加密数据和第二加密数据进行比较的目的在于,验证第一用户节点是否有足够的支付能力,即验证第一用户节点用有的token数是否大于或等于目标转移的token数n。

可选的,在本实施例中可以通过预设的比较模型来对第一用户节点的支付能力进行验证,具体的,可以将第一加密数据和第二加密数据作为比较模型的输入,当模型的输出值为预设数值比如“1”时,确定第一加密数据和第二加密数据中对应随机数的部分相同,且第一加密数据中对应的token数的部分小于或等于第二加密数据中对应的token数的部分,验证通过,否则验证失败。其中,在验证失败时,记账节点可以向第一用户节点发送用于指示数额不足的通知消息,以使第一用户节点尽快补足数额。

在本实施例中,区块链中各节点拥有的token数与各节点自身生成的随机数构成字符串,该字符串采用预设的同态加密算法以及各节点自身的公钥加密并记录在区块链的账本上,在第一用户节点与第二用户节点执行交易时,记账节点接收第二用户节点发送的交易信息并从区块链的账本中获取第一用户节点对应的第二加密数据,其中,该交易信息包括第一加密数据,第一加密数据为第二用户节点采用同态加密算法对第一字符串加密得到的,第一字符串由第一用户节点向第二用户节点发送的随机数和第一用户节点目标向第二用户节点转移的token数构成;第二加密数据为采用同态加密算法对第二字符串加密得到的,第二字符串由随机数和第一用户节点拥有的token数构成;记账节点在得到第一加密数据和第二加密数据后,在第一加密数据和第二加密数据之间进行数值比较处理,并在第一加密数据和第二加密数据中对应随机数的部分相同,且第一加密数据中对应的token数的部分小于或等于第二加密数据中对应的token数的部分时,确定验证通过,否则验证失败。由于本实施例在对用户节点的token数进行加密时,不仅仅对token数加密还要增加一个随机数,该随机数只有在进行交易时才会被用户节点发送给交易对象,除了交易双方其他节点无法获知该随机数,因而交易中除交易双方之外,其他节点无法获知交易双方的token数,攻击端在无法获得该随机数据的情况下,不易通过碰撞尝试的方式获知用户节点的token数,提升了区块链中的token数据的保密性,保护了用户隐私。

图3是本发明实施例提供的另一种基于区块链的交易验证方法的流程图,如图3所示,在图2实施例的基础上,该方法包括:

步骤201、记账节点接收第二用户节点发送的交易信息,所述交易信息包括第一加密数据,其中,所述第一加密数据为所述第二用户节点采用所述同态加密算法对第一字符串加密得到的,所述第一字符串由所述第一用户节点向所述第二用户节点发送的随机数和所述第一用户节点目标向所述第二用户节点转移的token数构成。

步骤202、所述记账节点从所述区块链的账本中获取所述第一用户节点对应的第二加密数据,所述第二加密数据为采用所述同态加密算法对第二字符串加密得到的,所述第二字符串由所述随机数和所述第一用户节点拥有的token数构成。

步骤203、将所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分进行异或处理,若所述异或处理的结果为零,则确定所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分相同。

步骤204、计算所述第一加密数据中对应的token数的部分与所述第二加密数据中对应的token数的部分的差值,若所述差值小于或等于零,则确定所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分。

其中,步骤204和步骤203可以并行执行。

步骤205、若所述第一加密数据和所述第二加密数据中对应所述随机数的部分相同,所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分,则验证通过,否则验证失败。

本实施例的有益效果与图2实施例类似,在这里不再赘述。

图4是本发明实施例提供的一种记账节点的结构示意图,该记账节点适用于一种区块链,所述区块链中各节点拥有的token数与各节点自身生成的随机数构成字符串,该字符串采用预设的同态加密算法以及各节点自身的公钥加密后,记录在所述区块链的账本中,如图4所示,记账节点40包括:

处理器41和存储器42,所述存储器42中存储有指令,当所述处理器41执行所述指令时执行如下操作:

接收第二用户节点发送的交易信息,所述交易信息包括第一加密数据,其中,所述第一加密数据为所述第二用户节点采用所述同态加密算法对第一字符串加密得到的,所述第一字符串由所述第一用户节点向所述第二用户节点发送的随机数和所述第一用户节点目标向所述第二用户节点转移的token数构成;

从所述区块链的账本中获取所述第一用户节点对应的第二加密数据,所述第二加密数据为采用所述同态加密算法对第二字符串加密得到的,所述第二字符串由所述随机数和所述第一用户节点拥有的token数构成;

在所述第一加密数据和所述第二加密数据之间进行数值比较处理,若所述第一加密数据和所述第二加密数据中对应所述随机数的部分相同,所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分,则验证通过,否则验证失败。

在一种实施方式中,所述处理器在所述第一加密数据和所述第二加密数据之间进行数值比较处理时,用于:

将所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分进行异或处理,若所述异或处理的结果为零,则确定所述第一加密数据中对应随机数的部分与所述第二加密数据中对应随机数的部分相同。

在一种实施方式中,所述处理器在所述第一加密数据和所述第二加密数据之间进行数值比较处理时,还用于:

计算所述第一加密数据中对应的token数的部分与所述第二加密数据中对应的token数的部分的差值,若所述差值小于或等于零,则确定所述第一加密数据中对应的token数的部分小于或等于所述第二加密数据中对应的token数的部分。

在一种实施方式中,所述同态加密算法为全同态加密算法。

本实施例提供的记账节点能够执行图2或图3实施例的方法,其执行方和有益效果类似,在这里不再赘述。

本发明实施例还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述图2或图3提供的方法。

最后需要说明的是,本领域普通技术人员可以理解上述实施例方法中的全部或者部分流程,是可以通过计算机程序来指令相关的硬件完成,所述的程序可存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可以为磁盘、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。

本发明实施例中的各个功能单元可以集成在一个处理模块中,也可以是各个单元单独的物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。上述提到的存储介质可以是只读存储器、磁盘或光盘等。

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

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