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

TxHash Age From To Value [TxFee]
0xcf2eccdb72b726a8f67f15b8cf7737247dec4da890a8476867220219f03b006c179 days 10 hrs ago0x42da13a11521d4a097e581126803d7b2b0e62627  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.001006591
0xd357edf67ea550e65a5a6da5b1e71d1e02a2a6d8eb86886803c5b2467bd7eefb180 days 13 hrs ago0xda5cba3fb9aa3fcb3e79a3b9dd001c0fa1c737f9  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.001006591
0x8ad8373a03bfd66f9cea36e56b7c0b0a98f4f829837018fbc05db5901a64950b192 days 5 hrs ago0x88118296afb6cc0eba9a81f0aaa356c8a3c86415  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.00122755
0x2be56fd0c979c9ac7751777a848f5b0a797080652202809bf61e56d32284fc67197 days 17 hrs ago0x2b9b17daaaa9afd83cb6f7ba959be985f8c20eaf  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.000098204
0x22216186ef45222ec9789cbccb7f866b4185cf5f2ec82cf216d5b5cc910dbba2198 days 4 hrs ago0xf9afb5a6fe80964bfd16f144a4bdb9dc034dd65f  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.000098204
0x27a03e59a666afb99a57a18075ec4330ab2c24f91a7442b45cf2eba097a8b5c2198 days 4 hrs ago0xf1228ac64d8538a522c10a6b5ec6f489983cbc3b  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.000098204
0xef3cd9c62c6a0e9a90502e6f5855149646f538e86ad7411e6126a1bef6d31360198 days 4 hrs ago0xcd9409a642c98aedcb70279ec2142982f4f604ff  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.000049102
0x3b0976d01a029775788e7701615b611da36d883b4b22085465f1f6bfd39f3c6e198 days 4 hrs ago0x427115c38faae7467d3ccb89762b14756775d93d  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.000098204
0xddd453a1b48fb71ccef65e2f3fc7b0b413493c8ce4ee61e6b99f0a93202bda6d198 days 5 hrs ago0xbe1035ea40cf0aad0cba097d36041e014eb610ae  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.00122755
0x50d94b2fa892477d5202b6f8011a87b78949e8d0d21cb9a90c421bda097bb074198 days 5 hrs ago0xaf17b4d3158983c80ff54c37d8be97a8780e4f59  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.00122755
0x44280f471ae8c9065c34a863d2349b25658b34e8daef91140278b0579762e39f199 days 6 hrs ago0x3915580086d534ff6eb6e444d5b74986199a8659  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.00122755
0xabf3b8160d39f7f73530c769cbc8685579b9d98a93287d85c77b7da170f32625200 days 2 hrs ago0xc004ebfdfbcd79fdc7dfdea4916edc0e84a4290a  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.00122755
0x3d06140579fe15870648538076591655d4fdc09710231a7dc8fcf17bf1dcf422200 days 4 hrs ago0xe445c0ae7c610c4ec22499031fd4147292824a08  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.00122755
0xe2716f506e087f25b5833878d59b68c7d3bf9f0c0b22bc4702617b951ee8f3aa200 days 4 hrs ago0x5ba6ae05eb5553605cce7f0b470a665c7acd34c2  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60 Ether0.0023959
0xe9a5d37a4b895cce2d8032a0d250eaf7cccef3c12ff5c13dffdb8440baf16099200 days 6 hrs ago0xbc209738a1f91c99efa7fae4eca6ebc4f9c6479c  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60.3 Ether0.000387901
0xdc9055814198b093babd1f0b367689ab5b4ed5121db394d5c99e9ac4301863d2207 days 19 hrs ago0xcd9409a642c98aedcb70279ec2142982f4f604ff  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60.99935 Ether0.000094621
0x03b5534779f9052e06b0efa392d175aca2d31d20588426be8258d8a89a2351fb207 days 19 hrs ago0xf1228ac64d8538a522c10a6b5ec6f489983cbc3b  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a63.499 Ether0.000129242
0x5f51ee8ffd589735a1665f28da6181adfe7180af4b11fb4e074a3930f15df304207 days 19 hrs ago0xe445c0ae7c610c4ec22499031fd4147292824a08  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a63.892 Ether0.000064621
0xd12ad2eae7ce3858f4aaa294b7e02682c2766596d9e119a7d427acd3102c4565207 days 19 hrs ago0x427115c38faae7467d3ccb89762b14756775d93d  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a61.999 Ether0.000064621
0xd95e56827c9773dea94a5b749520c5a2a382ff61856faa93aa25b11d7c2eafc7207 days 19 hrs ago0xc004ebfdfbcd79fdc7dfdea4916edc0e84a4290a  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a69.99 Ether0.000189242
0xa833eed5a48dd7ba7d76b5e9049960c90295cb3990525d82e20f9f8b67595507207 days 19 hrs ago0xf1228ac64d8538a522c10a6b5ec6f489983cbc3b  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a63.5 Ether0.000129242
0xa75ad826a8196cd06fefea5ba20c0e9a42b9711db43e915f8b904e7382f17333207 days 20 hrs ago0x9d63c1dfd6a62c4a17bf0478491901cf77225ef6  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a61 Ether0.003879461
0x52ed7fb3fbc2d10700131a2fe7a1097711679ae7ab94dd9c8b38b0f21a9c049a208 days 5 hrs ago0xf1228ac64d8538a522c10a6b5ec6f489983cbc3b  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a61 Ether0.000094621
0x3e2f3af55a64a2dc0b779285466b53011a6b522412c984e328dae59b99a3d3df208 days 5 hrs ago0x427115c38faae7467d3ccb89762b14756775d93d  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a64 Ether0.000094621
0x85e5849fb1f1f30c4e28e9882c684ac8bd8314753e72b239052b050daab6bca6208 days 5 hrs ago0x3915580086d534ff6eb6e444d5b74986199a8659  IN   0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a63.95 Ether0.000094621
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xe9a5d37a4b895cce2d8032a0d250eaf7cccef3c12ff5c13dffdb8440baf160995533898200 days 6 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.3 Ether
0xdc9055814198b093babd1f0b367689ab5b4ed5121db394d5c99e9ac4301863d25490516207 days 19 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.99935 Ether
0x03b5534779f9052e06b0efa392d175aca2d31d20588426be8258d8a89a2351fb5490474207 days 19 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc3.499 Ether
0x5f51ee8ffd589735a1665f28da6181adfe7180af4b11fb4e074a3930f15df3045490447207 days 19 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc3.892 Ether
0xd12ad2eae7ce3858f4aaa294b7e02682c2766596d9e119a7d427acd3102c45655490444207 days 19 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc1.999 Ether
0xd95e56827c9773dea94a5b749520c5a2a382ff61856faa93aa25b11d7c2eafc75490353207 days 19 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc9.99 Ether
0xa833eed5a48dd7ba7d76b5e9049960c90295cb3990525d82e20f9f8b675955075490347207 days 19 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc3.5 Ether
0xa75ad826a8196cd06fefea5ba20c0e9a42b9711db43e915f8b904e7382f173335490204207 days 20 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc1 Ether
0x52ed7fb3fbc2d10700131a2fe7a1097711679ae7ab94dd9c8b38b0f21a9c049a5487992208 days 5 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc1 Ether
0x3e2f3af55a64a2dc0b779285466b53011a6b522412c984e328dae59b99a3d3df5487982208 days 5 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc4 Ether
0x85e5849fb1f1f30c4e28e9882c684ac8bd8314753e72b239052b050daab6bca65487947208 days 5 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc3.95 Ether
0xa5fb49ab0095196f19555c0a7b0a741b0e148576fdc4e7d823b4cbc75906346d5487895208 days 5 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc1.49 Ether
0xca170ec72bbcd691b2df688e3cddc5f5122cc77e3662f62bde3e2d950d2bd1ff5487853208 days 6 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc3 Ether
0x2b3603b6954c5fe6f179200b07be973607da4c14f78cd3ffc194d61595f7941a5487847208 days 6 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.1 Ether
0xdde8b1b378677e7174a0e67aec4054b3ede0f27e2a8c2e558e66d661abbb41125487540208 days 7 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc6.45 Ether
0xee47c4bbaf80fed97456cdcde0327e9b2e0674512b16003dbda29a365b2a9ea35487409208 days 7 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc2.99990516 Ether
0x0e6e11c195cea89acfb10c392525c5605ae23a2c6702bfa936d587267da144b55479628209 days 15 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.048 Ether
0x510ce1261863d1bcdbc244a6082e4528024d66e2a73276318a4b989fbfa97b3e5473815210 days 15 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.96 Ether
0xbde5aa2af9381108146d1f05ca4439cb4a37b650a20b5b4e4650ae9a892fde6e5473651210 days 16 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.2 Ether
0xf636a786625680926542b8560c4a2dad0b3b677bbb13d88b554da2e109efd4f25459059213 days 4 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.05 Ether
0xb6070a3c290929eb9dac4f620801fad1290444634e7217fef0b9555b92368e7e5451073214 days 13 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.015 Ether
0xd6ac8452fa906addb23752b7fd51d95cdf4e7a597e893b9ea692c25a2ac09aea5450977214 days 13 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.014 Ether
0xef163f6d9de8c40658da505ab4f0c79e020ad3863576569ad00ef2f5046964155450896214 days 14 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.025 Ether
0x995770625437ef59ad0338ecb7514f38d481399ddb968691af958e6fa01297bb5450846214 days 14 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.0055 Ether
0x1335413f262b721819d91d795dba9b1fa26abc09286d8d986ee857041706df4b5450815214 days 14 hrs ago0xc86554bee96fdb3c85f85b576ed52d5e1eacc3a60xc178d4fe4451d863cd01fd3e240d17194fd178bc0.05 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

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



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

