ETH Price: $3,212.71 (+5.57%)

Contract

0xB5d4baeaD54821862Dc8e732B9F86DeB489dd04e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer52887452018-03-20 10:35:302492 days ago1521542130IN
0xB5d4baea...B489dd04e
0.5 ETH0.000040111.1
Transfer52264862018-03-09 21:08:312502 days ago1520629711IN
0xB5d4baea...B489dd04e
0.0001 ETH0.00002521
Transfer51721892018-02-28 16:01:552511 days ago1519833715IN
0xB5d4baea...B489dd04e
0.0001 ETH0.00020168
Transfer51235262018-02-20 8:51:392520 days ago1519116699IN
0xB5d4baea...B489dd04e
0.01 ETH0.000401111
Transfer51142762018-02-18 19:09:162521 days ago1518980956IN
0xB5d4baea...B489dd04e
0.01 ETH0.0007292820
Transfer51134032018-02-18 15:37:422521 days ago1518968262IN
0xB5d4baea...B489dd04e
0.01 ETH0.000145854
Transfer51132622018-02-18 15:00:322521 days ago1518966032IN
0xB5d4baea...B489dd04e
0 ETH0.000169628
Transfer51075932018-02-17 16:27:052522 days ago1518884825IN
0xB5d4baea...B489dd04e
0.01 ETH0.000802222
Transfer51061622018-02-17 10:36:112523 days ago1518863771IN
0xB5d4baea...B489dd04e
0.0001 ETH0.0012660
Transfer51056372018-02-17 8:36:392523 days ago1518856599IN
0xB5d4baea...B489dd04e
0.05 ETH0.000401111
Transfer51055042018-02-17 8:05:122523 days ago1518854712IN
0xB5d4baea...B489dd04e
1.01 ETH0.0007292820
Transfer51054902018-02-17 8:01:382523 days ago1518854498IN
0xB5d4baea...B489dd04e
1.01 ETH0.0019974979.26566912
Transfer51054742018-02-17 7:57:122523 days ago1518854232IN
0xB5d4baea...B489dd04e
1.01 ETH0.000529221
Transfer51054722018-02-17 7:56:112523 days ago1518854171IN
0xB5d4baea...B489dd04e
0.51725725 ETH0.0000422
Transfer51054652018-02-17 7:54:262523 days ago1518854066IN
0xB5d4baea...B489dd04e
0.01348581 ETH0.004912860
Transfer51054442018-02-17 7:49:562523 days ago1518853796IN
0xB5d4baea...B489dd04e
1 ETH0.007750480
Transfer51054312018-02-17 7:46:052523 days ago1518853565IN
0xB5d4baea...B489dd04e
0.5168386 ETH0.0000633
Transfer51054262018-02-17 7:45:182523 days ago1518853518IN
0xB5d4baea...B489dd04e
0 ETH0.000106015
Transfer51054042018-02-17 7:40:252523 days ago1518853225IN
0xB5d4baea...B489dd04e
0 ETH0.000084814
Transfer51053942018-02-17 7:37:342523 days ago1518853054IN
0xB5d4baea...B489dd04e
1.1 ETH0.0018832423
Transfer51053832018-02-17 7:34:512523 days ago1518852891IN
0xB5d4baea...B489dd04e
1.3 ETH0.004912860
Transfer51053572018-02-17 7:28:222523 days ago1518852502IN
0xB5d4baea...B489dd04e
1 ETH0.005812860
Transfer51053332018-02-17 7:23:202523 days ago1518852200IN
0xB5d4baea...B489dd04e
0.1 ETH0.0039720841
Transfer51053332018-02-17 7:23:202523 days ago1518852200IN
0xB5d4baea...B489dd04e
0.01493644 ETH0.0039720841
Transfer51053322018-02-17 7:22:122523 days ago1518852132IN
0xB5d4baea...B489dd04e
1.01 ETH0.005812860
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
51054652018-02-17 7:54:262523 days ago1518854066
0xB5d4baea...B489dd04e
0.00013485 ETH
51054652018-02-17 7:54:262523 days ago1518854066
0xB5d4baea...B489dd04e
0.00134858 ETH
51054652018-02-17 7:54:262523 days ago1518854066
0xB5d4baea...B489dd04e
0.01200237 ETH
51054442018-02-17 7:49:562523 days ago1518853796
0xB5d4baea...B489dd04e
0.01 ETH
51054442018-02-17 7:49:562523 days ago1518853796
0xB5d4baea...B489dd04e
0.1 ETH
51054442018-02-17 7:49:562523 days ago1518853796
0xB5d4baea...B489dd04e
0.89 ETH
51053942018-02-17 7:37:342523 days ago1518853054
0xB5d4baea...B489dd04e
0.011 ETH
51053942018-02-17 7:37:342523 days ago1518853054
0xB5d4baea...B489dd04e
0.11 ETH
51053942018-02-17 7:37:342523 days ago1518853054
0xB5d4baea...B489dd04e
0.979 ETH
51053832018-02-17 7:34:512523 days ago1518852891
0xB5d4baea...B489dd04e
0.013 ETH
51053832018-02-17 7:34:512523 days ago1518852891
0xB5d4baea...B489dd04e
0.13 ETH
51053832018-02-17 7:34:512523 days ago1518852891
0xB5d4baea...B489dd04e
1.157 ETH
51053572018-02-17 7:28:222523 days ago1518852502
0xB5d4baea...B489dd04e
0.01 ETH
51053572018-02-17 7:28:222523 days ago1518852502
0xB5d4baea...B489dd04e
0.1 ETH
51053572018-02-17 7:28:222523 days ago1518852502
0xB5d4baea...B489dd04e
0.89 ETH
51053332018-02-17 7:23:202523 days ago1518852200
0xB5d4baea...B489dd04e
0.001 ETH
51053332018-02-17 7:23:202523 days ago1518852200
0xB5d4baea...B489dd04e
0.01 ETH
51053332018-02-17 7:23:202523 days ago1518852200
0xB5d4baea...B489dd04e
0.089 ETH
51053332018-02-17 7:23:202523 days ago1518852200
0xB5d4baea...B489dd04e
0.00014936 ETH
51053332018-02-17 7:23:202523 days ago1518852200
0xB5d4baea...B489dd04e
0.00149364 ETH
51053332018-02-17 7:23:202523 days ago1518852200
0xB5d4baea...B489dd04e
0.01329343 ETH
51053322018-02-17 7:22:122523 days ago1518852132
0xB5d4baea...B489dd04e
0.0101 ETH
51053322018-02-17 7:22:122523 days ago1518852132
0xB5d4baea...B489dd04e
0.101 ETH
51053322018-02-17 7:22:122523 days ago1518852132
0xB5d4baea...B489dd04e
0.8989 ETH
51053262018-02-17 7:20:432523 days ago1518852043
0xB5d4baea...B489dd04e
0.0007 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xc443dC89...853d8D856
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
StarterCoinCrowdsale

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-01-05
*/

