1703868430
1703868431
如果他们都是完全独立地选择随机数的话,这个方法是可行的。但请记住,这是在互联网上,没有办法可以限制他们绝对地“同时”送出数据。爱丽丝可能会等到鲍勃和卡罗尔送出随机数之后再发布她的数据。这样一来,她可以轻易地操纵这个计算的结果。我们没有办法设计出一个数据交换协议,它可以让大家都相信没有人会作弊。
1703868432
1703868433
为了解决这个问题,我们还是要回到函数约定。首先,每一个人选一个大的随机数,并发布它的哈希函数值;然后,每个人披露各自所选的数字;接着,其他两个人查证这个被披露的函数值和在第一步发表的数据是否正确;最后,计算这个三个随机数的结果,如下:
1703868434
1703868435
第一回合:
1703868436
1703868437
每个参与者选择一个大的任意字符串。爱丽丝选x,鲍勃选y,卡罗尔选z。
1703868438
1703868439
每个参与者发布对应的哈希函数值H(x)、H(y)、H(z)。
1703868440
1703868441
每个参与者验证H(x)、H(y)、H(z)具有明显的差异性(否则放弃这个协议)。
1703868442
1703868443
第二回合:
1703868444
1703868445
三个参与者分别披露他们所选的字符串x、y和z。
1703868446
1703868447
每个参与者查证这些字符串是否与第一回合里发布的函数值相吻合。
1703868448
1703868449
最后的输出是(x+y+z)%3。
1703868450
1703868451
这种数据协议之所以能成功是因为以下因素:第一,因为函数的输入x,y,z是大的任意数,没有人可以在第一回合之后预测其他人的输入;第二,如果爱丽丝按照规则任意地选择她的输入,她可以相信,不管鲍勃和卡罗尔是否选择了随机数,最后的输出结果也是随机的。
1703868452
1703868453
公平性
1703868454
1703868455
要是有人不披露约定怎么办?在这个协议的第二回合里,假设卡罗尔一直等到爱丽丝和鲍勃披露他们的秘密随机数,然后,在披露之前,意识到她会输掉这一局,她就有可能拒绝公布她的随机数——她可以说她忘记了或是假装下线。爱丽丝和鲍勃可能会怀疑,但他们也没有什么好的办法去追查。
1703868456
1703868457
我们所要做的是立下一个规矩:参与者若是做出承诺,则必须在一定的时间内披露所选的随机数。在密码学里,这个特性叫作公平性。比特币提供了一个非常好的解决方法。
1703868458
1703868459
比如爱丽丝想要做出一个有时限的约定承诺,但鲍勃是唯一对此有顾虑的。第一,爱丽丝先设置一定的保证金,比特币支出交易的脚本可以用来规定,这笔保证金只能用以下两种支付情形:第一种支付情形是必须同时有爱丽丝和鲍勃两人的共同签名;第二种支付情形是只要爱丽丝披露了她的随机数,以后消费这笔交易,就只需要有爱丽丝的签名。如果爱丽丝所选择的随机字符串是x,那么输出脚本(ScriptPubkey)会包括哈希函数H(x)的值。
1703868460
1703868461
接下来,爱丽丝和鲍勃会同时签下一个交易,把这个保证金支付给鲍勃(两种情形之一)。但为什么爱丽丝会同意这样做呢?这个交易带有一个nLockTime值来保障鲍勃不能在时间点t之前来赎取保证金。因为,在此时间之前,爱丽丝只要愿意披露她的约定随机值,她就可以赎回这个保证金,所以她的这个签名交易是安全的。见图9.5。
1703868462
1703868463
1703868464
1703868465
1703868466
图9.5 在有时限的哈希函数约定中使用输出脚本和输入脚本的交易输出
1703868467
1703868468
如果爱丽丝在弃局之前没有披露她的约定随机数值,那么鲍勃就可以在时间点t之后赎取该保证金。没有人逼迫爱丽丝披露她的随机数,但如果她不披露,她会因此失去预设的保证金。
1703868469
1703868470
我们如何用这个有时限的函数约定来实现安全的博彩系统?其实,架构和之前几乎一样,差别在于,我们不再采用简单的函数约定,而是采用有时限的函数约定。任何一方,要赎回这笔保证金就必须把正确的随机数值x披露出来;如果在最后期限到来时还不披露出他的随机数值,就会放弃他的保证金,以用来补偿其他两个玩家。
1703868471
1703868472
可以在比特币系统上实施这个博彩系统。但这个系统有些复杂,而且有时限的函数约定还要求多个非标准的交易。当系统里有n个玩家的时候,由于每个玩家都要设置一笔保证金,我们需要n2个约定,此外玩家们还不得不投入比全部赌注更多的资金用来托管保证金。但对于参与者较少的游戏来说,这是合理的,并且有更好的效率。最重要的是,这个游戏验证了本来认为不可能的数据交换协议,比如在线掷虚拟硬币,并对不遵守规则的玩家进行惩罚,在比特币的世界里是可以做到的。
1703868473
1703868474
1703868475
1703868476
1703868478
区块链技术驱动金融:数字货币与智能合约技术 9.4 比特币作为一个公共的随机源
1703868479
[
上一页 ]
[ :1.70386843e+09 ]
[
下一页 ]