【得得预警】应该重视ERC20智能合约引起的approve缺陷

举世企业家

2018-06-22

基岩资本团队在近20年来一直深耕境内外资本市场,队核心成员均为国内外顶级投行出身。作为基石投资人,基岩资本去年运作B站的明星项目备同样备受瞩目,不仅帮助多家企业成功登陆海外资本市场,其中还不乏成为行业中的独角兽企业。例如一季度的中概股涨幅之最金正环保。其于去年7月登陆纳斯达克主板,发行价为5美元,股价已涨到24美元,自上市起相对发行价累计涨幅达到300%以上。

  【得得预警】应该重视ERC20智能合约引起的approve缺陷    此外,燃气集团工作人员还入户检查居民的燃气设施,这项围绕保障服务G20峰会、确保城市居民安全用气推出的专项行动,名字叫做“蓝色火焰”。截至目前,杭城已经有超过10万户居民迎来了“蓝色火焰”。  据了解,伊利是至今为止亚洲唯一进入全球乳业8强乳企。“全球乳业8强不仅是全球乳业的第一阵营,更是全球乳业最有影响力的规则制定者,”乳业专家宋亮表示,是否进入全球乳业8强,不仅仅是规模位次的区别,更是全球乳业影响力和话语权的标识。近年来,在潘刚董事长提出的“创新和国际化”双轮战略指引下,伊利集团实现了持续增长,此次与雀巢、恒天然等国际巨头共同位居全球8强,其背后显现出的,实际上是中国乳业日益稳固的国际地位和全球话语权。

    实际上,大庆早就意识到了石油开采的瓶颈问题,因此大庆的转型也进行了几年,大庆市市长夏立华向表示,大庆现在非能源产业比例已经达到了57%。  “大庆的油越来越难采,产量也在下滑中,所以大庆发改委一直在寻找可替代的能源工业。”知情人士向表示,“现在正在逐年转型。

最近智能合约安全事件频发,从BEC到SMT,从HXG到FXE等,最近这几个智能合约出的问题,大多是由于整数溢出导致的。

是不是应该在所有的地方都加上安全检查,确保我们的代码没有问题呢?最近安比(SECBIT)实验室发现一个ERC20智能合约的approve缺陷,该缺陷将导致项目token在去中心化交易所中无法正常交易。 最近智能合约安全事件频发,从BEC到SMT,从HXG到FXE等,最近这几个智能合约出的问题,大多是由于整数溢出导致的。

大家对整数溢出是不是都杯弓蛇影了?我们是不是应该在所有的地方都加上安全检查,确保我们的代码没有问题呢?我们注意到在下面这段代码:functionapprove(address_spender,uint_amount)returns(boolsuccess){//approvalamountcannotexceedthebalancerequire(balances[]=_amount);//updateallowedamountallowed[][_spender]=_amount;//logeventApproval(,_spender,_amount);returntrue;}这是ERC20接口中的approve函数的一个实现,我们注意到,在函数最开始的地方有这样一行:require(balances[]=_amount);approve的时候对当前余额进行检测,要求授权的_amount小于或等于当前余额。 这样写实际上是没什么意义的,因为在后续操作能够根据正常逻辑产生和这个条件相违背的状态。 比如approve给某个地址后,token的所有者又把token都转走。 这样写除了没有意义外,其实还会引起比较大的使用问题。

最近我们在和去中心化交易所DDEX合作审计该平台上的ERC20token的智能合约,发现一个比较严重的问题。

目前的去中心化交易所,很多都用到了ZRXprotocol或者类似的协议。 在ZRX的智能合约里,进行转账的时候,通过Exchange合约的fillOrder函数完成转账。 去中心化的交易所需要准备一个中间账户,由这个中间账户发起的交易,中间账户需要向该合约approve足够的allowance。 而ZRX提供的合约并不提供approve过程,需要交易所提供的中间账户提前准备好这个approve工作。 然而如果这个中间账户并没有提前拥有交易的token,由于上面那条代码的检查条件,导致无法提前完成approve,这样的问题给去中心化交易所带来了较大的困扰。 在各种去中心化交易所中,甚至中心化的交易所中类似的情况并不少见。 因此我们强烈推荐大家在写ERC20智能合约时不要这么写,不要画蛇添足的加上这样一个判断。

如果万一已经发布的ERC20token合约已经这么写了,我们有什么办法吗?当交易所遇到这种情况的时候,只能由项目方向交易所的中间账户打一笔足够大的token,才能保证能够approve成功,而且限制以后发生的交易额不能超过此数量的限制。

我们使用SECBIT的一个内部工具,对提供源码的22681个ERC20Token智能合约进行了一次扫描,发现了21个智能合约存在此问题,其中有3个合约的交易量较大。

涉及的Token包括:IDHGZRADESAINTBULBZZZKTMETI-PZORRO01ZORRO02现在去中心化交易所将越来越多,为了不影响项目token未来的交易的流动性,我们建议各token仔细检查合约是否存在该问题,如果可能,尽早进行修正。