如何解决令牌中的安全性错误? (ERC223)

时间:2018-11-26 12:48:37

标签: blockchain ethereum solidity

我已经使用ERC223令牌标准编写了基本ICO的智能合约。 当我验证securify.ch(https://securify.chainsecurity.com/)中的代码时,它显示了一些安全错误。这是我遇到这些错误的代码

代码:

function transfer(address _to, uint _value, bytes _data) public {
   uint codeLength;
   assembly {
      codeLength := extcodesize(_to)
   }
   balances[msg.sender] = balances[msg.sender].sub(_value);
   balances[_to] = balances[_to].add(_value);       
   if(codeLength>0) {
      ERC223ReceivingContract receiver = ERC223ReceivingContract(_to);
      receiver.tokenFallback(msg.sender, _value, _data);
   }
   emit Transfer(msg.sender, _to, _value, _data);
} 

在下面一行中,我得到了错误。

receiver.tokenFallback(msg.sender, _value, _data); 

错误:此合同允许任意用户代表合同执行不受信任的代码。这是因为任何用户都可以提交作为该方法的参数提供的任意地址_spender和任意数据_data。地址支出者确定调用指令的目标,而_data确定不受信任合同中调用的函数。

0 个答案:

没有答案