Contract Overview
Balance: 0 Ether
Transactions: 12 txns
 Latest 12 txns


TxHash Age From To Value [TxFee]
0x5a9be93252225bb560f260ebe4c3655538aa58ca64467e3d785161800e5029b7125 days 3 hrs ago0x08c82486328517f41a516014e56631a3b615ae89  IN  0x638c408f2a4815829621459977b90644cd72e6f00.025 Ether0.00191433
0xe9a0f43aec549031ebbbddda987dea94aca721a9b556f10b8d30c875eadb2d00125 days 3 hrs ago0x08c82486328517f41a516014e56631a3b615ae89  IN  0x638c408f2a4815829621459977b90644cd72e6f01 Ether0.00237456
0x036da9fdf7161334c5fd7ae44d55a72bf076793c5882d9b029bdb1be69cc7655125 days 3 hrs ago0x11f99f29f2d2d24434ee794f88ecd1e38ef4d1ad  IN  0x638c408f2a4815829621459977b90644cd72e6f01 Ether0.00063
0xba449cac3d9e60ba4a1afa8851742813f7f27d1693665329faea1adc5b2663a3126 days 2 hrs ago0x11f99f29f2d2d24434ee794f88ecd1e38ef4d1ad  IN  0x638c408f2a4815829621459977b90644cd72e6f01 Ether0.00236433
0xbb53db886c6601ed07a152eb94e0291dd62235d0d88b39196593e19ffd6120c0126 days 3 hrs ago0x11f99f29f2d2d24434ee794f88ecd1e38ef4d1ad  IN  0x638c408f2a4815829621459977b90644cd72e6f00.03 Ether0.0019041
0x2aca4106bb1f0317ade569887bb7dfc197e76137741ada82ddce6fa7881d2515126 days 3 hrs ago0x545c3e93100331a8191b9809e5bbfae558b8d221  IN  0x638c408f2a4815829621459977b90644cd72e6f01 Ether0.00063811
0xbe622cdb195ac13e7a3b34c9d9cbf8acf229ad5b3fed449cf1470bebc4652216126 days 3 hrs ago0x1a9956f8fa8d4d0a0e54e55f6456c94f5a039060  IN  0x638c408f2a4815829621459977b90644cd72e6f00 Ether0.00074814
0x13c924b8c55933f6ce2a678ad8c7a50373139967df2df22423c6be1ca739e937126 days 4 hrs ago0x1a9956f8fa8d4d0a0e54e55f6456c94f5a039060  IN  0x638c408f2a4815829621459977b90644cd72e6f00 Ether0.00075006
0x2dac2fef100d6880c395025703c62993bba415f753b527f46fc8b02d0be60d6c126 days 4 hrs ago0x1a9956f8fa8d4d0a0e54e55f6456c94f5a039060  IN  0x638c408f2a4815829621459977b90644cd72e6f00 Ether0.00075006
0x51e39d20ab2ac860903f5d2bc0e0ec11b4ba2ab1c7081400db2269e80839802f126 days 4 hrs ago0x1a9956f8fa8d4d0a0e54e55f6456c94f5a039060  IN  0x638c408f2a4815829621459977b90644cd72e6f00 Ether0.00075006
0x8d6639a284a9c3c8e4cd0fc74ec3a59ac910f8bd80c6641d79deb8397fc25357126 days 5 hrs ago0x96655f07bfc03e07b4f8c24cec6d4e597d75e3b2  IN  0x638c408f2a4815829621459977b90644cd72e6f00.1 Ether0.0031388
0x93d98d7b379846eeb489cc02bb53934e18928c5aa566f450af8d32ee6cd40e03126 days 10 hrs ago0x0ab1d7f95e517230376a19589392034256b2f2a5  IN  0x638c408f2a4815829621459977b90644cd72e6f00.3 Ether0.00056082
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 8 Internal Transactions

