Sponsored:   Ubex.com - Additional 17% of tokens are available for purchase! Trading on exchanges already started.
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 435 txns
 Latest 25 txns from a total Of 435 transactions

TxHash Age From To Value [TxFee]
0x16984ac06c4f0ffa619a60c67643160c7dcbce37e4a334ef609beb2bcb4f794f15 days 13 hrs ago0xfcf0d60d7240baa5beb6e362be48be43e7c1068d  IN   0x6119e1f7696220af11120879e04d9f782e3933731.069686262 Ether0.000348736
0xe304895c3130f6ba6b77b298debe16578b853bfb2ef10314016fb74d408e164015 days 13 hrs ago0xfcf0d60d7240baa5beb6e362be48be43e7c1068d  IN   0x6119e1f7696220af11120879e04d9f782e3933731.069686262 Ether0.00130776
0xf94a23187079e00bfad66e1c14af7313488b5e6186aada3872c96b302cbb3d1815 days 13 hrs ago0xfcf0d60d7240baa5beb6e362be48be43e7c1068d  IN   0x6119e1f7696220af11120879e04d9f782e3933731.07062335 Ether0.000174368
0x0dc795ad0b8a0c0384f0d664c4b9b7fecb6d8cbb4e3a3fe5441a67c69e54fd4b16 days 7 hrs ago0x30dd50d09f65d025fa9feee20a29e5229fba8bc0  IN   0x6119e1f7696220af11120879e04d9f782e3933730.01 Ether0.000021796
0xa26d6d2806252956de1a7f16c4440dd747939b88add865e0672a92f8ea7d6e0d16 days 7 hrs ago0x30dd50d09f65d025fa9feee20a29e5229fba8bc0  IN   0x6119e1f7696220af11120879e04d9f782e3933730.015 Ether0.000021796
0x660b8311f2fd65cb8f8e2e76cdf6915cf1f3b4edd66e5178fa61a7965939653516 days 8 hrs ago0x30dd50d09f65d025fa9feee20a29e5229fba8bc0  IN   0x6119e1f7696220af11120879e04d9f782e3933730.02 Ether0.000021796
0x62ea8eef49a5bf04dbc519dcf2d915901fef740a358d42191f06012686c165e916 days 10 hrs ago0x30dd50d09f65d025fa9feee20a29e5229fba8bc0  IN   0x6119e1f7696220af11120879e04d9f782e3933730.02827553 Ether0.000861
0xd62385f00aadc000b45b5454b0b044dee1f8372ed52943a26d5791981e88aa2528 days 14 hrs ago0x850f8b608efe73966d55f3380845015c467e9086  IN   0x6119e1f7696220af11120879e04d9f782e3933730 Ether0.000869815
0xc3f05b8d35fd4a545f644d662fdcf977338ae39416c887558b63d8c8e407f2e728 days 14 hrs ago0x827d1c65d19cf7382161346f90d3c1b43260f4c3  IN   0x6119e1f7696220af11120879e04d9f782e3933730 Ether0.000875227
0x6217fa3d78d1766816442e8d0b0f0fb464a89ca7f31feb88038d8245fa18f43e28 days 14 hrs ago0xe4478843d1f28a31748e0b0e862a360a34b0d575  IN   0x6119e1f7696220af11120879e04d9f782e3933730 Ether0.000893513
0xb32df666253cbb270e7cd32e95ea8b48a50989202cbb9c003e9d05c71a20ce9928 days 18 hrs ago0x3fcadc4145c1ceee77d551ccfe89632421d344ba  IN   0x6119e1f7696220af11120879e04d9f782e3933730.2 Ether0.00702816
0x526aa8ea1cbc67ca2c5b45077fd9bc5c8211fbe12bd8606b60b66b2675866ec328 days 18 hrs ago0xbcee1c08a1ee0774bee5ba89d40da324d9a3f9fc  IN   0x6119e1f7696220af11120879e04d9f782e3933730.1417636 Ether0.0010717944
0xb7f1b1cd35517ef796adafacc0b31a75b64bf101a4d321a595f3428b8f0c37a228 days 18 hrs ago0x14798a85c0f99dedd8e1a20833556e35310a838e  IN   0x6119e1f7696220af11120879e04d9f782e3933730.28 Ether0.000972816
0x208e541ff19ab0a8660c68f0c48e41f27ee8f179ed0093bbc0a69c8d77b11af328 days 19 hrs ago0x850f8b608efe73966d55f3380845015c467e9086  IN   0x6119e1f7696220af11120879e04d9f782e3933730 Ether0.000869815
0xa900d51c4724f23f0bdffd6e2567f36fc5a09be1abc64c792ae77cc5da8dbb0728 days 19 hrs ago0x827d1c65d19cf7382161346f90d3c1b43260f4c3  IN   0x6119e1f7696220af11120879e04d9f782e3933730 Ether0.000875227
0xae699940cbb88c169c07fec8c7f75083f2e5d3d50a75df122af3b1d7b2176b6b28 days 19 hrs ago0xe4478843d1f28a31748e0b0e862a360a34b0d575  IN   0x6119e1f7696220af11120879e04d9f782e3933730 Ether0.000893513
0x945d67660d0708a14c8e09261e8381572146f36065c7b8259ef359e67de6497628 days 19 hrs ago0x14798a85c0f99dedd8e1a20833556e35310a838e  IN   0x6119e1f7696220af11120879e04d9f782e3933730.28 Ether0.0000462
0xaa2e7963b388b4154aa349dd0229b37f6e454c322787fc588502d4b4f6b3e15e28 days 19 hrs ago0x0610b26e5c765075d6dc44d9f02d1f01d412c106  IN   0x6119e1f7696220af11120879e04d9f782e39337315.26 Ether0.00702816
0xa02fbeb4e25338378780a0eaf1f0127ce9ab68a4b464fd16f7b28c534c1b7d6428 days 19 hrs ago0xe2de3de0c9580e85409a9bdce4d1dd8e9c336d24  IN   0x6119e1f7696220af11120879e04d9f782e3933733.5 Ether0.00174272
0x1503cf21f09ddded64e3976d9502f653174aafc39878bfd5107aeb0a09d47e4428 days 19 hrs ago0xfdda61eeb05b03c7a38b490c7601191331b3667e  IN   0x6119e1f7696220af11120879e04d9f782e3933730.6 Ether0.0001281
0x1441df4029ba6bad1e0256375914993eeb683f88d25992f43cec2642d232d3bd28 days 20 hrs ago0xd098f7104416aa95b47652b444ff26fb6ae2f2b6  IN   0x6119e1f7696220af11120879e04d9f782e3933730.28 Ether0.000702816
0x8cf6b07e2389be5009546f43bcfe6047360d2931293d2797118a7def9b20824428 days 20 hrs ago0x306f54626c90ea5a7ff064b98c435bf876dd8ff9  IN   0x6119e1f7696220af11120879e04d9f782e3933730.5 Ether0.004802576
0x52f00ff408809f61b191191202c222081501a200b0a91346a4839fc929a28e9028 days 23 hrs ago0xbfbe4dbf1517d4c896d6ccbd727c8c9c696d77e9  IN   0x6119e1f7696220af11120879e04d9f782e3933730.1 Ether0.00702816
0xe59e663dc1267ae1d1d3e3ef39bd2d73c5562becbbec0d278ca79ec82e12543029 days 50 mins ago0x64089085f442ec31b72bdbbaf9b7d1ffb37eb5f5  IN   0x6119e1f7696220af11120879e04d9f782e3933736.99592628 Ether0.00702816
0xe70d2f8b0f939db7109b644aaee00db80b2cc3aeeccbf1f4baf245d96a46735829 days 2 hrs ago0xf802cf8f4b2152a61f485fc547527a58190107a2  IN   0x6119e1f7696220af11120879e04d9f782e3933730.15 Ether0.01
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 6 Internal Transactions

