August 2019
Intermediate to advanced
486 pages
13h 52m
English
We have seen how an attacker could benefit from unintentional token transfers using a front-running attack. To prevent front-running attacks, there are some techniques we can follow.
You can use the following implementation of the approve() function, which ensures that, before updating the value, it should be set to zero. This completely prevents a front-running attack:
function approve(address _spender, uint256 _value) public returns (bool) { //prevent front-running attack require(_value == 0 || allowed[msg.sender][_spender] == 0); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true;}
The preceding code will ensure that the value is set to zero between two ...