ParentTxHash Block Age From To Value
0x5a9be93252225bb560f260ebe4c3655538aa58ca64467e3d785161800e5029b72484956125 days 3 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e0.025 Ether
0xe9a0f43aec549031ebbbddda987dea94aca721a9b556f10b8d30c875eadb2d002484948125 days 3 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e1 Ether
0xba449cac3d9e60ba4a1afa8851742813f7f27d1693665329faea1adc5b2663a32479097126 days 2 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e1 Ether
0xbb53db886c6601ed07a152eb94e0291dd62235d0d88b39196593e19ffd6120c02478874126 days 3 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e0.03 Ether
0x2aca4106bb1f0317ade569887bb7dfc197e76137741ada82ddce6fa7881d25152478857126 days 3 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e1 Ether
0x8d6639a284a9c3c8e4cd0fc74ec3a59ac910f8bd80c6641d79deb8397fc253572478388126 days 5 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e0.1 Ether
0x93d98d7b379846eeb489cc02bb53934e18928c5aa566f450af8d32ee6cd40e032477100126 days 10 hrs ago0x638c408f2a4815829621459977b90644cd72e6f00xd3ebdee6d4f47fb32872b107aa5acc4a0bdf6c4e0.3 Ether
0x2c2615c67a1aacd567d735b913c07023be0e5f2b3599440cff00e34c6bb7e4dc2473753126 days 23 hrs ago0xac6572004637fbcc661fba32def6fd290e2be734  Contract Creation0 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: Sale
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;