pragma solidity ^0.4.13;

library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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 constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    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) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

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 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) {
    require(_to != address(0));

    // SafeMath.sub will throw if there is not enough balance.
    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];
  }

}

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);
}

contract LimitedTransferToken is ERC20 {

  /**
   * @dev Checks whether it can transfer or otherwise throws.
   */
  modifier canTransfer(address _sender, uint256 _value) {
   require(_value <= transferableTokens(_sender, uint64(now)));
   _;
  }

  /**
   * @dev Checks modifier and allows transfer if tokens are not locked.
   * @param _to The address that will receive the tokens.
   * @param _value The amount of tokens to be transferred.
   */
  function transfer(address _to, uint256 _value) canTransfer(msg.sender, _value) public returns (bool) {
    return super.transfer(_to, _value);
  }

  /**
  * @dev Checks modifier and allows transfer if tokens are not locked.
  * @param _from The address that will send the tokens.
  * @param _to The address that will receive the tokens.
  * @param _value The amount of tokens to be transferred.
  */
  function transferFrom(address _from, address _to, uint256 _value) canTransfer(_from, _value) public returns (bool) {
    return super.transferFrom(_from, _to, _value);
  }

  /**
   * @dev Default transferable tokens function returns all tokens for a holder (no limit).
   * @dev Overwriting transferableTokens(address holder, uint64 time) is the way to provide the
   * specific logic for limiting token transferability for a holder over time.
   */
  function transferableTokens(address holder, uint64 time) public constant returns (uint256) {
    return balanceOf(holder);
  }
}

