Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 101 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x2efde4863c1920d34dc12dbc06b7f6fb8c77d86fat txn 0xd0ed0fff5cdf627dcef3a540e5f7d0d5f8f5809e95096be528c15bbe9a8571af
 Latest 25 transactions from a total of 101 transactions

TxHash Age From To Value [TxFee]
0xc3b5844f102f551abb9ceab35a5f0b948b2e6dbb907641bd32d87447edd34ba8305 days 54 mins ago0x2efde4863c1920d34dc12dbc06b7f6fb8c77d86f  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c0 Ether0.000207921
0x9c7377dbe0e3bb2fec7d80faa8cf2c1365efa3d4a543519b2be1ac9b620f5f82305 days 1 hr ago0xf3a2727a3447653a58d57e4be63d5d5cdc55421b  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c31.203833751983716 Ether0.0131595
0xc5a44dfc42e6eb6510dd18eaeee3306543800c45110a9806b5475758f97fd327305 days 1 hr ago0xf3a2727a3447653a58d57e4be63d5d5cdc55421b  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c28.892438659244182 Ether0.0131595
0xfba9ce2ae19c1a942a132f4a7544ded9280d64c462dfd5e4e3cb93904dd5d205305 days 17 hrs ago0xe7eca2a94e9d59848f3c1e1ffaacd881d4c3a4f2  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c26.752258017818687 Ether0.00043865
0x8fb382689117b240245ca368bdd289d4c11e6e19d6367d65600e3f9f03d20191305 days 22 hrs ago0xf3a2727a3447653a58d57e4be63d5d5cdc55421b  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c25 Ether0.0010285
0xc3a9c8b0de56aafb532bd2a47a35d1439f3faf798b4b552ab900aad362ebd68f305 days 22 hrs ago0x183febd8828a9ac6c70c0e27fbf441b93004fc05  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c22.935749329405596 Ether0.001447545
0x95f65928e7b20379ef8092aada7d6c4c52a1e72bf9ddeb5ed08e14c856b38444305 days 22 hrs ago0xf3a2727a3447653a58d57e4be63d5d5cdc55421b  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c25 Ether0.000051425
0xaeec289bc3cb4955d5eae2751e5eaa9c45033d94225ff3c3780f05b6fd3f5b1f305 days 23 hrs ago0x0a8e20ee171630ef9dfebf02149169f90c133cd8  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c19.66370827281001 Ether0.00008773
0x1edad071b4b7ceb3201298e531b32047a476407212db19d3bcb1c7b4e2b215d3306 days 6 mins ago0x610889d46fde9d90c1a0f1e5753dd2a1369c5a18  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c18.207137289638898 Ether0.000307055
0x3b2d59d2cfb7309c0b624b02cf567fb7962fe221d48e9bc5ce1ebe345a2ddc57306 days 15 mins ago0x0a8e20ee171630ef9dfebf02149169f90c133cd8  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c16.85846045336935 Ether0.00008773
0x9a580e4baf9bdfdbd82ccc61461551b770013ed3fd377d7c83f995e47b81de22306 days 20 mins ago0x610889d46fde9d90c1a0f1e5753dd2a1369c5a18  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c15.60968560497162 Ether0.000307055
0x59345ec4576669afeab4a99835dc872c3cbfe1fb6c01aae3de0ab2161d180475306 days 24 mins ago0x0a8e20ee171630ef9dfebf02149169f90c133cd8  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c14.453412597195945 Ether0.00008773
0x9528c77c4ba921f17ff0f5206a38e8442d392d0ca170a7f1278a09612caae846306 days 33 mins ago0x183febd8828a9ac6c70c0e27fbf441b93004fc05  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c13.382789441848097 Ether0.00096503
0xc41acf96447067e8e04911345e5b25ac9b866e39b1f6724052bf1443ed0b52d9306 days 33 mins ago0x0a8e20ee171630ef9dfebf02149169f90c133cd8  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c12.391471705414905 Ether0.00008773
0xe685ce4ba99c09ee6fabf2d9c90ca1e3d91cd74a7d920f9234e7cd655aebee47308 days 2 hrs ago0x183febd8828a9ac6c70c0e27fbf441b93004fc05  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c11.473584912421208 Ether0.000482515
0x60e318d1a0995d49be7013f68fe318ad5660ce1f28d86b9acafee9a72b3a51b8308 days 10 hrs ago0x0a3239799518e7f7f339867a4739282014b97dcf  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c0.35 Ether0.000023344
0x13c8f52d96f06595356cded08efb97b5839a118870080b28d164905b38c33b0b308 days 10 hrs ago0xdd75f58c035914bcea7c18f1b0065c65ce7eca0c  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c0.00225 Ether0.000023344
0xec0144820ae47c3020c122f5924670e3e297deb13568be3ca9a685aa1371b200308 days 10 hrs ago0x0a3239799518e7f7f339867a4739282014b97dcf  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c0.00225 Ether0.000023344
0x0935ba3b5f0cd6440f9857a1dd22cb55edd03a7bc7d07823e9510620c2998d00308 days 11 hrs ago0x97d17221964b72eafcb74923f23ce94bd607955f  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c0.00225 Ether0.000023344
0xd0e5dac30ab98f312f57f156be337e30e426c2f4e5c24795623ae16bbad15b6a308 days 12 hrs ago0x183febd8828a9ac6c70c0e27fbf441b93004fc05  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c11 Ether0.000770352
0x8d25693f38adc86dc7375c356abad622da2ae5cdf5ff6cbd7b6dd02eb1d97e63308 days 12 hrs ago0xb03bef1d9659363a9357ab29a05941491accb4ec  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c12 Ether0.0006171
0x5db92352e2be129544b571500efe3359316a221cea932d6bddbf148e6e3f8c2e308 days 12 hrs ago0x7c377b7bce53a5cef88458b2cbbe11c3babe16da  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c10 Ether0.00051425
0xe05e29aab3f50eeac188aa9a97ea1341c1617b082689a8cae989356a7389cf61308 days 12 hrs ago0xb03bef1d9659363a9357ab29a05941491accb4ec  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c11 Ether0.0006171
0xaedee50ca4697155ede455e03462814aeb1e007ca69b68fdcb56b5e7e18bc5fa308 days 12 hrs ago0x7c377b7bce53a5cef88458b2cbbe11c3babe16da  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c9 Ether0.00023344
0xc480830adc37a023fd882619ef5287a39065bb04cd7edd3e3dfd38c043aefe4b308 days 12 hrs ago0x183febd8828a9ac6c70c0e27fbf441b93004fc05  IN   0x68667745398d750e20dbdb655f0f8ce86c405d8c10 Ether0.001697025
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xc3b5844f102f551abb9ceab35a5f0b948b2e6dbb907641bd32d87447edd34ba85310469305 days 54 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x2efde4863c1920d34dc12dbc06b7f6fb8c77d86f23.403250313987787718 Ether
0x9c7377dbe0e3bb2fec7d80faa8cf2c1365efa3d4a543519b2be1ac9b620f5f825310235305 days 1 hr ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xf3a2727a3447653a58d57e4be63d5d5cdc55421b29.470287432429065987 Ether
0xc5a44dfc42e6eb6510dd18eaeee3306543800c45110a9806b5475758f97fd3275310232305 days 1 hr ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xe7eca2a94e9d59848f3c1e1ffaacd881d4c3a4f227.2873031781750611 Ether
0xfba9ce2ae19c1a942a132f4a7544ded9280d64c462dfd5e4e3cb93904dd5d2055306200305 days 17 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xf3a2727a3447653a58d57e4be63d5d5cdc55421b25.266021461273204722 Ether
0x8fb382689117b240245ca368bdd289d4c11e6e19d6367d65600e3f9f03d201915305078305 days 22 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xf3a2727a3447653a58d57e4be63d5d5cdc55421b0.229390724241956154 Ether
0x8fb382689117b240245ca368bdd289d4c11e6e19d6367d65600e3f9f03d201915305078305 days 22 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x183febd8828a9ac6c70c0e27fbf441b93004fc0523.394464315993708077 Ether
0xc3a9c8b0de56aafb532bd2a47a35d1439f3faf798b4b552ab900aad362ebd68f5305059305 days 22 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xf3a2727a3447653a58d57e4be63d5d5cdc55421b21.661541033327507479 Ether
0x95f65928e7b20379ef8092aada7d6c4c52a1e72bf9ddeb5ed08e14c856b384445305035305 days 22 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xf3a2727a3447653a58d57e4be63d5d5cdc55421b3.763195065365188746 Ether
0x95f65928e7b20379ef8092aada7d6c4c52a1e72bf9ddeb5ed08e14c856b384445305035305 days 22 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x0a8e20ee171630ef9dfebf02149169f90c133cd820.056982438266210629 Ether
0xaeec289bc3cb4955d5eae2751e5eaa9c45033d94225ff3c3780f05b6fd3f5b1f5304855305 days 23 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x610889d46fde9d90c1a0f1e5753dd2a1369c5a1818.571280035431676508 Ether
0x1edad071b4b7ceb3201298e531b32047a476407212db19d3bcb1c7b4e2b215d35304701306 days 6 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x0a8e20ee171630ef9dfebf02149169f90c133cd817.195629662436737508 Ether
0x3b2d59d2cfb7309c0b624b02cf567fb7962fe221d48e9bc5ce1ebe345a2ddc575304666306 days 15 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x610889d46fde9d90c1a0f1e5753dd2a1369c5a1815.921879317071053249 Ether
0x9a580e4baf9bdfdbd82ccc61461551b770013ed3fd377d7c83f995e47b81de225304649306 days 20 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x0a8e20ee171630ef9dfebf02149169f90c133cd814.74248084913986412 Ether
0x59345ec4576669afeab4a99835dc872c3cbfe1fb6c01aae3de0ab2161d1804755304633306 days 24 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x183febd8828a9ac6c70c0e27fbf441b93004fc0513.650445230685059371 Ether
0x9528c77c4ba921f17ff0f5206a38e8442d392d0ca170a7f1278a09612caae8465304598306 days 33 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x0a8e20ee171630ef9dfebf02149169f90c133cd812.639301139523203122 Ether
0xc41acf96447067e8e04911345e5b25ac9b866e39b1f6724052bf1443ed0b52d95304595306 days 33 mins ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x183febd8828a9ac6c70c0e27fbf441b93004fc0511.703056610669632521 Ether
0xe685ce4ba99c09ee6fabf2d9c90ca1e3d91cd74a7d920f9234e7cd655aebee475292185308 days 2 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xb03bef1d9659363a9357ab29a05941491accb4ec10.83616352839780789 Ether
0x8d25693f38adc86dc7375c356abad622da2ae5cdf5ff6cbd7b6dd02eb1d97e635289711308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xb03bef1d9659363a9357ab29a05941491accb4ec1.376310266276658931 Ether
0x8d25693f38adc86dc7375c356abad622da2ae5cdf5ff6cbd7b6dd02eb1d97e635289711308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x7c377b7bce53a5cef88458b2cbbe11c3babe16da10.033484748516488787 Ether
0x5db92352e2be129544b571500efe3359316a221cea932d6bddbf148e6e3f8c2e5289702308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x7c377b7bce53a5cef88458b2cbbe11c3babe16da0.163250246552461973 Ether
0x5db92352e2be129544b571500efe3359316a221cea932d6bddbf148e6e3f8c2e5289702308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xb03bef1d9659363a9357ab29a05941491accb4ec9.290263656033785915 Ether
0xe05e29aab3f50eeac188aa9a97ea1341c1617b082689a8cae989356a7389cf615289701308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xb03bef1d9659363a9357ab29a05941491accb4ec1.891898376437464789 Ether
0xe05e29aab3f50eeac188aa9a97ea1341c1617b082689a8cae989356a7389cf615289701308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x183febd8828a9ac6c70c0e27fbf441b93004fc058.602095977809061032 Ether
0xc480830adc37a023fd882619ef5287a39065bb04cd7edd3e3dfd38c043aefe4b5289697308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0x183febd8828a9ac6c70c0e27fbf441b93004fc051.56657257077543036 Ether
0xc480830adc37a023fd882619ef5287a39065bb04cd7edd3e3dfd38c043aefe4b5289697308 days 12 hrs ago0x68667745398d750e20dbdb655f0f8ce86c405d8c0xb03bef1d9659363a9357ab29a05941491accb4ec7.964903683156537993 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: ETPotatoPresale
Compiler Text: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

// SafeMath is a part of Zeppelin Solidity library
// licensed under MIT License
// https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/LICENSE

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

// https://github.com/OpenZeppelin/zeppelin-solidity

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    uint256 totalSupply_;

    /**
    * @dev Protection from short address attack
    */
    modifier onlyPayloadSize(uint size) {
        assert(msg.data.length == size + 4);
        _;
    }

    /**
    * @dev total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) onlyPayloadSize(2 * 32) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);

        _postTransferHook(msg.sender, _to, _value);

        return true;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

    /**
    * @dev Hook for custom actions to be executed after transfer has completed
    * @param _from Transferred from
    * @param _to Transferred to
    * @param _value Value transferred
    */
    function _postTransferHook(address _from, address _to, uint256 _value) internal;
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

    mapping (address => mapping (address => uint256)) internal allowed;


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);

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

        _postTransferHook(_from, _to, _value);

        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     *
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    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);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

}

contract Owned {
    address owner;

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    /// @dev Contract constructor
    function Owned() public {
        owner = msg.sender;
    }
}


contract AcceptsTokens {
    ETToken public tokenContract;

    function AcceptsTokens(address _tokenContract) public {
        tokenContract = ETToken(_tokenContract);
    }

    modifier onlyTokenContract {
        require(msg.sender == address(tokenContract));
        _;
    }

    function acceptTokens(address _from, uint256 _value, uint256 param1, uint256 param2, uint256 param3) external;
}

