一种基于比特币协议的首价密封交易方法与流程

文档序号:12887978阅读:591来源:国知局
一种基于比特币协议的首价密封交易方法与流程

本发明涉及一种大数据的交易方法,特别是一种基于比特币协议的首价密封交易方法。



背景技术:

近年来随着大数据的广泛普及和应用,数据资源的价值逐步得到重视和认可,数据交易需求也在不断增加。大数据作为一种新型资源,其价值具有不确定性、稀缺性和多样性,且在大数据交易中买方和卖方的信息存在不对称问题,因此正确评估大数据的价格变得十分重要。目前大数据的交易分为三种模式:协议交易、拍卖交易、集合交易。拍卖交易模式可以将数据使用权交到少数人的手中,保证了卖方的利益,同时也能够兼顾市场原则。

拍卖是一种特殊的现货交易方式,一般是由拍卖机构在约定的时间和地点,按照一定的拍卖规则,通过公开竞价的方式,将商品出售给出价最高的人的一种商品交易方式。传统拍卖方式主要有以下四种:(1)英式拍卖,这是一种公开的增价拍卖;(2)荷兰式拍卖,与英式拍卖相反,这是一种减价拍卖;(3)密封式拍卖,所有的竞标价同时封存于信封中,竞价最高的人会赢得拍卖;(4)vikrey拍卖,密封式二价拍卖,与密封式拍卖不同的是成交价格为第二高出价者的价格。

拍卖方案应具有的性质:(1)公平性:指在拍卖中,所有投标者获得信息是一样的。(2)正确性:拍卖方案要按照拍卖规则进行,最后产生最高价的投标者。(3)标价的保密性:在投标结束前,投标者的标价不能被其他人打开。(4)标价的不可否认性:在投标中,任何投标者都不能否认其投标。(5)不可伪造性:在投标中,投标者的投标不能被伪造。(6)时限性:只有在投标结束后,投标者才能打开投标。(7)高效实用性:标价的计算时间和通讯开销应尽可能小,有较好的拍卖效率。(8)公开验证性:获胜者的标价可以被公开验证。(9)匿名性:在整个投标过程中,任何人(包括可信第三方)均是不能知晓投标者的身份、标价以及身份和标价的对应关系,只有在中标者验证阶段才知道中标者的身份。

拍卖是确定商品价格基础且重要的方法。

目前已有的大多数的拍卖方案都是基于可信第三方的,由第三方给投标者颁发数字签名证书从而确认身份。这样一来,投标者的身份信息就面临泄漏的风险。更进一步,如果第三方和投标者合谋,卖家和其他投标者的利益就会被损害。因此,目前大数据的交易方法存在如下缺点:存在不可信第三方、保密性差、公平公正性易受指责、安全性低和风险高的缺点。



技术实现要素:

本发明的目的在于,提供一种基于比特币协议的首价密封交易方法。本发明具有去除不可信第三方、公平公正、保密性好、安全和无风险的特点。

本发明的技术方案:一种基于比特币协议的首价密封交易方法,包括下述步骤:

(1)准备阶段:

卖方a公布要进行交易的大数据的相关信息;

卖方a和投标者bi选取密钥对;

卖方a和投标者bi提交押金;

(2)投标阶段:

卖方a对底价c承诺,投标者bi对标价bi承诺;

(3)开标阶段:

卖方a/投标者bi在tlock=t时间内按时打开对底价c/标价bi的承诺,领回押金;

(4)验标阶段:

卖方a公布投标者bi中的获胜者地址和密钥对中的公钥;

(5)拍卖支付阶段:

获胜者支付投标的标价。

前述的基于比特币协议的首价密封交易方法所述的步骤(3)中,当卖方a/投标者bi错过对底价c/标价bi的承诺的打开时间tlock=t、或对底价c/标价bi的承诺打开失败时,押金归打开方所有。

