“分布式随机数生成器”的版本间的差异

来自dacplay wiki
跳转至: 导航搜索
第7行: 第7行:
 
*攻击方式与对策
 
*攻击方式与对策
 
[[最后一个受托人作恶]],这种攻击的结果是受托人在基于随机数的游戏中具有一定的概率优势,但是其代价是丧失出块收益,并且会被发现进而丧失受托人席位。通过一些对策可以进一步增加这种攻击的难度,例如设置出块保证金,控制返奖率(确保任何人的数学期望小于一),设定单局游戏奖金上限和通过算法控制尽可能在最后阶段才确定究竟谁是“最后一个出块的受托人”(这样受托人无法有针对性的下注,将会极大的降低具备攻击能力的人的数学期望)。
 
[[最后一个受托人作恶]],这种攻击的结果是受托人在基于随机数的游戏中具有一定的概率优势,但是其代价是丧失出块收益,并且会被发现进而丧失受托人席位。通过一些对策可以进一步增加这种攻击的难度,例如设置出块保证金,控制返奖率(确保任何人的数学期望小于一),设定单局游戏奖金上限和通过算法控制尽可能在最后阶段才确定究竟谁是“最后一个出块的受托人”(这样受托人无法有针对性的下注,将会极大的降低具备攻击能力的人的数学期望)。
 +
 +
=分布式随机数生成原理(第二版)=
 +
最后一个受托人作恶问题的根本原因是不能确保受托人一定会出块,如果丢块,此时会选择下一个受托人的secret来构造随机数,从而开奖结果具有“不确定性”。
 +
 +
彻底解决这个问题的思路是确保受托人即使丢块,他本该发布的secret还是可以公布出来,而当局游戏所使用的随机数并不会因为丢块而发生改变。
 +
 +
具体实现方式为受托人出块时不是发布previous_secret和next_secret_hash,而是将secret分散成多个片段加密传输给其他受托人,这些受托人在将来出块时会公开这些片段的明文,而当任意m个受托人公开了片段后,任何人都可以还原出secret。

2015年5月21日 (四) 03:12的版本

在 DACPLAY 中,一个重要的特色是可以以分布式的方式生成随机数。该随机数可以用于 DACPLAY 系统内各种需要“不可预测性”,同时又需要“确定性”的场景。

分布式随机数生成原理(第一版)

DACPLAY 采取 DPOS 共识算法,在这个结构中,区块的生成者称为受托人。每一个受托人在他发布的块中会包含两个特殊信息:一个是previous_secret,一个是next_secret_hash,也就是该受托人上一轮的secret和下一轮要公布的secret的hash。由此会形成一个可以验证确定性,又具有不可预测性的secret序列。当然,对于一个特定的secret,发布者本人是预先知道的,因此随机数本身需要取多个块的secret来构造,这也是“分布式”的由来。只要构造随机数的secret对应的受托人们中有一个人是诚实的(不参与串通),那么这个随机数就是不可预测的。

  • 攻击方式与对策

最后一个受托人作恶,这种攻击的结果是受托人在基于随机数的游戏中具有一定的概率优势,但是其代价是丧失出块收益,并且会被发现进而丧失受托人席位。通过一些对策可以进一步增加这种攻击的难度,例如设置出块保证金,控制返奖率(确保任何人的数学期望小于一),设定单局游戏奖金上限和通过算法控制尽可能在最后阶段才确定究竟谁是“最后一个出块的受托人”(这样受托人无法有针对性的下注,将会极大的降低具备攻击能力的人的数学期望)。

分布式随机数生成原理(第二版)

最后一个受托人作恶问题的根本原因是不能确保受托人一定会出块,如果丢块,此时会选择下一个受托人的secret来构造随机数,从而开奖结果具有“不确定性”。

彻底解决这个问题的思路是确保受托人即使丢块,他本该发布的secret还是可以公布出来,而当局游戏所使用的随机数并不会因为丢块而发生改变。

具体实现方式为受托人出块时不是发布previous_secret和next_secret_hash,而是将secret分散成多个片段加密传输给其他受托人,这些受托人在将来出块时会公开这些片段的明文,而当任意m个受托人公开了片段后,任何人都可以还原出secret。