contract ERC20Basic {
    uint256 public totalSupply;
    function balanceOf(address who) public constant returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public constant 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);
}

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) {
        uint256 c = a / b;
        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 BasicToken is ERC20Basic {

    using SafeMath for uint256;

    mapping(address => uint256) balances;

    /**
    * @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) public returns (bool) {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(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 constant returns (uint256 balance) {
        return balances[_owner];
    }

}

/**
 * @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)) 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 amout of tokens to be transfered
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        var _allowance = allowed[_from][msg.sender];

        // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
        // require (_value <= _allowance);

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

    /**
     * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * @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) {

        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));

        allowed[msg.sender][_spender] = _value;
        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 specifing the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {

    address public owner;

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    function Ownable() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        owner = newOwner;
    }

    event OwnerLog(address a);

}

contract Configurable is Ownable {

    address public configurer;

    function Configurable() public {
        configurer = msg.sender;
    }

    modifier onlyConfigurerOrOwner() {
        require(msg.sender == configurer || msg.sender == owner);
        _;
    }

    modifier onlyConfigurer() {
        require(msg.sender == configurer);
        _;
    }
}

contract DLCToken is StandardToken, Configurable {

    string public constant name = "DoubleLand Coin";
    string public constant symbol = "DLC";
    uint32 public constant decimals = 18;

    bool tokenBeenInit = false;

    uint public constant percentRate = 100;
    uint public investorsTokensPercent;
    uint public foundersTokensPercent;
    uint public bountyTokensPercent;
    uint public developmentAuditPromotionTokensPercent;

    address public toSaleWallet;
    address public bountyWallet;
    address public foundersWallet;
    address public developmentAuditPromotionWallet;

    address public saleAgent;


    function DLCToken() public {
    }

    modifier notInit() {
        require(!tokenBeenInit);
        _;
    }

    function setSaleAgent(address newSaleAgent) public onlyConfigurerOrOwner{
        saleAgent = newSaleAgent;
    }

    function setTotalSupply(uint256 _totalSupply) public notInit onlyConfigurer{
        totalSupply = _totalSupply;
    }

    function setFoundersTokensPercent(uint _foundersTokensPercent) public notInit onlyConfigurer{
        foundersTokensPercent = _foundersTokensPercent;
    }

    function setBountyTokensPercent(uint _bountyTokensPercent) public notInit onlyConfigurer{
        bountyTokensPercent = _bountyTokensPercent;
    }

    function setDevelopmentAuditPromotionTokensPercent(uint _developmentAuditPromotionTokensPercent) public notInit onlyConfigurer{
        developmentAuditPromotionTokensPercent = _developmentAuditPromotionTokensPercent;
    }

    function setBountyWallet(address _bountyWallet) public notInit onlyConfigurer{
        bountyWallet = _bountyWallet;
    }

    function setToSaleWallet(address _toSaleWallet) public notInit onlyConfigurer{
        toSaleWallet = _toSaleWallet;
    }

    function setFoundersWallet(address _foundersWallet) public notInit onlyConfigurer{
        foundersWallet = _foundersWallet;
    }

    function setDevelopmentAuditPromotionWallet(address _developmentAuditPromotionWallet) public notInit onlyConfigurer {
        developmentAuditPromotionWallet = _developmentAuditPromotionWallet;
    }

    function init() public notInit onlyConfigurer{
        require(totalSupply > 0);
        require(foundersTokensPercent > 0);
        require(bountyTokensPercent > 0);
        require(developmentAuditPromotionTokensPercent > 0);
        require(foundersWallet != address(0));
        require(bountyWallet != address(0));
        require(developmentAuditPromotionWallet != address(0));
        tokenBeenInit = true;

        investorsTokensPercent = percentRate - (foundersTokensPercent + bountyTokensPercent + developmentAuditPromotionTokensPercent);

        balances[toSaleWallet] = totalSupply.mul(investorsTokensPercent).div(percentRate);
        balances[foundersWallet] = totalSupply.mul(foundersTokensPercent).div(percentRate);
        balances[bountyWallet] = totalSupply.mul(bountyTokensPercent).div(percentRate);
        balances[developmentAuditPromotionWallet] = totalSupply.mul(developmentAuditPromotionTokensPercent).div(percentRate);
    }

    function getRestTokenBalance() public constant returns (uint256) {
        return balances[toSaleWallet];
    }

    function purchase(address beneficiary, uint256 qty) public {
        require(msg.sender == saleAgent || msg.sender == owner);
        require(beneficiary != address(0));
        require(qty > 0);
        require((getRestTokenBalance().sub(qty)) > 0);

        balances[beneficiary] = balances[beneficiary].add(qty);
        balances[toSaleWallet] = balances[toSaleWallet].sub(qty);

        Transfer(toSaleWallet, beneficiary, qty);
    }

    function () public payable {
        revert();
    }
}

contract Bonuses {
    using SafeMath for uint256;

    uint256 public startTime;
    uint256 public endTime;

    mapping(uint => uint256) public rateOfDay;
    mapping(uint => uint) public bonusOfPay;

    bool public bonusInited = false;

    function initBonuses (string _preset) public {
        require(!bonusInited);
        bonusInited = true;
        bytes32 preset = keccak256(_preset);


        if(preset == keccak256('presale')){
            rateOfDay[0] = 20000;
            bonusOfPay[0] = 50;
        } else
        if(preset == keccak256('generalsale')){
            rateOfDay[0] = 18000;
            rateOfDay[7] = 15000;
            rateOfDay[14] = 10000;

            bonusOfPay[0] = 10;
            bonusOfPay[10] = 20;
            bonusOfPay[50] = 30;
        } else
        if(preset == keccak256('aftersale')){
            rateOfDay[0] = 15000;
            rateOfDay[7] = 13000;
            rateOfDay[14] = 10000;
            rateOfDay[21] = 8000;

            bonusOfPay[0] = 10;
            bonusOfPay[10] = 20;
            bonusOfPay[50] = 30;
        } else {
            require(false);
        }
    }

    function calculateTokensQty (uint256 amount) public constant returns(uint256) {
        uint dayOfStart = now.sub(startTime).div(86400).add(1);
        uint shortAmount = amount.div(1 ether);
        uint currentRate = 0;
        uint currentBonus = 0;
        uint i;

        for (i = dayOfStart; i >= 0; i--) {
            if (rateOfDay[i] > 0) {
                currentRate = rateOfDay[i];
                break;
            }
        }

        for (i = shortAmount; i >= 0; i--) {
            if (bonusOfPay[i] > 0) {
                currentBonus = bonusOfPay[i];
                break;
            }
        }

        uint256 qty = amount.mul(currentRate);

        uint256 qtyWithBonus =  qty + qty.div(100).mul(currentBonus);

        return qtyWithBonus;
    }
}

contract Sale is Configurable, Bonuses{
    using SafeMath for uint256;

    DLCToken public token;

    address public multisigWallet;
    uint256 public tokensLimit;
    uint256 public minimalPrice;
    uint256 public tokensTransferred = 0;

    string public bonusPreset;

    uint256 public collected = 0;

    bool public activated = false;
    bool public closed = false;
    bool public saleInited = false;


    event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);

    function init(
        string _bonusPreset,
        uint256 _startTime,
        uint256 _endTime,
        uint256 _tokensLimit,
        uint256 _minimalPrice,
        DLCToken _token,
        address _multisigWallet
    ) public onlyConfigurer {
        require(!saleInited);
        // TODO Uncomment
        //require(_startTime >= now);
        require(_endTime >= _startTime);
        require(_tokensLimit > 0);
        require(_multisigWallet != address(0));

        saleInited = true;

        token = _token;
        startTime = _startTime;
        endTime = _endTime;
        tokensLimit = _tokensLimit;
        multisigWallet = _multisigWallet;
        minimalPrice = _minimalPrice;
        bonusPreset = _bonusPreset;

        initBonuses(bonusPreset);
    }

    function activate() public onlyConfigurerOrOwner {
        require(!activated);
        require(!closed);
        activated = true;
    }

    function close() public onlyConfigurerOrOwner {
        activated = true;
        closed = true;
    }

    function setMultisigWallet(address _multisigWallet) public onlyConfigurerOrOwner {
        multisigWallet = _multisigWallet;
    }

    function () external payable {
        buyTokens(msg.sender);
    }

    function buyTokens(address beneficiary) public payable {
        require(beneficiary != address(0));
        require(validPurchase());

        uint256 amount = msg.value;
        uint256 tokens = calculateTokensQty({
                amount: amount
            });

        require(tokensTransferred.add(tokens) < tokensLimit);

        tokensTransferred = tokensTransferred.add(tokens);
        collected = collected.add(amount);

        token.purchase(beneficiary, tokens);
        TokenPurchase(msg.sender, beneficiary, amount, tokens);

        forwardFunds();
    }

    function forwardFunds() internal {
        multisigWallet.transfer(msg.value);
    }

    function validPurchase() internal constant returns (bool) {
        bool withinPeriod = now >= startTime && now <= endTime;
        bool nonZeroPurchase = msg.value != 0;
        bool minimalPriceChecked = msg.value >= minimalPrice;
        return withinPeriod && nonZeroPurchase && minimalPriceChecked && activated && !closed;
    }

    function isEnded() public constant returns (bool) {
        return now > endTime;
    }

    function balanceOf(address user) public constant returns (uint256 balance) {
        return token.balanceOf(user);
    }
}


contract DoubleLandICO is Ownable {
    using SafeMath for uint256;

    DLCToken public token;

    Sale[] public sales;

    uint256 public softCap;
    uint256 public hardCap;

    uint public activatedSalesTotalCount = 0;
    uint public maxActivatedSalesTotalCount;

    address public multisigWallet;

    bool public isDeployed = false;

    function createSale(string _bonusPreset, uint256 _startTime, uint256 _endTime,  uint256 _tokensLimit, uint256 _minimalPrice) public onlyOwner{
        require(activatedSalesTotalCount < maxActivatedSalesTotalCount);
        require(getTotalCollected() < hardCap );
        require(token.getRestTokenBalance() >= _tokensLimit);
        require(sales.length == 0 || sales[sales.length - 1].activated());
        Sale newSale = new Sale();

        newSale.init({
            _bonusPreset: _bonusPreset,
            _startTime: _startTime,
            _endTime: _endTime,
            _tokensLimit: _tokensLimit,
            _minimalPrice: _minimalPrice,
            _token: token,
            _multisigWallet: multisigWallet
            });
        newSale.transferOwnership(owner);

        sales.push(newSale);
    }

    function activateLastSale() public onlyOwner {
        require(activatedSalesTotalCount < maxActivatedSalesTotalCount);
        require(!sales[sales.length - 1].activated());
        activatedSalesTotalCount ++;
        sales[sales.length - 1].activate();
        token.setSaleAgent(sales[sales.length - 1]);
    }

    function removeLastSaleOnlyNotActivated() public onlyOwner {
        require(!sales[sales.length - 1].activated());
        delete sales[sales.length - 1];
    }

    function closeAllSales() public onlyOwner {
        for (uint i = 0; i < sales.length; i++) {
            sales[i].close();
        }
    }

    function setGlobalMultisigWallet(address _multisigWallet) public onlyOwner {
        multisigWallet = _multisigWallet;
        for (uint i = 0; i < sales.length; i++) {
            if (!sales[i].closed()) {
                sales[i].setMultisigWallet(multisigWallet);
            }
        }
    }

    function getTotalCollected() public constant returns(uint256) {
        uint256 _totalCollected = 0;
        for (uint i = 0; i < sales.length; i++) {
            _totalCollected = _totalCollected + sales[i].collected();
        }
        return _totalCollected;
    }

    function getCurrentSale() public constant returns(address) {
        return token.saleAgent();
    }

    function balanceOf(address user) public constant returns (uint256 balance) {
        return token.balanceOf(user);
    }

    function deploy() public onlyOwner {
        require(!isDeployed);
        isDeployed = true;

        softCap = 20000 ether;
        hardCap = 30000 ether;
        maxActivatedSalesTotalCount = 5;

        setGlobalMultisigWallet(0xD3EBDEe6d4F47Fb32872B107AA5Acc4A0bdf6c4E);

        token = new DLCToken();
        token.setTotalSupply(1000000000 * 1 ether);
        token.setFoundersTokensPercent(15);
        token.setBountyTokensPercent(1);
        token.setDevelopmentAuditPromotionTokensPercent(18);
        token.setToSaleWallet(0xE6796A30e53ab4709fa0B36dD40Af77307DEeA2C);
        token.setBountyWallet(0x1a9956f8Fa8D4d0A0E54E55f6456c94F5A039060);
        token.setFoundersWallet(0x56D3533f3E820441dFF857066482FcF027820Cf0);
        token.setDevelopmentAuditPromotionWallet(0x1fff8318aBbA5F9e5204d5Da377964b875d15284);
        token.transferOwnership(owner);
        token.init();

        createSale({
            _bonusPreset: 'presale',
            _startTime: 1516147200,
            _endTime:   1516233600,
            _tokensLimit: 75000000 * 1 ether,
            _minimalPrice: 0.03 ether
            });
        activateLastSale();

        createSale({
            _bonusPreset: 'generalsale',
            _startTime: 1516233600,
            _endTime: 1516838400,
            _tokensLimit: 450000000 * 1 ether,
            _minimalPrice: 0.01 ether
            });
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonusOfPay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"activated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimalPrice","outputs":[{"name":"","type":"uint256"}],"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":"configurer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonusPreset","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"saleInited","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_bonusPreset","type":"string"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_tokensLimit","type":"uint256"},{"name":"_minimalPrice","type":"uint256"},{"name":"_token","type":"address"},{"name":"_multisigWallet","type":"address"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"closed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensTransferred","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_multisigWallet","type":"address"}],"name":"setMultisigWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"}],"name":"calculateTokensQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"collected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_preset","type":"string"}],"name":"initBonuses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bonusInited","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rateOfDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"a","type":"address"}],"name":"OwnerLog","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526006805460ff191690556000600a819055600c819055600d805462ffffff191690558054600160a060020a033316600160a060020a031991821681179092556001805490911690911790556111a38061005e6000396000f3006060604052600436106101455763ffffffff60e060020a60003504166308b2eb0481146101505780630f15f4c014610178578063186601ca1461018b57806325ba2d2e146101b25780633197cbb6146101c557806335c77e6f146101d857806338a9a6f81461020757806343d726d61461029157806349fcfce7146102a457806358c23bf0146102b7578063597e1fb5146103325780635b25ed6a14610345578063623eff5514610358578063649134771461036b578063706087571461038a57806370a08231146103a057806378e97925146103bf57806384bcefd4146103d25780638da5cb5b146103e55780639075becf146103f8578063a4fd6f561461040b578063b9890a741461041e578063c10e7dfe1461046f578063d179226914610482578063ec8ac4d814610498578063f2fde38b146104ac578063fc0c546a146104cb575b61014e336104de565b005b341561015b57600080fd5b61016660043561062f565b60405190815260200160405180910390f35b341561018357600080fd5b61014e610641565b341561019657600080fd5b61019e6106ab565b604051901515815260200160405180910390f35b34156101bd57600080fd5b6101666106b4565b34156101d057600080fd5b6101666106ba565b34156101e357600080fd5b6101eb6106c0565b604051600160a060020a03909116815260200160405180910390f35b341561021257600080fd5b61021a6106cf565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025657808201518382015260200161023e565b50505050905090810190601f1680156102835780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029c57600080fd5b61014e61076d565b34156102af57600080fd5b61019e6107bd565b34156102c257600080fd5b61014e60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050843594602081013594506040810135935060608101359250600160a060020a0360808201358116925060a090910135166107cc565b341561033d57600080fd5b61019e61096b565b341561035057600080fd5b610166610979565b341561036357600080fd5b61016661097f565b341561037657600080fd5b61014e600160a060020a0360043516610985565b341561039557600080fd5b6101666004356109ea565b34156103ab57600080fd5b610166600160a060020a0360043516610b1b565b34156103ca57600080fd5b610166610b9b565b34156103dd57600080fd5b610166610ba1565b34156103f057600080fd5b6101eb610ba7565b341561040357600080fd5b6101eb610bb6565b341561041657600080fd5b61019e610bc5565b341561042957600080fd5b61014e60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610bce95505050505050565b341561047a57600080fd5b61019e610f50565b341561048d57600080fd5b610166600435610f59565b61014e600160a060020a03600435166104de565b34156104b757600080fd5b61014e600160a060020a0360043516610f6b565b34156104d657600080fd5b6101eb610fca565b600080600160a060020a03831615156104f657600080fd5b6104fe610fde565b151561050957600080fd5b349150610515826109ea565b905060085461052f82600a5461104690919063ffffffff16565b1061053957600080fd5b600a5461054c908263ffffffff61104616565b600a55600c54610562908363ffffffff61104616565b600c556006546101009004600160a060020a0316638de93222848360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156105c057600080fd5b6102c65a03f115156105d157600080fd5b50505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a361062a61105c565b505050565b60056020526000908152604090205481565b60015433600160a060020a039081169116148061066c575060005433600160a060020a039081169116145b151561067757600080fd5b600d5460ff161561068757600080fd5b600d54610100900460ff161561069c57600080fd5b600d805460ff19166001179055565b600d5460ff1681565b60095481565b60035481565b600154600160a060020a031681565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107655780601f1061073a57610100808354040283529160200191610765565b820191906000526020600020905b81548152906001019060200180831161074857829003601f168201915b505050505081565b60015433600160a060020a0390811691161480610798575060005433600160a060020a039081169116145b15156107a357600080fd5b600d805461ff001960ff1990911660011716610100179055565b600d5462010000900460ff1681565b60015433600160a060020a039081169116146107e757600080fd5b600d5462010000900460ff16156107fd57600080fd5b8585101561080a57600080fd5b6000841161081757600080fd5b600160a060020a038116151561082c57600080fd5b600d805462ff000019166201000017905560068054600160a060020a038085166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179091556002879055600386905560088590556007805491831673ffffffffffffffffffffffffffffffffffffffff199092169190911790556009839055600b8780516108be9291602001906110df565b50610962600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109585780601f1061092d57610100808354040283529160200191610958565b820191906000526020600020905b81548152906001019060200180831161093b57829003601f168201915b5050505050610bce565b50505050505050565b600d54610100900460ff1681565b60085481565b600a5481565b60015433600160a060020a03908116911614806109b0575060005433600160a060020a039081169116145b15156109bb57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080600080600080600080610a2f6001610a2362015180610a176002544261109290919063ffffffff16565b9063ffffffff6110a416565b9063ffffffff61104616565b9650610a4989670de0b6b3a764000063ffffffff6110a416565b955060009450600093508692505b60008310610a96576000838152600460205260408120541115610a8a576000838152600460205260409020549450610a96565b60001990920191610a57565b8592505b60008310610ad9576000838152600560205260408120541115610acd576000838152600560205260409020549350610ad9565b60001990920191610a9a565b610ae9898663ffffffff6110bb16565b9150610b0c84610b0084606463ffffffff6110a416565b9063ffffffff6110bb16565b90910198975050505050505050565b6006546000906101009004600160a060020a03166370a0823183836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b7b57600080fd5b6102c65a03f11515610b8c57600080fd5b50505060405180519392505050565b60025481565b600c5481565b600054600160a060020a031681565b600754600160a060020a031681565b60035442115b90565b60065460009060ff1615610be157600080fd5b6006805460ff19166001179055816040518082805190602001908083835b60208310610c1e5780518252601f199092019160209182019101610bff565b6001836020036101000a0380198251168184511617909252505050919091019250604091505051809103902090506040517f70726573616c65000000000000000000000000000000000000000000000000008152600701604051908190039020811415610cdc5760008052614e207f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec55600560205260327f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc55610f4c565b6040517f67656e6572616c73616c650000000000000000000000000000000000000000008152600b01604051908190039020811415610dff576146507f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec55613a987fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e551556127107feb3e677499e881fe1bdbc344a49c412138038a9f40883b6dc68f713aab483523556005602052600a7f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5560147fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d556032600052601e7f641a7e47c832ef1f4ef72e654761ca2c0b592dc5a9de41ec09261efc0afea2be55610f4c565b6040517f616674657273616c6500000000000000000000000000000000000000000000008152600901604051908190039020811415610f4757613a987f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec556132c87fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e551556127107feb3e677499e881fe1bdbc344a49c412138038a9f40883b6dc68f713aab48352355611f407f1bb30a1647f6f6723cb3a88838ce0319afabe51263fc466f2f669a7a24ad88c6556005602052600a7f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5560147fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d556032600052601e7f641a7e47c832ef1f4ef72e654761ca2c0b592dc5a9de41ec09261efc0afea2be55610f4c565b600080fd5b5050565b60065460ff1681565b60046020526000908152604090205481565b60005433600160a060020a03908116911614610f8657600080fd5b600160a060020a0381161515610f9b57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6006546101009004600160a060020a031681565b6000806000806002544210158015610ff857506003544211155b92503460001415915060095434101590508280156110135750815b801561101c5750805b801561102a5750600d5460ff165b801561103e5750600d54610100900460ff16155b935050505090565b60008282018381101561105557fe5b9392505050565b600754600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561109057600080fd5b565b60008282111561109e57fe5b50900390565b60008082848115156110b257fe5b04949350505050565b60008282028315806110d757508284828115156110d457fe5b04145b151561105557fe5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061112057805160ff191683800117855561114d565b8280016001018555821561114d579182015b8281111561114d578251825591602001919060010190611132565b5061115992915061115d565b5090565b610bcb91905b8082111561115957600081556001016111635600a165627a7a72305820c6d1c749e69a4db3e95b0b7f99bc0b556d957c2abf5c02343672a00d297892750029

   Swarm Source:
bzzr://c6d1c749e69a4db3e95b0b7f99bc0b556d957c2abf5c02343672a00d29789275

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward