CN114239025A - 基于区块链的数据处理方法及设备 - Google Patents
基于区块链的数据处理方法及设备 Download PDFInfo
- Publication number
- CN114239025A CN114239025A CN202111559912.9A CN202111559912A CN114239025A CN 114239025 A CN114239025 A CN 114239025A CN 202111559912 A CN202111559912 A CN 202111559912A CN 114239025 A CN114239025 A CN 114239025A
- Authority
- CN
- China
- Prior art keywords
- data
- information
- knowledge proof
- zero knowledge
- zero
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种基于区块链的数据处理方法及设备,包括:接收客户端发送的数据修改请求,其中,数据修改请求包括第一输入数据标识和操作信息,对第一输入数据标识和操作信息进行处理,获得日志域数据块和日志域数据块的成员证明,对日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数,根据成员证明的零知识证明信息和第一公共参数生成第一交易请求,并向客户端发送第一交易请求,第一交易请求用于使客户端根据第一公共参数对成员证明的零知识证明信息进行验证,上述方案在对复制加密数据进行修改时,无需重新执行复制加密过程,仅需将操作信息打包成日志域数据块存储在日志域中,减少数据处理时间。
Description
技术领域
本申请涉及金融科技(Fintech)技术领域,尤其涉及一种基于区块链的数据处理方法及设备。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变。
区块链***中每个共识节点除了通过共识算法对区块链上数据进行管理,每个共识节点还用于提供区块链下的数据复制存储。通常用户需要修改存储于共识节点内的复制数据时,需要重新发起复制加密请求,把修改后的数据重新进行复制加密,所需时间长,且占用大量算力资源。
发明内容
本申请一实施例提供一种基于区块链的数据处理方法,方法应用于区块链内共识节点,方法包括:
接收客户端发送的数据修改请求,其中,数据修改请求包括第一输入数据标识和操作信息;
对第一输入数据标识和操作信息进行处理,获得日志域数据块和日志域数据块的成员证明;
对日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数;
根据成员证明的零知识证明信息和第一公共参数生成第一交易请求,并向客户端发送第一交易请求,第一交易请求用于使客户端根据第一公共参数对成员证明的零知识证明信息进行验证。
本申请另一实施例提供一种基于区块链的数据处理方法,方法用于客户端,方法包括:
获取第一输入数据标识和操作信息,并根据第一输入数据标识和操作信息生成数据修改请求;
向区块链***中的共识节点发送数据修改请求,其中,数据修改请求用于使共识节点对第一输入数据标识和操作信息进行处理,获得日志域数据块和日志域数据块的成员证明,对日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数;以及根据成员证明的零知识证明信息和第一公共参数生成第一交易请求;
接收共识节点发送的第一交易请求,并根据第一公共参数对成员证明的零知识证明信息进行验证。
本申请一实施例提供一种基于区块链的数据处理方法,方法应用于证明节点,方法包括:
接收区块链***中各个共识节点发送的零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息;
对各个零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息进行递归聚合处理,获得根零知识证明信息和根状态信息;
根据根零知识证明信息和根状态信息生成第四交易请求;
向区块链***中共识节点发送第四交易请求,第四交易请求用于使区块链***根据根状态信息存储根零知识证明;
其中,零知识证明信息包括成员证明的零知识证明信息、非成员证明的零知识证明信息以及备份加密数据的零知识证明信息中任意一种或多种组合。
本申请一实施例提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现上述实施例描述的基于区块链的数据处理方法。
本申请一实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现上述实施例描述的基于区块链的数据处理方法。
本申请实施例提供基于区块链的数据处理方法及设备,在共识节点内设置数据域和日志域两个存储区域,数据域用于存储备份加密数据,日志域存储对备份加密数据的操作信息,在用户需要修改备份复制数据时,通过将操作信息存储在日志域中,无需再执行复制加密算法,可提高数据处理效率,减少资源使用率。再使用零知识证明算法对日志域数据块的成员证明进行验证生成零知识证明信息,客户端仅需验证零知识证明信息,简化验证过程。使用累加器为日志域内的日志域数据块生成成员证明或者在删除日志域数据块时生成非成员证明,并对成员证明或者非成员证明进行零知识证明处理,获得相应的零知识证明信息,可以进一步简化验证过程。累加器还支持用户随时修改数据,即使用户频繁更新数据也能高效地短时间内做出成员证明或非成员证明,而且实现了数据版本控制的功能。
此外,在客户端向共识节点存储数据时,对原始输入数据进行倍长分割处理,能够支持用户任意长度数据的存储,对备份加密数据进行零知识证明处理,获得备份加密数据的零知识证明信息,客户端无需再验证默克尔证明信息,仅需需验证零知识证明信息,简化验证过程。使用递归零知识证明算法对生成的零知识证明进行递归聚合,能够极大地减少证明的数量,减少区块链的带宽压力,减少验证计算压力,增加***的扩展性同时又不降低安全性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请一实施例提供的***结构图;
图2为本申请一实施例提供曲折反向二分深度鲁棒图算法的示意图;
图3为本申请一实施例提供的数据处理方法的流程示意图;
图4为本申请一实施例提供的存储区域的结构示意图;
图5为本申请另一实施例提供的数据处理方法的流程示意图;
图6为本申请一实施例提供多层二分深度鲁棒图算法的示意图;
图7为本申请另一实施例提供的数据处理方法的流程示意图;
图8为本申请又一实施例提供的数据处理方法的流程示意图;
图9为本申请再一实施例提供的数据处理方法的流程示意图;
图10为本申请又一实施例提供的递归聚合算法的示意图;
图11为本申请一实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
先介绍本申请实施例中使用到的参数。
λ:安全参数
t:离散计时器的每个计时时刻
St:累加器在t时刻的元素集合
At:累加器在t时刻的值,即集合中所有元素的乘积
pp:公共参数
upmsg:用来更新证明的信息
Setup(λ)→pp,A0:初始化产生公共参数
Add(At,x)→{At+1,upmsg}:添加一个元素,更新累加器
Del(At,x)→{At+1,upmsg}:删除一个元素,更新累加器
pp:公共参数
d:深度鲁棒图的节点的入度
D,Di:分别表示原始数据和原始数据的第i个数据块
R,Ri:经过复制加密后的数据及其第i个数据块
T:挑战响应延迟时间上限
G,g:分别表示一个未知阶的群和该群的生成元
H,Ht:分别表示所有的日志数据和用户在t时刻产生的数据更新日志
FID,CID,BID,τD:分别表示数据D的身份标识、共识节点的身份标识、加密备份数据R的身份标识和数据块的原始标签
l:挑战序号集合的长度
ld:多层二分深度鲁棒图的层数
lm:默克尔树的深度
N:数据块的个数
aux:证明辅助数据,包含数据R的默克尔哈希树
[l]:表示一个长度为l的整数集合{0,1,...,l-1}
a||b:表示对a,b两个字符串的拼接
Primes(λ):表示一个小于2λ的素数集合
Hped(y)→x:Pederson哈希函数,结果为32字节
Hprimes(y)→x∈Primes(λ):将输入y映射到素数集合中的一个素数x
DSetup(λ,T)→pp,A0:动态复制证明机制初始化
DReplicate(BIDτD,D)→R,aux:对原始定长数据D做复制加密
DExtract(BID,τD,R,aux)→D:将复制加密后的数据R解密还原原始数据D
DPoll(N)→r:从长度为N的整数集中随机挑选l个挑战序号,r=(r1,...,rl)
DVerify(pp,π,BID,r,At)→{0,1}:验证零知识证明
零知识证明算法:零知识证明算法可以被用来证明和验证如下声明:给定一个结果验证函数F和公共输入x,对秘密输入w进行验证,能够满足F(x,w)=1。零知识证明算法的基础架构包含三个子算法:
初始化子算法,其公式为ZK.Setup,其用于将函数F和安全参数λ作为输入,输出一个不变参数集crs和后门td。不变参数集crs包含两部分。其中,用来证明的部分称为证明密钥crsp,用来验证的部分称为验证密钥crsv。
证明子算法,其公式为ZK.Prover,其运行于证明节点,用于将证明密钥crsp、函数F的公共输入x和秘密输入w作为输入,输出零知识证明信息π。
验证子算法,其公式为ZK.Verifier,其运行于验证节点,用于将验证密钥crsv、函数F的公共输入x和零知识证明信息π作为输入,输出0表示拒绝或输出1表示接受。任何设备都可以作为证明节点,并运行该验证算法。
如图1所示,本申请一实施例提供的区块链存储***100包括多个共识节点10和多个客户端20,多个共识节点10除了通过共识算法对区块链上数据进行管理,每个共识节点10还用于提供区块链下的数据复制存储。
其中,数据复制存储是指客户端20请求在共识节点上将一个N比特大小的输入数据存储d个备份。此时,共识节点需要提供与数据大小对应倍数的空间,也就是即d*N个比特(Bytes)的空间。而不能仅用N个比特的存储空间来欺骗客户端。复制证明(Proof ofReplication,简称:PoRep)机制属于数据存储证明的一种,主要应用于上述数据复制存储的场景。PoRep机制结合了可恢复性证明和空间机制,也就是PoRep机制同时具备可恢复性和空间保证性。
针对于数据复制存储,通常的数据处理过程为:当客户端和共识节点达成存储交易后,客户端把输入数据在链下传输给共识节点,共识节点根据客户端发送的备份要求,使用曲折反向二分深度鲁棒图(ZigZag Depth-Robust-Graph,简称:ZigZag DRGs)算法对输入数据执行复制加密得到加密数据块以及做出复制证明。
二分图是顶点集可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。曲折反向二分深度鲁棒图(ZigZag DRGs)是基于深度鲁棒图(Depth-Robust-Graph,简称:DRG)和二分图的原理扩展而成,其运算过程如图2所示。
曲折反向二分深度鲁棒图是一个多层图结构,每一层都是独立的深度鲁棒图DRG。共识节点将用户的输入数据经过ZigZag DRGs算法加密后得到加密数据,如果需要存储d个备份,则对输入数据执行d次ZigZag DRGs算法得到多份不同的加密数据,并用默克尔树将加密数据块组织管理,即每个加密数据块作为默克尔树的叶子,将默克尔树根提交到区块链作为存储证明。随机生成每次需要检验的加密数据块的序号列,共识节点根据序号列逐个做出对应序号的加密数据块的默克尔证明。此外,为了保证共识节点会一直存储着用户的数据,每个共识节点都需要每隔一段时间就要对已经存储的所有数据做出时空证明。时空证明与复制证明类似,由于时空证明仅需保证对加密数据块的持续存储,故时空证明仅包括用于检验加密数据块的默克尔证明。然而,上述数据处理过程存在如下问题:
第一,上述数据处理过程不能高效地更新数据,即使数据发生一个比特的变化,共识节点需要重新执行复制加密过程,需要消耗大量时间算力和频繁擦除存储硬盘。
第二,验证节点需要直接验证这些默克尔证明,如果参与的共识节点增多以及存储数据的增多,验证过程验证效率低,而且验证节点还需要验证输入数据与备份加密数据的关系即加密计算的正确性。验证节点还需要验证数据量庞大的时空证明。也就是上述数据处理过程还存在可扩展性差的问题。
第三,上述数据处理过程要求用户进行存储交易的数据长度固定,也就是用户的数据只有达到一定长度,例如存满一个容量为32G的扇区,才能开始执行复制加密。因为复制加密算法对输入数据分割成定量且定长的数据块。如果用户新增小部分数据(远小于32G),则无法对该小部分数据另外执行复制加密,则无法保证这部分数据的正确存储。
为了解决上述问题,首先,本申请对数据存储结构进行改进,在共识节点内设有两个存储区域:数据域和日志域。其中,将数据域标记为R域,将日志域标记为H域。R域用于存储备份加密数据,也就是对输入数据复制加密后的数据。H域用于存储对备份加密数据进行修改的日志域数据块,并在H域内所存储的新增数据达到加密界限长度后与输入数据合并,再重新进行复制加密处理获得新的备份加密数据。通过上述设置,在对输入数据进行修改时,无需重新执行复制加密算法,提高数据处理效率,减少资源使用率。此外,采用密码学累加器(以下简称累加器)为日志域里面的每个日志域数据块生成成员证明,由于累加器能够高效地对动态变化的日志数据做出成员证明,所以既能够适用于委托长期存储不变的数据的用户,又能够满足频繁更新数据的用户。
其次,本申请复制证明采用零知识证明信息,将默克尔证明的验证计算和加密正确性的验证计算统一构建电路,由共识节点生成零知识证明。验证者或用户仅需使用公共参数验证该零知识证明,即可实现验证输入数据加密正确性和检验加密数据块的默克尔证明,简化验证过程。零知识证明算法的公共输入仅包含公共参数和对应数据的标识,不会泄露数据本身,保证验证的可靠性。
相应地,时空证明只需要对检验加密数据块的默克尔证明和检验日志数据块的成员证明的验证计算也采用零知识证明算法,生成零知识证明信息。也就是共识节点内的每个备选数据对应一个零知识证明信息,并由共识节点内的多个备选数据的零知识证明信息组成时空证明。共识节点也可以对时空证明里的所有零知识证明递归聚合后获得一个根证明,并通过共识算法将根证明存储到区块链上,也就是最终的时空证明仅仅包含根证明,但效力上等同于验证每个备份加密数据的零知识证明,简化时空证明的验证过程。
相应地,在本申请中设有递归节点30,该递归节点30与区块链***中各个共识节点进行通信,递归节点30收集所有共识节点所做出的零知识证明信息,然后递归聚合获得一个根证明,并将根证明通过共识算法存储到区块链上,进一步简化验证过程。
最后,本申请在对输入数据进行复制加密时,对于任意长度的输入数据按照加密界限长度进行倍长补充后,再进行切割和复制加密处理获得备份加密数据。可以实现对任何长度的输入数据进行复制加密。
如图3所示,本申请一实施例提供一种基于区块链的数据处理方法,该数据处理方法应用于区块链***,数据处理方法具体包括如下步骤:
S101、客户端获取第一输入数据标识和操作信息,并根据第一输入数据标识和操作信息生成数据修改请求。
在该步骤中,先描述数据存储结构,共识节点设有数据域和日志域两个存储区域。如图4所示,将数据域标记为R域,将日志域标记为H域。如果客户要求把一份数据备份d份,由于每一次加密复制的结果都不一样,那么共识节点就会在R域存储d个相同大小内容不同备份加密数据,但是这些备份加密数据共享同一个H域内日志数据。也就是H域只与输入数据的身份标识(File Identity,简称:FID)有关,而R域与输入数据的每个备份加密数据的身份标识(BID)有关。
在R域中,存储有输入数据D进行复制加密后的备份加密数据,是一个个数据块,由于所使用的Perderson哈希算法,所以每个数据块的长度也为32字节。这些数据块通过构建默克尔(Merkle)哈希树来管理,并生成默克尔证明信息。为了方便后面快速证明数据的可恢复性,R域还应该存储整棵默克尔树的所有节点数据。或者,仅存储部分节点数据,在需要生成默克尔证明信息的时候再计算。由于默克尔树是完全树,所以默克尔树的节点数据的个数应该满足
在H域中,存储有客户端对备份加密数据进行操作的日志域数据块,同样以数据块的形式存储,但是其长度不做限定。一个数据块是客户端每次提交的操作集合,包括操作涉及的输入数据的数据块序号及对应的操作内容,比如:修改了序号为k的数据块的内容、删除序号为k的数据块和添加新的数据块。同一次更新的日志域数据块还包含操作提交时间。
客户端获取待修改的输入数据标识FID,标记为第一输入数据标识,并获取对输入数据D的操作信息。操作信息包括修改了序号为k的数据块的内容、删除序号为k的数据块、在最后添加新的数据块和在序号为k与序号为k+1之间添加了数据块。再根据第一输入数据标识和操作信息生成数据修改请求。
S102、共识节点接收客户端发送的数据修改请求。
在该步骤中,该共识节点可以是区块链中任意一个共识节点。
S103、共识节点对数据修改请求中的第一输入数据标识和操作信息进行处理,获得日志域数据块和日志域数据块的成员证明。
在该步骤中,共识节点从数据修改请求中解析出第一输入数据标识和操作信息,通过对第一输入数据标识和操作信息进行打包处理获得日志域数据块,并为该日志域数据块生成其在日志域(H域)的成员证明。该成员证明用于证明共识节点根据操作信息对输入数据进行修改。
累加器和向量证明相似,可以做出成员证明,即一个元素属于一个集合,无需绑定元素和位置顺序,而且可以同时证明多个元素属于一个集合。常用Dan Boneh等人设计的累加器,修改了原始累加器的构造条件,采用简短的非交互式证明,使验证效率得到很大的提高。还可以做非成员证明,即一个元素不属于一个集合,更加灵活简便。通用累加器都是动态累加器,当有元素加入或移出时,可以动态更新证明。因此,采用累加器为日志域里面的每个日志域数据块生成成员证明。
在一实施例中,H域还保存了累加器在t时刻的素数向量St,是通过对t时刻的所有的日志域数据块分别使用素数映射函数映射为一个素数而形成的,素数映射函数标记为Hprimes。本方案使用Fouque和Tibouchi设计的素数映射函数,能够高效地在O(λ)时间内完成映射,其中,O(λ)表示λ的线性时间。
累加器的值At是对t时刻的素数向量St内的元素进行处理后获得的,累加器的值At和素数向量St用于生成日志域内各个日志域数据块的成员证明。
获得日志域数据块的成员证明具体包括:根据日志域数据执行累加器的添加元素方法获得累加器在第一更新时刻的元素,并根据累加器的生成成员证明方法对累加器在第一更新时刻的元素进行处理获得日志域数据块的成员证明。
例如:共识节点将第一输入数据标识和操作信息打包成一个或多个日志域数据块,然后将日志域数据块添加到H域,并更新累加器的素数向量,也就是累加器更新累加器在t-1时刻的元素集合,以获得第一更新时刻t的素数向量St,并基于第一更新时刻t的素数向量St获得累加器在第一更新时刻的值At,再执行对添加时刻t所添加的日志域数据块生成成员证明的方法对新添加的日志数据块在累加器素数向量中对应的素数做出成员证明
S104、共识节点对日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数。
在该步骤中,首先构建基于Plonk的用于对日志域数据块的成员证明进行验证的零知识证明算法:
初始化子算法,其表达式为DSetup(λ,T)→pp,A0:主要用于对零知识证明算法进行初始化和累加器的初始化。以安全参数λ和响应延迟参数T为输入,输出全局公共参数pp,累加器的初始元素集合A0。其中,pp=(crs,G,g,l)。G表示一个任意阶的群,g表示任意阶的群的生成元,crs表示不变参数集。
安全参数λ和响应延迟参数T是根据需求设置的,并存储在区块链上,所有共识节点和递归节点都可以用这两个参数执行初始化子算法,得到相同的全局公共参数pp和累加器的初始值。
证明子算法,其表达式为,或者πu:用于生成日志域数据块的成员证明的零知识证明信息πw或者非成员证明的零知识证明信息πu。验证节点需要证明日志域数据块的成员证明或者非成员证明的正确性,而验证成员证明或者非成员证明的正确性也是一个计算过程,可以用零知识证明算法中的证明子算法来进行计算。当需要验证H域内日志域数据块的成员证明或者非成员证明时,则需要以日志域数据块的成员证明或者非成员证明作为秘密输入,生成成员证明或者非成员证明的零知识证明信息。
对累加器的成员证明的正确性验证过程如公式(1)和公式(2)所示,累加器的非成员证明的正确性验证过程如公式(3)和公式(24)所示:
其中,“:”表示解释说明的意思,表示对素数向量St中除了需要明的成员x之外所有的成员累乘,公式(1)中等式右边是对群G的生成元g求幂,公式(1)表示累乘的结果对应于在G群中的元素,也就是对应于成员证明,公式(2)表示对成员证明进行幂运算结果是否为累加器的元素向量,公式(3)表示非成员证明由a和gb组成,Bezout函数为贝祖定理,通过贝祖公式求出a和b两个值,公式(4)表示判断At agbx的计算结果是否为群G的生成元g。
验证子算法,其表达式为DVerify(pp,πw,At),用于验证成员证明的零知识证明信息的正确性,若验证子算法输出0,表示拒绝该零知识证明信息,若验证子算法输出1,表示接收该零知识证明信息。
使用上面描述的零知识证明算法中的证明子算法对日志域数据块的成员证明进行证明,以获得成员证明的零知识证明信息和第一公共参数。第一公共参数用于验证者对成员证明的零知识证明信息进行验证,证明者用于执行零知识证明算法中的证明子算法,以输出成员证明的零知识证明信息和第一公共参数。
在一实施例中,当日志域数据块的成员证明是通过执行累加器中成员证明算法获得的时,根据全局公共参数和证明算法对日志域数据块的成员证明、累加器在第一更新时刻的元素集合以及累加器在第一更新时刻的数值进行处理,获得成员证明的零知识证明信息和第一公共参数。
例如:在共识节点对新添加的日志数据块在累加器素数向量中对应的素数做出成员证明后,执行算法对成员证明的正确性做出零知识证明πw。其中,pp表示全局公共参数,St表示第一更新时刻t的素数向量,At表示累加器在第一更新时刻的值,πw表示日志域数据块的成员证明。
S105、共识节点根据成员证明的零知识证明信息和第一公共参数生成第一交易请求。
在该步骤中,第一公共参数为累加器在第一更新时刻的值At,共识节点将成员证明的零知识证明信息πw和第一公共参数At封装成交易内容发送给客户端。
S106、共识节点并向客户端发送第一交易请求。
S107、客户端根据第一公共参数对成员证明的零知识证明信息进行验证。
在该步骤中,客户端从第一交易请求中提取出成员证明的零知识证明信息πw和第一公共参数At,然后执行验证子算法DVerify(ppπw,At),并根据验证子算法的输出结果确定验证结果。
在上述技术方案中,在共识节点内设置数据域和日志域,日志域用于存储对备份加密数据进行修改的日志域数据块,通过上述设置,在对输入数据进行修改时,无需重新执行复制加密算法,提高数据处理效率,减少资源使用率。此外,采用累加器为日志域里面的每个日志域数据块生成成员证明,由于累加器能够高效地对动态变化的日志数据做出成员证明,所以既能够适用于委托长期存储不变的数据的用户,又能够满足频繁更新数据的用户,适应范围广,并对累加器中各个元素的成员证明进行零知识证明处理,以获得成员证明的零知识证明信息,客户端仅需验证成员证明的零知识证明信息,既可以实现对日志域数据块的加密存储的验证,简化验证过程。
如图5所示,本申请一实施例提供一种基于区块链的数据处理方法,该数据处理方法应用于区块链***,数据处理方法具体包括如下步骤:
S201、客户端获取输入数据,并根据输入数据生成数据存储请求。
在该步骤中,作为其中一种实现方式,用户与某个共识节点达成数据存储交易后,客户端获取输入数据,并根据输入数据生成数据存储请求。作为另一种实现方式,当日志域中日志域数据块中新增数据达到复制加密界限长度,将新增数据和日志域数据块对应的输入数据进行合并后,生成更新后的输入数据。通过如此设置,将用户对输入数据的修改操作转化为日志域数据块存储在日志域后,通过更新输入数据的机制对更新后的输入数据重新执行复制加密算法。
S202、共识节点接收客户端发送的数据存储请求。
S203、共识节点根据预设复制加密界限长度对输入数据进行倍长补充处理获得处理后的输入数据,并对处理后的输入数据进行分割处理,以获得多个数据块。
在该步骤中,共识节点在接收到数据存储请求后,从数据存储请求中解析出输入数据,生成输入数据的标识FID,并将输入数据的标识FID上传到区块链。共识节点还用于根据预设复制加密界限长度对输入数据进行倍长补充处理获得处理后的输入数据。其中,倍长补充处理用于使处理后的输入数据的长度为复制加密界限长度的倍数,补充的数据块为无效数据。
在对输入数据进行倍长补充处理后,对处理后的输入数据进行分割处理以获得多个数据块。
假设输入数据D长度为31G,复制加密界限长度为32G,则添加0bit使得整体长度达到复制加密界限长度的整数倍,也就是输入数据D的长度达到32G。再将输入数据分割成210个长度为32字节的数据块。
S204、共识节点对多个数据块进行复制加密处理,以获得备份加密数据和备份加密数据对应的证明辅助数据。
在该步骤中,共识节点使用复制加密算法对多个数据块进行复制加密处理,获得备份加密数据和备份加密数据对应的证明辅助数据。其中,证明辅助数据用于生成加密过程的正确性和加密数据块的默克尔证明的正确性的零知识证明信息。
多层二分深度鲁棒图(Stacked Depth-Robust-Graph,简称:Stacked DRGs)也是以深度鲁棒图和二分图为基础扩展而成的,如图4所示。多层二分深度鲁棒图的每一层都是深度鲁棒图,每一层的节点之间的关系除了深度鲁棒图自身的依赖,还有层与层之间二分扩展依赖。多层二分深度鲁棒图中只有最后一层是对原数据执行加密,前面几层的计算过程是为了获得最后一层各个节点加密所需的标签数据,这些标签数据的计算同样遵循节点之间的依赖关系。最后分别用每个节点对应依赖的标签数据与节点原数据一起加密。
在一实施例中,在对多个数据块进行复制加密处理时,使用多层二分深度鲁棒图算法对每个数据块的初始标签数据τD进行处理,获得每个数据块在ld-1层的标签数据,根据每个数据块在ld-1层的标签数据对每个数据块进行加密处理获得备份加密数据,并将备份加密数据的默克尔证明作为证明辅助数据。其中,ld表示多层二分深度鲁棒图的总层数。
例如:将S203中分割得到的210个长度为32字节的数据块作为多层二分深度鲁棒图的最后一层的节点,第一层节点为每个数据块的初始标签τD,前面ld-1层依次根据节点的依赖关系计算出每层的节点的值作为标签数据,每个节点的标签数据的长度也为32字节,因此可以保持每层的节点个数不变,并在最后一层对分割处理后的输入数据D加密。
在上述技术方案中,对任意长度数据D进行倍长补充,以及按照复制加密界限长度切割后分别执行复制加密算法,由于非曲折反向二分深度鲁棒图,每层都需要对数据加密,加密过程复杂,而且还使用了可验证延迟函数作为数据加密函数,使得整体复制加密时间非常长。如果恶意者能找到快速的复制加密方法,整个机制的安全性将降低。因此,本方案采用多层二分深度鲁棒图,无需在每一层都对数据进行加密,可以缩短加密时间。并且,需要先逐层计算出所有的标签数据,再对最后一层的数据加密或解密,无法并行计算,只能从上到下,从左到右逐个节点计算,数据加密过程的可靠性高。
S205、共识节点根据证明辅助数据对备份加密数据进行零知识证明处理,以获得备份加密数据的零知识证明信息和第二公共参数。
在该步骤中,构建基于Plonk的用于对备份加密数据进行验证的零知识证明算法:
初始化子算法,其表达式为DSetup(λ,T)→ppA0:主要用于对零知识证明算法进行初始化,以及对复制加密算法的初始化和累加器的初始化。以安全参数λ和响应延迟参数T为输入,输出全局公共参数pp以及累加器的初始元素集合A0。其中,pp=(crs,G,g,l)。G表示一个未知阶的群,g表示未知阶的群的生成元,crs表示不变参数集。响应延迟参数T用于设置多层二分深度鲁棒图的层数ld和每层深度鲁棒图的各个参数,多层二分深度鲁棒图的层数和每层深度鲁棒图的各个参数影像复制加密计算的时间,以实现对复制加密计算时间的设置。
复制加密子算法,其表达式为DReplicate(BID,τD,D)→R,aux,基于多层二分深度鲁棒图构建,用于对输入数据D进行复制加密,以输入数据D、每个备份加密数据的身份标识BID和分割后的数据块的初始标签τD为输入,每执行一次生成一个备份加密数据R和对应的证明辅助数据aux,如果需要备份多次,则以不同的备份加密数据的身份标识BID重复执行复制加密算法。
如图6所示,下面具体描述复制加密算法。先根据公式(5)计算备份加密数据的身份标识:
BID=Hped(FID||CID||n) (5)
其中,BID表示备份加密数据的身份标识,n表示第几个备份加密数据,n为整数,FID表示输入数据的身份标识,CID表示共识节点的身份表示,a||b表示对a和b两个字符串进行拼接,Hped(y)表示对y进行Pederson哈希函数,输出结果为32字节。
从第二层开始逐层计算出每个节点的标签数据,针对任意一层中某一个节点i,根据深度鲁棒图找出第i个结点的父节点,具体计算过程用公式(6)表示:
Parent(N,i,d)→(v1,v2,...,vd) (6)
Parent(N,i,d)用于根据深度鲁棒图找出第i个结点的依赖节点,即父节点,包括同层的父节点和上层的父节点,v1,v2,...,vd表示节点i的父节点的标签数据。
再对节点i的父节点与备份加密数据的身份标识进行拼接处理后进行哈希计算,得到该节点的标签数据。具体计算过程用公式(7)表示:
Hped(v1||...||vd||BID)→vi (7)
其中,vi表示节点i的标签数据。
从第二层开始,根据公式(5)、(6)以及(7)递归计算,可以计算出第ld-1层中各个节点的标签数据,根据依赖关系分割后的各个数据块与ld-1层中各个节点的标签数据的关系做大数加法计算获得加密数据块Ri。更具体地,根据公式(6)计算各个数据块的父节点,父节点包括ld-1层中各个节点的标签数据和同一层的数据块,再使用公式(8)计算获得加密数据块。
Bigadd(v1,v2,...,vd,Di)→Ri (8)
备份加密数据R为(R1,R2,...,RN),并构建备份加密数据R的默克尔树。
DExtract(BID,τD,R,aux)→D:数据解密子算法,用于将备份加密数据R解密还原为输入数据D。解密算法也需要先计算出ld-1层中各个节点的标签数据,然后再用
DPoll(N)→r:随机挑战算法,用于针对任意一个备份加密数据R,从备份加密数据R的多个加密数据块Ri中选择进行验证的加密数据块。作为其中一种实现方式,该算法本质是从长度为N的整数集中随机挑选l个挑战序号生成挑战向量r=(r1,...,rl)。作为另一种实现方式,可以由一个公共的伪随机函数或者哈希函数生成挑战序号,比如,共识节点以当前区块的哈希值为种子,通过哈希算法散列出l个数值小于N的整数。在获得挑战向量后,根据挑战向量中元素r1,...,rl从多个加密数据块Ri中选择进行验证的加密数据块。这样可以实现非交互式动态复制证明,客户端无需与共识节点同步执行,也能保证共识节点无法伪造挑战向量r。
证明子算法,其表达式为,DProve(pp,R,aux,BID,St,r)→πR:用于生成备份加密数据的零知识证明信息。需要证明复制加密过程的计算正确性、基于挑战向量选择的数据块的默克尔证明的正确性,这些证明的正确性验证也是一个计算过程,可以用证明子算法来进行计算。以挑战向量、备份加密数据和分割后的数据块为输入生成备份加密数据的零知识证明信息。
在一实施例中,在对备份加密数据进行零知识证明处理时,随机生成目标序列号,根据目标序列号从备份加密数据中选择验证数据块,并获取验证数据块的默克尔证明。使用零知识证明算法中证明子算法对累加器在当前时刻的元素以及验证数据块的默克尔证明进行处理,获得备份加密数据的零知识证明信息和第二公共参数。
例如:执行随机挑战生成算法DPoll(N)获得l个挑战序号,l个挑战序号构成挑战向量r,然后执行证明子算法DProve(pp,R,aux,BID,St,r),输出备份加密数据的零知识证明信息πR。该证明子算法用于证明复制加密过程的计算正确性以及基于挑战向量而被选中的加密数据块Rj的默尔克证明的正确性,其中,j∈r。
其中,pp表示全局公共参数,R表示一个备份加密数据,aux表示辅助数据,具体为备份加密数据中加密数据块的默克尔证明,BID表示赋值加密数据的身份标识,St表示在执行证明子算法时累加器中素数向量。
S206、共识节点根据备份加密数据的零知识证明信息和第二公共参数生成第二交易请求。
在该步骤中,第二公共参数包括备份加密数据的身份标识BID以及挑战向量r,共识节点备份加密数据的零知识证明信息πR、备份加密数据的身份标识BID以及挑战向量r封装成交易内容发送给客户端。
S207、共识节点并向客户端发送第二交易请求。
S208、客户端根据第二公共参数对备份加密数据的零知识证明信息进行验证。
在该步骤中,用户从第二交易请求中提取出备份加密数据的零知识证明信息πR、备份加密数据的身份标识BID以及挑战向量r,然后执行验证子算法DVerify(pp,πR,BID,r),并根据验证子算法的输出结果确定验证结果。
在上述技术方案中,在对输入数据进行复制加密前,先对输入数据进行倍长处理,以便按照复制加密界限长度对处理后的输入数据进行分割处理,从而可以使用非曲折反向二分深度鲁棒图算法对各个数据大小相同的数据块进行加密获得备份加密数据,可以实现对任意长度的输入数据进行加密。在对加密过程的正确性验证和加密数据块的默克尔证明进行验证时,使用构建零知识证明算法,并生成备份数据的零知识证明信息,通过验证零知识证明信息即可实现对加密过程的正确性验证和加密数据块的默克尔证明进行验证,无需验证默克尔证明,验证过程简化,可适用于共识节点的数量扩展以及存储数据量的扩展。
如图7所示,本申请一实施例提供一种基于区块链的数据处理方法,该数据处理方法应用于区块链***,数据处理方法具体包括如下步骤:
S301、客户端获取退回时刻和第一输入数据标识,并根据退回时刻和第一输入数据标识生成版本退回请求。
在该步骤中,用户在对输入数据进行修改时,可以选择退回到哪个修改版本。客户端接收用户输入的待退回数据的第一输入数据标识,并通过对待退回数据的第一输入数据标识和退回时刻进行分装生成版本退回请求。
S302、共识节点接收客户端发送的版本退回请求。
S303、共识节点删除与第一输入数据标识关联的且在退回时刻之后的日志域数据块,并生成被删除的日志域数据块的非成员证明。
在该步骤中,共识节点从版本退回请求中提取退回时刻和第一输入数据标识。根据第一输入数据标识确定日志域内相关的日志域数据块,并根据日志域数据块的添加时刻确定待删除的日志域数据块,也就是将添加时刻在退回时刻之后的日志域数据块作为待删除的日志域数据块,在日志域中删除待删除的日志域数据块,并生成被删除的日志域数据块的非成员证明。
其中,在生成被删除的日志域数据块的非成员证明时,根据被删除的日志域数据执行累加器的删除元素方法获得累加器在第二更新时刻的元素,以实现对累加器的素数向量St的更新。根据累加器的生成非成员证明方法对累加器在第二更新时刻的元素以及被删除的日志域数据块对应的元素进行处理获得被删除的日志域数据块的非成员证明。也就是对待删除的日志域数据块在累加器的素数向量中对应的素数做出非成员证明并将该素数的非成员证明作为被删除的日志域数据块的非成员证明
S304、共识节点对非成员证明进行零知识证明处理,获得非成员证明的零知识证明信息和第三公共参数。
S305、共识节点根据非成员证明的零知识证明信息和第三公共参数生成第三交易请求。
在该步骤中,第三公共参数为累加器在第二更新时刻的值At,共识节点将非成员证明的零知识证明信息πu和第三公共参数At封装成交易内容发送给客户端。
S306、共识节点并向客户端发送第三交易请求。
S307、客户端根据第三公共参数对非成员证明的零知识证明信息进行验证。
在该步骤中,客户端从第三交易请求中提取出非成员证明的零知识证明信息πu和第三公共参数At,然后执行验证子算法DVerify(pp,πu,At),并根据验证子算法的输出结果确定验证结果。
在上述技术方案中,用户在需要退回到之前的数据修改版本时,发起版本退回请求,以使共识节点删除日志域中对应日志域数据块,并更新累加器的素数向量,并根据更新后的素数向量和被删除的日志域数据块对应的素数生成非成员证明,并生成非成员证明的零知识证明信息,用于仅需验证零知识证明信息即可实现非成员证明的正确性验证,简化验证过程,并且由于将对输入数据的修改操作存储在日志域中,无需重新对输入数据进行复制加密即可实现数据版本退回,简化数据处理过程。
如图8所示,本申请一实施例提供一种基于区块链的数据处理方法,该数据处理方法应用于区块链***,数据处理方法具体包括如下步骤:
S401、客户端获取第二输入数据标识,并根据第二输入数据标识生成数据读取请求。
在该步骤中,在用户需要从共识节点中读取或者下载数据时,获取需要读取数据的第二输入数据标识FID,并将第二输入数据标识进行封装生成数据读取请求。
S402、共识节点接收客户端发送的数据读取请求。
S403、共识节点获取第二输入数据标识对应的任意备份加密数据的初始标签数据,根据解密算法和备份加密数据的初始标签数据对备份加密数据进行解密处理获得输入数据。
在该步骤中,共识节点在接收到数据读取请求后,从数据读取请求中解析获得第二输入数据标识,并查找第二输入数据标识对应的备份加密数据,选择任意备份加密数据,并获取该备份加密数据对应的初始标签数据,采用公式(5)至公式(7)所涉及的计算ld-1层的标签数据,再根据ld-1层的标签数据和备份加密数据中各个加密数据块之间关系,确定各个加密数据块的父节点,对各个加密数据块的父节点和各个加密数据块获得输入数据。具体采用公式(9)计算。
Bigmin(v1,v2,...,vd,Ri)→Di (9)
v1,v2,...,vd表示加密数据块Ri的父节点,Di表示加密数据块Ri对应的解密后的数据块,输入数据D为(D1,D2,...,Di,...,DN)。Bigmin(·)表示大数减法。
S404a、共识节点在操作域中存在第二输入数据标识关联的日志域数据块时,对关联的日志域数据块进行解析获得操作信息和操作时间。
在该步骤中,使用第二输入数据标识查找日志域,若操作域中存在第二输入数据标识关联的日志域数据块时,并对所获的所有日志域数据块进行解析获得输入数据的操作信息和操作时间。
S405a、共识节点根据操作信息和操作时间对第三输入数据进行更新获得更新后的输入数据,并将更新后的输入数据发送至客户端。
在该步骤中,将操作信息按照操作时间的先后顺序排序,并按照排序后的操作信息依次对输入数据进行更新,将更新后的输入数据作为更新后的输入数据,并将更新后的输入数据发送至客户端。
S404b、共识节点若操作域中没有第二输入数据标识关联的日志域数据块时,则直接将输入数据发送到客户端。
在上述技术方案中,在读取存储在共识节点中的输入数据时,需要从数据域读取备份加密数据以及初始标签数据,使用初始标签数据对备份加密数据进行解密处理输出输入数据。还需要从日志域中读取与第二输入数据标识关联的日志域数据块,并基于日志域数据块中的操作信息对输入数据进行更新,以向用户提供经过修改后的输入数据,从而实现对数据的读取的操作。
如图9所示,本申请一实施例提供一种基于区块链的数据处理方法,该数据处理方法应用于区块链***,数据处理方法具体包括如下步骤:
S501、递归节点接收区块链***中各个共识节点发送的零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息。
在该步骤中,零知识证明信息包括成员证明的零知识证明信息、非成员证明的零知识证明信息以及备份加密数据的零知识证明信息中任意一种或多种组合。
针对每个共识节点,在提供数据复制存储服务时,需要生成累加器中各个元素的成员证明的零知识证明信息、累加器中各个元素的非成员证明的零知识证明信息以及备份加密数据的零知识证明信息等零知识证明信息。共识节点将所生成的零知识证明信息发送至递归节点,并将在生成该零知识证明信息时共识节点的状态信息发送至递归节点,以使递归节点可以生成根证明和根状态信息。
S502、递归节点对各个零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息进行递归聚合处理,获得根零知识证明信息和根状态信息。
在该步骤中,由于所有的共识节点都是使用相同的零知识证明电路,它们产生的零知识证明信息可以由一个递归节点收集并递归聚合处理。如图10所示,递归聚合具体包括如下步骤:
S5021、对各个零知识证明信息进行两两组合获得多个子组合,针对每个子组合对子组合中两个零知识证明信息对应的共识节点状态进行处理以获得各个子组合的组合状态。
节点状态包括共识节点的存储消耗量和区块高度等状态信息,状态转换子算法的作用在于将整个递归过程链接一起。具体采用状态转换子算法对每个子组合对子组合中两个零知识证明信息对应的共识节点状态进行处理获得各个子组合的组合状态。并将该子组合的组合状态作为第一层的各个组合。
以第一层的第一个组合的为例,使用公式获得第一层的第一个组合的组合状态。st1表示第一个组合中其中一个零知识证明信息所对应的节点状态,st2表示第一个组合中另一个零知识证明信息所对应的节点,表示第一个组合的组合状态。
S5022、针对每个子组合,对子组合中两个零知识证明信息、子组合两个零知识证明信息对应的共识节点状态以及子组合的组合状态进行零知识证明,以获得每个子组合的零知识证明信息。
具体采用递归证明算法获得每个子组合的零知识证明信息。该递归证明算法用于验证子组合中其中一个零知识证明和另一个零知识证明的正确性,以及将节点状态转换为组合状态的正确性。
递归证明算法是将上述实施例中描述的用于备份加密数据的零知识证明信息的验证子算法DVerify(pp,π,BID,r,At)转化成算术电路,以任意两个零知识证明信息(π1,π2)、验证这两个零知识证明信息所需的公共输入(x1,x2)和生成这两个零知识证明信息时的节点状态(st1,st2)为秘密输入w,通过递归状态转换后的组合状态为公共输入x,最后输出子组合的零知识证明信息递归证明算法的表达式为:
S5023、对每个子组合的零知识证明信息进行两两分组获得多个父组合,针对每个父组合对父组合中两个零知识证明信息对应的组合状态进行处理,以获得各个父组合的组合状态。
在对每个子组合的零知识证明信息进行两两分组获得多个父组合后,具体采用状态转换子算法对父组合中两个子组合的共识节点状态进行处理以获得各个父组合的组合状态。
例如:将第一层中的第一个组合的零知识证明信息和第二个组合的零知识证明信息进行组合,以获得位于第二层的第一个组合的组合状态,具体根据如下公式计算:
第二层的其他组合的组合状态也可以参考公式(10)计算,此处不再赘述。
S5024、针对每个父组合对父组合中两个零知识证明信息、父组合中子组合的组合状态以及父组合的组合状态时进行零知识证明,以获得每个父组合的零知识证明信息。
使用递归证明算法对对父组合中两个零知识证明信息、父组合中子组合的组合状态以及父组合的组合状态时进行零知识证明,以获得每个父组合的零知识证明信息。
继续以S5023中例子说明计算位于第二层的第一个组合的零知识证明信息的公式(10):
第二层的其他组合的零知识证明信息也可以参考公式(11)计算,此处不再赘述。
S5025、父组合的数量是否为1,若是,进入S5026,否则转入S5021。
在该步骤中,当父组合的数量为1时,则表示递归完成,父组合的数量大于1时,则需要继续分组并计算分组后的组合状态和零知识证明信息,也就是继续进行递归聚合直到父组合的数量为1。
S5026、将最后一次循环获得的父组合的零知识证明信息作为根零知识证明,并将最后一次循环获得的父组合的组合状态作为根状态信息。
在该步骤中,在通过递归聚合后,将最后一次循环获得的父组合的零知识证明信息作为根零知识证明πroot,并将最后一次循环获得的父组合的组合状态作为根状态信息stroot。
S503、递归节点根据根零知识证明信息和根状态信息生成第四交易请求。
在该步骤中,递归节点将零知识证明信息和根状态信息进行分装后生成第四交易请求。
S504、递归节点向区块链***中共识节点发送第四交易请求。
其中,第四交易请求用于使区块链***根据根状态信息存储根零知识证明。在将根零知识证明时,通过执行验证算法RDVerify(πroot,stroot)根零知识证明,并根据验证结果确定是否上传区块链。
在上述技术方案中,递归零知识证明是对零知识证明本身的递归聚合,由于零知识证明的验证计算本身也是一个满足NP的程序,所以同样可以对该计算构建电路做出进一步的证明,将多个零知识证明作为公共输入得到一个递归的零知识证明,经过逐层递归后得到一个根零知识证明。
此外,递归节点对零知识证明信息进行递归聚类,由区块链***通过共识算法来维护所有共识节点构成的数据存储***的状态,并验证时空证明的根证明和动态复制证明的根证明,即可保证共识节点和递归节点无法作恶。
本申请一实施例提供一种基于区块链的数据处理方法,该数据处理方法应用于区块链***,数据处理方法具体包括如下步骤:
S601、共识节点获得所生成的零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息。
在该步骤中,每个共识节点获取对其自身生成的零知识证明信息以及在生成各个零知识证明信息时的共识节点的状态信息。
S602、共识节点对各个零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息进行递归聚合处理,获得根零知识证明信息和根状态信息。
其中,共识节点对其生成的零知识证明信息进行递归聚合处理,获得根零知识证明信息和根状态信息,根零知识证明信息用于作为时空证明的一部分,根状态信息用于校验根零知识证明信息的正确性。
递归聚合处理过程与S502中相同,此处不再赘述。
S603、共识节点根据根零知识证明信息和根状态信息生成第五交易请求。
在该步骤中,共识节点将零知识证明信息和根状态信息进行分装后生成第五交易请求。
S604、共识节点其他共识节点发送第五交易请求。
其中,第五交易请求用于将根零知识证明信息和根状态信息上传至区块链***。
在上述技术方案中,能够极大地减少证明的数量,从而减少区块链的带宽压力,还能使验证者的验证计算压力降低,增加***的扩展性同时又不降低安全性。
如图11所示,本申请一实施例提供一种电子设备700,电子设备700包括存储器701和处理器702。
其中,存储器701用于存储处理器可执行的计算机指令。
处理器702在执行计算机指令时实现上述实施例中方法中的各个步骤。具体可以参见前述方法实施例中的相关描述。
可选地,上述存储器701既可以是独立的,也可以跟处理器702集成在一起。当存储器701独立设置时,该电子设备还包括总线,用于连接存储器701和处理器702。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,当处理器执行计算机指令时,实现上述实施例中方法中的各个步骤。
本申请实施例还提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述实施例中方法中的各个步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (17)
1.一种基于区块链的数据处理方法,其特征在于,所述方法应用于区块链内共识节点,所述方法包括:
接收客户端发送的数据修改请求,其中,所述数据修改请求包括第一输入数据标识和操作信息;
对所述第一输入数据标识和所述操作信息进行处理,获得日志域数据块和所述日志域数据块的成员证明;
对所述日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数;
根据所述成员证明的零知识证明信息和所述第一公共参数生成第一交易请求,并向所述客户端发送所述第一交易请求,所述第一交易请求用于使所述客户端根据所述第一公共参数对所述成员证明的零知识证明信息进行验证。
2.根据权利要求1所述的数据处理方法,其特征在于,对所述第一输入数据标识和所述操作信息进行处理,获得日志域数据块的成员证明,具体包括:
根据所述日志域数据执行累加器的添加元素方法,获得所述累加器在第一更新时刻的元素;
根据所述累加器的生成成员证明方法对所述累加器在第一更新时刻的元素进行处理,以获得所述日志域数据块的成员证明。
3.根据权利要求2所述的数据处理方法,其特征在于,对所述日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数,具体包括:
使用零知识证明算法中的证明子算法对全局公共参数、所述日志域数据块的成员证明、所述累加器在所述第一更新时刻的元素以及所述累加器在所述第一更新时刻的数值进行处理,获得所述成员证明的零知识证明信息和所述第一公共参数。
4.根据权利要求1至3中任意一项所述的数据处理方法,其特征在于,所述方法还包括:
接收客户端发送的数据存储请求,其中,所述数据存储请求包括输入数据;
根据预设复制加密界限长度对所述输入数据进行倍长补充处理获得处理后的输入数据,并对所述处理后的输入数据进行分割处理获得多个数据块;
对所述多个数据块进行复制加密处理,以获得备份加密数据和备份加密数据对应的证明辅助数据;
根据所述证明辅助数据对所述备份加密数据进行零知识证明处理,以获得所述备份加密数据的零知识证明信息和第二公共参数;
根据所述备份加密数据的零知识证明信息和所述第二公共参数生成第二交易请求,并向所述客户端发送所述第二交易请求,所述第二交易请求用于使所述客户端根据所述第二公共参数对所述备份加密数据的零知识证明信息进行验证。
5.根据权利要求4所述的数据处理方法,其特征在于,根据所述证明辅助数据对所述备份加密数据进行零知识证明处理,以获得所述备份加密数据的零知识证明信息和第二公共参数,具体包括:
随机生成目标序列号,根据所述目标序列号从所述备份加密数据中选择验证数据块,并根据所述辅助证明数据获取所述验证数据块的默克尔证明;
使用零知识证明算法中的证明子算法对累加器在当前时刻的元素和所述验证数据块的默克尔证明进行处理,获得所述备份加密数据的零知识证明信息和第二公共参数;其中,所述第二公共参数包括所述目标序列号和所述备份加密数据的标识。
6.根据权利要求4所述的数据处理方法,其特征在于,对所述多个数据块进行复制加密处理,以获得备份加密数据和备份加密数据对应的证明辅助数据,具体包括:
使用多层二分深度鲁棒图算法对每个数据块的初始标签数据进行处理,获得每个数据块在ld-1层的标签数据;
根据所述每个数据块在ld-1层的标签数据对每个数据块进行加密处理,获得备份加密数据;并将所述备份加密数据的默克尔证明作为所述证明辅助数据;
其中,ld表示多层二分深度鲁棒图的总层数。
7.根据权利要求1至3中任意一项所述的数据处理方法,其特征在于,所述方法还包括:
接收客户端发送的版本退回请求,其中,所述版本退回请求包括退回时刻和第一输入数据标识;
删除与所述第一输入数据标识关联的在所述退回时刻之后的日志域数据块,并生成被删除的日志域数据块的非成员证明;
对所述非成员证明进行零知识证明处理,获得所述非成员证明的零知识证明信息和第三公共参数;
根据所述非成员证明的零知识证明信息和所述第三公共参数生成第三交易请求,并向所述客户端发送所述第三交易请求,所述第三交易请求用于使所述客户端根据所述第三公共参数对所述非成员证明的零知识证明信息进行验证。
8.根据权利要求7所述的数据处理方法,其特征在于,所述并生成被删除的日志域数据块的非成员证明,具体包括:
根据所述被删除的日志域数据执行累加器的删除元素方法,获得所述累加器在第二更新时刻的元素;
根据所述累加器的生成非成员证明方法对所述累加器在第二更新时刻的元素以及被删除的日志域数据块对应的元素进行处理,以获得所述被删除的日志域数据块的非成员证明。
9.根据权利要求1至3中任意一项所述的数据处理方法,其特征在于,所述方法还包括:
接收所述客户端发送的数据读取请求,其中,所述数据读取请求包括第二输入数据标识;
获取所述第二输入数据标识对应的任意备份加密数据的初始标签数据,根据解密算法和备份加密数据的初始标签数据对所述备份加密数据进行解密处理,获得输入数据;
在所述操作域中存在第二输入数据标识关联的日志域数据块时,对所述日志域数据块进行解析获得操作信息和操作时间;
根据所述操作信息和所述操作时间对所述输入数据进行更新获得更新后的输入数据,并将所述更新后的输入数据发送至所述客户端。
10.一种基于区块链的数据处理方法,其特征在于,所述方法用于客户端,所述方法包括:
获取第一输入数据标识和操作信息,并根据所述第一输入数据标识和所述操作信息生成数据修改请求
向区块链***中的共识节点发送所述数据修改请求,其中,所述数据修改请求用于使所述共识节点对所述第一输入数据标识和所述操作信息进行处理,获得日志域数据块和所述日志域数据块的成员证明,对所述日志域数据块的成员证明进行零知识证明处理,获得成员证明的零知识证明信息和第一公共参数;以及根据所述成员证明的零知识证明信息和所述第一公共参数生成第一交易请求;
接收所述共识节点发送的所述第一交易请求,并根据所述第一公共参数对所述成员证明的零知识证明信息进行验证。
11.根据权利要求10所述的数据处理方法,其特征在于,所述方法还包括:
获取输入数据,并根据所述输入数据生成数据存储请求;
向所述共识节点发送所述数据存储请求,其中,所述数据存储请求用于使所述共识节点根据预设复制加密界限长度对所述输入数据进行倍长补充处理获得处理后的输入数据,并对所述处理后的输入数据进行分割处理,以获得多个数据块;对所述多个数据块进行复制加密处理,以获得备份加密数据和备份加密数据对应的证明辅助数据;根据所述证明辅助数据对所述备份加密数据进行零知识证明处理,以获得所述备份加密数据的零知识证明信息和第二公共参数;以及根据所述备份加密数据的零知识证明信息和所述第二公共参数生成第二交易请求;
接收所述共识节点发送的所述第二交易请求,并根据所述第二公共参数对所述备份加密数据的零知识证明信息进行验证。
12.根据权利要求10或11所述的数据处理方法,其特征在于,所述方法还包括:
获取退回时刻和第一输入数据标识,并根据所述退回时刻和所述第一输入数据标识生成版本退回请求;
向所述共识节点发送版本退回请求,其中,所述版本退回请求用于使所述共识节点删除所述退回时刻之后的日志域数据块,并生成被删除的日志域数据块的非成员证明;对所述非成员证明进行零知识证明处理,获得所述非成员证明的零知识证明信息和第三公共参数;以及根据所述非成员证明的零知识证明信息和所述第三公共参数生成第三交易请求;
接收所述共识节点发送的所述第三交易请求,并根据所述第三公共参数对所述非成员证明的零知识证明信息进行验证。
13.根据权利要求10或11所述的数据处理方法,其特征在于,所述方法还包括:
获取第二输入数据标识,并根据所述第二输入数据标识生成数据读取请求;
向所述共识节点发送所述数据读取请求,其中,所述数据读取请求用于使所述共识节点获取所述第二输入数据标识对应的备份加密数据的初始标签数据,根据解密算法和备份加密数据的初始标签数据对所述备份加密数据进行解密处理,获得所述输入数据;并在所述操作域中存在第二输入数据标识关联的日志域数据块时,对所述关联的日志域数据块进行解析获得操作信息和操作时间;根据所述操作信息和所述时间对所述输入数据进行处理获得更新后的输入数据;
接收所述共识节点发送的所述更新后的输入数据。
14.一种基于区块链的数据处理方法,其特征在于,所述方法应用于证明节点,所述方法包括:
接收所述区块链***中各个共识节点发送的零知识证明信息以及生成各个零知识证明信息时的共识节点的状态信息;
对各个零知识证明信息以及所述生成各个零知识证明信息时的共识节点的状态信息进行递归聚合处理,获得根零知识证明信息和根状态信息;
根据所述根零知识证明信息和所述根状态信息生成第四交易请求;
向所述区块链***中共识节点发送所述第四交易请求,所述第四交易请求用于使所述区块链***根据所述根状态信息存储所述根零知识证明;
其中,零知识证明信息包括成员证明的零知识证明信息、非成员证明的零知识证明信息以及备份加密数据的零知识证明信息中任意一种或多种组合。
15.根据权利要求14所述的数据处理方法,其特征在于,所述对各个零知识证明信息以及所述生成各个零知识证明信息时的共识节点的状态信息进行递归聚合处理,获得根零知识证明信息和根状态信息,具体包括:
对所述各个零知识证明信息进行两两组合获得多个子组合;针对每个子组合,对所述子组合中两个零知识证明信息对应的共识节点状态进行处理,以获得各个子组合的组合状态;
针对每个子组合,对所述子组合中两个零知识证明信息、子组合两个零知识证明信息对应的共识节点状态以及所述子组合的组合状态进行零知识证明,以获得每个子组合的零知识证明信息;
重复执行对每个子组合的零知识证明信息进行两两分组获得多个父组合,针对每个父组合对所述父组合中两个零知识证明信息对应的共识节点状态进行处理,以获得各个父组合的组合状态;针对每个父组合对所述父组合中两个零知识证明信息、所述父组合中的子组合的组合状态以及所述父组合的组合状态进行零知识证明,以获得每个父组合的零知识证明信息;直到所述父组合的数量为1时将最后一次循环获得的父组合的零知识证明信息作为所述根零知识证明信息,并将最后一次循环获得的父组合的组合状态作为所述根状态信息。
16.一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至9中任意一项,10至13中任意一项,或者14或15所述的基于区块链的数据处理方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至9中任意一项,10至13中任意一项,或者14或15所述的基于区块链的数据处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111559912.9A CN114239025A (zh) | 2021-12-20 | 2021-12-20 | 基于区块链的数据处理方法及设备 |
PCT/CN2022/101733 WO2023115873A1 (zh) | 2021-12-20 | 2022-06-28 | 基于区块链的数据处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111559912.9A CN114239025A (zh) | 2021-12-20 | 2021-12-20 | 基于区块链的数据处理方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114239025A true CN114239025A (zh) | 2022-03-25 |
Family
ID=80758986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111559912.9A Pending CN114239025A (zh) | 2021-12-20 | 2021-12-20 | 基于区块链的数据处理方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114239025A (zh) |
WO (1) | WO2023115873A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116090016A (zh) * | 2023-04-10 | 2023-05-09 | 江苏省国信数字科技有限公司 | 区块链数据存储隐私保护方法、装置、设备及存储介质 |
WO2023115873A1 (zh) * | 2021-12-20 | 2023-06-29 | 深圳前海微众银行股份有限公司 | 基于区块链的数据处理方法及设备 |
CN117009358A (zh) * | 2023-10-07 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 索引数据的处理方法、装置、设备、存储介质及程序产品 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11323243B2 (en) * | 2019-04-05 | 2022-05-03 | International Business Machines Corporation | Zero-knowledge proof for blockchain endorsement |
SG11202012924WA (en) * | 2020-02-03 | 2021-01-28 | Alipay Hangzhou Inf Tech Co Ltd | Blockchain-based trustable guarantees |
CN112016923A (zh) * | 2020-08-28 | 2020-12-01 | 北京大学深圳研究生院 | 基于区块链的网内跨域身份管理方法、***以及算力网络 |
CN112035886B (zh) * | 2020-08-31 | 2023-01-10 | 深圳前海微众银行股份有限公司 | 区块链的共识方法、装置、共识节点、***以及存储介质 |
CN112132579B (zh) * | 2020-09-30 | 2022-08-12 | 深圳前海微众银行股份有限公司 | 一种区块链共识节点更新方法及装置 |
CN112508722B (zh) * | 2021-01-29 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 一种基于零知识证明的保单信息验证方法和装置 |
CN114239025A (zh) * | 2021-12-20 | 2022-03-25 | 深圳前海微众银行股份有限公司 | 基于区块链的数据处理方法及设备 |
-
2021
- 2021-12-20 CN CN202111559912.9A patent/CN114239025A/zh active Pending
-
2022
- 2022-06-28 WO PCT/CN2022/101733 patent/WO2023115873A1/zh unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023115873A1 (zh) * | 2021-12-20 | 2023-06-29 | 深圳前海微众银行股份有限公司 | 基于区块链的数据处理方法及设备 |
CN116090016A (zh) * | 2023-04-10 | 2023-05-09 | 江苏省国信数字科技有限公司 | 区块链数据存储隐私保护方法、装置、设备及存储介质 |
CN117009358A (zh) * | 2023-10-07 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 索引数据的处理方法、装置、设备、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2023115873A1 (zh) | 2023-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yan et al. | A novel efficient remote data possession checking protocol in cloud storage | |
CN114239025A (zh) | 基于区块链的数据处理方法及设备 | |
US8726034B2 (en) | Cryptographic accumulators for authenticated hash tables | |
US10958452B2 (en) | System and device including reconfigurable physical unclonable functions and threshold cryptography | |
Fu et al. | DIPOR: An IDA-based dynamic proof of retrievability scheme for cloud storage systems | |
Wang et al. | A key-sharing based secure deduplication scheme in cloud storage | |
Esiner et al. | Flexdpdp: Flexlist-based optimized dynamic provable data possession | |
Li et al. | Integrity-verifiable conjunctive keyword searchable encryption in cloud storage | |
Peng et al. | Efficient, dynamic and identity-based remote data integrity checking for multiple replicas | |
CN109525403B (zh) | 一种支持用户全动态并行操作的抗泄露公开云审计方法 | |
Thangavel et al. | Enabling ternary hash tree based integrity verification for secure cloud data storage | |
Sengupta et al. | Efficient proofs of retrievability with public verifiability for dynamic cloud storage | |
Gao et al. | Achieving low-entropy secure cloud data auditing with file and authenticator deduplication | |
Liu et al. | Secure similarity-based cloud data deduplication in Ubiquitous city | |
Najafi et al. | Efficient and dynamic verifiable multi-keyword searchable symmetric encryption with full security | |
Yu et al. | Efficient dynamic multi-replica auditing for the cloud with geographic location | |
Chen et al. | Dynamic data auditing scheme for big data storage | |
CN111859412A (zh) | 一种基于cpor模型的云数据位置公开验证方法及*** | |
Zhang et al. | Secdedup: Secure encrypted data deduplication with dynamic ownership updating | |
Zhou et al. | An efficient and secure data integrity auditing scheme with traceability for cloud-based EMR | |
Ando et al. | Hash-based TPM signatures for the quantum world | |
Abo-Alian et al. | Auditing-as-a-service for cloud storage | |
Yang et al. | TSAS: third-party storage auditing service | |
Balasubramanian et al. | Cloud data integrity checking using bilinear pairing and network coding | |
CN116192395A (zh) | 用于分散式数据存储的可信*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |