分布式随机数生成器

来自dacplay wiki
Logxing讨论 | 贡献2015年5月15日 (五) 20:46的版本

跳转至: 导航搜索

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

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

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

  • 攻击方式与对策

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