ParentTxHash Block Age From To Value
0xd62385f00aadc000b45b5454b0b044dee1f8372ed52943a26d5791981e88aa25598761428 days 14 hrs ago0x6119e1f7696220af11120879e04d9f782e3933730x292fdfdd7e2967fc0251e35a2ef6cba3f312dad70.207254533333333332 Ether
0xc3f05b8d35fd4a545f644d662fdcf977338ae39416c887558b63d8c8e407f2e7598760928 days 14 hrs ago0x6119e1f7696220af11120879e04d9f782e3933730x292fdfdd7e2967fc0251e35a2ef6cba3f312dad70.207254533333333332 Ether
0x6217fa3d78d1766816442e8d0b0f0fb464a89ca7f31feb88038d8245fa18f43e598760028 days 14 hrs ago0x6119e1f7696220af11120879e04d9f782e3933730x292fdfdd7e2967fc0251e35a2ef6cba3f312dad70.207254533333333336 Ether
0x208e541ff19ab0a8660c68f0c48e41f27ee8f179ed0093bbc0a69c8d77b11af3598657728 days 19 hrs ago0x6119e1f7696220af11120879e04d9f782e3933730x292fdfdd7e2967fc0251e35a2ef6cba3f312dad7155.298615457348067342 Ether
0xa900d51c4724f23f0bdffd6e2567f36fc5a09be1abc64c792ae77cc5da8dbb07598657128 days 19 hrs ago0x6119e1f7696220af11120879e04d9f782e3933730x292fdfdd7e2967fc0251e35a2ef6cba3f312dad7155.298615457348067342 Ether
0xae699940cbb88c169c07fec8c7f75083f2e5d3d50a75df122af3b1d7b2176b6b598656328 days 19 hrs ago0x6119e1f7696220af11120879e04d9f782e3933730x292fdfdd7e2967fc0251e35a2ef6cba3f312dad7155.298615457348067668 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to EventStructWrongData (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: ProdPublicSale
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

// our mirrors:
// ftec.io
// ftec.ai 
// our official Telegram group:
// t.me/FTECofficial

pragma solidity ^0.4.18;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a * b;
        assert(a == 0 || 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;
    }
}

