Skip to content
/ diceol Public

eosforce 上部署的一个骰子游戏,挺无聊的。支持scatter/麦子钱包,给大家作个参考吧。

Notifications You must be signed in to change notification settings

gpmn/diceol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

随机数安全风险

今晚听了一堂随机数风险的交流,发现现有的随机数方式也有问题。

当前diceol选用的是未来某个block id作为随机种子。但是在原力上,因为交易不活跃,某些时段,block中只有一个固定的action,而其他相关的变量都能提前预测到,导致这个block id也是可以预测的。原链稍好,因为交易活跃,每个block大概率有很多个action,所以block id不容易被预测。

大家如果是部署到原力的话,注意上述风险。补救措施的话,可以加一个盐值算hash,盐值的值域需要足够大,避免被字典攻击,更换盐值后再公布以取信。原链应该不用担心。我也不想修改了,大家有兴趣的可以撸。

diceol

eosforce 上部署的一个骰子游戏,挺无聊的。支持scatter/麦子钱包,给大家作个参考吧。

推荐链接格式是:http://www.bidname.net/App/EosForce?ref=XXXXX

如果XXXXX不是当前帐号,那么XXXXX帐号可以收到额外5%目前了无价值的DCL。

没有使用EOS提供的两次提交随机种子的方式,而是通过链外resolver定期结算。每隔12秒的block的hash值,被resolver作为随机种子灌入合约,结算。

单次投注,用block hash拼接上投注id,然后计算sh256,然后按字节累加求和,对100求模后+1,得到结果。

多人投注,用block hash计算sh256,然后按字节累加求和,对10或者100求模,得到结果。

上述过程简单,不如全部在链上有公信力。但是因为上述流程和数据都是可以追查的,还是比较可信的。

为了尽快结算,所以结算没有等到块不可逆。如果要等到不可逆块,预计需要90秒以上的延时,更难接受。

由于会以接入节点提供的未到不可逆的块的hash作为随机种子,所以,可能出现个别结算使用的block hash,和最终链上不可逆块的hash值不一致。

这点应该不是大问题,首先这个hash也是源于某个节点计算出来的,也具有足够的随机性和公信力;其次,使用resolve,可以在本地记录指定节点的历史block hash值以进行检查,也是可以事后验证的。

这个游戏目前反应速度比较慢,因为web和结算不在一起,延时至少12秒以上,也不想改进了,谢谢大家理解。

我一直不喜欢菠菜游戏,这次做出来这个主要是练练手吧,以后还是想做点有实际价值的应用。区块链的未来,不能靠这种菠菜应用。

这个游戏在盈亏平衡点的数学期望基础上,扣了2%的奖金,这样玩家将以大约51%甚至更高的概率持续亏钱下去,千万不要侥幸。本来想加上投注历史总额限制,但是需要消耗不少内存,所以放弃了。希望大家能够自我控制住,不要沉迷这种低级游戏,也希望帮大家看清楚菠菜游戏的本质,毕竟亏1000个EOSForce也才100块钱,比亏1000个EOS后才醒悟过来好多了吧。

这里有一篇在EOSBet上输了11万EOS的玩家的哭诉,希望大家引以为戒,小玩怡情即可。

Dapp顶级玩家自述输掉11万EOS

About

eosforce 上部署的一个骰子游戏,挺无聊的。支持scatter/麦子钱包,给大家作个参考吧。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published