因为该智能合约批量转帐函数中一行代码的疏忽,导致溢出了。。。
所以出现以下奇观。
一笔高达 57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000 的代币转账
https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f
看了一下智能合约代码
出现问题的函数在 255 行这个 batchTransfer
function batchTransfer(address[] _receivers, uint256 _value) public whenNotPaused returns (bool) { uint cnt = _receivers.length; uint256 amount = uint256(cnt) * _value; require(cnt > 0 && cnt <= 20); require(_value > 0 && balances[msg.sender] >= amount); balances[msg.sender] = balances[msg.sender].sub(amount); for (uint i = 0; i < cnt; i++) { balances[_receivers[i]] = balances[_receivers[i]].add(_value); Transfer(msg.sender, _receivers[i], _value); } return true; }
合约围观地址
https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d#code
注意到这一行
uint256 amount = uint256(cnt) * _value;
没有对 amount 做溢出的检测。。 传入的_value 值在第一张图中 8000000000000000000000000000000000000000000000000000000000000000
转账地址为 2 个,所以 cnt =2
于是乎 amount 就溢出了。。
不是 Copy 一个智能合约改一改就叫区块链了
1 muziki 2018-04-23 08:27:48 +08:00 via iPhone 讲道理 涉及数值操作下意识就是溢出之类的安全检查吧…… |
2 dappreview OP @muziki 在 5 分钟就能发币赚钱的生意里面,什么测试啦、code review 啦、代码安全审计啦 都是浮云 |
![]() | 3 jellybool 2018-04-23 08:32:36 +08:00 via iPhone 灵车 |
![]() | 4 ob 2018-04-23 09:08:16 +08:00 via Android 这就归零了。。 |
![]() | 5 maichael 2018-04-23 09:13:16 +08:00 抄都抄出问题,怕不是自己留的后门。 |
![]() | 6 ariesjia 2018-04-23 09:38:32 +08:00 好好地用 safeMath 好好地, 都应该用上 lint 所有的运算符都不允许使用 必须 safeMath |
![]() | 7 DearMark 2018-04-23 09:49:47 +08:00 说归零,就归零,牛币。 |
![]() | 8 deadEgg 2018-04-23 10:07:37 +08:00 人可以投票回滚,和原来以太坊一样 清零是什么说法? |
![]() | 9 skadi 2018-04-23 10:08:10 +08:00 2^255 笑死. |
10 OrangeM21 2018-04-23 10:40:38 +08:00 你给的传入的数值是 16 进账的,真正传的数值是 10 进制。hahaha. |
![]() | 11 drakeet 2018-04-23 10:50:10 +08:00 ![]() 龟苓膏 |
![]() | 12 Hconk 2018-04-23 12:11:50 +08:00 via Android @deadEgg 这种 token 出漏洞是不可能让以太坊回滚区块的,除非是以太坊自身的漏洞才有可能投票回滚。 清零是币价归零。 |
14 gftfl 2018-04-23 20:22:47 +08:00 以前 265 的那个蔡老板吗? |
![]() | 15 davidqw 2018-04-24 03:40:27 +08:00 人家币种牛逼,还可以停服的 |
![]() | 16 haidaotao 2018-04-26 19:22:18 +08:00 这韭菜割得连根都没剩下 |