I stumbled across one contract which emits Transfer event two times:


function batchSend(address[] memory _tos, uint _value) public payable returns (bool) {
    require (msg.sender == owner);
    uint total = _value * _tos.length;
    require(balanceOf[msg.sender] >= total);
    balanceOf[msg.sender] -= total;
    for (uint i = 0; i < _tos.length; i++) {
        address _to = _tos[i];
        balanceOf[_to] += _value;
        emit Transfer(msg.sender, _to, _value/2);
        emit Transfer(msg.sender, _to, _value/2);
    return true;

Does somebody have any ideas what is the purpose to call the Transfer event two times with half a value each time?

1 Answer 1


It is highly likely to be a scam token and contract, as it contains uncommented bits that do not make any sense. They probably added a custom transfer function just to inflate transfer numbers.

enter image description here

  • Right, this for sure the scam token, as it assumes to be the UMB, though it is not. But why inflating the transfer number could be important for? Just to rise the attention?
    – tenbits
    Mar 10, 2021 at 11:01
  • Yes. Just to make past the real token in some explorer services. Mar 11, 2021 at 9:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.