// File: contracts/zeppelin-solidity/SafeMath.sol

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

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  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;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/zeppelin-solidity/ERC20/ERC20Basic.sol

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

// File: contracts/zeppelin-solidity/ERC20/BasicToken.sol

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

  mapping(address => uint256) balances;

  uint256 totalSupply_;

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

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

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    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 view returns (uint256 balance) {
    return balances[_owner];
  }

}

// File: contracts/zeppelin-solidity/ERC20/BurnableToken.sol

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is BasicToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    require(_value <= balances[msg.sender]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    address burner = msg.sender;
    balances[burner] = balances[burner].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    Burn(burner, _value);
    Transfer(burner, address(0), _value);
  }
}

// File: contracts/zeppelin-solidity/Ownable.sol

/**
 * @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;


  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() 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));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// File: contracts/zeppelin-solidity/ERC20/ERC20.sol

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

// File: contracts/zeppelin-solidity/ERC20/StandardToken.sol

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

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


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

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    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 view returns (uint256) {
    return allowed[_owner][_spender];
  }

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

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

}

// File: contracts/zeppelin-solidity/ERC20/MintableToken.sol

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
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(address(0), _to, _amount);
    return true;
  }

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

// File: contracts/zeppelin-solidity/ERC20/CappedToken.sol

/**
 * @title Capped token
 * @dev Mintable token with a token cap.
 */
