发明内容
本申请的目的是提供一种区块链跨链交易验证的方法、装置、设备及区块链系统,用于减小验证过程造成的性能开销。
为解决上述技术问题,本申请提供一种区块链跨链交易验证的方法,应用于交易请求方,该方法包括:
通过RSA累加器记录区块链中每一笔交易的状态值;
获取跨链交易请求,所述跨链交易请求包括当前交易的状态值的记录值,所述当前交易的状态值的记录值由所述RSA累加器记录;
将所述跨链交易请求发送至交易验证方,以使所述交易验证方对所述当前交易的状态值的记录值进行验证,若验证通过,则所述交易验证方确认跨链交易。
可选的,所述通过RSA累加器记录区块链中每一笔交易的状态值,包括:
根据公式Acc0=g确定所述RSA累加器的初始值,g为(1,N)中的任意整数,N为预先确定的一个正整数;
根据公式对所述区块链中第i+1笔交易的状态值进行记录;
其中,Acc0为所述RSA累加器的初始值,Acci+1为所述RSA累加器记录的所述第i+1笔交易的状态值的记录值,si+1为所述第i+1笔交易的状态值,Acci为所述RSA累加器记录的第i笔交易的状态值的记录值,Hp为将任意值映射成大质数的哈希函数。
可选的,所述跨链交易请求还包括当前交易的状态值以及当前交易的状态值的证明值,所述证明值根据如下公式计算得到:
其中,si为所述第i笔交易的状态值,πi为所述第i笔交易的状态值的证明值。
本申请还提供一种区块链跨链交易验证的方法,应用于交易验证方,该方法包括:
接收交易请求方发送的跨链交易请求,所述跨链交易请求包括当前交易的状态值的记录值,所述当前交易的状态值的记录值由RSA累加器记录;
对所述当前交易的状态值的记录值进行验证;
若验证通过,则确认跨链交易。
可选的,所述跨链交易请求还包括当前交易的状态值以及当前交易的状态值的证明值;
所述对所述当前交易的状态值的记录值进行验证,包括:
根据所述跨链交易请求确定第i笔交易的状态值的记录值、第i笔交易的状态值及所述第i笔交易的状态值的证明值;
根据所述第i笔交易的状态值及所述第i笔交易的状态值的证明值通过公式计算验证值;
判断所述验证值与所述第i笔交易的状态值的记录值是否相等;
若是,则确定验证通过;
若否,则确定验证不通过;
其中,Acci'为所述交易验证方计算得到的验证值,Hp为将任意值映射成大质数的哈希函数,si为所述第i笔交易的状态值,πi为所述第i笔交易的状态值的证明值。
本申请还提供一种区块链跨链交易验证的装置,应用于交易请求方,该装置包括:
记录模块,用于通过RSA累加器记录区块链中每一笔交易的状态值;
获取模块,用于获取跨链交易请求,所述跨链交易请求包括当前交易的状态值的记录值,所述当前交易的状态值的记录值由所述RSA累加器记录;
发送模块,用于将所述跨链交易请求发送至交易验证方,以使所述交易验证方对所述当前交易的状态值的记录值进行验证,若验证通过,则所述交易验证方确认跨链交易。
可选的,所述记录模块包括:
第一确定子模块,用于根据公式Acc0=g确定所述RSA累加器的初始值,g为(1,N)中的任意整数,N为预先确定的一个正整数;
记录子模块,用于根据公式对所述区块链中第i+1笔交易的状态值进行记录;
其中,Acc0为所述RSA累加器的初始值,Acci+1为所述RSA累加器记录的所述第i+1笔交易的状态值的记录值,si+1为所述第i+1笔交易的状态值,Acci为所述RSA累加器记录的第i笔交易的状态值的记录值,Hp为将任意值映射成大质数的哈希函数。
本申请还提供一种区块链跨链交易验证的装置,应用于交易验证方,该装置包括:
接收模块,用于接收交易请求方发送的跨链交易请求,所述跨链交易请求包括当前交易的状态值的记录值,所述当前交易的状态值的记录值由RSA累加器记录;
验证模块,用于对所述当前交易的状态值的记录值进行验证;
确认模块,用于当验证通过时,确认跨链交易。
本申请还提供一种区块链跨链交易验证设备,应用于交易请求方,该区块链跨链交易验证设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述应用于交易请求方的区块链跨链交易验证的方法的步骤。
本申请还提供一种区块链跨链交易验证设备,应用于交易验证方,该区块链跨链交易验证设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述应用于交易验证方的区块链跨链交易验证的方法的步骤。
本申请还提供一种区块链系统,所述区块链系统包括至少二条区块链,所述区块链系统支持跨链交易,跨链交易的交易请求方和交易验证方属于不同的区块链,其中:
所述交易请求方用于通过RSA累加器记录区块链中每一笔交易的状态值;获取跨链交易请求,所述跨链交易请求包括当前交易的状态值的记录值,所述当前交易的状态值的记录值由所述RSA累加器记录;将所述跨链交易请求发送至所述交易验证方;
所述交易验证方用于接收所述交易请求方发送的跨链交易请求;对所述当前交易的状态值的记录值进行验证;若验证通过,则确认跨链交易。
本申请所提供区块链跨链交易验证的方法,应用于交易请求方,包括:通过RSA累加器记录区块链中每一笔交易的状态值;获取跨链交易请求,跨链交易请求包括当前交易的状态值的记录值,当前交易的状态值的记录值由RSA累加器记录;将跨链交易请求发送至交易验证方,以使交易验证方对当前交易的状态值的记录值进行验证,若验证通过,则交易验证方确认跨链交易。
本申请所提供的技术方案,通过RSA累加器记录区块链中每一笔交易的状态值,相比于Merkle Tree随着存储内容变多而规模变大,本申请利用RSA累加器存储的交易的状态值进行验证,由于存储内容的增加不会导致提供的验证数据的增加,因此可以有效减小跨链交易过程中的带宽占用,进而不会造成过高的性能开销,而且验证时间恒定,不会随着存储内容的增加而受到影响。本申请同时还提供了一种区块链跨链交易验证的方法、装置、设备及区块链系统,具有上述有益效果,在此不再赘述。
具体实施方式
本申请的核心是提供一种区块链跨链交易验证的方法、装置、设备及区块链系统,用于减小验证过程造成的性能开销。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种区块链跨链交易验证的方法的流程图。
应用于交易请求方,其具体包括如下步骤:
S101:通过RSA累加器记录区块链中每一笔交易的状态值;
基于现有技术中,跨链交易时的认证需要通过Merkle Tree进行证明,而由于Merkle Tree自身属性的原因,导致随着存储内容的增加,Merkle Tree的规模也逐渐变大,使用Merkle Tree证明state存在的计算也越来越复杂,验证时间也越来越长,这给跨链交易增加了很大的性能开销,故本申请提供了一种区块链跨链交易验证的方法,用于解决上述问题;
可选的,这里提到的通过RSA累加器记录区块链中每一笔交易的状态值,其实现方法具体可以为在每个区块中额外添加一个RSA累加器,跨链时发送RSA累加器的记录值及相关证明即可证明用户的state,使得跨链交易不再需要基于Merkle Tree的StateRoot;
这里提到的通过RSA累加器记录区块链中每一笔交易的状态值的目的在于,RSA累加器能够将所有的状态值压缩成单个固定大小的记录值,使得根据给定的数据和该记录值便可以构建证明值,以证明数据中的任何特定值都是该记录值标识的数据的一部分,这极大的减少了数据的空间占用;
可选的,这里提到的通过RSA累加器记录区块链中每一笔交易的状态值,其具体可以为:
根据公式Acc0=g确定RSA累加器的初始值,g为(1,N)中的任意整数,N为预先确定的一个正整数;
根据公式对区块链中第i+1笔交易的状态值进行记录;
其中,Acc0为RSA累加器的初始值,Acci+1为RSA累加器记录的第i+1笔交易的状态值的记录值,si+1为第i+1笔交易的状态值,Acci为RSA累加器记录的第i笔交易的状态值的记录值,Hp为将任意值映射成大质数的哈希函数;
这里提到的N=p·q,p和q是两个大质数,p和q可以是未知的,本申请实施例仅需要一个无法质因数分解的大N,而找到N的方法包括但不限于通过一个可信赖第三方生成N、通过一些RSA私钥已经丢失的公钥作为N、根据class group技术找到N;
Acc0用于表示RSA累加器的初始状态,可以通过公式将第一笔交易的状态值s1增加到RSA累加器中,以此类推,直至将该区块链中每一笔交易的状态值均存储到RSA累加器中,并将RSA累加器最终的记录值放到区块中。
S102:获取跨链交易请求,跨链交易请求包括当前交易的状态值的记录值,当前交易的状态值的记录值由RSA累加器记录;
S103:将跨链交易请求发送至交易验证方,以使交易验证方对当前交易的状态值的记录值进行验证,若验证通过,则交易验证方确认跨链交易。
优选的,该跨链交易请求还可以包括当前交易的状态值以及当前交易的状态值的证明值,该证明值可以根据如下公式计算得到:
其中,si为第i笔交易的状态值,πi为第i笔交易的状态值的证明值。
本申请实施例先计算第i笔交易的状态值的证明值,然后再将包含证明值、RSA累加器的记录值及第i笔交易的状态值的交易请求发送至交易验证方后,使得交易验证方根据证明值及第i笔交易的状态值计算验证值,然后再判断验证值与RSA累加器的记录值是否相等,若相等,则验证通过,此时交易验证方确认跨链交易。
基于上述技术方案,本申请所提供的一种区块链跨链交易验证的方法,通过RSA累加器记录区块链中每一笔交易的状态值,相比于Merkle Tree随着存储内容变多而规模变大,本申请利用RSA累加器存储的交易的状态值进行验证,由于存储内容的增加不会导致提供的验证数据的增加,因此可以有效减小跨链交易过程中的带宽占用,进而不会造成过高的性能开销,而且验证时间恒定,不会随着存储内容的增加而受到影响。
请参考图2,图2为本申请实施例所提供的另一种区块链跨链交易验证的方法的流程图。
应用于交易验证方,其具体包括如下步骤:
S201:接收交易请求方发送的跨链交易请求,跨链交易请求包括当前交易的状态值的记录值,当前交易的状态值的记录值由RSA累加器记录;
S202:对当前交易的状态值的记录值进行验证;
可选的,这里提到的跨链交易请求还可以包括当前交易的状态值以及当前交易的状态值的证明值;
在此基础上,对RSA累加器的记录值进行验证,其具体可以为:
根据跨链交易请求确定第i笔交易的状态值的记录值、第i笔交易的状态值及第i笔交易的状态值的证明值;
根据第i笔交易的状态值及第i笔交易的状态值的证明值通过公式计算验证值;
判断验证值与第i笔交易的状态值的记录值是否相等;
若是,则确定验证通过;
若否,则确定验证不通过;
其中,Acci'为交易验证方计算得到的验证值,Hp为将任意值映射成大质数的哈希函数,si为第i笔交易的状态值,πi为第i笔交易的状态值的证明值。
S203:若验证通过,则确认跨链交易。
可选的,交易验证方在对RSA累加器的记录值进行验证之前,还可以先对交易请求方的数字签名进行验证,以确保交易请求方的正确性。
基于上述技术方案,本申请实施例通过对RSA累加器的记录值进行验证,由于存储内容的增加不会导致提供的验证数据的增加,因此可以验证时间恒定,不会随着存储内容的增加而受到影响。
请参考图3,图3为本申请实施例所提供的一种区块链跨链交易验证的装置的结构图。
应用于交易请求方,该装置可以包括:
记录模块100,用于通过RSA累加器记录区块链中每一笔交易的状态值;
获取模块200,用于获取跨链交易请求,跨链交易请求包括当前交易的状态值的记录值,当前交易的状态值的记录值由RSA累加器记录;
发送模块300,用于将跨链交易请求发送至交易验证方,以使交易验证方对当前交易的状态值的记录值进行验证,若验证通过,则交易验证方确认跨链交易。
可选的,该记录模块100可以包括:
第一确定子模块,用于根据公式Acc0=g确定RSA累加器的初始值,g为(1,N)中的任意整数,N为预先确定的一个正整数;
记录子模块,用于根据公式对区块链中第i+1笔交易的状态值进行记录;
其中,Acc0为RSA累加器的初始值,Acci+1为RSA累加器记录的第i+1笔交易的状态值的记录值,si+1为第i+1笔交易的状态值,Acci为RSA累加器记录的第i笔交易的状态值的记录值,Hp为将任意值映射成大质数的哈希函数。
可选的,跨链交易请求还包括当前交易的状态值以及当前交易的状态值的证明值,证明值根据如下公式计算得到:
其中,si为第i笔交易的状态值,πi为第i笔交易的状态值的证明值。
由于应用于交易请求方的装置部分的实施例与应用于交易请求方的方法部分的实施例相互对应,因此应用于交易请求方的装置部分的实施例请参见应用于交易请求方的方法部分的实施例的描述,这里暂不赘述。
请参考图4,图4为本申请实施例所提供的另一种区块链跨链交易验证的装置的结构图。
应用于交易验证方,该装置可以包括:
接收模块400,用于接收交易请求方发送的跨链交易请求,跨链交易请求包括当前交易的状态值的记录值,当前交易的状态值的记录值由RSA累加器记录;
验证模块500,用于对当前交易的状态值的记录值进行验证;
确认模块600,用于当验证通过时,确认跨链交易。
可选的,跨链交易请求还可以包括当前交易的状态值以及当前交易的状态值的证明值;
在此基础上,该验证模块500可以包括:
第二确定子模块,用于根据跨链交易请求确定第i笔交易的状态值的记录值、第i笔交易的状态值及第i笔交易的状态值的证明值;
计算子模块,用于根据第i笔交易的状态值及第i笔交易的状态值的证明值通过公式计算验证值;
判断子模块,用于判断验证值与第i笔交易的状态值的记录值是否相等;
第三确定子模块,用于当验证值与第i笔交易的状态值的记录值相等时,确定验证通过;
第四确定子模块,用于当验证值与第i笔交易的状态值的记录值不相等时,确定验证不通过。
其中,Acci'为交易验证方计算得到的验证值,Hp为将任意值映射成大质数的哈希函数,si为第i笔交易的状态值,πi为第i笔交易的状态值的证明值。
由于应用于交易验证方的装置部分的实施例与应用于交易验证方的方法部分的实施例相互对应,因此应用于交易验证方的装置部分的实施例请参见应用于交易验证方的方法部分的实施例的描述,这里暂不赘述。
请参考图5,图5为本申请实施例所提供的一种区块链跨链交易验证设备的结构图。
应用于交易请求方,该区块链跨链交易验证设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,处理器722可以设置为与存储介质730通信,在区块链跨链交易验证设备700上执行存储介质730中的一系列指令操作。
区块链跨链交易验证设备700还可以包括一个或一个以上电源727,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述图1所描述的应用于交易请求方的区块链跨链交易验证的方法中的步骤由区块链跨链交易验证设备基于该图5所示的结构实现。
本申请还提供了另一种区块链跨链交易验证设备,应用于交易验证方,该区块链跨链交易验证设备包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述实施例任一项应用于交易验证方的区块链跨链交易验证的方法的步骤。
请参考图6,图6为本申请实施例所提供的一种区块链系统的结构图。
该区块链系统包括至少二条区块链,区块链系统支持跨链交易,跨链交易的交易请求方800和交易验证方900属于不同的区块链,其中:
交易请求方800用于通过RSA累加器记录区块链中每一笔交易的状态值;获取跨链交易请求,跨链交易请求包括当前交易的状态值的记录值,当前交易的状态值的记录值由RSA累加器记录;将跨链交易请求发送至交易验证方900;
交易验证方900用于接收交易请求方800发送的跨链交易请求;对当前交易的状态值的记录值进行验证;若验证通过,则确认跨链交易。
由于区块链系统部分的实施例与区块链跨链交易验证的方法部分的实施例相互对应,因此区块链系统部分的实施例请参见区块链跨链交易验证的方法部分的实施例的描述,这里暂不赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种区块链跨链交易验证的方法、装置、设备及区块链系统进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。