contract MultiOwnable {

    mapping (address => bool) public isOwner;
    address[] public ownerHistory;

    event OwnerAddedEvent(address indexed _newOwner);
    event OwnerRemovedEvent(address indexed _oldOwner);

    function MultiOwnable() public {
        // Add default owner
        address owner = msg.sender;
        ownerHistory.push(owner);
        isOwner[owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner[msg.sender]);
        _;
    }
    
    function ownerHistoryCount() public view returns (uint) {
        return ownerHistory.length;
    }

    /** Add extra owner. */
    function addOwner(address owner) onlyOwner public {
        require(owner != address(0));
        require(!isOwner[owner]);
        ownerHistory.push(owner);
        isOwner[owner] = true;
        OwnerAddedEvent(owner);
    }

    /** Remove extra owner. */
    function removeOwner(address owner) onlyOwner public {
        require(isOwner[owner]);
        isOwner[owner] = false;
        OwnerRemovedEvent(owner);
    }
}

contract Pausable is MultiOwnable {

    bool public paused;

    modifier ifNotPaused {
        require(!paused);
        _;
    }

    modifier ifPaused {
        require(paused);
        _;
    }

    // Called by the owner on emergency, triggers paused state
    function pause() external onlyOwner ifNotPaused {
        paused = true;
    }

    // Called by the owner on end of emergency, returns to normal state
    function resume() external onlyOwner ifPaused {
        paused = false;
    }
}

contract ERC20 {

    uint256 public totalSupply;

    function balanceOf(address _owner) public view returns (uint256 balance);

    function transfer(address _to, uint256 _value) public returns (bool success);

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    function approve(address _spender, uint256 _value) public returns (bool success);

    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract StandardToken is ERC20 {
    
    using SafeMath for uint;

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

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    /// @dev Allows allowed third party to transfer tokens from one address to another. Returns success.
    /// @param _from Address from where tokens are withdrawn.
    /// @param _to Address to where tokens are sent.
    /// @param _value Number of tokens to transfer.
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        
        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;
    }

    /// @dev Sets approved amount of tokens for spender. Returns success.
    /// @param _spender Address of allowed account.
    /// @param _value Number of approved tokens.
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /// @dev Returns number of allowed tokens for given address.
    /// @param _owner Address of token owner.
    /// @param _spender Address of token spender.
    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
}