contract ETToken is Owned, StandardToken {
    using SafeMath for uint;

    string public name = "ETH.TOWN Token";
    string public symbol = "ETIT";
    uint8 public decimals = 18;

    address public beneficiary;
    address public oracle;
    address public heroContract;
    modifier onlyOracle {
        require(msg.sender == oracle);
        _;
    }

    mapping (uint32 => address) public floorContracts;
    mapping (address => bool) public canAcceptTokens;

    mapping (address => bool) public isMinter;

    modifier onlyMinters {
        require(msg.sender == owner || isMinter[msg.sender]);
        _;
    }

    event Dividend(uint256 value);
    event Withdrawal(address indexed to, uint256 value);
    event Burn(address indexed from, uint256 value);

    function ETToken() public {
        oracle = owner;
        beneficiary = owner;

        totalSupply_ = 0;
    }

    function setOracle(address _oracle) external onlyOwner {
        oracle = _oracle;
    }
    function setBeneficiary(address _beneficiary) external onlyOwner {
        beneficiary = _beneficiary;
    }
    function setHeroContract(address _heroContract) external onlyOwner {
        heroContract = _heroContract;
    }

    function _mintTokens(address _user, uint256 _amount) private {
        require(_user != 0x0);

        balances[_user] = balances[_user].add(_amount);
        totalSupply_ = totalSupply_.add(_amount);

        emit Transfer(address(this), _user, _amount);
    }

    function authorizeFloor(uint32 _index, address _floorContract) external onlyOwner {
        floorContracts[_index] = _floorContract;
    }

    function _acceptDividends(uint256 _value) internal {
        uint256 beneficiaryShare = _value / 5;
        uint256 poolShare = _value.sub(beneficiaryShare);

        beneficiary.transfer(beneficiaryShare);

        emit Dividend(poolShare);
    }

    function acceptDividends(uint256 _value, uint32 _floorIndex) external {
        require(floorContracts[_floorIndex] == msg.sender);

        _acceptDividends(_value);
    }

    function rewardTokensFloor(address _user, uint256 _tokens, uint32 _floorIndex) external {
        require(floorContracts[_floorIndex] == msg.sender);

        _mintTokens(_user, _tokens);
    }

    function rewardTokens(address _user, uint256 _tokens) external onlyMinters {
        _mintTokens(_user, _tokens);
    }

    function() payable public {
        // Intentionally left empty, for use by floors
    }

    function payoutDividends(address _user, uint256 _value) external onlyOracle {
        _user.transfer(_value);

        emit Withdrawal(_user, _value);
    }

    function accountAuth(uint256 /*_challenge*/) external {
        // Does nothing by design
    }

    function burn(uint256 _amount) external {
        require(balances[msg.sender] >= _amount);

        balances[msg.sender] = balances[msg.sender].sub(_amount);
        totalSupply_ = totalSupply_.sub(_amount);

        emit Burn(msg.sender, _amount);
    }

    function setCanAcceptTokens(address _address, bool _value) external onlyOwner {
        canAcceptTokens[_address] = _value;
    }

    function setIsMinter(address _address, bool _value) external onlyOwner {
        isMinter[_address] = _value;
    }

    function _invokeTokenRecipient(address _from, address _to, uint256 _value, uint256 _param1, uint256 _param2, uint256 _param3) internal {
        if (!canAcceptTokens[_to]) {
            return;
        }

        AcceptsTokens recipient = AcceptsTokens(_to);

        recipient.acceptTokens(_from, _value, _param1, _param2, _param3);
    }

    /**
    * @dev transfer token for a specified address and forward the parameters to token recipient if any
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    * @param _param1 Parameter 1 for the token recipient
    * @param _param2 Parameter 2 for the token recipient
    * @param _param3 Parameter 3 for the token recipient
    */
    function transferWithParams(address _to, uint256 _value, uint256 _param1, uint256 _param2, uint256 _param3) onlyPayloadSize(5 * 32) external returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);

        _invokeTokenRecipient(msg.sender, _to, _value, _param1, _param2, _param3);

        return true;
    }

    /**
    * @dev Hook for custom actions to be executed after transfer has completed
    * @param _from Transferred from
    * @param _to Transferred to
    * @param _value Value transferred
    */
    function _postTransferHook(address _from, address _to, uint256 _value) internal {
        _invokeTokenRecipient(_from, _to, _value, 0, 0, 0);
    }


}

