一种基于区块链的第三方可信数据交易系统及方法
技术领域
本发明涉及计算机技术领域,具体涉及一种基于区块链的第三方可信数据交易系统及方法。
背景技术
现有的数据交易买卖一般由数据购买方直接向数据提供方购买。交易成功后。数据提供方将向数据购买方提供一个令牌及数据接口。数据购买方使用此令牌将可以在规定的时间通过数据接口获取相应的购买的数据信息。
这种交易方式由于交易由数据购买方与数据提供方直接接洽,撮合难度高,无法形成规模效应。现有交易形式很难引入第三方数据撮合方。原因是数据撮合方的加入将容易产生不信任。不信任将有以下几个问题:
1.如果数据撮合方撮合后将数据提供方的数据在自己的服务器上中转,并最后发送至数据购买方,将引起数据提供方的不信任。因为,数据撮合方如果将中转的数据在自己的服务器上也存储一个备份的话,未来数据撮合方将可以直接在市场上卖这个备份。以致数据提供方利益受损,在这里,巨大的数据量使得对数据进行加密变得不现实。。
2.如果数据撮合方撮合后给数据购买方提供令牌及数据提供方的数据接口的链接地址,那么数据购买方和数据提供方有在之后的数据交易中不通过数据撮合方而进行的数据交易的动机。这样数据撮合方的利益将收到损失。
3.如果数据撮合方撮合后给数据购买方提供令牌及数据提供方的数据接口的链接地址,那么数据撮合方、购买方以及提供方对已购买的令牌数量容易无法达成共识。从而形成纠纷。
发明内容
本发明提供一种基于区块链的第三方可信数据交易系统及方法,确保数据提供方及数据购买方通过第三方进行有保障的数据交易。
本发明采用如下技术方案:
一种基于区块链的第三方可信数据交易方法,包括数据购买方、数据提供方和数据撮合方;
数据撮合方创建区块链数据交易平台,所述区块链智能交易平台提供智能合约;
数据提供方在所述区块链数据交易平台的智能合约上提供待销售数据的信息,其中,每一个所述智能合约中所对应的代币对应一个待销售数据;
数据购买方可以在所述区块链数据交易平台上看到所述数据提供方提供的待销售数据,并对有意向的数据信息在所述区块链数据交易平台上提出数据购买请求;
数据撮合方根据代售数据的信息初始化代币,使用密钥签名作为唯一标识写入代币,将代币发送给数据购买方;
数据购买方接收到含有所述数据撮合方密钥签名的代币,使用自己的密钥对代币进行签名,将签名信息作为访问数据提供方数据api的令牌,并向所述数据提供方支付含有签名的代币;
数据提供方获取到含有签名信息的代币后对签名信息进行解析,验证签名信息属于数据购买方和数据撮合方,把相应的数据发送给数据购买方,并将自己的签名信息写入代币中;
数据提供方将代币提交给所述区块链数据交易平台,所述区块链数据交易平台根据代币的价格向数据提供方支付相应的款项。
进一步地,所述密钥包括公钥和私钥。
进一步地,所述数据提供方在所述区块链数据交易平台的智能合约上提供待销售数据的信息,其中,每一个所述智能合约中所对应的代币对应一个待销售数据,还包括:
数据提供方在区块链数据交易平台上注册账户;
在区块链数据交易平台的智能合约上提供待销售数据的信息,所述待销售的数据的信息包括名称、类型、说明描述、数据来源、有效期、内容范畴、数据样例以及价格。
进一步地,所述数据购买方可以在所述区块链数据交易平台上看到所述数据提供方提供的待销售数据,并对有意向的数据信息在所述区块链数据交易平台上提出数据购买请求,还包括:
数据购买方在所述区块链数据交易平台上注册账户,并得到账户的公钥与私钥;
数据购买方在所述区块链数据交易平台上对有意向的数据信息支付费用购买代币。
进一步地,所述数据撮合方根据代售数据的信息初始化代币,使用密钥签名作为唯一标识写入代币,将代币发送给数据购买方,还包括:
区块链数据交易平台拥有自身的公钥与私钥,并使用私钥签名作为唯一标识写入代币;
进一步地,所述数据购买方接收到含有所述数据撮合方密钥签名的代币,使用自己的密钥对代币进行签名,将签名信息作为访问数据提供方数据api的令牌,并向所述数据提供方支付含有签名的代币,还包括:
数据购买方使用私钥对获取到的含有数据撮合方密钥的代币签名;
数据购买方通过调用数据api的方式向数据提供方支付签过名后的代币。
进一步地,所述数据提供方获取到含有签名信息的代币后对签名信息进行解析,验证签名信息属于数据购买方和数据撮合方,把相应的数据发送给数据购买方,并将自己的签名信息写入代币中,还包括:
数据提供方收到api调用请求;
智能合约的ecrecover函数接收数据购买方的签名信息的哈希值和r/s/v参数作为输入,返回实施该签名信息的账户地址;
将解析数据购买方签名信息得到的账户地址与数据购买方的账户地址对比,若地址一致,则验证通过;
智能合约的ecrecover函数接收数据撮合方的签名信息的哈希值和r/s/v参数作为输入,返回实施该签名信息的账户地址;
将解析数据撮合方签名信息得到的账户地址与数据撮合方的账户地址对比,若地址一致,则验证通过;
数据提供方将相应的数据使用数据购买方的公钥对数据进行加密并将数据发送给数据购买方;
数据提供方通过调用智能合约方法,将自己的签名信息写入代币中,标识代币已使用,并把代币中的代币使用属性设置为已使用。
一种基于区块链的第三方可信数据交易系统,所述系统包括:创建单元、展示单元、购买单元、发送单元、接收单元、获取单元、验证单元和支付单元;
创建单元,用于数据撮合方创建区块链数据交易平台;
展示单元,用于数据提供方在所述区块链数据交易平台的智能合约上展示待销售数据的信息;
购买单元,用于数据购买方对有意向的数据信息在所述区块链数据交易平台上提出数据购买请求;
发送单元,用于区块链数据交易平台将初始化代币,并使用密钥对代币签名发送给数据购买方;
接收单元,用于数据购买方接收含有数据撮合方签名信息的代币,并使用自己的密钥对代币进行签名,将代币发送给数据提供方;
获取单元,用于数据提供方获取到数据购买方发送的含有数据购买方和数据撮合方的签名的代币;
验证单元,用于数据提供方验证代币上的签名信息属于数据购买方和数据撮合方,并把相应的数据发送给数据购买方;
支付单元,用于数据提供方将代币提交给所述区块链数据交易平台,所述平台根据代币的价格向数据提供方支付相应的款项。
本发明的有益技术效果为:
1)确保数据提供方及数据购买方通过第三方进行有保障的数据交易。
2)确保数据撮合方不直接接触数据。
3)由于区块链智能合约的公开共识属性,使得数据交易对三方均完全透明。
4)使得三方在互不信任的情况下仍能完成数据交易。
5)数据交易结算可在区块链数据交易平台上随时验证。
附图说明
图1为本发明一种基于区块链的第三方可信数据交易方法的结构示意图。
图2为本发明一种基于区块链的第三方可信数据交易方法的流程示意图。
图3为本发明一种基于区块链的第三方可信数据交易系统的结构示意图。
具体实施方式
下面结合附图对本发明作进一步的详细说明。
实施例一
本实施例提供了一种利用在区块链上的智能合约与非对称加密机制来确保第三方以可信的方式参与撮合数据交易。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。
区块链平台上的智能合约是指一段代码被部署在分享的、复制的账本上,它可以维持自己的状态,控制自己的资产和对接收到的外界信息或者资产进行回应。通过只能合约所定义的模型是运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、储存和发送价值。
非对称加密机制。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
请参见图1,图1为本发明一种基于区块链的第三方可信数据交易方法的结构示意图,该方法主要包括数据购买方、数据提供方和数据撮合方,其中区块链数据交易平台由数据撮合方创建。
请参见图2,图2为本发明一种基于区块链的第三方可信数据交易方法的流程示意图,该方法主要包括如下步骤:
S1、数据撮合方创建区块链数据交易平台,区块链智能交易平台提供智能合约。
其中,智能合约为符合ERC721标准的智能合约,也称为代币合约;该智能合约的代币可以储存多个签名信息。
ERC-721标准描述了一个不可互换的通证,官方简要解释是Non-FungibleTokens,简写为NFTs,多翻译为非同质代币。这意味着每个通证是完全不同的,并且每个通证对不同的用户都有不同的价值。
S2、数据提供方在区块链数据交易平台的智能合约上提供待销售数据的信息,其中,每一个智能合约中所对应的代币对应一个待销售数据。
进一步地,步骤S2包括:
S2.1、数据提供方提供身份信息并在区块链数据交易平台上注册账户,获得账户的密钥,该密钥包括公钥与私钥,数据提供方的身份信息由数据提供方的账户公钥确认。
S2.2、在区块链数据交易平台的智能合约上提供待销售数据的信息,待销售的数据的信息包括(不仅限于以下内容):
1)所要提供的数据的说明描述,包括名称、类型、数据来源、有效期、内容范畴以及数据样例;
2)所要提供的数据api包括代币信息的访问格式;
3)所要提供的数据的价格信息。
S3、数据购买方可以在区块链数据交易平台上看到数据提供方提供的待销售数据,并对有意向的数据信息在区块链数据交易平台上提出数据购买请求。
进一步地,步骤S3包括:
S3.1、数据撮合方把各种供交易的数据的名称及说明描述列出,并供人查阅;
S3.2、数据购买方在区块链数据交易平台上注册账户,并得到账户的公钥与私钥;
S3.3、数据购买方在区块链数据交易平台上对有意向的数据信息支付费用购买代币。
S4、数据撮合方根据代售数据的信息初始化代币,使用密钥签名作为唯一标识写入代币,将代币发送给数据购买方。
进一步地,步骤S4包括:
S4.1、数据撮合方在代币合约上生成相应数据产品的代币;
S4.2、数据撮合方使用自己的私钥对该代币进行签名,存入代币的属性中;
签名方式采用椭圆曲线数字签名算法ECDSA(Elliptic Curve DigitalSignature Algorithm)算法。
S4.3、数据撮合方把签过名的代币发送至数据购买方。
S5、数据购买方接收到含有数据撮合方密钥签名的代币,使用自己的密钥对代币进行签名,将签名信息作为访问数据提供方数据api的令牌,并向数据提供方支付含有签名的代币。
进一步地,步骤S5包括:
S5.1、数据购买方从数据撮合方获取代币中具有的数据类型,价格信息,使用自己的私钥对代币进行签名;
签名方式采用椭圆曲线数字签名算法ECDSA(Elliptic Curve DigitalSignature Algorithm)算法。
S5.2、数据购买方通过调用数据api的方式向数据提供方支付签过名后的代币。
S6、数据提供方获取到含有签名信息的代币后对签名信息进行解析,验证签名信息属于数据购买方和数据撮合方,把相应的数据发送给数据购买方,并将自己的签名信息写入代币中。
进一步地,步骤S6包括:
数据提供方针对数据访问代币令牌做ECRecover操作从而得到签名者的公开地址信息,从而确定代币令牌的合法性。
S6.1、数据提供方收到api调用请求后,智能合约的ecrecover函数接收数据购买方的签名信息的哈希值和r/s/v参数作为输入,返回实施该签名信息的账户地址;将解析数据购买方签名信息得到的账户地址与数据购买方的账户地址对比,若地址一致,则验证通过;
智能合约的ecrecover函数接收数据撮合方的签名信息的哈希值和r/s/v参数作为输入,返回实施该签名信息的账户地址;将解析数据撮合方签名信息得到的账户地址与数据撮合方的账户地址对比,若地址一致,则验证通过;
S6.2、数据提供方将相应的数据使用数据购买方的公钥对数据进行加密并将数据发送给数据购买方;
S7、数据提供方将代币提交给区块链数据交易平台,区块链数据交易平台根据代币的价格向数据提供方支付相应的款项。
本实施例通过数据撮合方创建区块链数据交易平台,利用平台上的智能合约和非对称加密机制使得数据购买方和数据提供方进行交易,在交易过程中数据购买方购买数据撮合方的代币,数据撮合方对代币使用私钥进行签名,数据购买方购买后仍然使用私钥对代币进行在一次的签名后通过调用数据api的方式发送给数据提供方,数据提供方收到api调用请求后,通过智能合约的ecrecover函数对数据撮合方和数据购买方的签名进行验证,并把相应的数据发送给数据购买方,最后数据提供方将代币交给数据撮合方,数据撮合方根据代币的价格向数据提供方支付相应的款项。在此过程中,数据撮合方不会直接接触到数据,保障了数据提供方的利益。
本实施例的有益效果为:
1)确保数据提供方及数据购买方通过第三方进行有保障的数据交易。
2)确保数据撮合方不直接接触数据。
3)由于区块链智能合约的公开共识属性,使得数据交易对三方均完全透明。
4)使得三方在互不信任的情况下仍能完成数据交易。
5)数据交易结算可在区块链平台上随时验证。
实施例二
本实施例在实施例一的基础上,提供一种基于区块链的第三方可信数据交易系统,主要用于实现上述实施例一的基于区块链的第三方可信数据交易方法的步骤,请参见图3,本实施例提供的基于区块链的第三方可信数据交易系统包括:创建单元21、展示单元22、购买单元23、发送单元24、接收单元25、获取单元26、验证单元27和支付单元28。
创建单元21,用于数据撮合方创建区块链数据交易平台;
展示单元22,用于数据提供方在区块链数据交易平台的智能合约上展示待销售数据的信息;
购买单元23,用于数据购买方对有意向的数据信息在区块链数据交易平台上提出数据购买请求;
发送单元24,用于区块链数据交易平台将初始化代币,并使用密钥对代币签名发送给数据购买方;
接收单元25,用于数据购买方接收含有数据撮合方签名信息的代币,并使用自己的密钥对代币进行签名,将代币发送给数据提供方;
获取单元26,用于数据提供方获取到数据购买方发送的含有数据购买方和数据撮合方的签名的代币;
验证单元27,用于数据提供方验证代币上的签名信息属于数据购买方和数据撮合方,并把相应的数据发送给数据购买方;
支付单元28,用于数据提供方将代币提交给区块链数据交易平台,平台根据代币的价格向数据提供方支付相应的款项。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。