前述的基于比特币协议的首价密封交易方法所述的步骤(1)中,所述的卖方a公布大数据的相关信息,是卖方a在sbb上公布大数据的描述信息、拍卖规则;之后卖方a对大数据分块编号,运用merkle树计算,获得root节点哈希值;之后卖方a将root节点哈希值以及参与merkle树的哈希函数发布到公告板sbb。

前述的基于比特币协议的首价密封交易方法所述的步骤(1)中,所述的卖方a和投标者bi选取密钥对,是卖方a和投标者bi根据椭圆曲线密码体制选取密钥对。

前述的基于比特币协议的首价密封交易方法所述的:步骤(1)中,所述的卖方a和投标者bi提交押金,是卖方a和投标者bi通过比特币协议,将提交押金将生成一笔交易t,交易t被发送到连接比特币网络最近的节点,该节点收到交易t后,通过比特币脚本对交易有效性进行验证,验证成功后,将交易t广播至邻近节点,邻近节点再验证,验证成功后,再向邻近节点广播,直至全网大部分节点都接收到该笔交易;最终,交易t被一个挖矿节点写进比特币账本中;所述的比特币脚本对交易有效性进行验证时,当至少一个节点验证失败,则停止再向邻近节点转发,交易t被丢弃。

前述的基于比特币协议的首价密封交易方法所述的步骤(2)中,所述的卖方a对底价c承诺,是卖方a对底价c进行bit承诺,同时发起承诺交易commita和paydeposita交易;所述的步骤(3)中,卖方a和按时在tlock=t时间内打开承诺,领回押金,是在tlock=t时间内,卖方a发送一笔打开承诺交易opena,所有投标者验证卖方a打开承诺交易的正确性,验证是正确的,卖方a的押金返回到自己的地址上。

前述的基于比特币协议的首价密封交易方法所述的步骤(2)中,所述的投标者bi对标价bi承诺,是投标者bi对标价bi进行bit承诺,同时发起承诺交易commitbi和paydepositbi交易;所述的步骤(3)中,投标者bi按时在tlock=t时间内打开承诺,领回押金,是在tlock=t时间内,投标者bi发送一笔打开承诺交易openbi,其余投标者和卖方a验证打开承诺交易的正确性,验证是正确的,投标者bi的押金返回到自己的地址上;验证是错误的,其余人通过交易paydepositbi取走投标者bi的押金。

前述的基于比特币协议的首价密封交易方法所述的步骤(3)中,所有投标者验证卖方a打开承诺交易的正确性,验证是错误的,其余人通过交易paydeposita取走卖方a的押金,同时拍卖终止。

前述的基于比特币协议的首价密封交易方法所述的步骤(4)中,所述的卖方a公布投标者bi中的获胜者地址和公钥,是卖方a对所有投标者的标价进行排序,如果最高标价大于底价c,在sbb上公布最高标价对应的获胜者的地址address和密钥对中的公钥;当出现两个以上相等的最高标价时,最早打开承诺的投标者为获胜者。

前述的基于比特币协议的首价密封交易方法所述的步骤(5)中,所述的获胜者支付投标的标价,是卖方a根据sbb上的信息,将进行交易的大数据秘密发送给获胜者,获胜者对得到的分块数据进行哈希,哈希结果与sbb上公布的结果相同,交易成功,获胜者支付标价。

有益效果

与现有技术相比,本发明具有以下有益效果:

1)去除不可信第三方。本发明通过使用比特币协议,去掉不可信的第三方,防止了第三方与投标者(或者卖方)之间合谋,保证了拍卖的公平和安全性。

2)本发明通过使用比特币协议,去掉不可信的第三方,同时保障了卖方和投标者身份的匿名性;在投标阶段,投标者运用bit承诺对标价进行了承诺,保障了标价的不可否认性和不可伪造性,卖方运用bit承诺对底价进行承诺,既保障了底价的不可更改性,同时有利于投标者的自由竞价;直到开标阶段,标价被公开,使标价的保密性更好。

3)大数据的完整性。在准备阶段,卖方对大数据进行merkle哈希,获得根节点哈希值;在验证阶段,获胜者(最高价者)可以通过收到的分块数据验证是否等于根节点哈希值,保障了大数据的完整性,防止了卖方欺骗获胜者,使交易更加安全。

4)提交押金,保障打开承诺。本发明运用比特币交易的特殊性,让投标者和卖方通过提交一笔押金来保障承诺。如果在规定时间内,投标者和卖方没有公开承诺,那么这笔押金将会被其他按时打开承诺的人取走。也就是说,只要投标者和卖方按时公开承诺值,那么拍卖开始前投入押金没有任何风险。

综上,本发明具有去除不可信第三方、公平公正、保密性好、安全和无风险的特点。

附图说明

图1为比特币交易示意图;

图2为本发明的拍卖流程示意图;

图3为本发明的拍卖投标者交易示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。

实施例1。一种基于比特币协议的首价密封交易方法,如图2所示,包括下述步骤:

(1)准备阶段:

卖方a公布要进行交易的大数据的相关信息(卖方a要卖的物品为大数据,卖方a首先要给出大数据的名称、类型、规模等信息);该大数据指要进行交易的大数据;

卖方a和投标者bi选取密钥对;密钥对包括公钥和私钥;密钥对的作用是:首先对自己生成的交易签名,其次验证交易签名是否为真;

卖方a和投标者bi提交押金;

(2)投标阶段:

卖方a对底价c承诺,投标者bi对标价bi承诺;

(3)开标阶段:

卖方a/投标者bi在tlock=t时间内按时打开对底价c/标价bi的承诺,领回押金;

(4)验标阶段:

卖方a公布投标者bi中的获胜者地址和密钥对中的公钥;

(5)拍卖支付阶段:

获胜者支付投标的标价。

前述的步骤(3)中,当卖方a/投标者bi错过对底价c/标价bi的承诺的打开时间tlock=t、或对底价c/标价bi的承诺打开失败时,押金归打开方所有。

前述的步骤(1)中,所述的卖方a公布大数据的相关信息,是卖方a在sbb上公布大数据的描述信息(具体指要进行交易的大数据的名称、类型、大小)、拍卖规则(拍卖时间、拍卖方式等);之后卖方a对大数据分块编号(因为大数据数据量大,所以只有先分块,再hash,才能得到merkle树根节点。验证根节点时,要根据原先分块的编号、hash),运用merkle树计算,获得root节点哈希值;之后卖方a将root节点哈希值以及参与merkle树的哈希函数发布到公告板sbb(sbb即是一个公告板,消息一旦发布在上面,就不能更改。这里将root节点哈希值以及参与merkle树的哈希函数发布在上面,最终获胜者可以用来验证获得的大数据是否完整)。具体构造merkle树时:首先每两个叶子节点相连接,然后进行单向hash函数,生成的值就是它们的父亲节点,如此反复最后生成根。

前述的步骤(1)中,所述的卖方a和投标者bi选取密钥对,是卖方a和投标者bi根据椭圆曲线密码体制选取密钥对。选取一条安全的椭圆曲线e和e的一个基点g,g的阶为n(n为一个大素数),投标者bi秘密选择一个随机的整数1<ki<n,计算pi=kig,然后公开(g,pi),pi为公钥,私钥为ki。卖方a也按如上方式生成密钥对(p,k)。

