基于区块链的承诺存在性证明方法、设备及可读存储介质与流程

文档序号:15935006发布日期:2018-11-14 02:15阅读:171来源:国知局

本发明涉及区块链的技术领域,尤其涉及一种基于区块链的承诺存在性证明方法、设备及可读存储介质。

背景技术

区块链的核心理念包括密码学技术和去中心化思想,零知识证明是一种密码学证明思想,即示证者与验证者共同协商规则,在规则中,示证者在不暴露自身秘密参数的情况下,向验证者提供一串密文,验证者通过验证密文,能够相信示证者拥有相应的秘密参数,而验证者却无法知道秘密参数的内容。由于零知识证明具备正确性、完备性和零知识性等特点,将零知识证明应用于区块链,实现私密转账,而私密转账的关键点在于证明要转账的私密资金是否存在。

目前,通过一棵记录区块链上所有承诺(表示一笔私密资金的密文)的默克树,结合零知识证明,实现私密资金的存在性证明,然而,零知识证明主要采用零知识电路实现,而零知识电路非常庞大,同时,为给全部承诺提供存在性证明,需要一棵树高较高的默克树,树高越高,哈希运算次数也越多,则重复的哈希电路也较多,进一步地增加了电路的庞大程度,空间占用较多,运算时间较长,私密资金的存在性证明效率较低。

因此,如何减少空间占用和运算时间,提高私密资金的存在性证明效率是目前亟待解决的问题。



技术实现要素:

本发明的主要目的在于提供一种基于区块链的承诺存在性证明方法、设备及可读存储介质,旨在如何减少空间占用和运算时间,提高私密资金的存在性证明效率。

为实现上述目的,本发明提供一种基于区块链的承诺存在性证明方法,所述基于区块链的承诺存在性证明方法包括:

构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;

构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;

接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性。

可选地,所述根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合的步骤包括:

根据构造的框选窗口的承诺框选个数和所述区块链的承诺数组包含的承诺个数,计算承诺集合数;

按照所述承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的承诺集合,直至框选的承诺集合的个数达到所述承诺集合数。

可选地,构造所述若干承诺集合中各承诺集合的承诺默克树的步骤包括:

按照所述若干承诺集合中各承诺集合的框选顺序,依次获取所述各承诺集合中各承诺的哈希值;

根据所述各承诺集合中各承诺的哈希值,构造所述各承诺集合的承诺默克树。

可选地,所述转账者确定待证明承诺,并确定所述待证明承诺的所属承诺集合,且构造所述所属承诺集合的所属承诺默克树;读取所述待证明承诺到达所述所属承诺默克树的公开根节点的路径信息,并将所述路径信息转换为proof,其中,所述公开根节点为公开参数,所述路径信息为秘密参数;触发包含所述公开根节点和所述proof的私密转账请求,并将所述私密转账请求发送至各区块链节点。

可选地,所述由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性的步骤包括:

由各区块链节点从所述私密转账请求中获取所述待证明承诺所属承诺默克树的公开根节点和proof;

确定所述所属承诺默克树的公开根节点是否位于所述公开根池;

若所述所属承诺默克树的公开根节点位于所述公开根池,则结合所述公开根节点验证所述proof是否正确;

若所述proof正确,则证明所述待证明承诺存在。

可选地,所述基于区块链的承诺存在性证明方法还包括:

若所述所属承诺默克树的公开根节点未位于所述公开根池,或者若所述所属承诺默克树的公开根节点位于所述公开根池,而所述proof不正确,则确定各区块链节点无法相信所述待证明承诺存在。

可选地,所述由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性的步骤之后,还包括:

若所述待证明承诺存在,则花费所述待证明承诺,并生成花费序列号,且生成至少一个新承诺;

根据所述至少一个新承诺和所述承诺数组,构造至少一棵承诺默克树,并将所述至少一棵承诺默克树的公开根节点存储至所述公开根池,以更新所述公开根池。

可选地,所述构造一框选窗口的步骤包括:

根据预设安全概率范围,确定待构造框选窗口的承诺框选个数;