contract CappedToken is MintableToken {

  uint256 public cap;

  function CappedToken(uint256 _cap) public {
    require(_cap > 0);
    cap = _cap;
  }

  /**
   * @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) {
    require(totalSupply_.add(_amount) <= cap);

    return super.mint(_to, _amount);
  }

}

// File: contracts/zeppelin-solidity/ERC827/ERC827.sol

/**
   @title ERC827 interface, an extension of ERC20 token standard

   Interface of a ERC827 token, following the ERC20 standard with extra
   methods to transfer value and data and execute calls in transfers and
   approvals.
 */
contract ERC827 is ERC20 {

  function approve( address _spender, uint256 _value, bytes _data ) public returns (bool);
  function transfer( address _to, uint256 _value, bytes _data ) public returns (bool);
  function transferFrom( address _from, address _to, uint256 _value, bytes _data ) public returns (bool);

}

// File: contracts/zeppelin-solidity/ERC827/ERC827Token.sol

/**
   @title ERC827, an extension of ERC20 token standard

   Implementation the ERC827, following the ERC20 standard with extra
   methods to transfer value and data and execute calls in transfers and
   approvals.
   Uses OpenZeppelin StandardToken.
 */
contract ERC827Token is ERC827, StandardToken {

  /**
     @dev Addition to ERC20 token methods. It allows to
     approve the transfer of value and execute a call with the sent data.

     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 that will spend the funds.
     @param _value The amount of tokens to be spent.
     @param _data ABI-encoded contract call to call `_to` address.

     @return true if the call function was executed successfully
   */
  function approve(address _spender, uint256 _value, bytes _data) public returns (bool) {
    require(_spender != address(this));

    super.approve(_spender, _value);

    require(_spender.call(_data));

    return true;
  }

  /**
     @dev Addition to ERC20 token methods. Transfer tokens to a specified
     address and execute a call with the sent data on the same transaction

     @param _to address The address which you want to transfer to
     @param _value uint256 the amout of tokens to be transfered
     @param _data ABI-encoded contract call to call `_to` address.

     @return true if the call function was executed successfully
   */
  function transfer(address _to, uint256 _value, bytes _data) public returns (bool) {
    require(_to != address(this));

    super.transfer(_to, _value);

    require(_to.call(_data));
    return true;
  }

  /**
     @dev Addition to ERC20 token methods. Transfer tokens from one address to
     another and make a contract call on the same transaction

     @param _from The address which you want to send tokens from
     @param _to The address which you want to transfer to
     @param _value The amout of tokens to be transferred
     @param _data ABI-encoded contract call to call `_to` address.

     @return true if the call function was executed successfully
   */
  function transferFrom(address _from, address _to, uint256 _value, bytes _data) public returns (bool) {
    require(_to != address(this));

    super.transferFrom(_from, _to, _value);

    require(_to.call(_data));
    return true;
  }

  /**
   * @dev Addition to StandardToken methods. Increase the amount of tokens that
   * an owner allowed to a spender and execute a call with the sent data.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   * @param _data ABI-encoded contract call to call `_spender` address.
   */
  function increaseApproval(address _spender, uint _addedValue, bytes _data) public returns (bool) {
    require(_spender != address(this));

    super.increaseApproval(_spender, _addedValue);

    require(_spender.call(_data));

    return true;
  }

  /**
   * @dev Addition to StandardToken methods. Decrease the amount of tokens that
   * an owner allowed to a spender and execute a call with the sent data.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   * @param _data ABI-encoded contract call to call `_spender` address.
   */
  function decreaseApproval(address _spender, uint _subtractedValue, bytes _data) public returns (bool) {
    require(_spender != address(this));

    super.decreaseApproval(_spender, _subtractedValue);

    require(_spender.call(_data));

    return true;
  }

}

// File: contracts/QuintessenceToken.sol

contract AbstractQuintessenceToken is CappedToken, ERC827Token, BurnableToken {
  string public name = "Quintessence Token";
  string public symbol = "QST";

  function AbstractQuintessenceToken(uint256 initial_supply, uint256 _cap)
        CappedToken(_cap) public {
    mint(msg.sender, initial_supply);
  }
}

contract QuintessenceToken is AbstractQuintessenceToken {
  uint256 public constant decimals = 18;
  uint256 public constant TOKEN_CAP = 56000000 * (10 ** decimals);
  // Allocate 4% of TOKEN_CAP to the team.
  uint256 public constant TEAM_SUPPLY = (TOKEN_CAP * 4) / 100;

  function QuintessenceToken() AbstractQuintessenceToken(TEAM_SUPPLY, TOKEN_CAP) public {
  }
}

// File: contracts/zeppelin-solidity/crowdsale/Crowdsale.sol

/**
 * @title Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale,
 * allowing investors to purchase tokens with ether. This contract implements
 * such functionality in its most fundamental form and can be extended to provide additional
 * functionality and/or custom behavior.
 * The external interface represents the basic interface for purchasing tokens, and conform
 * the base architecture for crowdsales. They are *not* intended to be modified / overriden.
 * The internal interface conforms the extensible and modifiable surface of crowdsales. Override 
 * the methods to add functionality. Consider using 'super' where appropiate to concatenate
 * behavior.
 */

contract Crowdsale {
  using SafeMath for uint256;

  // The token being sold
  ERC20 public token;

  // Address where funds are collected
  address public wallet;

  // How many token units a buyer gets per wei
  uint256 public rate;

  // Amount of wei raised
  uint256 public weiRaised;

  /**
   * 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);

  /**
   * @param _rate Number of token units a buyer gets per wei
   * @param _wallet Address where collected funds will be forwarded to
   * @param _token Address of the token being sold
   */
  function Crowdsale(uint256 _rate, address _wallet, ERC20 _token) public {
    require(_rate > 0);
    require(_wallet != address(0));
    require(_token != address(0));

    rate = _rate;
    wallet = _wallet;
    token = _token;
  }

  // -----------------------------------------
  // Crowdsale external interface
  // -----------------------------------------

  /**
   * @dev fallback function ***DO NOT OVERRIDE***
   */
  function () external payable {
    buyTokens(msg.sender);
  }

  /**
   * @dev low level token purchase ***DO NOT OVERRIDE***
   * @param _beneficiary Address performing the token purchase
   */
  function buyTokens(address _beneficiary) public payable {

    uint256 weiAmount = msg.value;
    _preValidatePurchase(_beneficiary, weiAmount);

    // calculate token amount to be created
    uint256 tokens = _getTokenAmount(weiAmount);

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

    _processPurchase(_beneficiary, tokens);
    TokenPurchase(msg.sender, _beneficiary, weiAmount, tokens);

    _updatePurchasingState(_beneficiary, weiAmount);

    _forwardFunds();
    _postValidatePurchase(_beneficiary, weiAmount);
  }

  // -----------------------------------------
  // Internal interface (extensible)
  // -----------------------------------------

  /**
   * @dev Validation of an incoming purchase. Use require statemens to revert state when conditions are not met. Use super to concatenate validations.
   * @param _beneficiary Address performing the token purchase
   * @param _weiAmount Value in wei involved in the purchase
   */
  function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
    require(_beneficiary != address(0));
    require(_weiAmount != 0);
  }

  /**
   * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met.
   * @param _beneficiary Address performing the token purchase
   * @param _weiAmount Value in wei involved in the purchase
   */
  function _postValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
    // optional override
  }

  /**
   * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens.
   * @param _beneficiary Address performing the token purchase
   * @param _tokenAmount Number of tokens to be emitted
   */
  function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
    token.transfer(_beneficiary, _tokenAmount);
  }

  /**
   * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
   * @param _beneficiary Address receiving the tokens
   * @param _tokenAmount Number of tokens to be purchased
   */
  function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
    _deliverTokens(_beneficiary, _tokenAmount);
  }

  /**
   * @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.)
   * @param _beneficiary Address receiving the tokens
   * @param _weiAmount Value in wei involved in the purchase
   */
  function _updatePurchasingState(address _beneficiary, uint256 _weiAmount) internal {
    // optional override
  }

  /**
   * @dev Override to extend the way in which ether is converted to tokens.
   * @param _weiAmount Value in wei to be converted into tokens
   * @return Number of tokens that can be purchased with the specified _weiAmount
   */
  function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) {
    return _weiAmount.mul(rate);
  }

  /**
   * @dev Determines how ETH is stored/forwarded on purchases.
   */
  function _forwardFunds() internal {
    wallet.transfer(msg.value);
  }
}

