-3

enter image description here Total amount supply limit to 10Billions but suddenly the airdrop sending 1E+59 (I Think is over one hundred thousand trillion ) to a airdrop participant.

---Code from comment follows---

contract **MISSING** {

    using SafeMath for uint256;

    uint256 public totalSupply        = 300000000 ether;
    uint256 public currentTotalSupply = 0;
    uint256 startBalance              = 200 ether;

    mapping(address => bool) touched;
    mapping(address => uint256) balances;
    mapping (address => mapping (address => uint256)) internal allowed;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);


    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));

        if( !touched[msg.sender] && currentTotalSupply < totalSupply ){
            balances[msg.sender] = balances[msg.sender].add( startBalance );
            touched[msg.sender] = true;
            currentTotalSupply = currentTotalSupply.add( startBalance );
             balances[msg.sender] =  balances[msg.sender] - currentTotalSupply.add (startBalance);

        }

        require(_value <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);

        Transfer(msg.sender, _to, _value);
        return true;



    }


    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));

        require(_value <= allowed[_from][msg.sender]);

        if( !touched[_from] && currentTotalSupply < totalSupply ){
            touched[_from] = true;
            balances[_from] = balances[_from].add( startBalance );
            currentTotalSupply = currentTotalSupply.add( startBalance );
        }

        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        Transfer(_from, _to, _value);
        return true;
    }


    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }


    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
     }


    function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }


    function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
          allowed[msg.sender][_spender] = 0;
        } else {
          allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
     }


    function getBalance(address _a) internal constant returns(uint256)
    {
        if( currentTotalSupply < totalSupply ){
            if( touched[_a] )
                return balances[_a];
            else
                return balances[_a].add( startBalance );
        } else {
            return balances[_a];
        }
    }


    function balanceOf(address _owner) public view returns (uint256 balance) {
        return getBalance( _owner );
    }


}
  • 1
    Obviously the contract has some bugs. But you didn't really specify what your question is. – Lauri Peltonen Dec 27 '18 at 13:08
  • @LauriPeltonen how to fix this bugs?? – MR. Jacky Dec 27 '18 at 13:52
  • This is the contracts address: ropsten.etherscan.io/token/… – MR. Jacky Dec 27 '18 at 13:54
  • 2
    Please post your contract's code and specify what exactly you are doing to trigger the problem and what exactly is the problem. – Lauri Peltonen Dec 27 '18 at 13:55
  • When writing a token contract, you have to manually increase the totalSupply when increasing an address balance without decreasing another address balance. In other words, you manually have to make sure that totalSupply is always the sum of all balances. – Jesse Busman Dec 27 '18 at 14:00

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.