library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

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 amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));

    uint256 _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[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_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;
    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 constant returns (uint256 remaining) {
    return allowed[_owner][_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
   */
  function increaseApproval (address _spender, uint _addedValue)
    returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

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

}

contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(0x0, _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}

contract TokenTimelock {
  using SafeERC20 for ERC20Basic;

  // ERC20 basic token contract being held
  ERC20Basic public token;

  // beneficiary of tokens after they are released
  address public beneficiary;

  // timestamp when token release is enabled
  uint64 public releaseTime;

  function TokenTimelock(ERC20Basic _token, address _beneficiary, uint64 _releaseTime) {
    require(_releaseTime > now);
    token = _token;
    beneficiary = _beneficiary;
    releaseTime = _releaseTime;
  }

  /**
   * @notice Transfers tokens held by timelock to beneficiary.
   * Deprecated: please use TokenTimelock#release instead.
   */
  function claim() public {
    require(msg.sender == beneficiary);
    release();
  }

  /**
   * @notice Transfers tokens held by timelock to beneficiary.
   */
  function release() public {
    require(now >= releaseTime);

    uint256 amount = token.balanceOf(this);
    require(amount > 0);

    token.safeTransfer(beneficiary, amount);
  }
}

contract StarterCoin is MintableToken, LimitedTransferToken {

    string public constant name = "StarterCoin";
    string public constant symbol = "STAC";
    uint8 public constant decimals = 18;

    uint256 public endTimeICO;
    address public bountyWallet;

    function StarterCoin(uint256 _endTimeICO, address _bountyWallet) {
        endTimeICO = _endTimeICO;
        bountyWallet = _bountyWallet;
    }

    function transferableTokens(address holder, uint64 time) public constant returns (uint256) {
        // allow transfers after the end of ICO
        return (time > endTimeICO) || (holder == bountyWallet) ? balanceOf(holder) : 0;
    }

}

contract StarterCoinCrowdsale is Ownable {
    using SafeMath for uint256;
    // The token being sold
    MintableToken public token;

    // start and end timestamps where investments are allowed (both inclusive)
    uint256 public startTime;
    uint256 public endTime;

    uint256[11] public timings;
    uint8[10] public bonuses;

    // address where funds are collected
    address public wallet89;
    address public wallet10;
    address public wallet1;

    // how many token units a buyer gets per wei
    uint256 public constant RATE = 4500;

    // amount of raised money in wei
    uint256 public weiRaised;

    uint256 public tokenSold;

    uint256 public constant CAP = 154622 ether;
    uint256 public constant TOKEN_CAP = 695797500 * (10 ** uint256(18)); // 45000000+62797500+588000000 STC

    TokenTimelock public devTokenTimelock;
    TokenTimelock public foundersTokenTimelock;
    TokenTimelock public teamTokenTimelock;
    TokenTimelock public advisersTokenTimelock;

    uint256 public constant BOUNTY_SUPPLY = 78400000 * (10 ** uint256(18));
    uint256 public constant DEV_SUPPLY = 78400000 * (10 ** uint256(18));
    uint256 public constant FOUNDERS_SUPPLY = 59600000 * (10 ** uint256(18));
    uint256 public constant TEAM_SUPPLY = 39200000 * (10 ** uint256(18));
    uint256 public constant ADVISERS_SUPPLY = 29400000 * (10 ** uint256(18));


    function StarterCoinCrowdsale(
        uint256 [11] _timings,
        uint8 [10] _bonuses,
        address [3] _wallets,
        address bountyWallet,
        address devWallet,
        uint64 devReleaseTime,
        address foundersWallet,
        uint64 foundersReleaseTime,
        address teamWallet,
        uint64 teamReleaseTime,
        address advisersWallet,
        uint64 advisersReleaseTime
        ) {
            require(_timings[0] >= now);

            for(uint i = 1; i < timings.length; i++) {
              require(_timings[i] >= _timings[i-1]);
            }

            timings = _timings;
            bonuses = _bonuses;
            startTime = timings[0];
            endTime = timings[timings.length-1];

            require(devReleaseTime >= endTime);
            require(foundersReleaseTime >= endTime);
            require(teamReleaseTime >= endTime);
            require(advisersReleaseTime >= endTime);

            require(_wallets[0] != 0x0);
            require(_wallets[1] != 0x0);
            require(_wallets[2] != 0x0);

            require(bountyWallet != 0x0);
            require(devWallet != 0x0);
            require(foundersWallet != 0x0);
            require(teamWallet != 0x0);
            require(advisersWallet != 0x0);

            wallet89 = _wallets[0];
            wallet10 = _wallets[1];
            wallet1 = _wallets[2];

            token = new StarterCoin(endTime, bountyWallet);

            token.mint(bountyWallet, BOUNTY_SUPPLY);

            devTokenTimelock = new TokenTimelock(token, devWallet, devReleaseTime);
            token.mint(devTokenTimelock, DEV_SUPPLY);

            foundersTokenTimelock = new TokenTimelock(token, foundersWallet, foundersReleaseTime);
            token.mint(foundersTokenTimelock, FOUNDERS_SUPPLY);

            teamTokenTimelock = new TokenTimelock(token, teamWallet, teamReleaseTime);
            token.mint(teamTokenTimelock, TEAM_SUPPLY);

            advisersTokenTimelock = new TokenTimelock(token, advisersWallet, advisersReleaseTime);
            token.mint(advisersTokenTimelock, ADVISERS_SUPPLY);
        }

        /**
        * event for token purchase logging
        * @param purchaser who paid for the tokens
        * @param beneficiary who got the tokens
        * @param value weis paid for purchase
        * @param amount amount of tokens purchased
        */
        event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);

        // creates the token to be sold.
        // override this method to have crowdsale of a specific mintable token.
        function createTokenContract() internal returns (MintableToken) {
            return new MintableToken();
        }


        // fallback function can be used to buy tokens
        function () payable {
            buyTokens(msg.sender);
        }

        // low level token purchase function
        function buyTokens(address beneficiary) public payable {
            require(beneficiary != 0x0);
            require(msg.value >= 100); // required for proper splitting funds between 3 wallets

            uint256 weiAmount = msg.value;

            // calculate period bonus
            uint256 periodBonus;

            for (uint8 i = 1; i < timings.length; i++) {
              if ( now < timings[i] ) {
                periodBonus = RATE.mul(uint256(bonuses[i-1])).div(100);
                break;
              }
            }

            // calculate bulk purchase bonus
            uint256 bulkPurchaseBonus;
            if (weiAmount >= 50 ether) {
            bulkPurchaseBonus = 3600; // 80% bonus for RATE 4500
            } else if (weiAmount >= 30 ether) {
            bulkPurchaseBonus = 3150; // 70% bonus for RATE 4500
            } else if (weiAmount >= 10 ether) {
            bulkPurchaseBonus = 2250; // 50% bonus for RATE 4500
            } else if (weiAmount >= 5 ether) {
            bulkPurchaseBonus = 1350; // 30% bonus for RATE 4500
            } else if (weiAmount >= 3 ether) {
            bulkPurchaseBonus = 450; // 10% bonus for RATE 4500
            }

            uint256 actualRate = RATE.add(periodBonus).add(bulkPurchaseBonus);

            // calculate token amount to be created
            uint256 tokens = weiAmount.mul(actualRate);

            // update state
            weiRaised = weiRaised.add(weiAmount);
            tokenSold = tokenSold.add(tokens);

            require(validPurchase());

            token.mint(beneficiary, tokens);
            TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

            forwardFunds();
        }

        // send ether to the fund collection wallet
        // override to create custom fund forwarding mechanisms
        function forwardFunds() internal {
          uint256 wei89 = msg.value.mul(89).div(100);
          uint256 wei10 = msg.value.div(10);
          uint256 wei1 = msg.value.sub(wei89).sub(wei10);
          wallet89.transfer(wei89);
          wallet10.transfer(wei10);
          wallet1.transfer(wei1);
        }

        // add off chain contribution. BTC address of contribution added for transparency
        function addOffChainContribution(address beneficiar, uint256 weiAmount, uint256 tokenAmount, string btcAddress) onlyOwner public {
            require(beneficiar != 0x0);
            require(weiAmount > 0);
            require(tokenAmount > 0);
            weiRaised += weiAmount;
            tokenSold += tokenAmount;
            require(validPurchase());
            token.mint(beneficiar, tokenAmount);
        }


        // overriding Crowdsale#validPurchase to add extra CAP logic
        // @return true if investors can buy at the moment
        function validPurchase() internal constant returns (bool) {
            bool withinCap = weiRaised <= CAP;
            bool withinPeriod = now >= startTime && now <= endTime;
            bool withinTokenCap = tokenSold <= TOKEN_CAP;
            return withinPeriod && withinCap && withinTokenCap;
        }

        // overriding Crowdsale#hasEnded to add CAP logic
        // @return true if crowdsale event has ended
        function hasEnded() public constant returns (bool) {
            bool capReached = weiRaised >= CAP;
            return now > endTime || capReached;
        }

    }

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"wallet1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advisersTokenTimelock","outputs":[{"name":"","type":"address"}],"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":"teamTokenTimelock","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundersTokenTimelock","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BOUNTY_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet10","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ADVISERS_SUPPLY","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":true,"inputs":[],"name":"wallet89","outputs":[{"name":"","type":"address"}],"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":"","type":"uint256"}],"name":"timings","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FOUNDERS_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonuses","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TEAM_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DEV_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devTokenTimelock","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAP","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":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiar","type":"address"},{"name":"weiAmount","type":"uint256"},{"name":"tokenAmount","type":"uint256"},{"name":"btcAddress","type":"string"}],"name":"addOffChainContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"inputs":[{"name":"_timings","type":"uint256[11]"},{"name":"_bonuses","type":"uint8[10]"},{"name":"_wallets","type":"address[3]"},{"name":"bountyWallet","type":"address"},{"name":"devWallet","type":"address"},{"name":"devReleaseTime","type":"uint64"},{"name":"foundersWallet","type":"address"},{"name":"foundersReleaseTime","type":"uint64"},{"name":"teamWallet","type":"address"},{"name":"teamReleaseTime","type":"uint64"},{"name":"advisersWallet","type":"address"},{"name":"advisersReleaseTime","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Deployed Bytecode

0x6060604052600436106101455763ffffffff60e060020a6000350416631a026c96811461015057806327687d341461017f5780633197cbb614610192578063322a8957146101b75780634042b66f146101ca578063454a2958146101dd578063519ee19e146101f05780635d771933146102035780635f88ffed14610216578063664e97041461022957806366e232761461023c57806378e979251461024f5780637b775ec3146102625780638da5cb5b146102755780639610f6911461028857806398ca667f1461029e5780639a6524f1146102b1578063ab375641146102c4578063b9c3a818146102f0578063c05f486e14610203578063e9d9c4a914610303578063ec81b48314610316578063ec8ac4d814610329578063ecb70fb71461033d578063f2eb32fb14610364578063f2fde38b146103cc578063fc0c546a146103eb575b61014e336103fe565b005b341561015b57600080fd5b61016361067d565b604051600160a060020a03909116815260200160405180910390f35b341561018a57600080fd5b61016361068c565b341561019d57600080fd5b6101a561069b565b60405190815260200160405180910390f35b34156101c257600080fd5b6101636106a1565b34156101d557600080fd5b6101a56106b0565b34156101e857600080fd5b6101636106b6565b34156101fb57600080fd5b6101a56106c5565b341561020e57600080fd5b6101a56106cb565b341561022157600080fd5b6101636106da565b341561023457600080fd5b6101a56106e9565b341561024757600080fd5b6101a56106ef565b341561025a57600080fd5b6101a56106fe565b341561026d57600080fd5b610163610704565b341561028057600080fd5b610163610713565b341561029357600080fd5b6101a5600435610722565b34156102a957600080fd5b6101a5610736565b34156102bc57600080fd5b6101a5610745565b34156102cf57600080fd5b6102da600435610755565b60405160ff909116815260200160405180910390f35b34156102fb57600080fd5b6101a561077c565b341561030e57600080fd5b61016361078b565b341561032157600080fd5b6101a561079a565b61014e600160a060020a03600435166103fe565b341561034857600080fd5b6103506107a8565b604051901515815260200160405180910390f35b341561036f57600080fd5b61014e60048035600160a060020a03169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506107d095505050505050565b34156103d757600080fd5b61014e600160a060020a03600435166108bd565b34156103f657600080fd5b610163610958565b60008080808080600160a060020a038716151561041a57600080fd5b606434101561042857600080fd5b349550600193505b600b8460ff1610156104b257600460ff8516600b811061044c57fe5b01544210156104a7576104a06064610494600f60ff600019890116600a811061047157fe5b6020808204909201546111949260ff92066101000a90041663ffffffff61096716565b9063ffffffff61099216565b94506104b2565b600190930192610430565b6802b5e3af16b188000086106104cc57610e10925061052d565b6801a055690d9db8000086106104e657610c4e925061052d565b678ac7230489e8000086106104ff576108ca925061052d565b674563918244f40000861061051857610546925061052d565b6729a2241af62c0000861061052d576101c292505b61054f836105436111948863ffffffff6109a916565b9063ffffffff6109a916565b9150610561868363ffffffff61096716565b601354909150610577908763ffffffff6109a916565b60135560145461058d908263ffffffff6109a916565b6014556105986109b8565b15156105a357600080fd5b600154600160a060020a03166340c10f19888360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561060257600080fd5b6102c65a03f1151561061357600080fd5b505050604051805190505086600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18888460405191825260208201526040908101905180910390a3610674610a17565b50505050505050565b601254600160a060020a031681565b601854600160a060020a031681565b60035481565b601754600160a060020a031681565b60135481565b601654600160a060020a031681565b60145481565b6a40d9d88421f592e800000081565b601154600160a060020a031681565b61119481565b6a1851b1318cbc171700000081565b60025481565b601054600160a060020a031681565b600054600160a060020a031681565b600481600b811061072f57fe5b0154905081565b6a314cca79588285e200000081565b6b023f8cda0e3531091e70000081565b600f81600a811061076257fe5b60209182820401919006915054906101000a900460ff1681565b6a206cec4210fac97400000081565b601554600160a060020a031681565b6920be134e7188a138000081565b6000806920be134e7188a1380000601354101590506003544211806107ca5750805b91505090565b60005433600160a060020a039081169116146107eb57600080fd5b600160a060020a038416151561080057600080fd5b6000831161080d57600080fd5b6000821161081a57600080fd5b601380548401905560148054830190556108326109b8565b151561083d57600080fd5b600154600160a060020a03166340c10f19858460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561089c57600080fd5b6102c65a03f115156108ad57600080fd5b5050506040518051505050505050565b60005433600160a060020a039081169116146108d857600080fd5b600160a060020a03811615156108ed57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b6000828202831580610983575082848281151561098057fe5b04145b151561098b57fe5b9392505050565b60008082848115156109a057fe5b04949350505050565b60008282018381101561098b57fe5b6000806000806920be134e7188a13800006013541115925060025442101580156109e457506003544211155b6014549092506b023f8cda0e3531091e7000009011159050818015610a065750825b8015610a0f5750805b935050505090565b60008080610a31606461049434605963ffffffff61096716565b9250610a4434600a63ffffffff61099216565b9150610a6682610a5a348663ffffffff610b0716565b9063ffffffff610b0716565b601054909150600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515610a9c57600080fd5b601154600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515610acf57600080fd5b601254600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610b0257600080fd5b505050565b600082821115610b1357fe5b509003905600a165627a7a72305820a9274094528a0819a03308d8fe2dc218d93b53ea79316f480597b007c2314eae0029

Swarm Source

bzzr://73dfd1c26e6c0b444d01f554a32699dce958ace240e441bbbb12f355c604db57

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.