contract CommonToken is StandardToken, MultiOwnable {
    
    string public constant name   = 'FTEC';
    string public constant symbol = 'FTEC';
    uint8 public constant decimals = 18;
    
    uint256 public saleLimit;   // 85% of tokens for sale.
    uint256 public teamTokens;  // 7% of tokens goes to the team and will be locked for 1 year.
    // 8% of the rest tokens will be used for bounty, advisors, and airdrops.
    
    // 7% of team tokens will be locked at this address for 1 year.
    address public teamWallet; // Team address.
    
    uint public unlockTeamTokensTime = now + 1 years;

    // The main account that holds all tokens at the beginning and during tokensale.
    address public seller; // Seller address (main holder of tokens)

    uint256 public tokensSold; // (e18) Number of tokens sold through all tiers or tokensales.
    uint256 public totalSales; // Total number of sales (including external sales) made through all tiers or tokensales.

    // Lock the transfer functions during tokensales to prevent price speculations.
    bool public locked = true;
    
    event SellEvent(address indexed _seller, address indexed _buyer, uint256 _value);
    event ChangeSellerEvent(address indexed _oldSeller, address indexed _newSeller);
    event Burn(address indexed _burner, uint256 _value);
    event Unlock();

    function CommonToken(
        address _seller,
        address _teamWallet
    ) MultiOwnable() public {
        
        totalSupply = 998400000 ether;
        saleLimit   = 848640000 ether;
        teamTokens  =  69888000 ether;

        seller = _seller;
        teamWallet = _teamWallet;

        uint sellerTokens = totalSupply - teamTokens;
        balances[seller] = sellerTokens;
        Transfer(0x0, seller, sellerTokens);
        
        balances[teamWallet] = teamTokens;
        Transfer(0x0, teamWallet, teamTokens);
    }
    
    modifier ifUnlocked(address _from) {
        require(!locked);
        
        // If requested a transfer from the team wallet:
        if (_from == teamWallet) {
            require(now >= unlockTeamTokensTime);
        }
        
        _;
    }
    
    /** Can be called once by super owner. */
    function unlock() onlyOwner public {
        require(locked);
        locked = false;
        Unlock();
    }

    /**
     * An address can become a new seller only in case it has no tokens.
     * This is required to prevent stealing of tokens  from newSeller via 
     * 2 calls of this function.
     */
    function changeSeller(address newSeller) onlyOwner public returns (bool) {
        require(newSeller != address(0));
        require(seller != newSeller);
        
        // To prevent stealing of tokens from newSeller via 2 calls of changeSeller:
        require(balances[newSeller] == 0);

        address oldSeller = seller;
        uint256 unsoldTokens = balances[oldSeller];
        balances[oldSeller] = 0;
        balances[newSeller] = unsoldTokens;
        Transfer(oldSeller, newSeller, unsoldTokens);

        seller = newSeller;
        ChangeSellerEvent(oldSeller, newSeller);
        return true;
    }

    /**
     * User-friendly alternative to sell() function.
     */
    function sellNoDecimals(address _to, uint256 _value) public returns (bool) {
        return sell(_to, _value * 1e18);
    }

    function sell(address _to, uint256 _value) onlyOwner public returns (bool) {

        // Check that we are not out of limit and still can sell tokens:
        require(tokensSold.add(_value) <= saleLimit);

        require(_to != address(0));
        require(_value > 0);
        require(_value <= balances[seller]);

        balances[seller] = balances[seller].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(seller, _to, _value);

        totalSales++;
        tokensSold = tokensSold.add(_value);
        SellEvent(seller, _to, _value);
        return true;
    }
    
    /**
     * Until all tokens are sold, tokens can be transfered to/from owner's accounts.
     */
    function transfer(address _to, uint256 _value) ifUnlocked(msg.sender) public returns (bool) {
        return super.transfer(_to, _value);
    }

    /**
     * Until all tokens are sold, tokens can be transfered to/from owner's accounts.
     */
    function transferFrom(address _from, address _to, uint256 _value) ifUnlocked(_from) public returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    function burn(uint256 _value) public returns (bool) {
        require(_value > 0);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Transfer(msg.sender, 0x0, _value);
        Burn(msg.sender, _value);
        return true;
    }
}

