一种基于区块链的数据交易方法和系统转让专利

申请号 : CN202211129514.8

文献号 : CN115203749B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 左磊华松

申请人 : 天聚地合(苏州)科技股份有限公司

摘要 :

本发明公开了一种基于区块链的数据交易方法和系统,涉及区块链技术领域。该方法的一具体实施方式包括:数据购买端向数据交易装置发送购买交易;数据交易装置根据购买交易,调用区块链上的验证智能合约,以对零知识证明进行验证,如果验证通过,将交易加密信息上传至区块链;数据购买端向数据提供端发送交易明文信息;数据提供端根据交易加密信息,对交易明文信息进行验证,如果验证通过,向数据购买端发送目标数据;数据购买端接收目标数据,根据数据购买方的确认操作,向数据交易装置发送确认交易;数据交易装置根据确认交易,调用区块链上预先部署的转账智能合约,将数据购买方的资源转账至数据提供方。该实施方式能够保护交易各方的隐私。

权利要求 :

1.一种基于区块链的数据交易方法,其特征在于,包括:

数据购买端向数据交易装置发送购买交易;其中,所述数据交易装置应用于区块链的节点设备,所述购买交易中包括:零知识证明和交易加密信息;所述交易加密信息由交易明文信息经过加密得到;

所述数据交易装置根据所述购买交易,调用所述区块链上预先部署的验证智能合约,以对所述零知识证明进行验证,如果验证通过,则将所述交易加密信息上传至所述区块链中,标记所述交易加密信息的状态为待确认;

所述数据购买端向数据提供端发送所述交易明文信息;

所述数据提供端根据所述区块链中存储的状态为已确认的交易加密信息,对所述交易明文信息进行验证,如果验证通过,则向所述数据购买端发送所述交易明文信息对应的目标数据;

所述数据购买端接收所述目标数据,根据数据购买方的确认操作,向所述数据交易装置发送确认交易;

所述数据交易装置根据所述确认交易,调用所述区块链上预先部署的转账智能合约,将所述数据购买方的资源转账至数据提供方,将状态为待确认的交易加密信息标记为已确认。

2.如权利要求1所述的方法,其特征在于,进一步包括:

所述数据提供端确定所述目标数据的描述信息,向所述数据交易装置发送所述描述信息;

所述数据交易装置调用所述区块链上预先部署的管理智能合约,将所述描述信息上传至所述区块链中;

所述数据购买端根据所述数据购买方的查询操作,向所述数据交易装置发送查询请求;

所述数据交易装置根据查询请求调用所述管理智能合约查询满足条件的描述信息,将查询结果反馈给所述数据购买端。

3.如权利要求1所述的方法,其特征在于,

所述交易明文信息包括:所述目标数据的标识、输入UTXO列表、各个输入UTXO的签名和输出UTXO列表;

所述输入UTXO列表中包括若干所述输入UTXO;

所述输出UTXO列表中包括若干输出UTXO;

所述输入UTXO为包括数据购买方的公钥、输入UTXO的面值和第一随机数的三元组;

所述输出UTXO为包括数据购买方的公钥或数据提供方的公钥、输出UTXO的面值和第二随机数的三元组。

4.如权利要求3所述的方法,其特征在于,

所述交易加密信息包括:所述目标数据的标识的密码学承诺、各个所述输出UTXO的哈希和各个所述第一随机数的哈希;

该方法进一步包括:

所述数据购买端对所述目标数据的标识和第三随机数进行哈希操作,得到所述目标数据的标识的密码学承诺;对各个所述输出UTXO进行哈希操作,得到各个所述输出UTXO的哈希;对各个所述第一随机数进行哈希操作,得到各个所述第一随机数的哈希。

5.如权利要求4所述的方法,其特征在于,进一步包括:

所述数据购买端根据预设的约束条件,生成所述零知识证明;

所述约束条件包括:各个输入UTXO的哈希在所述区块链记录的输出UTXO的哈希中均可以查询到、各个所述输入UTXO的签名均通过对应的数据购买方的私钥生成、各个所述第一随机数的哈希均不属于所述区块链记录的第一随机数的哈希、所述输入UTXO列表的输入UTXO的面值之和等于所述输出UTXO列表的输出UTXO的面值之和、以及包含所述数据提供方的公钥的输出UTXO对应的输出UTXO的面值之和不低于预设的资源额度中任意一项或多项;