前述的步骤(1)中,所述的卖方a和投标者bi提交押金,是卖方a和投标者bi通过比特币协议,将提交押金将生成一笔交易t(交易t由客户端生成的),即t=(b,σ,π,y),这里签名是用椭圆曲线数字签名算法。交易t被发送到连接比特币网络最近的节点,该节点收到交易t后,通过比特币脚本(比特币脚本是系统内置的)对交易有效性进行验证(验证的方法是:节点将交易的输入脚本和输出脚本连接起来执行,若结果为true则交易有效;反之,无效),验证成功后,将交易广播至邻近节点,邻近节点再验证,验证成功后,再向邻近节点广播,直至全网大部分节点(卖方a和所有投标者的2/3)都接收到该笔交易;最终,交易t被一个挖矿节点写进比特币账本中(比特币账本是所有投标者和卖方a运行比特币软件创建的一个共享的比特币账本)。在比特币协议中,每个用户根据椭圆曲线选取密钥对。一笔交易t是由金额amount,签名sign,接受方地址address,未经使用的交易输出utxo组成,即t=(amount,sign,address,utxo),其中sign=(amount,address,utxo)是利用用户密钥对的私钥对amount、address、utxo三个部分的计算而得的签名;[t]=(amount,address,utxo)称为交易主体bady;address是用户公钥pk先经过sha160取得160比特的摘要,再经base58check编码后的地址。最简单的一笔交易是只有一个交易输入和一个交易输出(假设不存在交易费)。其输入脚本为签名,输出脚本为签名验证算法。如图1所示。

前述的比特币脚本对交易有效性进行验证时,当至少一个节点验证失败,则停止再向邻近节点转发,交易t被丢弃。

前述的步骤(2)中,所述的卖方a对底价c承诺,是卖方a对底价c进行bit承诺,同时发起承诺交易commita和paydeposita交易。

前述的步骤(2)中,所述的投标者bi对标价bi承诺,是投标者bi对标价bi进行bit承诺,同时发起承诺交易commitbi和paydepositbi交易。交易commitbi充当押金。如图3所示,投标者bi对标价bi进行承诺构造交易commitbi,要想实现交易,必须提供投标者bi的签名和标价bi或者参与的其他人的签名。交易commitbi进行全网广播。接着投标者bi创建交易paydepositbi,该交易带有时间tlock=t。投标者bi对交易paydepositbi进行签名,全网广播,其他人也对交易paydepositbi签名。在时间tlock=t,投标者bi发布交易openbi打开承诺,那么投标者bi领会押金;否则其余人(按时打开承诺)则通过paydepositbi领走投标者bi的押金。卖方a对底价c进行承诺构造交易也是按如上过程。

bit承诺协议由承诺生成和兑现两个阶段构成,,具体如下:

承诺生成阶段

1)a生成两个随机数r1和r2。

2)a将r1和r2及承诺消息b组成(r1,r2,b)。

3)a计算(r1,r2,b)的单向函数值h(r1,r2,b),并随机选择一个数r1,将(h(r1,r2,b),r1)送给b。

承诺兑现阶段

4)a将原消息(r1,r2,b)送给b。

5)b计算h(r1,r2,b)的单向杂凑值,并与(3)中收到的值相比较。同时还将(4)中的r1与(3)中收到的r1比较,如果一致,证明a的承诺合法。

前述的步骤(3)中,卖方a和按时在tlock=t时间内打开承诺,领回押金,是在tlock=t时间内,卖方a发送一笔打开承诺交易opena(打开承诺交易opena是兑现押金的唯一途径,此时卖方a的押金被冻结),所有投标者验证卖方a打开承诺交易的正确性,验证是正确的,卖方a的押金(即commita提交的押金)返回到自己的地址上。

前述的步骤(3)中,投标者bi按时在tlock=t时间内打开承诺,领回押金,是在tlock=t时间内,投标者bi发送一笔打开承诺交易openbi(打开承诺交易openbi是兑现押金的唯一途径,此时投标者bi的押金被冻结,除非公开标价bi),其余投标者和卖方a验证打开承诺交易的正确性,验证是正确的,投标者bi的押金(即commitbi提交的押金)返回到自己的地址上。

前述的步骤(3)中,所有投标者验证卖方a打开承诺交易的正确性,验证是错误的,其余人(即所有投标者)通过交易paydeposita取走卖方a的押金,同时拍卖终止。

前述的步骤(3)中,其余投标者和卖方a验证打开承诺交易的正确性,验证是错误的,其余人(即除去投标者bi后的所有投标者和卖方a)通过交易paydepositbi取走投标者bi的押金。

前述的步骤(4)中,所述的卖方a公布投标者bi中的获胜者地址和公钥,是卖方a对所有投标者的标价进行排序,如果最高标价大于底价c,在sbb上公布最高标价对应的获胜者的地址address和公钥。反之,则宣布拍卖无效。

前述的步骤(4)中,当出现两个以上相等的最高标价(即首价)时,最早打开承诺的投标者为获胜者。也即是说,若有投标者的标价一样,根据打开承诺值的时间(假设网络不存在延迟)先后顺序判断谁为获胜者,即打开投标值的承诺值时间(时间以打开交易的时间戳为依据)越早,则为获胜者。

前述的步骤(5)中,所述的获胜者支付投标的标价,是卖方a根据sbb上的信息,将大数据(即进行交易买卖的数据)秘密发送给获胜者,获胜者对得到的分块数据进行哈希,若哈希结果与sbb上公布的结果相同,则交易成功,获胜者支付标价。若结果不相同,则交易终止,获胜者不支付标价。

实施例2。一种基于比特币协议的首价密封交易方法,具体如下:

本方案参与者:

(1)投标人b:假设有n个投标人b1,…,bn;

(2)卖方a:提供要拍卖的数据和底价;

(3)电子公告栏sbb:sbb由卖方a控制,用来发布数据描述信息以及拍卖规则,sbb对所有人可见,且所有人看到的sbb上的内容是相同的,数据不能被删除。

具体介绍如下:

(1)准备阶段

a)卖方a在sbb上公布准备交易买卖的(卖方a要卖数据,因此卖方a要在sbb上公布接下来进行买卖的数据的信息)大数据的描述信息、拍卖规则(拍卖时间、拍卖方式等)。

b)卖方a对大数据分块编号,运用merkle树计算,获得root节点哈希值。

c)卖方a将root节点哈希值以及参与merkle树的哈希函数发布到公告板sbb。

d)卖方a和投标者bi根据椭圆曲线密码体制选取密钥对。这里,椭圆曲线选用比特币中secp256k1标准所定义的一条特殊的椭圆曲线和一系列数学常数。secp256k1曲线由下述函数定义,该函数可产生一条椭圆曲线:y2=(x3+ax+b)modp,其中p=2256-232-29-28-27-26-24-1,a=0,b=7,选取椭圆曲线上一点g作为基点,n为点g的阶,h是椭圆曲线上所有点的个数m除以n的整数部分。投标者bi秘密选择一个随机的整数1<ki<n,计算pi=kig,然后公开(g,pi),pi为公钥,私钥为ki。卖方a也按如上方式生成密钥对(p,k)。

e)提交押金b。投标者bi提交押金是通过比特币协议进行的,提交押金将生成一笔交易tbi,即tbi=(b,σbi,πbi,ybi),其中σbi=signbi(b,πbi,ybi),这里签名算法是用椭圆曲线数字签名算法。投标者bi将提交押金生成的交易tbi,发送到连接到比特币网络最近的节点,比特币节点收到交易tbi后,先通过比特币脚本对交易有效性进行验证,若验证成功,则将交易广播至邻近节点,邻近节点再验证,通过验证后,再向邻近节点广播,直至全网大部分节点都接受到这笔交易。只要一个节点验证不成功,则丢弃这笔交易,不会再向邻近节点转发。最终,交易tbi被一个挖矿节点写进比特币账本中。卖方a也按照如上方式生成交易押金ta,ta=(b,σa,πa,ya)。对于每一个参与方(不论是卖方a还是投标者bi),在提交押金的脚本中,输入脚本in_script为σbi或者σa,输出脚本out-script为πbi或者πa。

(2)投标阶段

投标者bi首先采用bit承诺方案对标价bi进行承诺,选取两个随机数rbi1、rbi2,组成消息(rbi1,rbi2,bi),运用单向函数计算vi=h(rbi1,rbi2,bi),并随机选择一个数rbi1,投标者bi对(vi,rbi1)发起承诺交易commitbi,commitbi交易的输入脚本in_script为σcommitbi,commitbi交易的输出脚本out-script由两部分组成。