contract CommonTokensale is MultiOwnable, Pausable {
    
    using SafeMath for uint;
    
    address public beneficiary1;
    address public beneficiary2;
    address public beneficiary3;
    
    // Balances of beneficiaries:
    uint public balance1;
    uint public balance2;
    uint public balance3;
    
    // Token contract reference.
    CommonToken public token;

    uint public minPaymentWei = 0.1 ether;
    
    uint public minCapWei;
    uint public maxCapWei;

    uint public startTime;
    uint public endTime;
    
    // Stats for current tokensale:
    
    uint public totalTokensSold;  // Total amount of tokens sold during this tokensale.
    uint public totalWeiReceived; // Total amount of wei received during this tokensale.
    
    // This mapping stores info on how many ETH (wei) have been sent to this tokensale from specific address.
    mapping (address => uint256) public buyerToSentWei;
    
    event ReceiveEthEvent(address indexed _buyer, uint256 _amountWei);
    
    function CommonTokensale(
        address _token,
        address _beneficiary1,
        address _beneficiary2,
        address _beneficiary3,
        uint _startTime,
        uint _endTime
    ) MultiOwnable() public {

        require(_token != address(0));
        token = CommonToken(_token);

        beneficiary1 = _beneficiary1;
        beneficiary2 = _beneficiary2;
        beneficiary3 = _beneficiary3;

        startTime = _startTime;
        endTime   = _endTime;
    }

    /** The fallback function corresponds to a donation in ETH. */
    function() public payable {
        sellTokensForEth(msg.sender, msg.value);
    }
    
    function sellTokensForEth(
        address _buyer, 
        uint256 _amountWei
    ) ifNotPaused internal {
        
        require(startTime <= now && now <= endTime);
        require(_amountWei >= minPaymentWei);
        require(totalWeiReceived.add(_amountWei) <= maxCapWei);

        uint tokensE18 = weiToTokens(_amountWei);
        // Transfer tokens to buyer.
        require(token.sell(_buyer, tokensE18));
        
        // Update total stats:
        totalTokensSold = totalTokensSold.add(tokensE18);
        totalWeiReceived = totalWeiReceived.add(_amountWei);
        buyerToSentWei[_buyer] = buyerToSentWei[_buyer].add(_amountWei);
        ReceiveEthEvent(_buyer, _amountWei);
        
        // Split received amount between balances of three beneficiaries.
        uint part = _amountWei / 3;
        balance1 = balance1.add(_amountWei - part * 2);
        balance2 = balance2.add(part);
        balance3 = balance3.add(part);
    }
    
    /** Calc how much tokens you can buy at current time. */
    function weiToTokens(uint _amountWei) public view returns (uint) {
        return _amountWei.mul(tokensPerWei(_amountWei));
    }
    
    function tokensPerWei(uint _amountWei) public view returns (uint256) {
        uint expectedTotal = totalWeiReceived.add(_amountWei);
        
        // Presale pricing rules:
        if (expectedTotal <  1000 ether) return 39960;
        if (expectedTotal <  2000 ether) return 37480;
        if (expectedTotal <  4000 ether) return 35270;
        
        // Public sale pricing rules:
        if (expectedTotal <  6000 ether) return 33300; 
        if (expectedTotal <  8000 ether) return 32580;
        if (expectedTotal < 11000 ether) return 31880;
        if (expectedTotal < 15500 ether) return 31220;
        if (expectedTotal < 20500 ether) return 30590;
        if (expectedTotal < 26500 ether) return 29970;
        
        return 29970; // Default token price with no bonuses.
    }
    
    function canWithdraw() public view returns (bool);
    
    function withdraw1(address _to) public {
        require(canWithdraw());
        require(msg.sender == beneficiary1);
        require(balance1 > 0);
        
        uint bal = balance1;
        balance1 = 0;
        _to.transfer(bal);
    }
    
    function withdraw2(address _to) public {
        require(canWithdraw());
        require(msg.sender == beneficiary2);
        require(balance2 > 0);
        
        uint bal = balance2;
        balance2 = 0;
        _to.transfer(bal);
    }
    
    function withdraw3(address _to) public {
        require(canWithdraw());
        require(msg.sender == beneficiary3);
        require(balance3 > 0);
        
        uint bal = balance3;
        balance3 = 0;
        _to.transfer(bal);
    }
}