// File: contracts/zeppelin-solidity/crowdsale/CappedCrowdsale.sol

/**
 * @title CappedCrowdsale
 * @dev Crowdsale with a limit for total contributions.
 */
contract CappedCrowdsale is Crowdsale {
  using SafeMath for uint256;

  uint256 public cap;

  /**
   * @dev Constructor, takes maximum amount of wei accepted in the crowdsale.
   * @param _cap Max amount of wei to be contributed
   */
  function CappedCrowdsale(uint256 _cap) public {
    require(_cap > 0);
    cap = _cap;
  }

  /**
   * @dev Checks whether the cap has been reached. 
   * @return Whether the cap was reached
   */
  function capReached() public view returns (bool) {
    return weiRaised >= cap;
  }

  /**
   * @dev Extend parent behavior requiring purchase to respect the funding cap.
   * @param _beneficiary Token purchaser
   * @param _weiAmount Amount of wei contributed
   */
  function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
    super._preValidatePurchase(_beneficiary, _weiAmount);
    require(weiRaised.add(_weiAmount) <= cap);
  }

}

// File: contracts/zeppelin-solidity/crowdsale/MintedCrowdsale.sol

/**
 * @title MintedCrowdsale
 * @dev Extension of Crowdsale contract whose tokens are minted in each purchase.
 * Token ownership should be transferred to MintedCrowdsale for minting. 
 */
contract MintedCrowdsale is Crowdsale {

  /**
  * @dev Overrides delivery by minting tokens upon purchase.
  * @param _beneficiary Token purchaser
  * @param _tokenAmount Number of tokens to be minted
  */
  function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
    require(MintableToken(token).mint(_beneficiary, _tokenAmount));
  }
}

// File: contracts/zeppelin-solidity/crowdsale/TimedCrowdsale.sol

/**
 * @title TimedCrowdsale
 * @dev Crowdsale accepting contributions only within a time frame.
 */
contract TimedCrowdsale is Crowdsale {
  using SafeMath for uint256;

  uint256 public openingTime;
  uint256 public closingTime;

  /**
   * @dev Reverts if not in crowdsale time range. 
   */
  modifier onlyWhileOpen {
    require(now >= openingTime && now <= closingTime);
    _;
  }

  /**
   * @dev Constructor, takes crowdsale opening and closing times.
   * @param _openingTime Crowdsale opening time
   * @param _closingTime Crowdsale closing time
   */
  function TimedCrowdsale(uint256 _openingTime, uint256 _closingTime) public {
    require(_openingTime >= now);
    require(_closingTime >= _openingTime);

    openingTime = _openingTime;
    closingTime = _closingTime;
  }

  /**
   * @dev Checks whether the period in which the crowdsale is open has already elapsed.
   * @return Whether crowdsale period has elapsed
   */
  function hasClosed() public view returns (bool) {
    return now > closingTime;
  }
  
  /**
   * @dev Extend parent behavior requiring to be within contributing period
   * @param _beneficiary Token purchaser
   * @param _weiAmount Amount of wei contributed
   */
  function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal onlyWhileOpen {
    super._preValidatePurchase(_beneficiary, _weiAmount);
  }

}

// File: contracts/zeppelin-solidity/crowdsale/FinalizableCrowdsale.sol

/**
 * @title FinalizableCrowdsale
 * @dev Extension of Crowdsale where an owner can do extra work
 * after finishing.
 */
contract FinalizableCrowdsale is TimedCrowdsale, Ownable {
  using SafeMath for uint256;

  bool public isFinalized = false;

  event Finalized();

  /**
   * @dev Must be called after crowdsale ends, to do some extra finalization
   * work. Calls the contract's finalization function.
   */
  function finalize() onlyOwner public {
    require(!isFinalized);
    require(hasClosed());

    finalization();
    Finalized();

    isFinalized = true;
  }

  /**
   * @dev Can be overridden to add finalization logic. The overriding function
   * should call super.finalization() to ensure the chain of finalization is
   * executed entirely.
   */
  function finalization() internal {
  }
}

// File: contracts/zeppelin-solidity/crowdsale/RefundVault.sol

/**
 * @title RefundVault
 * @dev This contract is used for storing funds while a crowdsale
 * is in progress. Supports refunding the money if crowdsale fails,
 * and forwarding it if crowdsale is successful.
 */
contract RefundVault is Ownable {
  using SafeMath for uint256;

  enum State { Active, Refunding, Closed }

  mapping (address => uint256) public deposited;
  address public wallet;
  State public state;

  event Closed();
  event RefundsEnabled();
  event Refunded(address indexed beneficiary, uint256 weiAmount);

  /**
   * @param _wallet Vault address
   */
  function RefundVault(address _wallet) public {
    require(_wallet != address(0));
    wallet = _wallet;
    state = State.Active;
  }

  /**
   * @param investor Investor address
   */
  function deposit(address investor) onlyOwner public payable {
    require(state == State.Active);
    deposited[investor] = deposited[investor].add(msg.value);
  }

  function close() onlyOwner public {
    require(state == State.Active);
    state = State.Closed;
    Closed();
    wallet.transfer(this.balance);
  }

  function enableRefunds() onlyOwner public {
    require(state == State.Active);
    state = State.Refunding;
    RefundsEnabled();
  }

  /**
   * @param investor Investor address
   */
  function refund(address investor) public {
    require(state == State.Refunding);
    uint256 depositedValue = deposited[investor];
    deposited[investor] = 0;
    investor.transfer(depositedValue);
    Refunded(investor, depositedValue);
  }
}

// File: contracts/zeppelin-solidity/crowdsale/RefundableCrowdsale.sol

/**
 * @title RefundableCrowdsale
 * @dev Extension of Crowdsale contract that adds a funding goal, and
 * the possibility of users getting a refund if goal is not met.
 * Uses a RefundVault as the crowdsale's vault.
 */
contract RefundableCrowdsale is FinalizableCrowdsale {
  using SafeMath for uint256;

  // minimum amount of funds to be raised in weis
  uint256 public goal;

  // refund vault used to hold funds while crowdsale is running
  RefundVault public vault;

  /**
   * @dev Constructor, creates RefundVault. 
   * @param _goal Funding goal
   */
  function RefundableCrowdsale(uint256 _goal) public {
    require(_goal > 0);
    vault = new RefundVault(wallet);
    goal = _goal;
  }

  /**
   * @dev Investors can claim refunds here if crowdsale is unsuccessful
   */
  function claimRefund() public {
    require(isFinalized);
    require(!goalReached());

    vault.refund(msg.sender);
  }

  /**
   * @dev Checks whether funding goal was reached. 
   * @return Whether funding goal was reached
   */
  function goalReached() public view returns (bool) {
    return weiRaised >= goal;
  }

  /**
   * @dev vault finalization task, called when owner calls finalize()
   */
  function finalization() internal {
    if (goalReached()) {
      vault.close();
    } else {
      vault.enableRefunds();
    }

    super.finalization();
  }

  /**
   * @dev Overrides Crowdsale fund forwarding, sending funds to vault.
   */
  function _forwardFunds() internal {
    vault.deposit.value(msg.value)(msg.sender);
  }

}

// File: contracts/CryptonsPreICO.sol

contract DiscountedPreICO is TimedCrowdsale {
  using SafeMath for uint256;
  
  function DiscountedPreICO(uint256 _opening_time, uint256 _closing_time) 
      TimedCrowdsale(_opening_time, _closing_time) public {
  }
  
  
  function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) {
     return _weiAmount.mul(rate).mul(100).div(100 - getCurrentDiscount());
  }
  
  /**
   * returns discount for the current time.
   */
  function getCurrentDiscount() public view returns(uint256) {
    return 0;
  }
}

contract AbstractCryptonsPreICO is RefundableCrowdsale, DiscountedPreICO,
                                   MintedCrowdsale, CappedCrowdsale {
  
  function AbstractCryptonsPreICO(uint256 _opening_time, uint256 _closing_time, 
                                  uint256 _rate, address _wallet, AbstractQuintessenceToken _token,
                                  uint256 _soft_cap, uint256 _hard_cap)
        RefundableCrowdsale(_soft_cap)
        DiscountedPreICO(_opening_time, _closing_time)
        CappedCrowdsale(_hard_cap)
        Crowdsale(_rate, _wallet, _token) public {
    require(_soft_cap < _hard_cap);
  }

  function finalization() internal {
    super.finalization();
    QuintessenceToken(token).transferOwnership(msg.sender);
  }
}

contract AbstractCryptonsPreICOWithDiscount is AbstractCryptonsPreICO {

    function AbstractCryptonsPreICOWithDiscount(
        uint256 _opening_time, uint256 _closing_time,
        uint256 _rate, address _wallet, AbstractQuintessenceToken _token,
        uint256 _soft_cap, uint256 _hard_cap)
      AbstractCryptonsPreICO(_opening_time, _closing_time,
                             _rate, _wallet, _token,
                             _soft_cap, _hard_cap) public {
    }

    function getCurrentDiscount() public view returns(uint256) {
      if (now < openingTime + 1 weeks)
        return 50;
      return 40;
    }
}