1)h(rbi1,rbi2,bi)=(vi,rbi1)∧verbi(body,σbi)

2)verb1(body,σb1)∧…∧verbi(body,σbi)∧…∧verbn(body,σbn)∧vera(body,σa)

广播交易commitbi。投标者bi接着创建paydepositbi交易,paydepositbi交易为了让其他人能够在承诺方未于特定时限tlock=t内公开承诺时认领押金。投标者bi对交易paydepositbi进行签名,全网广播,其他人也对交易paydepositbi签名。paydepositbi交易的输入脚本in_script为σpaydepositbi,输出脚本out-script为verb-i(body,σb-i),其中b-i表示所有按时打开承诺的参与者。

卖方a对底价c进行bit承诺。卖方a选取两个随机数r1、r2,组成消息(r1,r2,c),运用单向函数值v=h(r1,r2,c),并随机选择一个数r1,将(v,r1)发起承诺交易commita和paydeposita交易。

(3)开标阶段

投标者bi发送一笔打开承诺交易openbi,openbi交易的输入脚本in_script包含σopenbi和(rbi1,rbi2,bi)。openbi交易被广播到比特币账本,其余投标者以及卖方a可以验证承诺值vi是否等于h(rbi1,rbi2,bi)。在tlock=t时间内,vi=h(rbi1,rbi2,bi)则说明投标者bi成功打开承诺,同时押金将返回自己的地址中,若vi≠h(rbi1,rbi2,bi),则表明投标者bi在开标阶段未成功打开交易,其余投标者以及卖方a可以通过交易paydepositbi取走投标者bi的押金。若时间超过tlock=t,无论投标者bi打开成功与否,其余人可以通过交易paydepositbi取走投标者bi的押金,因为投标者bi没有按时打开承诺。

卖方a发送一笔打开承诺交易opena。同理,所有投标者均可以验证卖方a是否在tlock=t时间内正确打开承诺交易,若验证通过,卖方a的押金返回到自己的地址上。若卖方a的打开交易未通过验证,其余投标者可以取走卖方a的押金。同样,若时间超过tlock=t,无论卖方a是否成功打开承诺值,其余人都可以通过交易paydeposita取走卖方a的押金,同时拍卖终止。

(4)验标阶段

卖方a对投标者bi公开的投价值bi进行排序。如果最高价大于底价c,在sbb上公布最高价的地址address、公钥。若不大于底价c,则取消拍卖。

若有投标者的标价一样,根据打开承诺值的时间先后顺序判断谁为获胜者,即打开投标值的承诺值时间越早,则为获胜者。例如:若有b1、b2、b3三人都为最高价者,其打开承诺值的时间分别为t1、t2、t3,且t2<t1<t3,那么时间为t2的投标者b2为获胜者。

(5)支付阶段

卖方a根据sbb上的信息,将大数据秘密发送给最高价者,最高价者对得到的数据分块进行merkle树计算,若哈希结果与sbb上公布的结果不同,则可以向卖方提出要求,终止交易,反之成交并支付。

本发明通过运用比特币协议,去掉不可信的第三方,将拍卖标价、底价通过交易的形式写进比特币区块中,通过全网节点共同验证保证有效性,进而为大数据的公平定价和交易,提供了一个安全有效的解决方案。在拍卖方案中,引入押金的思想,无论各参与者是否打开承诺,协议都能为按时打开承诺的参与方提供经济激励;运用merkle树,对大数据分块编号哈希,获得根节点哈希值,使获胜者在拍卖支付阶段可以根据merkle树与根节点哈希值验证大数据的完整性;在投标阶段,投标者运用bit承诺对标价进行承诺,使标价具有不可更改性;由于大数据价值具有不确定性,因此卖方a运用bit承诺对底价进行承诺,实现了底价隐藏性和不可更改性,且更有利于投标者自由投标。不管是底价还是标价,一经承诺,便要到开标阶段才能打开,鉴于比特币交易的(准)匿名性,即使打开交易也不能根据标价链接到投标者的具体身份信息。

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