对所述零知识证明进行验证,包括:

基于所述约束条件对所述零知识证明进行验证。

6.如权利要求4或5所述的方法,其特征在于,

所述数据提供端根据所述区块链中存储的交易加密信息,对所述交易明文信息进行验证,包括:所述数据提供端验证所述区块链中存储的交易加密信息中各个输出UTXO的哈希,是否与所述交易明文信息中的各个输出UTXO的哈希一一对应,如果是,则验证通过,否则,验证不通过。

7.一种基于区块链的数据交易系统,其特征在于,包括:数据购买端、数据交易装置和数据提供端;所述数据交易装置应用于区块链的节点设备;

所述数据购买端,用于向所述数据交易装置发送购买交易;其中,所述购买交易中包括:零知识证明和交易加密信息;所述交易加密信息由交易明文信息经过加密得到;向数据提供端发送所述交易明文信息;接收所述数据提供端发送的所述交易明文信息对应的目标数据,根据数据购买方的确认操作,向所述数据交易装置发送确认交易;

所述数据交易装置,用于根据所述购买交易,调用所述区块链上预先部署的验证智能合约,以对所述零知识证明进行验证,如果验证通过,则将所述交易加密信息上传至所述区块链中,标记所述交易加密信息的状态为待确认;根据所述确认交易,调用所述区块链上预先部署的转账智能合约,将所述数据购买方的资源转账至数据提供方,将状态为待确认的交易加密信息标记为已确认;

所述数据提供端,用于根据所述区块链中存储的状态为已确认的交易加密信息,对所述交易明文信息进行验证,如果验证通过,则向所述数据购买端发送所述目标数据。

8.如权利要求7所述的系统,其特征在于,

所述交易明文信息包括:所述目标数据的标识、输入UTXO列表、各个输入UTXO的签名和输出UTXO列表;

所述输入UTXO列表中包括若干所述输入UTXO;

所述输出UTXO列表中包括若干输出UTXO;

所述输入UTXO为包括数据购买方的公钥、输入UTXO的面值和第一随机数的三元组;

所述输出UTXO为包括数据购买方的公钥或数据提供方的公钥、输出UTXO的面值和第二随机数的三元组。

9.如权利要求8所述的系统,其特征在于,

所述交易加密信息包括:所述目标数据的标识的密码学承诺、各个所述输出UTXO的哈希和各个所述第一随机数的哈希;

所述数据购买端,用于对所述目标数据的标识和第三随机数进行哈希操作,得到所述目标数据的标识的密码学承诺;对各个所述输出UTXO进行哈希操作,得到各个所述输出UTXO的哈希;对各个所述第一随机数进行哈希操作,得到各个所述第一随机数的哈希。

10.如权利要求9所述的系统,其特征在于,

所述数据购买端,用于根据预设的约束条件,生成所述零知识证明;

所述约束条件包括:各个输入UTXO的哈希在所述区块链记录的输出UTXO的哈希中均可以查询到、各个所述输入UTXO的签名均通过对应的数据购买方的私钥生成、各个所述第一随机数的哈希均不属于所述区块链记录的第一随机数的哈希、所述输入UTXO列表的输入UTXO的面值之和等于所述输出UTXO列表的输出UTXO的面值之和、以及包含所述数据提供方的公钥的输出UTXO对应的输出UTXO的面值之和不低于预设的资源额度中任意一项或多项;

所述数据交易装置,用于基于所述约束条件对所述零知识证明进行验证。

11.如权利要求9或10所述的系统,其特征在于,

所述数据提供端,用于验证所述区块链中存储的交易加密信息中各个输出UTXO的哈希,是否与所述交易明文信息中的各个输出UTXO的哈希一一对应,如果是,则验证通过,否则,验证不通过。

说明书 :

一种基于区块链的数据交易方法和系统

技术领域

[0001] 本发明涉及区块链技术领域,尤其涉及一种基于区块链的数据交易方法和系统。

背景技术