contract CryptonsPreICO is AbstractCryptonsPreICOWithDiscount {

  // PreICO starts in the noon, and ends 2 weeks later in the evening.
  uint256 public constant OPENING_TIME = 1523880000; // 2018-04-16 12:00:00+00:00 (UTC)
  uint256 public constant CLOSING_TIME = 1525125599; // 2018-04-30 21:59:59+00:00 (UTC)

  uint256 public constant ETH_TO_QST_TOKEN_RATE = 1000;

  uint256 public constant SOFT_CAP = 656 ether;
  uint256 public constant HARD_CAP = 2624 ether;

  function CryptonsPreICO(address _wallet, QuintessenceToken _token)
      AbstractCryptonsPreICOWithDiscount(OPENING_TIME, CLOSING_TIME,
                                         ETH_TO_QST_TOKEN_RATE,
                                         _wallet, _token,
                                         SOFT_CAP, HARD_CAP) public {
      // Check if we didn't set up the opening and closing time to far in
      // the future by accident.
      require(now + 1 weeks > openingTime);
      require(openingTime + 2 weeks + 10 hours > closingTime);
  }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"ETH_TO_QST_TOKEN_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"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":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"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":"closingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"OPENING_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CLOSING_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SOFT_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","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":"getCurrentDiscount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_wallet","type":"address"},{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"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"}]

  Contract Creation Code Switch To Opcodes View