contract Presale is CommonTokensale {
    
    // In case min (soft) cap is not reached, token buyers will be able to 
    // refund their contributions during 3 months after presale is finished.
    uint public refundDeadlineTime;

    // Total amount of wei refunded if min (soft) cap is not reached.
    uint public totalWeiRefunded;
    
    event RefundEthEvent(address indexed _buyer, uint256 _amountWei);
    
    function Presale(
        address _token,
        address _beneficiary1,
        address _beneficiary2,
        address _beneficiary3,
        uint _startTime,
        uint _endTime
    ) CommonTokensale(
        _token,
        _beneficiary1,
        _beneficiary2,
        _beneficiary3,
        _startTime,
        _endTime
    ) public {
        minCapWei = 2000 ether;
        maxCapWei = 4000 ether;
        refundDeadlineTime = _endTime + 3 * 30 days;
    }

    /** 
     * During presale it will be possible to withdraw only in two cases:
     * min cap reached OR refund period expired.
     */
    function canWithdraw() public view returns (bool) {
        return totalWeiReceived >= minCapWei || now > refundDeadlineTime;
    }
    
    /** 
     * It will be possible to refund only if min (soft) cap is not reached and 
     * refund requested during 3 months after presale finished.
     */
    function canRefund() public view returns (bool) {
        return totalWeiReceived < minCapWei && endTime < now && now <= refundDeadlineTime;
    }

    function refund() public {
        require(canRefund());
        
        address buyer = msg.sender;
        uint amount = buyerToSentWei[buyer];
        require(amount > 0);
        
        // Redistribute left balance between three beneficiaries.
        uint newBal = this.balance.sub(amount);
        uint part = newBal / 3;
        balance1 = newBal - part * 2;
        balance2 = part;
        balance3 = part;
        
        RefundEthEvent(buyer, amount);
        buyerToSentWei[buyer] = 0;
        totalWeiRefunded = totalWeiRefunded.add(amount);
        buyer.transfer(amount);
    }
}

contract PublicSale is CommonTokensale {
    
    function PublicSale(
        address _token,
        address _beneficiary1,
        address _beneficiary2,
        address _beneficiary3,
        uint _startTime,
        uint _endTime,
        uint _presaleCapEth
    ) CommonTokensale(
        _token,
        _beneficiary1,
        _beneficiary2,
        _beneficiary3,
        _startTime,
        _endTime
    ) public {
        maxCapWei = 26500 ether;
        uint presaleCapWei = _presaleCapEth * 1e18;
        totalWeiReceived = totalWeiReceived.add(presaleCapWei);
    }

    /** 
     * During public sale it is possinble to withdraw at any time.
     */
    function canWithdraw() public view returns (bool) {
        return true;
    }
}