构造一大小与所述承诺框选个数相适应的框选窗口。

可选地,所述根据预设安全概率范围,确定待构造框选窗口的承诺框选个数的步骤包括:

根据预设安全概率范围,确定最小默克树高;

将以所述最小默克树高为指数,以2为底数进行乘方得到的数值,确定为待构造框选窗口的承诺框选个数。

此外,为实现上述目的,本发明还提供一种基于区块链的承诺存在性证明设备,所述承诺存在性证明设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的承诺存在性证明程序,所述基于区块链的承诺存在性证明程序被所述处理器执行时实现如上所述的基于区块链的承诺存在性证明方法的步骤。

本发明还提供一种可读存储介质,所述可读存储介质上存储有基于区块链的承诺存在性证明程序,所述基于区块链的承诺存在性证明程序被处理器执行时实现如上所述的基于区块链的承诺存在性证明方法的步骤。

本发明提供一种基于区块链的承诺存在性证明方法、设备及可读存储介质,通过构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合,然后构造若干承诺集合中各承诺集合的承诺默克树,并将各承诺集合的承诺默克树的公开根节点均存储至各区块链节点,以形成公开根池,最后接收转账者发送的私密转账请求,并由各区块链节点根据私密转账请求中的公开根节点、proof和该公开根池,证明私密转账请求中待证明承诺的存在性,由于使用多课承诺默克树为区块链中的各承诺提供存在性证明,有效的减少电路的庞大程度,从而减少空间占用和运算时间,提高私密资金的存在性证明效率。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;

图2为本发明基于区块链的承诺存在性证明方法第一实施例的流程示意图;

图3为本发明第一实施例中步骤s102的细化流程示意图;

图4为本发明第一实施例中承诺默克树的构造示意图

图5为本发明第一实施例中步骤s103的细化流程示意图;

图6为本发明第二实施例中步骤s101的细化流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。

本发明实施例设备可以是pc固定终端设备,也可以是智能手机、平板电脑、电子书阅读器、便携计算机等可移动式终端设备。

如图1所示,该设备可以包括:处理器1001,例如cpu,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选的用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于区块链的承诺存在性证明程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于区块链的承诺存在性证明程序,并执行以下步骤:

构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;

构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;

接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

根据构造的框选窗口的承诺框选个数和所述区块链的承诺数组包含的承诺个数,计算承诺集合数;

按照所述承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的承诺集合,直至框选的承诺集合的个数达到所述承诺集合数。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

按照所述若干承诺集合中各承诺集合的框选顺序,依次获取所述各承诺集合中各承诺的哈希值;

根据所述各承诺集合中各承诺的哈希值,构造所述各承诺集合的承诺默克树。

进一步地,所述转账者确定待证明承诺,并确定所述待证明承诺的所属承诺集合,且构造所述所属承诺集合的所属承诺默克树;读取所述待证明承诺到达所述所属承诺默克树的公开根节点的路径信息,并将所述路径信息转换为proof,其中,所述公开根节点为公开参数,所述路径信息为秘密参数;触发包含所述公开根节点和所述proof的私密转账请求,并将所述私密转账请求发送至各区块链节点。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

由各区块链节点从所述私密转账请求中获取所述待证明承诺所属承诺默克树的公开根节点和proof;

确定所述所属承诺默克树的公开根节点是否位于所述公开根池;

若所述所属承诺默克树的公开根节点位于所述公开根池,则结合所述公开根节点验证所述proof是否正确;

若所述proof正确,则证明所述待证明承诺存在。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

若所述所属承诺默克树的公开根节点未位于所述公开根池,或者若所述所属承诺默克树的公开根节点位于所述公开根池,而所述proof不正确,则确定各区块链节点无法相信所述待证明承诺存在。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

若所述待证明承诺存在,则花费所述待证明承诺,并生成花费序列号,且生成至少一个新承诺;

根据所述至少一个新承诺和所述承诺数组,构造至少一棵承诺默克树,并将所述至少一棵承诺默克树的公开根节点存储至所述公开根池,以更新所述公开根池。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

