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

技术编号:19427391 阅读:33 留言:0更新日期:2018-11-14 10:59
本发明专利技术公开了一种基于区块链的承诺存在性证明方法,包括:构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性。本发明专利技术还公开了一种基于区块链的承诺存在性证明设备及可读存储介质。本发明专利技术能够减少空间占用和运算时间,提高私密资金的存在性证明效率。

【技术实现步骤摘要】
基于区块链的承诺存在性证明方法、设备及可读存储介质
本专利技术涉及区块链的
,尤其涉及一种基于区块链的承诺存在性证明方法、设备及可读存储介质。
技术介绍
区块链的核心理念包括密码学技术和去中心化思想,零知识证明是一种密码学证明思想,即示证者与验证者共同协商规则,在规则中,示证者在不暴露自身秘密参数的情况下,向验证者提供一串密文,验证者通过验证密文,能够相信示证者拥有相应的秘密参数,而验证者却无法知道秘密参数的内容。由于零知识证明具备正确性、完备性和零知识性等特点,将零知识证明应用于区块链,实现私密转账,而私密转账的关键点在于证明要转账的私密资金是否存在。目前,通过一棵记录区块链上所有承诺(表示一笔私密资金的密文)的默克树,结合零知识证明,实现私密资金的存在性证明,然而,零知识证明主要采用零知识电路实现,而零知识电路非常庞大,同时,为给全部承诺提供存在性证明,需要一棵树高较高的默克树,树高越高,哈希运算次数也越多,则重复的哈希电路也较多,进一步地增加了电路的庞大程度,空间占用较多,运算时间较长,私密资金的存在性证明效率较低。因此,如何减少空间占用和运算时间,提高私密资金的存在性证明效率是目前亟待解决的问题。
技术实现思路
本专利技术的主要目的在于提供一种基于区块链的承诺存在性证明方法、设备及可读存储介质,旨在如何减少空间占用和运算时间,提高私密资金的存在性证明效率。为实现上述目的,本专利技术提供一种基于区块链的承诺存在性证明方法,所述基于区块链的承诺存在性证明方法包括:构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和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还可以包括标准的有线本文档来自技高网...

【技术保护点】
1.一种基于区块链的承诺存在性证明方法,其特征在于,所述承诺存在性证明方法包括以下步骤:构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性。

【技术特征摘要】
1.一种基于区块链的承诺存在性证明方法,其特征在于,所述承诺存在性证明方法包括以下步骤:构造一框选窗口,并根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合;构造所述若干承诺集合中各承诺集合的承诺默克树,并将所述各承诺集合的承诺默克树的公开根节点存储至各区块链节点,以形成公开根池;接收转账者发送的私密转账请求,并由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性。2.如权利要求1所述的基于区块链的承诺存在性证明方法,其特征在于,所述根据构造的框选窗口的承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的若干承诺集合的步骤包括:根据构造的框选窗口的承诺框选个数和所述区块链的承诺数组包含的承诺个数,计算承诺集合数;按照所述承诺框选个数,从所述区块链的承诺数组中框选出包含对应个数承诺的承诺集合,直至框选的承诺集合的个数达到所述承诺集合数。3.如权利要求1所述的基于区块链的承诺存在性证明方法,其特征在于,构造所述若干承诺集合中各承诺集合的承诺默克树的步骤包括:按照所述若干承诺集合中各承诺集合的框选顺序,依次获取所述各承诺集合中各承诺的哈希值;根据所述各承诺集合中各承诺的哈希值,构造所述各承诺集合的承诺默克树。4.如权利要求1所述的基于区块链的承诺存在性证明方法,其特征在于,所述转账者确定待证明承诺,并确定所述待证明承诺的所属承诺集合,且构造所述所属承诺集合的所属承诺默克树;读取所述待证明承诺到达所述所属承诺默克树的公开根节点的路径信息,并将所述路径信息转换为proof,其中,所述公开根节点为公开参数,所述路径信息为秘密参数;触发包含所述公开根节点和所述proof的私密转账请求,并将所述私密转账请求发送至各区块链节点。5.如权利要求4所述的基于区块链的承诺存在性证明方法,其特征在于,所述由各区块链节点根据所述公开根池、所述私密转账请求中的公开根节点和proof,证明所述私密转账请求中待证明承诺的存在性的步骤包括:由各区块链节点从所述私密转账请求中获取所述待证明承诺所属承诺默克树的公开根节点和proof;确定所述所属承诺默克树的公开根节点是...

【专利技术属性】
技术研发人员:石翔李辉忠张开翔范瑞彬马国峻刘雪峰詹阳裴庆祺
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1