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

TxHash Age From To Value [TxFee]
0x3e17381d9b7a8f7c964c1a9dce06c74e34c3926728ca77140a10c4333bbce7db141 days 13 hrs ago0xa83db3c38122ac9bfcc140a2bc10a916bb396476  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.13090246875 Ether0.000042726
0x9fe8d252cf545c8a86433e59a867d5a54ac6855c7aa68b3c923c8a8ea4c497ca272 days 7 hrs ago0x2efde4863c1920d34dc12dbc06b7f6fb8c77d86f  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110 Ether0.000090042
0xe72f93537fdf4f54404c8c69dc4ea9a0481099809f678e10bbb195a16849096f272 days 12 hrs ago0x380b790ff04efce9914d75f4bfb015083275398c  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.1292454375 Ether0.000042726
0x84be262e17cc2fbfa002a98ff6ef050e74d922ca60e25f8703787e3ef5b51dfe284 days 14 hrs ago0x87fc0cdb581f84456c02f20ec1a844d95803c437  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.30137034375 Ether0.000042726
0x85aed427b3871e473a72be07878cdffca5521a2229e2a52b0205c584a1606be0287 days 16 hrs ago0x2efde4863c1920d34dc12dbc06b7f6fb8c77d86f  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110 Ether0.000081561
0x92a609b7925f2cdce19fc025cb3b5facaa42f8a60f91febb1ac06e11bb1e007c287 days 16 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.89869875 Ether0.000791181
0xb6282b43b486760676f47064217190a56255db401997b50472e6c72771a5371f287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.89838625 Ether0.000776231
0x1d92c3d7d390880658a0cb15f67c846f8cfad9fa5f70c83b7909d9a750b60772287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.8977925 Ether0.000756805
0xb6f330c5fe0708759eeb8cb323223e81e42bf9d887da19f1ac9e8f9a763d2847287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.89719875 Ether0.000741855
0xe6a7eb5f4b9c00cada1c0e2edd8079abde7c5f6f90872f311892eacbb2460993287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.89719875 Ether0.000756805
0x1962dbba64b5dc2b9dfb02fc210c930cf183ae149647cfe4fd8018a2ae2fd2db287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.89688625 Ether0.000741855
0x70a714ebaa197cbbe31044c3b1677e90b0ff158dc909f1d9fa754373d6cb8061287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.89688625 Ether0.000776231
0x384242df16c69fceceaa5581591caba9d2536364c31d2172e63343f4401237fc287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.896276875 Ether0.000756805
0xd4120590e721705450fc8d89db1915bc07e1d2d67e8d0aaa9ff0f9810bd1eb2a287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.896276875 Ether0.000776231
0x56daa470979b96a8a936bbae1bb9b40f35c9360bed3a348b94641a9b9ea2f87c287 days 17 hrs ago0x0156e49ad3e989a174d031c593f8f99587728a24  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.895964375 Ether0.000791181
0xb097566fbe5aaa45f09e1b983c810439217bcf8e71ea54c68a9636214c95a7dd287 days 18 hrs ago0x308e9c99ac194101c971ffcaca897ac943843de8  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.4479040625 Ether0.001297413
0x3082512e8dc0bba29a540ab862d61cf5595873f50d576400a0fefe2adadf7205287 days 19 hrs ago0x308e9c99ac194101c971ffcaca897ac943843de8  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.4478259375 Ether0.001252563
0xad23db3baa9158081cacdf711e513dbc6713a6bfe9c6f0756cd54d5673d4b44c287 days 20 hrs ago0xaa24875b7bfd15364af1063f8c1330c53146b81f  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.895339375 Ether0.000776231
0x511dfbb946c960d62159b06f7954a005bb87a6964519c6f1bb4e117a6624092d287 days 21 hrs ago0xaa24875b7bfd15364af1063f8c1330c53146b81f  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.895026875 Ether0.000821181
0xe595431e7b6ae9b4ea1903ec058b2ce0da06002137d7c7455a0078ebabcb25eb287 days 22 hrs ago0x404c9f3d065d34e6ed7f0269907fd0b5c6f886d1  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.894714375 Ether0.001642362
0x04a63dea5238b5adf4535c8f1d0db382a0df98159ae02687e1b1bfc7fc0899e5288 days 47 mins ago0xd797d5784f43de300ec0d6bc34fc86023c5d71ce  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.0447349375 Ether0.000966959
0x35be3dd8073bd1df417820dbd07d091215f29ba1ad236e38e08be9ac2456fa06288 days 2 hrs ago0x308e9c99ac194101c971ffcaca897ac943843de8  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.04473415625 Ether0.000279561
0x62d796e361741d2e29e5582a1968e8de335c7c9cb09c0f87929b69f4137c7279288 days 2 hrs ago0x308e9c99ac194101c971ffcaca897ac943843de8  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.044733375 Ether0.000093187
0xb2ad16075fdbec47a112b6ee5f3c88ea270c4633babe19c85c6ae3b178f5c4d7288 days 2 hrs ago0x308e9c99ac194101c971ffcaca897ac943843de8  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.04473259375 Ether0.000093187
0x1e0d605d9d73dfd0bd11fd0679ed0e8fe2f3186d5ee92426441b080b003d38b2288 days 3 hrs ago0xe02fb1fc5b75c1682453383d22ca444484b062ba  IN   0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110.13419075 Ether0.000161939
[ 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
0x9fe8d252cf545c8a86433e59a867d5a54ac6855c7aa68b3c923c8a8ea4c497ca5504954272 days 7 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x2efde4863c1920d34dc12dbc06b7f6fb8c77d86f155.3122415 Ether
0x92a609b7925f2cdce19fc025cb3b5facaa42f8a60f91febb1ac06e11bb1e007c5414745287 days 16 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.000078125 Ether
0xb6282b43b486760676f47064217190a56255db401997b50472e6c72771a5371f5414734287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.000078125 Ether
0x1d92c3d7d390880658a0cb15f67c846f8cfad9fa5f70c83b7909d9a750b607725414728287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.0446818125 Ether
0xb6f330c5fe0708759eeb8cb323223e81e42bf9d887da19f1ac9e8f9a763d28475414725287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.04437009375 Ether
0xe6a7eb5f4b9c00cada1c0e2edd8079abde7c5f6f90872f311892eacbb24609935414719287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.044652125 Ether
0x1962dbba64b5dc2b9dfb02fc210c930cf183ae149647cfe4fd8018a2ae2fd2db5414718287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.04462165625 Ether
0x70a714ebaa197cbbe31044c3b1677e90b0ff158dc909f1d9fa754373d6cb80615414711287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.000078125 Ether
0x384242df16c69fceceaa5581591caba9d2536364c31d2172e63343f4401237fc5414703287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.0445911875 Ether
0xd4120590e721705450fc8d89db1915bc07e1d2d67e8d0aaa9ff0f9810bd1eb2a5414701287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.000078125 Ether
0x56daa470979b96a8a936bbae1bb9b40f35c9360bed3a348b94641a9b9ea2f87c5414692287 days 17 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.000078125 Ether
0xb097566fbe5aaa45f09e1b983c810439217bcf8e71ea54c68a9636214c95a7dd5414336287 days 18 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x308e9c99ac194101c971ffcaca897ac943843de80.0000390625 Ether
0x3082512e8dc0bba29a540ab862d61cf5595873f50d576400a0fefe2adadf72055414074287 days 19 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x308e9c99ac194101c971ffcaca897ac943843de80.0000390625 Ether
0xad23db3baa9158081cacdf711e513dbc6713a6bfe9c6f0756cd54d5673d4b44c5413947287 days 20 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110xaa24875b7bfd15364af1063f8c1330c53146b81f0.000078125 Ether
0x511dfbb946c960d62159b06f7954a005bb87a6964519c6f1bb4e117a6624092d5413680287 days 21 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110xaa24875b7bfd15364af1063f8c1330c53146b81f0.000078125 Ether
0xe595431e7b6ae9b4ea1903ec058b2ce0da06002137d7c7455a0078ebabcb25eb5413218287 days 22 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x404c9f3d065d34e6ed7f0269907fd0b5c6f886d10.000078125 Ether
0x04a63dea5238b5adf4535c8f1d0db382a0df98159ae02687e1b1bfc7fc0899e55412741288 days 47 mins ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110xd797d5784f43de300ec0d6bc34fc86023c5d71ce0.00000390625 Ether
0x35be3dd8073bd1df417820dbd07d091215f29ba1ad236e38e08be9ac2456fa065412376288 days 2 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x308e9c99ac194101c971ffcaca897ac943843de80.00000390625 Ether
0x62d796e361741d2e29e5582a1968e8de335c7c9cb09c0f87929b69f4137c72795412317288 days 2 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x308e9c99ac194101c971ffcaca897ac943843de80.00000390625 Ether
0xb2ad16075fdbec47a112b6ee5f3c88ea270c4633babe19c85c6ae3b178f5c4d75412275288 days 2 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x308e9c99ac194101c971ffcaca897ac943843de80.00000390625 Ether
0x1e0d605d9d73dfd0bd11fd0679ed0e8fe2f3186d5ee92426441b080b003d38b25412066288 days 3 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110xe02fb1fc5b75c1682453383d22ca444484b062ba0.00001171875 Ether
0xa85c2274668897d56d189b355e801c282fc81122215b31344e2dcb66c4af2dd55411729288 days 4 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.0307784375 Ether
0xc99e768a7807bacddc31d38bf6db0e4ef10bcc227a4c1af67b336066d344f61e5411580288 days 5 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.0335619375 Ether
0x1f2efb11fc0e871bbf95020a7181eb4e56e1c74b225840a282786984351402bd5411580288 days 5 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.04195625 Ether
0x99c97771432fef813b89aba6ce3938f1a10bfee15084a70885613cf0644074375411580288 days 5 hrs ago0x5cb92b06ca0226e0a2c5fc8ee23e9cc66b1a4e110x0156e49ad3e989a174d031c593f8f99587728a240.03374240625 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: ETCharPresale_v2
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 ETCharPresale_v2 is PresaleContract {
    using SafeMath for uint;

    bool public enabled = true;
    uint32 public maxCharId = 10000;
    uint32 public currentCharId = 2000;

    uint256 public currentPrice = 0.02 ether;

    mapping (uint32 => address) public owners;
    mapping (address => uint32[]) public characters;

    bool public awardTokens = true;

    event Purchase(address from, uint32 charId, uint256 amount);

    function ETCharPresale_v2(address _presaleToken)
    PresaleContract(_presaleToken)
    public
    {
    }

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

    function _provideChars(address _address, uint32 _number) internal {

        for (uint32 i = 0; i < _number; i++) {
            owners[currentCharId + i] = _address;
            characters[_address].push(currentCharId + i);
            emit Purchase(_address, currentCharId + i, currentPrice);
        }

        currentCharId += _number;
        currentPrice += priceIncrease() * _number;
    }

    function priceIncrease() public view returns (uint256) {
        uint256 _currentPrice = currentPrice;

        if (_currentPrice > 0.0425 ether) {
            return 0.00078125 finney;
        } else {
            return 0.028 finney;
        }
    }

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

        require(msg.value >= currentPrice);

        uint32 chars = uint32(msg.value.div(currentPrice));

        require(chars <= 100);

        if (chars > 50) {
            chars = 50;
        }

        require(currentCharId + chars - 1 <= maxCharId);

        uint256 purchaseValue = currentPrice.mul(chars);
        uint256 change = msg.value.sub(purchaseValue);

        _provideChars(msg.sender, chars);

        if (awardTokens) {
            tokenContract.rewardTokens(msg.sender, purchaseValue * 200);
        }

        if (currentCharId > maxCharId) {
            enabled = false;
        }

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

    function setEnabled(bool _enabled) public onlyOwner {
        enabled = _enabled;
    }

    function setMaxCharId(uint32 _maxCharId) public onlyOwner {
        maxCharId = _maxCharId;
    }

    function setCurrentPrice(uint256 _currentPrice) public onlyOwner {
        currentPrice = _currentPrice;
    }

    function setAwardTokens(bool _awardTokens) public onlyOwner {
        awardTokens = _awardTokens;
    }

    function withdraw() public onlyOwner {
        owner.transfer(address(this).balance);
    }

    function charactersOf(address _user) public view returns (uint32[]) {
        return characters[_user];
    }

    function charactersCountOf(address _user) public view returns (uint256) {
        return characters[_user].length;
    }

    function getCharacter(address _user, uint256 _index) public view returns (uint32) {
        return characters[_user][_index];
    }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"maxCharId","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_currentPrice","type":"uint256"}],"name":"setCurrentPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"enabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_enabled","type":"bool"}],"name":"setEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_maxCharId","type":"uint32"}],"name":"setMaxCharId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_awardTokens","type":"bool"}],"name":"setAwardTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"awardTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"charactersOf","outputs":[{"name":"","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"characters","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"charactersCountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentCharId","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"},{"name":"_index","type":"uint256"}],"name":"getCharacter","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceIncrease","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_presaleToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"charId","type":"uint32"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Purchase","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600180547401000000000000000000000000000000000000000060a060020a60ff02199091161760a860020a63ffffffff0219167627100000000000000000000000000000000000000000001760c860020a63ffffffff0219167a07d00000000000000000000000000000000000000000000000000017815566470de4df8200006002556005805460ff1916909117905534156100a057600080fd5b604051602080610c5e8339810160405280805160008054600160a060020a03338116600160a060020a031992831617909255600180549290931691161790555050610b6e806100f06000396000f3006060604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630558171d8114610302578063180dc3181461032e57806318b2007114610366578063238dafe01461037e578063328d8f72146103a55780633c7097a3146103bd5780633ccfd60b146103d957806355a373d6146103ec5780636779da43146103ff57806370d07575146104175780639d1b464a1461042a578063a0a76eb01461044f578063b1c8ffd1146104c1578063d214becb146104e3578063dced2f1a14610502578063e4cb30ad14610515578063f8c3405014610537575b6000806000600160149054906101000a900460ff16151561011057600080fd5b6101193361054a565b1561012357600080fd5b60025434101561013257600080fd5b60025461014690349063ffffffff61055216565b9250606463ffffffff8416111561015c57600080fd5b60328363ffffffff16111561017057603292505b6001547501000000000000000000000000000000000000000000810463ffffffff90811660c860020a90920481168501600019011611156101b057600080fd5b6002546101c69063ffffffff8086169061056e16565b91506101d8348363ffffffff6105a016565b90506101e433846105b2565b60055460ff161561027257600154600160a060020a03166381a4af153360c885026040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561026157600080fd5b5af1151561026e57600080fd5b5050505b60015463ffffffff75010000000000000000000000000000000000000000008204811660c860020a9092041611156102c3576001805474ff0000000000000000000000000000000000000000191690555b60008111156102fd57600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156102fd57600080fd5b505050005b341561030d57600080fd5b610315610750565b60405163ffffffff909116815260200160405180910390f35b341561033957600080fd5b61034a63ffffffff60043516610775565b604051600160a060020a03909116815260200160405180910390f35b341561037157600080fd5b61037c600435610790565b005b341561038957600080fd5b6103916107b0565b604051901515815260200160405180910390f35b34156103b057600080fd5b61037c60043515156107d1565b34156103c857600080fd5b61037c63ffffffff6004351661082c565b34156103e457600080fd5b61037c610891565b34156103f757600080fd5b61034a6108e7565b341561040a57600080fd5b61037c60043515156108f6565b341561042257600080fd5b610391610924565b341561043557600080fd5b61043d61092d565b60405190815260200160405180910390f35b341561045a57600080fd5b61046e600160a060020a0360043516610933565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104ad578082015183820152602001610495565b505050509050019250505060405180910390f35b34156104cc57600080fd5b610315600160a060020a03600435166024356109e2565b34156104ee57600080fd5b61043d600160a060020a0360043516610a2a565b341561050d57600080fd5b610315610a45565b341561052057600080fd5b610315600160a060020a0360043516602435610a58565b341561054257600080fd5b61043d610aaa565b6000903b1190565b600080828481151561056057fe5b0490508091505b5092915050565b6000808315156105815760009150610567565b5082820282848281151561059157fe5b041461059957fe5b9392505050565b6000828211156105ac57fe5b50900390565b60005b8163ffffffff168163ffffffff1610156106f3576001805460c860020a900463ffffffff9081168301166000908152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0389169081179091558352600490915290208054909181016106328382610ada565b916000526020600020906008918282040191900660040283600160199054906101000a900463ffffffff1601909190916101000a81548163ffffffff021916908363ffffffff160217905550507f4c029ee41a1d640ba5061f322b09a545f4926fa4337e418b63eca082ee3b5e318382600160199054906101000a900463ffffffff1601600254604051600160a060020a03909316835263ffffffff90911660208301526040808301919091526060909101905180910390a16001016105b5565b6001805463ffffffff60c860020a808304821686018216027fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179091558216610740610aaa565b6002805491909202019055505050565b6001547501000000000000000000000000000000000000000000900463ffffffff1681565b600360205260009081526040902054600160a060020a031681565b60005433600160a060020a039081169116146107ab57600080fd5b600255565b60015474010000000000000000000000000000000000000000900460ff1681565b60005433600160a060020a039081169116146107ec57600080fd5b60018054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60005433600160a060020a0390811691161461084757600080fd5b6001805463ffffffff90921675010000000000000000000000000000000000000000000278ffffffff00000000000000000000000000000000000000000019909216919091179055565b60005433600160a060020a039081169116146108ac57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156108e557600080fd5b565b600154600160a060020a031681565b60005433600160a060020a0390811691161461091157600080fd5b6005805460ff1916911515919091179055565b60055460ff1681565b60025481565b61093b610b13565b6004600083600160a060020a0316600160a060020a031681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156109d657602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116109995790505b50505050509050919050565b6004602052816000526040600020818154811015156109fd57fe5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b600160a060020a031660009081526004602052604090205490565b60015460c860020a900463ffffffff1681565b600160a060020a0382166000908152600460205260408120805483908110610a7c57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16905092915050565b6002546000906696fd865af44000811115610acc5764b5e620f4809150610ad6565b651977420dc00091505b5090565b815481835581811511610b0e576007016008900481600701600890048360005260206000209182019101610b0e9190610b25565b505050565b60206040519081016040526000815290565b610b3f91905b80821115610ad65760008155600101610b2b565b905600a165627a7a7230582018935d36a547ffbeafbd04bb7202d7a42cd926019754fa1635f423cf5647921900290000000000000000000000008fe19c447821b4cdcdd5012bca1b5469ca96d80d

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008fe19c447821b4cdcdd5012bca1b5469ca96d80d


   Swarm Source:
bzzr://18935d36a547ffbeafbd04bb7202d7a42cd926019754fa1635f423cf56479219

 

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.