根据预设安全概率范围,确定待构造框选窗口的承诺框选个数;

构造一大小与所述承诺框选个数相适应的框选窗口。

进一步地,处理器1001可以调用存储器1005中存储的基于区块链的承诺存在性证明程序,还执行以下步骤:

根据预设安全概率范围,确定最小默克树高;

将以所述最小默克树高为指数,以2为底数进行乘方得到的数值,确定为待构造框选窗口的承诺框选个数。

本发明基于区块链的承诺存在性证明设备的具体实施例与下述基于区块链的承诺存在性证明方法的各实施例基本相同,在此不作赘述。

参照图2,图2为本发明基于区块链的承诺存在性证明方法第一实施例的流程示意图。

本实施例中,该基于区块链的承诺存在性证明方法由基于区块链的承诺存在性证明设备实现,该基于区块链的承诺存在性证明设备可以是pc、掌上电脑和平板电脑等终端设备,可选为图1所示的设备,所述数据抽取任务执行方法包括以下步骤:

步骤s101,构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;

步骤s102,构造若干承诺集合中各承诺集合的承诺默克树,并将各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;

步骤s103,接收转账者发送的私密转账请求,并由各区块链节点根据公开根池、私密转账请求中的公开根节点和proof,证明私密转账请求中待证明承诺的存在性。

通过一棵记录区块链上所有承诺(表示一笔私密资金的密文)的默克树,结合零知识证明,实现私密资金的存在性证明,然而,零知识证明主要采用零知识电路实现,而零知识电路非常庞大,同时,为给全部承诺提供存在性证明,需要一棵树高较高的默克树,树高越高,哈希运算次数也越多,则重复的哈希电路也较多,进一步地增加了电路的庞大程度,空间占用较多,运算时间较长,私密资金的存在性证明效率较低。考虑到上述问题,本实施例中提出一种基于区块链的承诺存在性证明方法,以下详细介绍基于区块链的承诺存在性证明方法的具体步骤:

步骤s101,构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;

为了降低电路的复杂程度,需要降低为区块链上全部承诺提供存在性证明的默克树的树高,即用多棵较矮的默克树替换一棵较高的默克树,为区块链上全部承诺提供存在性证明,本实施例中,构造一框选窗口,即构造一个大小为2的整数次方的框选窗口,并根据构造的框选窗口的承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合,即从区块链的承诺数组的首端开始,向承诺数组的尾端滑动构造的框选窗口,框选出包含承诺框选个数的承诺,且各承诺的序号连续的承诺集合,直到该框选窗口的尾端到达该承诺数组的尾端时停止滑动该框选窗口,从而得到若干承诺集合;或者,从区块链的承诺数组的尾端开始,向承诺数组的首端滑动构造的框选窗口,框选出包含承诺框选个数的承诺,且各承诺的序号连续的承诺集合,直到该框选窗口的首端到达该承诺数组的首端时停止滑动该框选窗口,从而得到若干承诺集合。其中,该承诺框选个数为2的整数次方,该承诺数组包含区块链上的全部承诺。

具体地,本实施例中,步骤s101包括:

步骤a1,根据构造的框选窗口的承诺框选个数和区块链的承诺数组包含的承诺个数,计算承诺集合数;

步骤a2,按照承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的承诺集合,直至框选的承诺集合的个数达到承诺集合数。

本实施例中,根据构造的框选窗口的承诺框选个数和区块链的承诺数组包含的承诺个数,计算承诺集合数,即用承诺数组包含的承诺个数减去该承诺框选个数,然后加1,得到承诺集合数,然后按照该承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的承诺集合,直至框选的承诺集合的个数达到该承诺集合数,即按照该承诺框选个数,从区块链的承诺数组的首端开始,向承诺数组的尾端滑动构造的框选窗口,框选出包含承诺框选个数的承诺,且各承诺的序号连续的承诺集合,直到框选的承诺集合的个数达到该承诺集合数时停止滑动该框选窗口,或者按照该承诺框选个数,从区块链的承诺数组的尾端开始,向承诺数组的首端滑动构造的框选窗口,框选出包含承诺框选个数的承诺,且各承诺的序号连续的承诺集合,直到框选的承诺集合的个数达到该承诺集合数时停止滑动该框选窗口。