60606040526006805460a060020a60ff0219169055341561001f57600080fd5b60405160408061120a83398101604052808051919060200180519150635ad490409050635ae791df6103e8848468238fd42c5cf0400000688e3f50b173c1000000868686868686868087878482828a8a8a600160a060020a038216151561008557600080fd5b600160a060020a038116151561009a57600080fd5b60029290925560018054600160a060020a03928316600160a060020a03199182161790915560008054929093169116179055428210156100d957600080fd5b818110156100e657600080fd5b60049190915560055560068054600160a060020a03191633600160a060020a03161790556000811161011757600080fd5b600154600160a060020a031661012b6101d1565b600160a060020a039091168152602001604051809103906000f080151561015157600080fd5b60088054600160a060020a031916600160a060020a039290921691909117905560075550506000811161018357600080fd5b60095580821061019257600080fd5b50505050505050505050505050506004544262093a80011115156101b557600080fd5b600554600454621301a001116101ca57600080fd5b50506101e1565b60405161060c80610bfe83390190565b610a0e806101f06000396000f3006060604052600436106101245763ffffffff60e060020a6000350416630d285d8c811461012f5780631515bc2b146101545780632c4e722e1461017b578063355274ea1461018e5780633a03171c146101a157806340193883146101b45780634042b66f146101c75780634b6753bc146101da5780634bb278f3146101ed5780634f935945146102005780635200d64314610213578063521eb2731461022657806353865562146102555780637d3d6522146102685780638d4e40831461027b5780638da5cb5b1461028e578063b5545a3c146102a1578063b652dc2f146102b4578063b7a8807c146102c7578063ec8ac4d8146102da578063f0eb737a146102ee578063f2fde38b14610301578063fbfa77cf14610320578063fc0c546a14610333575b61012d33610346565b005b341561013a57600080fd5b6101426103ee565b60405190815260200160405180910390f35b341561015f57600080fd5b6101676103f4565b604051901515815260200160405180910390f35b341561018657600080fd5b6101426103fd565b341561019957600080fd5b610142610403565b34156101ac57600080fd5b610142610409565b34156101bf57600080fd5b610142610416565b34156101d257600080fd5b61014261041c565b34156101e557600080fd5b610142610422565b34156101f857600080fd5b61012d610428565b341561020b57600080fd5b6101676104e9565b341561021e57600080fd5b6101426104f4565b341561023157600080fd5b6102396104fc565b604051600160a060020a03909116815260200160405180910390f35b341561026057600080fd5b61014261050b565b341561027357600080fd5b610167610513565b341561028657600080fd5b61016761051e565b341561029957600080fd5b61023961053f565b34156102ac57600080fd5b61012d61054e565b34156102bf57600080fd5b6101426105e6565b34156102d257600080fd5b6101426105f3565b61012d600160a060020a0360043516610346565b34156102f957600080fd5b6101426105f9565b341561030c57600080fd5b61012d600160a060020a0360043516610618565b341561032b57600080fd5b6102396106b3565b341561033e57600080fd5b6102396106c2565b34600061035383836106d1565b61035c82610700565b600354909150610372908363ffffffff61074816565b60035561037f8382610762565b82600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a36103d783836106fc565b6103df61076c565b6103e983836106fc565b505050565b6103e881565b60055442115b90565b60025481565b60095481565b688e3f50b173c100000081565b60075481565b60035481565b60055481565b60065433600160a060020a0390811691161461044357600080fd5b60065474010000000000000000000000000000000000000000900460ff161561046b57600080fd5b6104736103f4565b151561047e57600080fd5b6104866107cf565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16006805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600954600354101590565b635ad4904081565b600154600160a060020a031681565b635ae791df81565b600754600354101590565b60065474010000000000000000000000000000000000000000900460ff1681565b600654600160a060020a031681565b60065474010000000000000000000000000000000000000000900460ff16151561057757600080fd5b61057f610513565b1561058957600080fd5b600854600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156105d957600080fd5b5af115156103e957600080fd5b68238fd42c5cf040000081565b60045481565b600060045462093a8001421015610612575060326103fa565b50602890565b60065433600160a060020a0390811691161461063357600080fd5b600160a060020a038116151561064857600080fd5b600654600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600854600160a060020a031681565b600054600160a060020a031681565b6106db8282610827565b6009546003546106f1908363ffffffff61074816565b11156106fc57600080fd5b5050565b600061074261070d6105f9565b606403610736606461072a6002548761085090919063ffffffff16565b9063ffffffff61085016565b9063ffffffff61087b16565b92915050565b60008282018381101561075757fe5b8091505b5092915050565b6106fc8282610892565b600854600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b15156107bc57600080fd5b5af115156107c957600080fd5b50505050565b6107d761090a565b600054600160a060020a031663f2fde38b3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156105d957600080fd5b600454421015801561083b57506005544211155b151561084657600080fd5b6106fc82826109c1565b600080831515610863576000915061075b565b5082820282848281151561087357fe5b041461075757fe5b600080828481151561088957fe5b04949350505050565b600054600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156108e857600080fd5b5af115156108f557600080fd5b5050506040518051905015156106fc57600080fd5b610912610513565b1561096b57600854600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561095657600080fd5b5af1151561096357600080fd5b5050506109bb565b600854600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156109aa57600080fd5b5af115156109b757600080fd5b5050505b6109bf5b565b600160a060020a03821615156109d657600080fd5b8015156106fc57600080fd00a165627a7a72305820a02032f7d063c19030360f2c3e3daeacfd12649487e092a01db58c87fb4b57ff00296060604052341561000f57600080fd5b60405160208061060c8339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60028054600160a060020a031916600160a060020a03929092169190911760a060020a60ff021916905561057e8061008e6000396000f3006060604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009d578063521eb273146100b25780638c52dc41146100e15780638da5cb5b146100f4578063c19d93fb14610107578063cb13cddb1461013e578063f2fde38b1461016f578063f340fa011461018e578063fa89401a146101a2575b600080fd5b34156100a857600080fd5b6100b06101c1565b005b34156100bd57600080fd5b6100c561029c565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b6100b06102ab565b34156100ff57600080fd5b6100c561033c565b341561011257600080fd5b61011a61034b565b6040518082600281111561012a57fe5b60ff16815260200191505060405180910390f35b341561014957600080fd5b61015d600160a060020a036004351661035b565b60405190815260200160405180910390f35b341561017a57600080fd5b6100b0600160a060020a036004351661036d565b6100b0600160a060020a0360043516610408565b34156101ad57600080fd5b6100b0600160a060020a036004351661048c565b60005433600160a060020a039081169116146101dc57600080fd5b60006002805460a060020a900460ff16908111156101f657fe5b1461020057600080fd5b6002805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561029a57600080fd5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102c657600080fd5b60006002805460a060020a900460ff16908111156102e057fe5b146102ea57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790557f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a0390811691161461038857600080fd5b600160a060020a038116151561039d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461042357600080fd5b60006002805460a060020a900460ff169081111561043d57fe5b1461044757600080fd5b600160a060020a038116600090815260016020526040902054610470903463ffffffff61053c16565b600160a060020a03909116600090815260016020526040902055565b600060016002805460a060020a900460ff16908111156104a857fe5b146104b257600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f1935050505015156104fb57600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25050565b60008282018381101561054b57fe5b93925050505600a165627a7a72305820cc010ef2df8f1871c7439bc48abd65288d2c3ef1dff8f909ca6649c77c219eb700290000000000000000000000005ba6ae05eb5553605cce7f0b470a665c7acd34c20000000000000000000000003a05efde3003a7181c22d7ce3c13445c54aadd69

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005ba6ae05eb5553605cce7f0b470a665c7acd34c2
Arg [1] : 0000000000000000000000003a05efde3003a7181c22d7ce3c13445c54aadd69


   Swarm Source:
bzzr://cc010ef2df8f1871c7439bc48abd65288d2c3ef1dff8f909ca6649c77c219eb7

 

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