contract PresaleContract is Owned {
    ETToken public tokenContract;

    /// @dev Contract constructor
    function PresaleContract(address _tokenContract) public {
        tokenContract = ETToken(_tokenContract);
    }
}



contract ETPotatoPresale is PresaleContract {
    using SafeMath for uint;

    uint256 public auctionEnd;
    uint256 public itemType;

    address public highestBidder;
    uint256 public highestBid = 0.001 ether;
    bool public ended;

    event Bid(address from, uint256 amount);
    event AuctionEnded(address winner, uint256 amount);

    function ETPotatoPresale(address _presaleToken, uint256 _auctionEnd, uint256 _itemType)
        PresaleContract(_presaleToken)
        public
    {
        auctionEnd = _auctionEnd;
        itemType = _itemType;
    }

    function _isContract(address _user) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(_user) }
        return size > 0;
    }

    function auctionExpired() public view returns (bool) {
        return now > auctionEnd;
    }

    function nextBid() public view returns (uint256) {
        if (highestBid < 0.1 ether) {
            return highestBid.add(highestBid / 2);
        } else if (highestBid < 1 ether) {
            return highestBid.add(highestBid.mul(15).div(100));
        } else {
            return highestBid.add(highestBid.mul(8).div(100));
        }
    }

    function() public payable {
        require(!_isContract(msg.sender));
        require(!auctionExpired());

        uint256 requiredBid = nextBid();

        require(msg.value >= requiredBid);

        uint256 change = msg.value.sub(requiredBid);

        uint256 difference = requiredBid.sub(highestBid);
        uint256 reward = difference / 4;

        if (highestBidder != 0x0) {
            highestBidder.transfer(highestBid.add(reward));
        }

        if (change > 0) {
            msg.sender.transfer(change);
        }

        highestBidder = msg.sender;
        highestBid = requiredBid;

        emit Bid(msg.sender, requiredBid);
    }

    function endAuction() public onlyOwner {
        require(auctionExpired());
        require(!ended);

        ended = true;
        emit AuctionEnded(highestBidder, highestBid);
        tokenContract.rewardTokens(highestBidder, highestBid * 200);

        owner.transfer(address(this).balance);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"ended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextBid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"auctionEnd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"auctionExpired","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"highestBidder","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"highestBid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"itemType","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_presaleToken","type":"address"},{"name":"_auctionEnd","type":"uint256"},{"name":"_itemType","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Bid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AuctionEnded","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405266038d7ea4c68000600555341561001a57600080fd5b60405160608061066783398101604052808051919060200180519190602001805160008054600160a060020a03338116600160a060020a031992831617909255600180549290971691161790945550506002556003556105e88061007f6000396000f3006060604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312fa6feb811461021c57806327151526146102435780632a24f46c1461026857806355a373d61461027b5780636a3f5146146102aa57806391f90157146102bd578063d57bde79146102d0578063f5470d7b146102e3578063fe67a54b146102f6575b6000806000806100a73361030b565b156100b157600080fd5b6100b9610313565b156100c357600080fd5b6100cb61031c565b935034849010156100db57600080fd5b6100eb348563ffffffff6103b016565b9250610102600554856103b090919063ffffffff16565b6004805491935083049150600160a060020a03161561016657600454600554600160a060020a03909116906108fc90610141908463ffffffff6103c216565b9081150290604051600060405180830381858888f19350505050151561016657600080fd5b60008311156101a057600160a060020a03331683156108fc0284604051600060405180830381858888f1935050505015156101a057600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0381169190911790915560058590557fe684a55f31b79eca403df938249029212a5925ec6be8012e099b45bc1019e5d29085604051600160a060020a03909216825260208201526040908101905180910390a150505050005b341561022757600080fd5b61022f6103dc565b604051901515815260200160405180910390f35b341561024e57600080fd5b61025661031c565b60405190815260200160405180910390f35b341561027357600080fd5b6102566103e5565b341561028657600080fd5b61028e6103eb565b604051600160a060020a03909116815260200160405180910390f35b34156102b557600080fd5b61022f610313565b34156102c857600080fd5b61028e6103fa565b34156102db57600080fd5b610256610409565b34156102ee57600080fd5b61025661040f565b341561030157600080fd5b610309610415565b005b6000903b1190565b60025442115b90565b600067016345785d8a000060055410156103475760055461034090600281046103c2565b9050610319565b670de0b6b3a76400006005541015610392576103406103836064610377600f60055461057a90919063ffffffff16565b9063ffffffff6105a516565b6005549063ffffffff6103c216565b6103406103836064610377600860055461057a90919063ffffffff16565b6000828211156103bc57fe5b50900390565b6000828201838110156103d157fe5b8091505b5092915050565b60065460ff1681565b60025481565b600154600160a060020a031681565b600454600160a060020a031681565b60055481565b60035481565b60005433600160a060020a0390811691161461043057600080fd5b610438610313565b151561044357600080fd5b60065460ff161561045357600080fd5b6006805460ff191660011790556004546005547fdaec4582d5d9595688c8c98545fdd1c696d41c6aeaeb636737e84ed2f5c00eda91600160a060020a031690604051600160a060020a03909216825260208201526040908101905180910390a1600154600454600554600160a060020a03928316926381a4af1592169060c8026040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561052f57600080fd5b5af1151561053c57600080fd5b5050600054600160a060020a03908116915030163180156108fc0290604051600060405180830381858888f19350505050151561057857600080fd5b565b60008083151561058d57600091506103d5565b5082820282848281151561059d57fe5b04146103d157fe5b60008082848115156105b357fe5b049493505050505600a165627a7a723058208955545c9a8c2a50fa441f05c4892d1f3263e4ffd96583d6c19692f4ad33fa8600290000000000000000000000008fe19c447821b4cdcdd5012bca1b5469ca96d80d000000000000000000000000000000000000000000000000000000005ab5a3100000000000000000000000000000000000000000000000000000000000000003

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008fe19c447821b4cdcdd5012bca1b5469ca96d80d000000000000000000000000000000000000000000000000000000005ab5a3100000000000000000000000000000000000000000000000000000000000000003

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008fe19c447821b4cdcdd5012bca1b5469ca96d80d
Arg [1] : 000000000000000000000000000000000000000000000000000000005ab5a310
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003


   Swarm Source:
bzzr://8955545c9a8c2a50fa441f05c4892d1f3263e4ffd96583d6c19692f4ad33fa86

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.