步骤s102,构造若干承诺集合中各承诺集合的承诺默克树,并将各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;

本实施例中,设备在框选出包含对应个数承诺的若干承诺集合之后,构造若干承诺集合中各承诺集合的承诺默克树,并将各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池,通过多棵承诺默克树和公开根池为承诺提供存在性证明。

具体地,参照图3,步骤s102包括:

步骤s1021,按照若干承诺集合中各承诺集合的框选顺序,依次获取各承诺集合中各承诺的哈希值;

步骤s1022,根据各承诺集合中各承诺的哈希值,构造各承诺集合的承诺默克树。

本实施例中,在框选出包含对应个数承诺的承诺集合时,给对应的承诺集合分配框选顺序码,框选顺序码越大,则承诺集合的框选时间越晚,反之框选顺序码越小,则承诺集合的框选时间越早,然后在框选的承诺集合的个数达到该承诺集合数时,根据各承诺集合的框选顺序码,给各承诺集合进行排序,确定各承诺集合的框选顺序。在构造承诺默克树时,按照若干承诺集合中各承诺集合的框选顺序,依次获取各承诺集合中各承诺的哈希值,然后根据各承诺集合中各承诺的哈希值,构造各承诺集合的承诺默克树,以单棵承诺默克树的构造为例进行解释说明,即将承诺集合中的各承诺对应的哈希值作为叶子节点,并将相邻的两个承诺对应的哈希值进行哈希计算(每个哈希值只使用一次),得到中间节点的哈希值,然后将相邻的两个中间节点的哈希值进行哈希计算,确定最后得到的哈希值为一个时,将该哈希值作为根节点。在具体实施中,可同时计算各承诺集合的承诺默克树,也可按照框选顺序计算单个承诺集合的承诺默克树。

图4为本发明第一实施例中承诺默克树的构造示意图,如图4所示,承诺数组为[cm0,cm1,cm2,cm3,cm4,cm5],框选出来的承诺集合分别为[cm0,cm1,cm2,cm3]、[cm1,cm2,cm3,cm4]和[cm2,cm3,cm4,cm5],对应构造3个承诺默克树,分别为承诺默克树sub_root0、承诺默克树sub_root01和承诺默克树sub_root2,且承诺默克树sub_root0由承诺cm0、承诺cm1、承诺cm2和承诺cm3的哈希值,即由hash0、hash1、hash2和hash3构造而成;承诺默克树sub_root1由承诺cm1、承诺cm2、承诺cm3和承诺cm4的哈希值,即由hash1、hash2、hash3和hash4构造而成;承诺默克树sub_root2由承诺cm2、承诺cm3、承诺cm4和承诺cm5的哈希值,即由hash2、hash3、hash4和hash5构造而成。

步骤s103,接收转账者发送的私密转账请求,并由各区块链节点根据公开根池、私密转账请求中的公开根节点和proof,证明私密转账请求中待证明承诺的存在性。

本实施例中,转账者,即用户终端与各区块链节点连接,该用户需要进行私密转账时,使用用户终端确定待证明承诺,该用户终端确定待证明承诺的所属承诺集合,且构造该所属承诺集合的所属承诺默克树;然后读取该待证明承诺到达该所属承诺默克树的公开根节点的路径信息,并将该路径信息转换为proof,其中,该公开根节点为公开参数,该路径信息为秘密参数;再然后触发包含该公开根节点和该proof的私密转账请求,并将该私密转账请求发送至各区块链节点。各区块链节点接收转账者发送的私密转账请求,并由各区块链节点根据公开根池、私密转账请求中的公开根节点和proof,证明私密转账请求中待证明承诺的存在性。其中,包含待证明承诺的承诺集合均为该待证明承诺的所属承诺集合,本实施例中,在所属承诺集合为多个的情况下,可选择任一包含待证明承诺的承诺集合作为该待证明承诺的所属承诺集合。