// Will be deployed after ProdPresale capmaign ended successfully.
contract ProdPublicSale is PublicSale {
    function ProdPublicSale() PublicSale(
        0x6BeC54E4fEa5d541fB14de96993b8E11d81159b2, // TODO Set token address
        0xe4478843d1f28a31748E0b0e862a360A34b0d575, // TODO Set beneficiary1 address
        0x827d1C65d19cf7382161346F90d3C1b43260f4c3, // TODO Set beneficiary2 address
        0x850F8b608efe73966d55f3380845015C467E9086, // TODO Set beneficiary3 address
        1529503200, // 2018-06-20 14:00 - startTime
        1531922400, // 2018-07-18 14:00 - endTime
        2028      // TODO Set presale cap in ETH (how much was rised during presale?)
    ) public {}
}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdraw3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerHistoryCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"ownerHistory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdraw2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amountWei","type":"uint256"}],"name":"weiToTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minPaymentWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary3","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canWithdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"buyerToSentWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minCapWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxCapWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdraw1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_amountWei","type":"uint256"}],"name":"tokensPerWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_buyer","type":"address"},{"indexed":false,"name":"_amountWei","type":"uint256"}],"name":"ReceiveEthEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newOwner","type":"address"}],"name":"OwnerAddedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_oldOwner","type":"address"}],"name":"OwnerRemovedEvent","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405267016345785d8a000060095534801561001c57600080fd5b50736bec54e4fea5d541fb14de96993b8e11d81159b273e4478843d1f28a31748e0b0e862a360a34b0d57573827d1c65d19cf7382161346f90d3c1b43260f4c373850f8b608efe73966d55f3380845015c467e9086635b2a5de0635b4f47e06107ec6000878787878787600033905060018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561018557600080fd5b85600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c8190555080600d8190555050505050505069059c91607cfb8b900000600b81905550670de0b6b3a7640000820290506102dd81600f546102f0640100000000026114dc179091906401000000009004565b600f81905550505050505050505061030e565b600080828401905083811015151561030457fe5b8091505092915050565b6115598061031d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063046f7da214610181578063173825d9146101985780631bad5558146101db5780632f54bf6e1461021e5780633197cbb61461027957806337034853146102a457806340441eec146102cf578063461fc090146102fa5780634eea9a8d146103675780634f52ccfa146103aa57806353aaef7d146104015780635c975abb1461044257806363b20117146104715780637065cb481461049c5780637467bcd9146104df57806378e979251461050a5780638456cb591461053557806388d12a4d1461054c578063a07f5f8414610577578063b51459fe146105ce578063c45c4f58146105fd578063cf567d1e14610628578063ebc204261461067f578063f1c4ecb4146106aa578063f24a0faa146106d5578063f3f2f0bc14610700578063f569a2fc14610757578063f6508be61461079a578063fc0c546a146107db575b61017f3334610832565b005b34801561018d57600080fd5b50610196610b40565b005b3480156101a457600080fd5b506101d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bcf565b005b3480156101e757600080fd5b5061021c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d1a565b005b34801561022a57600080fd5b5061025f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610df4565b604051808215151515815260200191505060405180910390f35b34801561028557600080fd5b5061028e610e14565b6040518082815260200191505060405180910390f35b3480156102b057600080fd5b506102b9610e1a565b6040518082815260200191505060405180910390f35b3480156102db57600080fd5b506102e4610e27565b6040518082815260200191505060405180910390f35b34801561030657600080fd5b5061032560048036038101908080359060200190929190505050610e2d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037357600080fd5b506103a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6b565b005b3480156103b657600080fd5b506103bf610f45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b5061042c60048036038101908080359060200190929190505050610f6b565b6040518082815260200191505060405180910390f35b34801561044e57600080fd5b50610457610f8f565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b50610486610fa2565b6040518082815260200191505060405180910390f35b3480156104a857600080fd5b506104dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fa8565b005b3480156104eb57600080fd5b506104f4611196565b6040518082815260200191505060405180910390f35b34801561051657600080fd5b5061051f61119c565b6040518082815260200191505060405180910390f35b34801561054157600080fd5b5061054a6111a2565b005b34801561055857600080fd5b50610561611232565b6040518082815260200191505060405180910390f35b34801561058357600080fd5b5061058c611238565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105da57600080fd5b506105e361125e565b604051808215151515815260200191505060405180910390f35b34801561060957600080fd5b50610612611267565b6040518082815260200191505060405180910390f35b34801561063457600080fd5b50610669600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061126d565b6040518082815260200191505060405180910390f35b34801561068b57600080fd5b50610694611285565b6040518082815260200191505060405180910390f35b3480156106b657600080fd5b506106bf61128b565b6040518082815260200191505060405180910390f35b3480156106e157600080fd5b506106ea611291565b6040518082815260200191505060405180910390f35b34801561070c57600080fd5b50610715611297565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076357600080fd5b50610798600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b005b3480156107a657600080fd5b506107c560048036038101908080359060200190929190505050611397565b6040518082815260200191505060405180910390f35b3480156107e757600080fd5b506107f06114b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600260009054906101000a900460ff1615151561085157600080fd5b42600c54111580156108655750600d544211155b151561087057600080fd5b600954831015151561088157600080fd5b600b5461089984600f546114dc90919063ffffffff16565b111515156108a657600080fd5b6108af83610f6b565b9150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c197ff585846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561097657600080fd5b505af115801561098a573d6000803e3d6000fd5b505050506040513d60208110156109a057600080fd5b810190808051906020019092919050505015156109bc57600080fd5b6109d182600e546114dc90919063ffffffff16565b600e819055506109ec83600f546114dc90919063ffffffff16565b600f81905550610a4483601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114dc90919063ffffffff16565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f9f2aa993778384d1a464178bc602fe2f113364d0faad0eb68cbff639d2932bcb846040518082815260200191505060405180910390a2600383811515610ae157fe5b049050610afe6002820284036005546114dc90919063ffffffff16565b600581905550610b19816006546114dc90919063ffffffff16565b600681905550610b34816007546114dc90919063ffffffff16565b60078190555050505050565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b9757600080fd5b600260009054906101000a900460ff161515610bb257600080fd5b6000600260006101000a81548160ff021916908315150217905550565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c2657600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c7d57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6740775dd30bf47d42458b7044f4a4b0a275934f8a4f9269c8af6ab00b3a1e4560405160405180910390a250565b6000610d2461125e565b1515610d2f57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8b57600080fd5b6000600754111515610d9c57600080fd5b600754905060006007819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610def573d6000803e3d6000fd5b505050565b60006020528060005260406000206000915054906101000a900460ff1681565b600d5481565b6000600180549050905090565b60065481565b600181815481101515610e3c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e7561125e565b1515610e8057600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610edc57600080fd5b6000600654111515610eed57600080fd5b600654905060006006819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f40573d6000803e3d6000fd5b505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f88610f7983611397565b836114fa90919063ffffffff16565b9050919050565b600260009054906101000a900460ff1681565b600e5481565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610fff57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561103b57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561109357600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f0775e4f247a7723929d271ccf476b51fb4284053cb3fd6cf3400228a9c02dbb860405160405180910390a250565b60095481565b600c5481565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156111f957600080fd5b600260009054906101000a900460ff1615151561121557600080fd5b6001600260006101000a81548160ff021916908315150217905550565b600f5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b60055481565b60106020528060005260406000206000915090505481565b600a5481565b600b5481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006112c761125e565b15156112d257600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561132e57600080fd5b600060055411151561133f57600080fd5b600554905060006005819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611392573d6000803e3d6000fd5b505050565b6000806113af83600f546114dc90919063ffffffff16565b9050683635c9adc5dea000008110156113cc57619c1891506114b0565b686c6b935b8bbd4000008110156113e75761926891506114b0565b68d8d726b7177a800000811015611402576189c691506114b0565b69014542ba12a337c0000081101561141e5761821491506114b0565b6901b1ae4d6e2ef500000081101561143a57617f4491506114b0565b6902544faa778090e0000081101561145657617c8891506114b0565b69034841b6057afab00000811015611472576179f491506114b0565b6904574ea66a5853d0000081101561148e5761777e91506114b0565b69059c91607cfb8b9000008110156114aa5761751291506114b0565b61751291505b50919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008082840190508381101515156114f057fe5b8091505092915050565b6000808284029050600084148061151b575082848281151561151857fe5b04145b151561152357fe5b80915050929150505600a165627a7a72305820d1f17685b699f3476e33d162602f1840da051f344b5c3bbfe1f8d1665d0873420029

   Swarm Source:
bzzr://d1f17685b699f3476e33d162602f1840da051f344b5c3bbfe1f8d1665d087342

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.