因为ERC20被发现存在溢出攻击(BatchOverFlow)的可能
近期由于BEC以及SMT被黑客利用溢出攻击(BatchOverFlow),利用整数溢出漏洞,可以凭空创造大量虚假的虚拟货币,这类被黑客创造的虚拟货币也可以装入到交易所进行交易,这也就导致了BEC价格几乎归零。
其中SMT项目错误的函数如下:
function transferProxy(address _from, address _to, uint256 _value,uint256
_feeSmt,uint8 _v,bytes32 _r, bytes32 _s) public transferAllowed(_from) returns
(bool)
这个函数没有进行整数上溢出检查。_feeSmt和value都是外部传入的参数。由于定义为uint256(256位无符号整数)
那么假设
_feeSmt=8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
value=7000000000000000000000000000000000000000000000000000000000000001
那么_feeSmt + _value=0,直接溢出,将可以绕过代码检查,自行制造大量的虚拟货币。
由于担心其他ERC20项目中也有类似的漏洞,所以交易所纷纷下架了ERC20项目代币。让各个项目对于自己的代码进行检查,看看是否还有存在整数溢出的问题。
这两天,在OKEx分别暂停了BEC和SMT交易和提现后,又暂停了所有以太坊ERC20代币的充值功能。
另一家交易所火币也是如此。
这个ERC20代币是什么?为什么会有这么大的风险?应该怎么处理我们手里的资产?
1、ERC20 Token
现在交易所上到底炒的币主要分为两种,一种有自己的链,一种没有,仅仅运行在以太坊等公链上。像比特币和以太坊这样的项目,都有自己的链,矿工挖的就是这种币。再比如前两天暴涨的比原链,昨天才有了自己的主网,才能用矿机挖矿。而EOS,要等到6月份主网上线才能挖矿,这也是最近EOS超级节点竞争的原因,他们在争夺挖矿权。
但是并不是每一种币都会有自己的主网,这是要根据每个token(也称为通证或代币)的使用功能和共识决定。有些token完全可以在以太坊或者其他公链上运行,不需要自己拥有主链。如果有些小项目发的token有自己主链的话,可能很容易被51%算力攻击,反而运行在其他公链上会比较安全。
根据每种token不同的应用场景,项目方会选择不同的公链,比如以太坊、NEO、量子链等等。当然最火的就是以太坊,绝大多数token就是发在以太坊上的,所以ICO基本都是用以太坊众筹。其实发币非常容易,之前网上的教程《5分钟教你在以太坊上发行自己的代币》,那些说的就是发行在以太坊上的ERC20
Token。发币容易也就导致了门槛很低,谁都能发个币,空气币层出也是由于这个原因。
最后说到ERC20代币,ERC即是Ethereum Request for
Comments的简写,直译为以太坊征求意见,也可以说是以太坊开发者的协议提案。提案有很多版本,ERC20是最广为人知的标准之一,也是现在很多ICO代币使用的版本,诞生于2015年。ERC20简单说是token的一种,也是一种协议。这里不过多讨论技术,就不把代码搬上来了。
对代码感兴趣的可以打开接下来链接https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
之所以称ERC20是代币的一种,是因为这个协议里规定了几个必须写的函数,这些函数定义了代币总量,代币转账方式等等。除了这个协议外,还有一个知名的ERC721代币。既然有两个不同的代币协议,他们发的token也是不同的。简单讲,ERC721
token中每个token都是独一无二的。最著名的就是以太猫这个游戏了,这个游戏就是使用的ERC721协议,因此每个以太猫都是独一无二的token,也是这个游戏的玩法。
2、现在面临什么问题?
这次以太坊智能合约上的安全漏洞叫做溢出攻击,简单说就是黑客发现了项目的代码漏洞,自己创造了好多之前设定并不存在的币。比如一个项目只发了10亿个ERC20代币,黑客却用漏洞自己又弄出了5亿个,他们把这些多出来的币充到交易所上卖出,对这个项目可以说是毁灭性地打击。
不过,以太坊ERC20的问题,和以太坊的构架也有关系。以太坊使用的是账户模型,比特币使用的是UTXO模型。友们一下,并不存在比特币这种币,比特币只是转账记录,每个币在转账时都能找到它的来源,不会凭空冒出来。但是以太坊的模式不是这样,所以才可能出现这种问题。
如果主网上线后就会回到自己的链上运行,也就不会出现上述以太坊智能合约的问题。EOS现在就是发行在以太坊上的ERC20代币,因为等到6月1日才会上线自己的主网。像EOS的主网映射过程就是先建立EOS主网钱包,再关联上现在暂时放在以太坊上EOS代币,然后等主网上线后就能直接将之前的ERC20代币映射到EOS主网上。
但是并不是所有项目以后都会有自己的主链,像上面所说的,小项目很容易被51%算力攻击。如果赞同以太坊的共识机制,而且以太坊也能满足项目需求的话,完全不需要自己搞出主链来,发在公链上反而更安全。
3、我们要怎样面对这种安全漏洞?
其实我们做不了什么,毕竟是项目方掌控着代码。现在的漏洞主要是“数据溢出”漏洞,黑客多搞出了很多代币,然后向市场抛售导致币价下跌。庆幸的是黑客不能转走我们钱包里的币,或者我们交易所账户里的币。因此交易所要暂停ERC20代币的充值,就是防止黑客将多搞出来的代币充到交易所上交易,取出来现成的。
我们现在能做的就是等着项目方排查他们的代码,保证不会再出现类似的行为。这样也能看出来,哪些项目靠谱,哪些项目连代码都不管了。
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/btc/271799.html