具体地,参照图5,步骤s103包括:

步骤s1031,由各区块链节点从私密转账请求中获取待证明承诺所属承诺默克树的公开根节点和proof;

步骤s1032,确定所属承诺默克树的公开根节点是否位于公开根池;

步骤s1033,若所属承诺默克树的公开根节点位于公开根池,则结合公开根节点验证proof是否正确;

步骤s1034,若proof正确,则证明待证明承诺存在。

本实施例中,各区块链节点从私密转账请求中获取该待证明承诺所属承诺默克树的公开根节点和proof,并该确定所属承诺默克树的公开根节点是否位于公开根池,如果该所属承诺默克树的公开根节点位于公开根池,则进一步地结合公开根节点验证proof是否正确,如果proof正确,则证明待证明承诺存在,即各区块链节点相信该待证明承诺存在。

进一步地,本实施例中,该方法还包括:

步骤b,若所属承诺默克树的公开根节点未位于公开根池,或者若所属承诺默克树的公开根节点位于公开根池,而proof不正确,则确定各区块链节点无法相信待证明承诺存在。

本实施例中,确定所属承诺默克树的公开根节点未位于公开根池时,或者所属承诺默克树的公开根节点位于所述公开根池,而proof不正确时,确定各区块链节点无法相信待证明承诺存在,在具体实施中,如果所属承诺默克树的公开根节点未位于公开根池,则确定该待证明承诺是否存在其它所属承诺集合,如果该待证明承诺存在其它所属承诺集合,则重新选择一所属承诺集合,并构造重新选择的所属承诺集合的所属承诺默克树,然后读取待证明承诺到达该所属承诺默克树的公开根节点的路径信息,并将路径信息转换为proof,再然后由各区块链节点确定所属承诺默克树的公开根节点是否位于公开根池,如果该所属承诺默克树的公开根节点位于公开根池,则进一步地结合公开根节点验证proof是否正确,如果proof正确,则证明待证明承诺存在,如果proof不正确,则各区块链节点无法相信待证明承诺存在。能够防止由于生成的承诺默克树出现错误,导致存在性证明错误。

进一步地,本实施例中,步骤s103之后,还包括:

步骤c,若待证明承诺存在,则花费待证明承诺,并生成花费序列号,且生成至少一个新承诺;

步骤d,根据至少一个新承诺和所述承诺数组,构造至少一棵承诺默克树,并将至少一棵承诺默克树的公开根节点存储至公开根池,以更新公开根池。

本实施例中,确定待证明承诺存在之后,花费该待证明承诺,并生成花费序列号,且生成至少一个新承诺,然后根据至少一个新承诺和所述承诺数组,构造至少一棵承诺默克树,并将至少一棵承诺默克树的公开根节点存储至公开根池,以更新公开根池,其中,该花费序列号用于唯一表示承诺已被花费,防止承诺的双花,也能够在生成新承诺时,快速的更新公开根池。

本实施例中,通过构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合,然后构造若干承诺集合中各承诺集合的承诺默克树,并将各承诺集合的承诺默克树的公开根节点均存储至各区块链节点,以形成公开根池,最后接收转账者发送的私密转账请求,并由各区块链节点根据私密转账请求中的公开根节点、proof和该公开根池,证明私密转账请求中待证明承诺的存在性,由于使用多课承诺默克树为区块链中的各承诺提供存在性证明,有效的减少电路的庞大程度,从而减少空间占用和运算时间,提高私密资金的存在性证明效率。

进一步地,参照图6,基于上述第一实施例,提出了本发明基于区块链的承诺存在性证明方的第二实施例,与前述实施例的区别在于,步骤s101包括:

步骤s1011,根据预设安全概率范围,确定待构造框选窗口的承诺框选个数;

步骤s1012,构造一大小与承诺框选个数相适应的框选窗口。