[0002] 区块链具有不可篡改等特点,将其应用于数据交易中,能够使交易过程公正公开地进行。但是,将交易数据存储在区块链中,存在隐私问题。区块链中的交易数据完全公开,并且链上交易所有节点都有冗余备份,购买记录作为交易内容,都被公开放在链上,任何区块链参与者都能在链上查询到数据交易的相关信息,包括交易双方、购买价格、数据内容、交易日期等。然而,如果将交易内容加密,那么区块链节点也无法验证交易的正确性。因此,现有的基于区块链的数据交易方法无法保护交易各方的隐私。

发明内容

[0003] 有鉴于此,本发明实施例提供一种基于区块链的数据交易方法和系统,能够保护交易各方的隐私。
[0004] 第一方面,本发明实施例提供了一种基于区块链的数据交易方法,包括:
[0005] 数据购买端向数据交易装置发送购买交易;其中,所述数据交易装置应用于区块链的节点设备,所述购买交易中包括:零知识证明和交易加密信息;所述交易加密信息由交易明文信息经过加密得到;
[0006] 所述数据交易装置根据所述购买交易,调用所述区块链上预先部署的验证智能合约,以对所述零知识证明进行验证,如果验证通过,则将所述交易加密信息上传至所述区块链中;
[0007] 所述数据购买端向数据提供端发送所述交易明文信息;
[0008] 所述数据提供端根据所述区块链中存储的交易加密信息,对所述交易明文信息进行验证,如果验证通过,则向所述数据购买端发送所述交易明文信息对应的目标数据;
[0009] 所述数据购买端接收所述目标数据,根据数据购买方的确认操作,向所述数据交易装置发送确认交易;
[0010] 所述数据交易装置根据所述确认交易,调用所述区块链上预先部署的转账智能合约,将所述数据购买方的资源转账至数据提供方。
[0011] 第二方面,本发明实施例提供了一种基于区块链的数据交易系统,包括:数据购买端、数据交易装置和数据提供端;所述数据交易装置应用于区块链的节点设备;
[0012] 所述数据购买端,用于向所述数据交易装置发送购买交易;其中,所述购买交易中包括:零知识证明和交易加密信息;所述交易加密信息由交易明文信息经过加密得到;向数据提供端发送所述交易明文信息;接收所述数据提供端发送的所述交易明文信息对应的目标数据,根据数据购买方的确认操作,向所述数据交易装置发送确认交易;
[0013] 所述数据交易装置,用于根据所述购买交易,调用所述区块链上预先部署的验证智能合约,以对所述零知识证明进行验证,如果验证通过,则将所述交易加密信息上传至所述区块链中;根据所述确认交易,调用所述区块链上预先部署的转账智能合约,将所述数据购买方的资源转账至数据提供方;
[0014] 所述数据提供端,用于根据所述区块链中存储的交易加密信息,对所述交易明文信息进行验证,如果验证通过,则向所述数据购买端发送所述目标数据。
[0015] 上述发明中的一个实施例具有如下优点或有益效果:在区块链中仅保存交易加密信息,而不保存交易明文信息,提高数据交易各方的隐私安全。数据交易装置可以通过数据购买端提交的零知识证明验证购买交易的真实性,确保区块链中存储的交易加密信息是由数据购买方提供的购买交易生成的。数据提供方可以基于区块链上存储的交易加密信息,验证数据购买端提供的交易明文信息的合法性,通过链上与链下相结合的方式,确保数据交易的安全。
[0016] 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

[0017] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0018] 图1是本发明的一个实施例提供的一种基于区块链的数据交易方法的流程图;
[0019] 图2是本发明的一个实施例提供的一种基于区块链的数据交易系统的示意图;
[0020] 图3是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