需要说明的是,本发明基于前述实施例,提出了一种框选窗口的具体构造方式,以下仅对此进行说明,其它可参照前述实施例

本实施例中,根据预设安全概率范围,确定待构造框选窗口的承诺框选个数,然后构造一大小与承诺框选个数相适应的框选窗口。其中,安全概率越高,所需要的电路就越复杂,空间占用和运算时间也相应的增大,为了在减少电路的复杂程度的同时,兼顾安全性,需要保证安全性处于可接受范围,而安全性的可接受范围,由安全概率范围决定。

具体地,本实施例中,步骤s1011包括:

步骤e1,根据预设安全概率范围,确定最小默克树高;

步骤e2,将以最小默克树高为指数,以2为底数进行乘方得到的数值,确定为待构造框选窗口的承诺框选个数。

本实施例中,根据预设安全概率范围,确定最小默克树高,并将以最小默克树高为指数,以2为底数进行乘方得到的数值,确定为待构造框选窗口的承诺框选个数。例如,预设安全概率范围为[a,b],则默克树高的取值区间为[1/2b,1/2a],然后从取值区间[1/2b,1/2a]中选择最小整数值c作为最小默克树高,则承诺框选个数为2^c。

本实施例中,通过设置安全概率范围,基于安全概率范围确定承诺框选个数,能够在减少电路的复杂程度的同时,兼顾安全性,进而减少空间占用和运算时间,提高私密资金的存在性证明效率。

此外,本发明实施例还提出一种可读存储介质,所述可读存储介质上存储有基于区块链的承诺存在性证明程序,所述基于区块链的承诺存在性证明程序被处理器执行时实现以下步骤:

构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;

构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;

接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性。

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

根据构造的框选窗口的承诺框选个数和所述区块链的承诺数组包含的承诺个数,计算承诺集合数;

按照所述承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的承诺集合,直至框选的承诺集合的个数达到所述承诺集合数。

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

按照所述若干承诺集合中各承诺集合的框选顺序,依次获取所述各承诺集合中各承诺的哈希值;

根据所述各承诺集合中各承诺的哈希值,构造所述各承诺集合的承诺默克树。

进一步地,所述转账者确定待证明承诺,并确定所述待证明承诺的所属承诺集合,且构造所述所属承诺集合的所属承诺默克树;读取所述待证明承诺到达所述所属承诺默克树的公开根节点的路径信息,并将所述路径信息转换为proof,其中,所述公开根节点为公开参数,所述路径信息为秘密参数;触发包含所述公开根节点和所述proof的私密转账请求,并将所述私密转账请求发送至各区块链节点。

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

由各区块链节点从所述私密转账请求中获取所述待证明承诺所属承诺默克树的公开根节点和proof;

确定所述所属承诺默克树的公开根节点是否位于所述公开根池;

若所述所属承诺默克树的公开根节点位于所述公开根池,则结合所述公开根节点验证所述proof是否正确;

若所述proof正确,则证明所述待证明承诺存在。

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

若所述所属承诺默克树的公开根节点未位于所述公开根池,或者若所述所属承诺默克树的公开根节点位于所述公开根池,而所述proof不正确,则确定各区块链节点无法相信所述待证明承诺存在。

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

若所述待证明承诺存在,则花费所述待证明承诺,并生成花费序列号,且生成至少一个新承诺;

根据所述至少一个新承诺和所述承诺数组,构造至少一棵承诺默克树,并将所述至少一棵承诺默克树的公开根节点存储至所述公开根池,以更新所述公开根池。

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

根据预设安全概率范围,确定待构造框选窗口的承诺框选个数;

构造一大小与所述承诺框选个数相适应的框选窗口

进一步地,所述基于区块链的承诺存在性证明程序被处理器执行时,还实现以下步骤:

根据预设安全概率范围,确定最小默克树高;

将以所述最小默克树高为指数,以2为底数进行乘方得到的数值,确定为待构造框选窗口的承诺框选个数。

本发明可读存储介质的具体实施例与上述基于区块链的承诺存在性证明方法的各具体实施例基本相同,在此不作赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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