[0021] 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0022] 如图1所示,本发明实施例提供了一种基于区块链的数据交易方法,包括:
[0023] 步骤101:数据购买端向数据交易装置发送购买交易;其中,数据交易装置应用于区块链的节点设备,购买交易中包括:零知识证明和交易加密信息;交易加密信息由交易明文信息经过加密得到。
[0024] 为了避免在区块链中存储交易明文信息,本发明实施例通过密码学算法对交易明文信息进行加密,得到交易加密信息。
[0025] 步骤102:数据交易装置根据购买交易,调用区块链上预先部署的验证智能合约,以对零知识证明进行验证,如果验证通过,则将交易加密信息上传至区块链中。
[0026] 验证智能合约被调用时,执行如下验证方法:对零知识证明进行验证,如果验证通过,则将交易加密信息上传至区块链中。
[0027] 如果验证不通过,则向数据购买端发送真实性验证不通过通知,数据购买端也可以从数据交易装置查询验证结果。
[0028] 步骤103:数据购买端向数据提供端发送交易明文信息。
[0029] 为了提高传输过程中交易明文信息的安全性,防止交易明文信息被篡改,数据购买端可以通过链下的可信通信通道发送交易明文信息,并且还可以对交易明文信息进行加密和签名,数据提供端基于签名验证交易明文信息是否为数据购买方发送。
[0030] 步骤104:数据提供端根据区块链中存储的交易加密信息,对交易明文信息进行验证,如果验证通过,则向数据购买端发送交易明文信息对应的目标数据。
[0031] 如果校验不通过,则向数据购买端发送交易明文信息验证不通过通知,或者由数据购买端主动从数据提供端获取验证结果。
[0032] 步骤105:数据购买端接收目标数据,根据数据购买方的确认操作,向数据交易装置发送确认交易。
[0033] 目标数据为数据购买方向数据提供方购买的数据。数据提供端为数据提供方持有的终端,数据购买端为数据购买方持有的终端,数据购买端和数据提供端可以是两个APP,还可以是同一个APP的两个模式。
[0034] 步骤106:数据交易装置根据确认交易,调用区块链上预先部署的转账智能合约,将数据购买方的资源转账至数据提供方。
[0035] 转账智能合约被调用时,执行如下转账方法:将数据购买方的资源转账至数据提供方。
[0036] 资源可以为代币、积分等形式。
[0037] 验证智能合约与转账智能合约可以是两个智能合约,还可以通过一个智能合约中的两种方法分别实现验证方法和转账方法。后续的管理智能合约类似,查询方法可以与验证方法、转账方法通过同一个智能合约实现。
[0038] 在区块链中仅保存交易加密信息,而不保存交易明文信息,提高数据交易各方的隐私安全。数据交易装置可以通过数据购买端提交的零知识证明验证购买交易的真实性,确保区块链中存储的交易加密信息是由数据购买方提供的购买交易生成的。数据提供方可以基于区块链上存储的交易加密信息,验证数据购买端提供的交易明文信息的合法性,通过链上与链下相结合的方式,确保数据交易的安全。
[0039] 在本发明的一个实施例中,该方法还包括:
[0040] 数据提供端确定目标数据的描述信息,向数据交易装置发送描述信息;
[0041] 数据交易装置调用区块链上预先部署的管理智能合约,将描述信息上传至区块链中;
[0042] 数据购买端根据数据购买方的查询操作,向数据交易装置发送查询请求;
[0043] 数据交易装置根据查询请求调用管理智能合约查询满足条件的描述信息,将查询结果反馈给数据购买端。
[0044] 为了使数据购买方了解待交易数据的信息,但同时提高交易相关数据的隐私安全,本发明实施例将数据的描述信息保存在区块链中,并为数据购买方提供查询服务,数据购买方可以通过数据购买端查询区块链中待交易的数据,并根据区块链中待交易的数据确定购买交易的内容。
[0045] 描述信息可以以设定格式上传至区块链中,例如,描述信息的格式为。其中,Data ID用于表征数据的标识,由一串随机生成的字符组成,是数据全局唯一ID。MetaData是元数据,可以采用JSON格式,保存了关于描述信息的若干字段,可以由数据提供方自定义,能够应对不同场景下的不同数据内容。Rand(R)为第三随机数。
[0046] 在本发明的一个实施例中,交易明文信息包括:目标数据的标识、输入UTXO(Unspent Transaction Output,未花费的交易输出)列表、各个输入UTXO的签名和输出UTXO列表;
[0047] 输入UTXO列表中包括若干输入UTXO;
[0048] 输出UTXO列表中包括若干输出UTXO;
[0049] 输入UTXO为包括数据购买方的公钥、输入UTXO的面值和第一随机数的三元组;
[0050] 输出UTXO为包括数据购买方的公钥或数据提供方的公钥、输出UTXO的面值和第二随机数的三元组;
[0051] 本发明实施例采用UTXO表征资源,以下实施例将以代币为例进行说明。一个UTXO为一个包含三个字段的三元组,即,其中PK用于表征所有者的公钥,Value用于表征当前UTXO的面值,Rρ用于表征随机数。
[0052] 数据购买端提供的交易明文信息可以为如下形式:
[0053] Data_ID为目标数据的标识。数据购买方可以与数据提供方线下商量需要购买的数据,也可以通过智能合约确定数据提供方能够出售的数据的标识。例如,智能合约中保存可出售的数据的标识、描述信息及出售价格,如果购买交易中包含的价格信息满足智能合约中的出售价格要求,则由智能合约确定可出售的目标数据的标识。在此情况下,数据交易装置可以根据购买交易中的价格信息调用预先部署在区块链中的智能合约,确定目标数据的标识。
[0054] Input: [{UTXO1:{PKi, value1, Rρ1}}]用于表征输入UTXO列表,包含一个或多个输入UTXO,输入UTXO归属于数据购买方,UTXO1用于表征输入UTXO,PKi为数据购买方的公钥,Rρ1为第一随机数,value1为输入UTXO的面值。
[0055] Output: [{UTXO2:{PKo, value2, Rρ2}}]用于表征输出UTXO列表,包含一个或多个输出UTXO,UTXO2用于表征输出UTXO。其中,部分输出UTXO归属于数据提供方,其余输出UTXO归属于数据购买方,用于找零。因此,PKo可以是数据购买方的公钥,也可以是数据提供方的公钥。value2为输出UTXO的面值,Rρ2为第二随机数。
[0056] 本发明实施例以UTXO表征资源,便于记录交易过程中资源的流转,并为通过密码学方法隐藏交易明文信息提供便利。
[0057] 在本发明的一个实施例中,交易加密信息包括:目标数据的标识的密码学承诺、各个输出UTXO的哈希和各个第一随机数的哈希;
[0058] 该方法还包括:
[0059] 数据购买端对目标数据的标识和第三随机数进行哈希操作,得到目标数据的标识的密码学承诺;对各个输出UTXO进行哈希操作,得到各个输出UTXO的哈希;对各个第一随机数进行哈希操作,得到各个第一随机数的哈希。
[0060] 交易加密信息如下:,其中,Commitment(Data_ID)用于表征目标数据的标识的密码学承诺,即将Data_ID加上Rand(R),然后进行哈希操作。
[0061] [Hash(Outputs)]用于表征输出UTXO的哈希列表,最终保存在区块链上的并不是UTXO本身,而是其哈希,保证了其他用户无法获知UTXO的所有者和面值。
[0062] [Hash(Inputs Rρ)]用于表征输入UTXO中的第一随机数Rρ1的哈希列表,使用第一随机数的哈希,能够避免其他用户推断出输入UTXO对应的区块链中的输出UTXO,提高交易数据的私密性。
[0063] 在实际应用场景中,还可以将密码学承诺替换为目标数据的标识的哈希,并不局限于上述一种实施方式,只要是能够隐藏交易明文信息即可。
[0064] 本发明实施例通过密码学方法隐藏交易明文信息,在区块链中存储密码学承诺或哈希,而不是直接存储交易明文信息,保护交易各方的隐私。
[0065] 在本发明的一个实施例中,该方法还包括:
[0066] 数据购买端根据预设的约束条件,生成零知识证明;
[0067] 约束条件包括:各个输入UTXO的哈希在区块链记录的输出UTXO的哈希中均可以查询到、各个输入UTXO的签名均通过对应的数据购买方的私钥生成、各个第一随机数的哈希均不属于区块链记录的第一随机数的哈希、输入UTXO列表的输入UTXO的面值之和等于输出UTXO列表的输出UTXO的面值之和、以及包含数据提供方的公钥的输出UTXO对应的输出UTXO的面值之和不低于预设的资源额度中任意一项或多项;
[0068] 对零知识证明进行验证,包括:
[0069] 基于约束条件对零知识证明进行验证。
[0070] 资源额度为数据提供方预设设定,是数据购买方需要为目标数据支付的最低资源量。
[0071] 其中,各个输入UTXO的哈希在区块链记录的输出UTXO的哈希中均可以查询到,说明各个输入UTXO的哈希的来源都是区块链上记载的,是合法来源。各个第一随机数的哈希均不属于区块链记录的第一随机数的哈希,说明各个输入UTXO都是未消费的代币,避免代币被重复消费。输入UTXO列表的输入UTXO的面值之和等于输出UTXO列表的输出UTXO的面值之和,说明输入与输出守恒,通过各项约束条件,可以提交数据交易的安全性。
[0072] 例如,约束条件包括上述五项,则零知识证明需要证明交易明文信息满足上述五项,如果满足,则证明购买交易确实由数据购买方发起。通过零知识证明可以验证购买交易的真实性,提高交易安全。
[0073] 在本发明的一个实施例中,数据提供端根据区块链中存储的交易加密信息,对交易明文信息进行验证,包括:
[0074] 数据提供端验证区块链中存储的交易加密信息中各个输出UTXO的哈希,是否与交易明文信息中的各个输出UTXO的哈希一一对应,如果是,则验证通过,否则,验证不通过。
[0075] 数据提供端可以确定交易明文信息对应的交易加密信息,确定交易加密信息是否由交易明文信息通过密码学算法计算获得,通过交易明文信息和交易加密信息,可以确定交易明文信息是否被篡改,提高交易安全。如果交易加密信息中的各个输出UTXO的哈希,与交易明文信息中对应的各个输出UTXO的哈希相同,则证明交易明文信息没有被篡改。在实际应用场景中,先计算交易明文信息中各个输出UTXO的哈希,再对交易加密信息进行对比。
[0076] 在实际应用场景中,还可以通过上述约束条件中的一项或多项,对交易明文信息进行验证。以其中一项为例,数据提供端根据区块链中存储的交易加密信息,对交易明文信息进行验证,包括:数据提供端验证各个输入UTXO的哈希在区块链记录的输出UTXO的哈希中,是否均可以查询到。如果能查询到,则验证通过,否则,验证不通过。当然,还可以将上述验证方法结合起来对交易明文信息进行验证,例如,数据提供端根据区块链中存储的交易加密信息,对交易明文信息进行验证,包括:数据提供端验证区块链中存储的交易加密信息中各个输出UTXO的哈希,是否与交易明文信息中的各个输出UTXO的哈希一一对应,如果是,则验证各个输入UTXO的签名是否均通过对应的数据购买方的私钥生成,如果均通过对应的数据购买方的私钥生成,则验证通过,否则,验证不通过。通过验证签名,验证该购买交易是否为数据购买方发起,进一步提高数据交易的安全性。
[0077] 在实际应用场景中,还可以通过目标数据的标识和对应的描述信息中的随机数,对交易明文信息进行验证,例如,数据提供端根据区块链中存储的交易加密信息,对交易明文信息进行验证,包括:数据提供端验证目标数据的标识和第三随机数的哈希是否等于区块链中交易加密信息中的密码学承诺,如果是,则验证通过,否则,验证不通过。该验证过程可以与前述交易明文信息的验证过程结合使用。
[0078] 在本发明的一个实施例中,该方法还包括:
[0079] 数据交易装置基于验证智能合约,标记交易加密信息的状态为待确认;
[0080] 在数据交易装置接收到确认交易之后,标记交易加密信息的状态为已确认;
[0081] 数据提供端根据区块链中存储的交易加密信息,对交易明文信息进行验证,包括:
[0082] 数据提供端根据区块链中存储的状态为已确认的交易加密信息,对交易明文信息进行验证。
[0083] 数据交易装置可以对区块链中存储的交易加密信息的状态进行变更,以确保验证结果的准确度,以及资源转移的准确度。
[0084] 区块链的各个节点均保存:目标数据的标识的密码学承诺、各个输出UTXO的哈希和各个第一随机数的哈希。
[0085] 例如,区块链中保存三个列表,如表1‑表3,分别用于存储上述三种数据,当交易加密信息上传至区块链中时,三个表中的信息将同步更新。所有的表只会增加,不会减少。
[0086] 表1 目标数据的标识的密码学承诺
[0087]
[0088] 表2输出UTXO的哈希
[0089]
[0090] 表3第一随机数的哈希
[0091]
[0092] 如图2所示,本发明实施例提供了一种基于区块链的数据交易系统,包括:数据购买端、数据交易装置和数据提供端;数据交易装置应用于区块链的节点设备;
[0093] 数据购买端,用于向数据交易装置发送购买交易;其中,购买交易中包括:零知识证明和交易加密信息;交易加密信息由交易明文信息经过加密得到;向数据提供端发送交易明文信息;接收数据提供端发送的交易明文信息对应的目标数据,根据数据购买方的确认操作,向数据交易装置发送确认交易;
[0094] 数据交易装置,用于根据购买交易,调用区块链上预先部署的验证智能合约,以对零知识证明进行验证,如果验证通过,则将交易加密信息上传至区块链中,标记交易加密信息的状态为待确认;根据确认交易,调用区块链上预先部署的转账智能合约,将数据购买方的资源转账至数据提供方,将状态为待确认的交易加密信息标记为已确认;
[0095] 数据提供端,用于根据区块链中存储的状态为已确认的交易加密信息,对交易明文信息进行验证,如果验证通过,则向数据购买端发送目标数据。
[0096] 本发明实施例基于区块链实现数据交易,能够保证数据交易过程的合法性,确保交易数据不被篡改,保证交易各方利益。基于零知识证明和密码学算法,保证交易各方的隐私安全,提高交易安全性。
[0097] 在本发明的一个实施例中,数据交易装置,用于调用区块链上预先部署的管理智能合约,将描述信息上传至区块链中;根据查询请求调用管理智能合约查询满足条件的描述信息,将查询结果反馈给数据购买端;
[0098] 数据购买端,用于根据数据购买方的查询操作,向数据交易装置发送查询请求。
[0099] 在本发明的一个实施例中,交易明文信息包括:目标数据的标识、输入UTXO列表、各个输入UTXO的签名和输出UTXO列表;
[0100] 输入UTXO列表中包括若干输入UTXO;
[0101] 输出UTXO列表中包括若干输出UTXO;
[0102] 输入UTXO为包括数据购买方的公钥、输入UTXO的面值和第一随机数的三元组;
[0103] 输出UTXO为包括数据购买方的公钥或数据提供方的公钥、输出UTXO的面值和第二随机数的三元组;
[0104] 在本发明的一个实施例中,交易加密信息包括:目标数据的标识的密码学承诺、各个输出UTXO的哈希和各个第一随机数的哈希;
[0105] 数据购买端,用于对目标数据的标识和第三随机数进行哈希操作,得到目标数据的标识的密码学承诺;对各个输出UTXO进行哈希操作,得到各个输出UTXO的哈希;对各个第一随机数进行哈希操作,得到各个第一随机数的哈希。
[0106] 在本发明的一个实施例中,数据购买端,用于根据预设的约束条件,生成零知识证明;
[0107] 约束条件包括:各个输入UTXO的哈希在区块链记录的输出UTXO的哈希中均可以查询到、各个输入UTXO的签名均通过对应的数据购买方的私钥生成、各个第一随机数的哈希均不属于区块链记录的第一随机数的哈希、输入UTXO列表的输入UTXO的面值之和等于输出UTXO列表的输出UTXO的面值之和、以及包含数据提供方的公钥的输出UTXO对应的输出UTXO的面值之和不低于预设的资源额度中任意一项或多项;
[0108] 数据交易装置,用于基于约束条件对零知识证明进行验证。
[0109] 在本发明的一个实施例中,数据提供端,用于验证区块链中存储的交易加密信息中各个输出UTXO的哈希,是否与交易明文信息中的各个输出UTXO的哈希一一对应,如果是,则验证通过,否则,验证不通过。
[0110] 在本发明的一个实施例中,数据交易装置,用于基于验证智能合约,标记交易加密信息的状态为待确认;在数据交易装置接收到确认交易之后,标记交易加密信息的状态为已确认;
[0111] 数据提供端,用于根据区块链中存储的状态为已确认的交易加密信息,对交易明文信息进行验证。
[0112] 下面参考图3,其示出了适于用来实现本发明实施例的终端设备的计算机系统300的结构示意图。图3示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0113] 如图3所示,计算机系统300包括中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储部分308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有系统300操作所需的各种程序和数据。CPU 301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
[0114] 以下部件连接至I/O接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。
[0115] 特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。在该计算机程序被中央处理单元(CPU)301执行时,执行本发明的系统中限定的上述功能。
[0116] 需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0117] 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0118] 描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
[0119] 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。