Contract 0x1103849f41222A4C348515331f0E734D4bD9AD34

 

Contract Overview

SolarDAO_TokenSale
Balance:
0 Ether

EtherValue:
$0

Token:
TxHash Block Age From To Value [TxFee]
0x75a79be48f71e459c1c3c92d0cd9b22c9540a826e73b0321bf35cabbbf3dcca64434013511 days 15 hrs ago0xe8e733ed8bb50d162df3d61cf46ce4c5fe16a68b IN  SolarDAO_TokenSale0.1 Ether0.000449757
0x018abd4f3dceca0786bac792071b0decdb41e069538bd1fdbc32d3adc96b6aed4266304555 days 17 hrs ago0x800ebd4655ed059747074ac9e6d72761096123d1 IN  SolarDAO_TokenSale0 Ether0.000441
0x3cd8896828bba11c0e99fcb44c41573c231980b890020cb2e09aa4743333adb64266275555 days 17 hrs ago0x800ebd4655ed059747074ac9e6d72761096123d1 IN  SolarDAO_TokenSale0 Ether0.000441
0x46fd83be15f65340d65a34afedd74afaa2f9dd28093329b216f716c41a1fc32e4255320558 days 18 hrs ago0x3f2d15b311297311170eba9b35543217232d8797 IN  SolarDAO_TokenSale0 Ether0.000740712
0xb1a361e38bd3c004d43130d89dcddf1a62a2310c945014617988c6eaac54b37b4255313558 days 18 hrs ago0x3f2d15b311297311170eba9b35543217232d8797 IN  SolarDAO_TokenSale0 Ether0.000446712
0x48d7f99a456662b5adeaef618ebd2f91bdea643b2b6686185082cccdd689a7d34245626561 days 11 hrs ago0xbe1d9d4933b9ed1f5a5109be3d982e2354af38d1 IN  SolarDAO_TokenSale0.05 Ether0.00625
0x6e3d4be4a914ad5fce38e0f4ebaaf48ec9c84516c59042b50c582067e244a3344245337561 days 13 hrs ago0xfaac1c0dd2dbfc1b9e2e64dfe460ff8ae7c1272c IN  SolarDAO_TokenSale0.2 Ether0.00441
0x24ae61d19c47591425d3d7353e5cab2d6499b27b61d5377948004efb35e3be1a4240316563 days 13 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.5 Ether0.00231
0x718102bcda73dc935307c885d19cc6a36b33cac550a815a91fa5fc2c1fd09e344240305563 days 19 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale1 Ether0.0105
0x593e7e3c34962edba9eb211d327c1753c69335fb23dedfd35b8f62e4ce2e73d14240297563 days 22 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.5 Ether0.0126
0x198e4725a857bbf10e32e32a55246dbdc9866698cf4691743d40d179ecbf83d64240293563 days 23 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.5 Ether0.0025
0x706d1108472622b1f4f56f27c1564a6c1f84d33c4f5cef51639bcc7e08ede0a04240290563 days 23 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.25 Ether0.0025
0x4e3ea90221f9c4192392f8728791960c16c8acf800204fc35fe79cea468c4e9d4240288563 days 24 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.25 Ether0.0021
0x006cc6edab69723cd4af08147e6235cc027663bf2902ad548c295c13b831f1564240285563 days 25 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.25 Ether0.0126
0x21b028efe91cbb9f132b42aa1913589baf44cd5b0709c55fd68eb6a0361783254237667563 days 18 hrs ago0x800ebd4655ed059747074ac9e6d72761096123d1 IN  SolarDAO_TokenSale0.00197221 Ether0.0015
0x84e0dcd7ba77b8dce42766c93cca5c46ed96904fbc41c330b330eeae9a3ad0d54237651563 days 18 hrs ago0x800ebd4655ed059747074ac9e6d72761096123d1 IN  SolarDAO_TokenSale0.01137221 Ether0.0014
0xd3444225f393003d3f95097d71a1c071b7cf8e8c16265887a54be7f5e7ae51be4236792564 days 18 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.91986593 Ether0.0126
0x5bb4880dab9042aac3ef9b537b0c7987dee82b925ebce14af5f1f8f2c2f738bc4236754564 days 33 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.85 Ether0.015
0x2256a90140b6ce1c5ea679183b50b7717ddd64772a004abdd538850b28e338b14236747564 days 36 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.85 Ether0.018
0x6a693a0d01752a589b3a0a606f1086db040cc8641f22b5612b87db4de1a97e0a4236743564 days 40 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.85 Ether0.015
0x7858332f944422c1c5a54bc32fc8578691eb6f59a07f508ac6f31dfa66a549904236736564 days 43 mins ago0x1fe7965dad296561177f5fc8630fde6773ca7251 IN  SolarDAO_TokenSale0.85 Ether0.0126
0x809aa44313a8f1bb36f2d9d0c94f6616ff0d3005fd7547f6109cb5d9cb73856c4231019565 days 15 hrs ago0x1d18bd27db2642cf01495f4ff088dc712534a3f9 IN  SolarDAO_TokenSale0.168 Ether0.00441
0x0150f399045b9bf6eb72c2247c696b129b734836379d1e62a128c551aae908a64230983565 days 15 hrs ago0x1d18bd27db2642cf01495f4ff088dc712534a3f9 IN  SolarDAO_TokenSale0.171 Ether0.00441
0xc0d6fc1e5f413dbcd8666a824cf28eea1d2a1026de24acd2ded090a9204acf054230963565 days 15 hrs ago0x1d18bd27db2642cf01495f4ff088dc712534a3f9 IN  SolarDAO_TokenSale0.182 Ether0.00441
0xfa535338567fad77e6aa6ac7988d6d23215d2a99d5d0ea7faacb4050757fdff54227984566 days 12 hrs ago0x1d18bd27db2642cf01495f4ff088dc712534a3f9 IN  SolarDAO_TokenSale0.189 Ether0.000441
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xd22ca894e8edd7232648a0ca3c0b31f32467d2157ca71adaf203457955d4cacb4223388567 days 19 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a7513.39882 Ether
0x2e312a1a26c3af0ec2e36592796ea1c4a245547dc975c63d9391108e17c0f8d84223379567 days 19 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.4 Ether
0x7b384ddea2e312d0d1fc06e56013a784e15599f18ecd44afaaf763f6d43428634223187567 days 20 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.18559 Ether
0x65b4b01b595e98cd7489b0a7333c002e079c4c4d39ddd17ccd508ea4885505ee4223025567 days 22 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.009 Ether
0x0e95f37f7c2533f5e791766af2371b40170714360c5176744a1f75ea23591ad44222973567 days 22 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.1 Ether
0x43f8f11fc3ea92906396eb86165dbc64cd453cbe862ef89b2cdeebbc9c71f05b4222802567 days 23 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.01 Ether
0x0f34d1aaeb2cc8ad501614e1105b550404424154049df04de79e655a921079bc4222733567 days 23 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.025 Ether
0x7dee376c291c63b85d26b39be2db8701c6fb8300e07e167c9ff01c6ccc432fa94222679568 days 20 mins ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.33 Ether
0x724461dff6064ed91e6bf58bca37fc4aea6d812452ef42b5a7d1e927b099a7614222671568 days 22 mins ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a753.123690493476904049 Ether
0xdb5f96041071c1c34b3a3a0d82b4d1cf062a57fac621ea5af7c761736f1615c94222671568 days 22 mins ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.1 Ether
0xf41098276f5ddfc3e555289a06bb49a4defd7ed028707ed15da48c2019c1af924222548568 days 1 hr ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.23 Ether
0xd85bba1b0282e120a5dbd4b5b284ffabcbb9a7db9d827bd80c1225471d9f9f024222530568 days 1 hr ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.751021 Ether
0x952204f9b43be34367b70cbb7f7905f4e301212cc1791fa9276411f743ac76424222392568 days 2 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.992 Ether
0x46c2d3876a57524830a2a24ddfa8e187046d6cb08b11ff897a1a01a13be2c2c84222009568 days 4 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.045 Ether
0x338f92d18fa88d6c145d972f26c8fb0abf65c8cdd3c4f3e825827cb4cbc6c9fb4221872568 days 5 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.04 Ether
0x3d5da1e285950f5a7af582eedec3173d18a4245c14f535457573eb6ee2cb57aa4221837568 days 6 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.523 Ether
0xedf3deadb10bcdcc2aa09577bb2bdd159c28d87d50e4fe4e67f497ae715468884221800568 days 6 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.182 Ether
0xcb9bc21716586fc4dc714b9fd92e2e437d15672a2b0f84dc0902c19e3a4eff974221790568 days 6 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.1 Ether
0xc9ebecc98e28fd47ea7d1d97dd1f951334056d6a0e5cf97e56d23a4ea940709e4221788568 days 6 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.1 Ether
0x2cff97153ce9ebf7852815ec476dc458988e1a0e5e0c020b3c94df8ba1d067064221562568 days 8 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a751 Ether
0x52c0404a32ea18248d3dc38d262707fd62bb8633a11216c8594f03f1590e99364221482568 days 8 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.018 Ether
0xb24c8003d00b04fea6638633fc1b71fccf2547802284d163bf086d5e3ff754fe4221357568 days 9 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a751 Ether
0x9fb20581a585cef531b51f4b05569b15f9d3db195fab2b89e22ab9a20e3386474221209568 days 10 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.35 Ether
0xccd2c5ed6c58c5948ddae77649eb7340e7c714100c298068529c3921ba5e64764221151568 days 10 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.06 Ether
0x97c718cfc19d108bda0b0076fdf5eec1025885061319095897b9f1be28f6b2014220954568 days 12 hrs ago0x1103849f41222a4c348515331f0e734d4bd9ad340x8009b7f7e94baf862d155bb7a3c0e589ea6a1a750.14999 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
SolarDaoTokenCrowdsale

Compiler Version
v0.4.13+commit.fb4cb1a

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.13;


 /// @title SafeMath contract - math operations with safety checks
contract SafeMath {
  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeDiv(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }

  function safeSub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function safeAdd(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c>=a && c>=b);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    require(assertion);
  }
}



 /// @title Ownable contract - base contract with an owner
contract Ownable {
  address public owner;

  function Ownable() {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address newOwner) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }
}


/// @title Haltable contract - abstract contract that allows children to implement an emergency stop mechanism.
/// Originally envisioned in FirstBlood ICO contract.
contract Haltable is Ownable {
  bool public halted;

  modifier stopInEmergency {
    require(!halted);
    _;
  }

  modifier onlyInEmergency {
    require(halted);
    _;
  }

  /// called by the owner on emergency, triggers stopped state
  function halt() external onlyOwner {
    halted = true;
  }

  /// called by the owner on end of emergency, returns to normal state
  function unhalt() external onlyOwner onlyInEmergency {
    halted = false;
  }
}




 /// @title ERC20 interface see https://github.com/ethereum/EIPs/issues/20
contract ERC20 {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);
  function mint(address receiver, uint amount);
  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}



/// @title SolarDaoToken contract - standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
contract SolarDaoToken is SafeMath, ERC20, Ownable {
 string public name = "Solar DAO Token";
 string public symbol = "SDAO";
 uint public decimals = 4;

 /// contract that is allowed to create new tokens and allows unlift the transfer limits on this token
 address public crowdsaleAgent;
 /// A crowdsale contract can release us to the wild if ICO success. If false we are are in transfer lock up period.
 bool public released = false;
 /// approve() allowances
 mapping (address => mapping (address => uint)) allowed;
 /// holder balances
 mapping(address => uint) balances;

 /// @dev Limit token transfer until the crowdsale is over.
 modifier canTransfer() {
   if(!released) {
       require(msg.sender == crowdsaleAgent);
   }
   _;
 }

 /// @dev The function can be called only before or after the tokens have been releasesd
 /// @param _released token transfer and mint state
 modifier inReleaseState(bool _released) {
   require(_released == released);
   _;
 }

 /// @dev The function can be called only by release agent.
 modifier onlyCrowdsaleAgent() {
   require(msg.sender == crowdsaleAgent);
   _;
 }

 /// @dev Fix for the ERC20 short address attack http://vessenes.com/the-erc20-short-address-attack-explained/
 /// @param size payload size
 modifier onlyPayloadSize(uint size) {
    require(msg.data.length >= size + 4);
    _;
 }

 /// @dev Make sure we are not done yet.
 modifier canMint() {
    require(!released);
    _;
  }

 /// @dev Constructor
 function SolarDaoToken() {
   owner = msg.sender;
 }

 /// Fallback method will buyout tokens
 function() payable {
   revert();
 }

 /// @dev Create new tokens and allocate them to an address. Only callably by a crowdsale contract
 /// @param receiver Address of receiver
 /// @param amount  Number of tokens to issue.
 function mint(address receiver, uint amount) onlyCrowdsaleAgent canMint public {
    totalSupply = safeAdd(totalSupply, amount);
    balances[receiver] = safeAdd(balances[receiver], amount);
    Transfer(0, receiver, amount);
 }

 /// @dev Set the contract that can call release and make the token transferable.
 /// @param _crowdsaleAgent crowdsale contract address
 function setCrowdsaleAgent(address _crowdsaleAgent) onlyOwner inReleaseState(false) public {
   crowdsaleAgent = _crowdsaleAgent;
 }
 /// @dev One way function to release the tokens to the wild. Can be called only from the release agent that is the final ICO contract. It is only called if the crowdsale has been success (first milestone reached).
 function releaseTokenTransfer() public onlyCrowdsaleAgent {
   released = true;
 }
 /// @dev Tranfer tokens to address
 /// @param _to dest address
 /// @param _value tokens amount
 /// @return transfer result
 function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) canTransfer returns (bool success) {
   balances[msg.sender] = safeSub(balances[msg.sender], _value);
   balances[_to] = safeAdd(balances[_to], _value);

   Transfer(msg.sender, _to, _value);
   return true;
 }

 /// @dev Tranfer tokens from one address to other
 /// @param _from source address
 /// @param _to dest address
 /// @param _value tokens amount
 /// @return transfer result
 function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(2 * 32) canTransfer returns (bool success) {
   var _allowance = allowed[_from][msg.sender];

    balances[_to] = safeAdd(balances[_to], _value);
    balances[_from] = safeSub(balances[_from], _value);
    allowed[_from][msg.sender] = safeSub(_allowance, _value);
    Transfer(_from, _to, _value);
    return true;
 }
 /// @dev Tokens balance
 /// @param _owner holder address
 /// @return balance amount
 function balanceOf(address _owner) constant returns (uint balance) {
   return balances[_owner];
 }

 /// @dev Approve transfer
 /// @param _spender holder address
 /// @param _value tokens amount
 /// @return result
 function approve(address _spender, uint _value) returns (bool success) {
   // To change the approve amount you first have to reduce the addresses`
   //  allowance to zero by calling `approve(_spender, 0)` if it is not
   //  already 0 to mitigate the race condition described here:
   //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   require ((_value == 0) || (allowed[msg.sender][_spender] == 0));

   allowed[msg.sender][_spender] = _value;
   Approval(msg.sender, _spender, _value);
   return true;
 }

 /// @dev Token allowance
 /// @param _owner holder address
 /// @param _spender spender address
 /// @return remain amount
 function allowance(address _owner, address _spender) constant returns (uint remaining) {
   return allowed[_owner][_spender];
 }
}
/// @title Killable contract - base contract that can be killed by owner. All funds in contract will be sent to the owner.
contract Killable is Ownable {
 function kill() onlyOwner {
   selfdestruct(owner);
 }
}


/// @title SolarDaoTokenCrowdsale contract - contract for token sales.
contract SolarDaoTokenCrowdsale is Haltable, Killable, SafeMath {

  /// Prefunding goal in USD cents, if the prefunding goal is reached, ico will start
  uint public constant PRE_FUNDING_GOAL = 4e6 * PRICE;

  /// Tokens funding goal in USD cents, if the funding goal is reached, ico will stop
  uint public constant ICO_GOAL = 8e7 * PRICE;

  /// Miminal tokens funding goal in USD cents, if this goal isn't reached during ICO, refund will begin
  uint public constant MIN_ICO_GOAL = 1e7;

  /// Percent of bonus tokens team receives from each investment
  uint public constant TEAM_BONUS_PERCENT = 25;

  /// The token price in USD cents
  uint constant public PRICE = 100;

  /// Duration of the pre-ICO stage
  uint constant public PRE_ICO_DURATION = 5 weeks;

  /// The token we are selling
  SolarDaoToken public token;

  /// tokens will be transfered from this address
  address public multisigWallet;

  /// the UNIX timestamp start date of the crowdsale
  uint public startsAt;

  /// the UNIX timestamp end date of the crowdsale
  uint public endsAt;

  /// the UNIX timestamp start date of the pre invest crowdsale
  uint public preInvestStart;

  /// the number of tokens already sold through this contract
  uint public tokensSold = 0;

  /// How many wei of funding we have raised
  uint public weiRaised = 0;

  /// How many distinct addresses have invested
  uint public investorCount = 0;

  /// How much wei we have returned back to the contract after a failed crowdfund.
  uint public loadedRefund = 0;

  /// How much wei we have given back to investors.
  uint public weiRefunded = 0;

  /// Has this crowdsale been finalized
  bool public finalized;

  /// USD to Ether rate in cents
  uint public exchangeRate;

  /// exchangeRate timestamp
  uint public exchangeRateTimestamp;

  /// External agent that will can change exchange rate
  address public exchangeRateAgent;

  /// How much ETH each address has invested to this crowdsale
  mapping (address => uint256) public investedAmountOf;

  /// How much tokens this crowdsale has credited for each investor address
  mapping (address => uint256) public tokenAmountOf;

  /// Define preICO pricing schedule using milestones.
  struct Milestone {
      // UNIX timestamp when this milestone kicks in
      uint start;
      // UNIX timestamp when this milestone kicks out
      uint end;
      // How many % tokens will add
      uint bonus;
  }

  Milestone[] public milestones;

  /// State machine
  /// Preparing: All contract initialization calls and variables have not been set yet
  /// Prefunding: We have not passed start time yet
  /// Funding: Active crowdsale
  /// Success: Minimum funding goal reached
  /// Failure: Minimum funding goal not reached before ending time
  /// Finalized: The finalized has been called and succesfully executed\
  /// Refunding: Refunds are loaded on the contract for reclaim.
  enum State{Unknown, Preparing, PreFunding, Funding, Success, Failure, Finalized, Refunding}

  /// A new investment was made
  event Invested(address investor, uint weiAmount, uint tokenAmount);
  /// Refund was processed for a contributor
  event Refund(address investor, uint weiAmount);
  /// Crowdsale end time has been changed
  event EndsAtChanged(uint endsAt);
  /// Calculated new price
  event ExchangeRateChanged(uint oldValue, uint newValue);

  /// @dev Modified allowing execution only if the crowdsale is currently running
  modifier inState(State state) {
    require(getState() == state);
    _;
  }

  modifier onlyExchangeRateAgent() {
    require(msg.sender == exchangeRateAgent);
    _;
  }

  /// @dev Constructor
  /// @param _token Solar Dao token address
  /// @param _multisigWallet team wallet
  /// @param _preInvestStart preICO start date
  /// @param _start token ICO start date
  /// @param _end token ICO end date
  function SolarDaoTokenCrowdsale(address _token, address _multisigWallet, uint _preInvestStart, uint _start, uint _end) {
    require(_multisigWallet != 0);
    require(_preInvestStart != 0);
    require(_start != 0);
    require(_end != 0);
    require(_start < _end);
    require(_end > _preInvestStart + PRE_ICO_DURATION);

    token = SolarDaoToken(_token);

    multisigWallet = _multisigWallet;
    startsAt = _start;
    endsAt = _end;
    preInvestStart = _preInvestStart;

    var preIcoBonuses = [uint(100), 80, 70, 60, 50];
    for (uint i = 0; i < preIcoBonuses.length; i++) {
      milestones.push(Milestone(preInvestStart + i * 1 weeks, preInvestStart + (i + 1) * 1 weeks, preIcoBonuses[i]));
    }
    milestones.push(Milestone(startsAt, startsAt + 4 days, 25));
    milestones.push(Milestone(startsAt + 4 days, startsAt + 1 weeks, 20));
    delete preIcoBonuses;

    var icoBonuses = [uint(15), 10, 5];
    for (i = 1; i <= icoBonuses.length; i++) {
      milestones.push(Milestone(startsAt + i * 1 weeks, startsAt + (i + 1) * 1 weeks, icoBonuses[i - 1]));
    }
    delete icoBonuses;
  }

  function() payable {
    buy();
  }

  /// @dev Get the current milestone or bail out if we are not in the milestone periods.
  /// @return Milestone current bonus milestone
  function getCurrentMilestone() private constant returns (Milestone) {
      for (uint i = 0; i < milestones.length; i++) {
        if (milestones[i].start <= now && milestones[i].end > now) {
          return milestones[i];
        }
      }
  }

   /// @dev Make an investment. Crowdsale must be running for one to invest.
   /// @param receiver The Ethereum address who receives the tokens
  function investInternal(address receiver) stopInEmergency private {
    var state = getState();
    require(state == State.Funding || state == State.PreFunding);

    uint weiAmount = msg.value;
    uint tokensAmount = calculateTokens(weiAmount);
    assert (tokensAmount > 0);

    if(state == State.PreFunding) {
        tokensAmount += safeDiv(safeMul(tokensAmount, getCurrentMilestone().bonus), 100);
    }

    if(investedAmountOf[receiver] == 0) {
       // A new investor
       investorCount++;
    }

    // Update investor
    investedAmountOf[receiver] = safeAdd(investedAmountOf[receiver], weiAmount);
    tokenAmountOf[receiver] = safeAdd(tokenAmountOf[receiver], tokensAmount);
    // Update totals
    weiRaised = safeAdd(weiRaised, weiAmount);
    tokensSold = safeAdd(tokensSold, tokensAmount);   

    assignTokens(receiver, tokensAmount);
    var teamBonusTokens = safeDiv(safeMul(tokensAmount, TEAM_BONUS_PERCENT), 100 - TEAM_BONUS_PERCENT);
    assignTokens(multisigWallet, teamBonusTokens);

    multisigWallet.transfer(weiAmount);
    // Tell us invest was success
    Invested(receiver, weiAmount, tokensAmount);
  }

  /// @dev Allow anonymous contributions to this crowdsale.
  /// @param receiver The Ethereum address who receives the tokens
  function invest(address receiver) public payable {
    investInternal(receiver);
  }

  /// @dev The basic entry point to participate the crowdsale process.
  function buy() public payable {
    invest(msg.sender);
  }

  /// @dev Finalize a succcesful crowdsale.
  function finalize() public inState(State.Success) onlyOwner stopInEmergency {
    require(!finalized);

    finalized = true;
    finalizeCrowdsale();
  }

  /// @dev Finalize a succcesful crowdsale.
  function finalizeCrowdsale() internal {    
    token.releaseTokenTransfer();
  }

   /// @dev Method for setting USD to Ether rate from Poloniex
   /// @param value USD amout in cents for 1 Ether
   /// @param time timestamp
  function setExchangeRate(uint value, uint time) onlyExchangeRateAgent {
    require(value > 0);
    require(time > 0);
    require(exchangeRateTimestamp == 0 || getDifference(int(time), int(now)) <= 1 minutes);
    require(exchangeRate == 0 || (getDifference(int(value), int(exchangeRate)) * 100 / exchangeRate <= 30));

    ExchangeRateChanged(exchangeRate, value);
    exchangeRate = value;
    exchangeRateTimestamp = time;
  }

  /// @dev Method set exchange rate agent
  /// @param newAgent new agent
 function setExchangeRateAgent(address newAgent) onlyOwner {
   if (newAgent != address(0)) {
     exchangeRateAgent = newAgent;
   }
 }
 
  /// @dev Method set data from migrated contract
  /// @param _tokensSold tokens sold
  /// @param _weiRaised _wei raised
  /// @param _investorCount investor count
 function setCrowdsaleData(uint _tokensSold, uint _weiRaised, uint _investorCount) onlyOwner {  
	require(_tokensSold > 0);
	require(_weiRaised > 0);
	require(_investorCount > 0);
	
	tokensSold = _tokensSold;
	weiRaised = _weiRaised;
	investorCount = _investorCount;	
 }

  function getDifference(int one, int two) private constant returns (uint) {
    var diff = one - two;
    if (diff < 0)
      diff = -diff;
    return uint(diff);
  }

  /// @dev Allow crowdsale owner to close early or extend the crowdsale.
  /// @param time timestamp
  function setEndsAt(uint time) onlyOwner {
    require(time >= now);
    endsAt = time;
    EndsAtChanged(endsAt);
  }

  /// @dev Allow load refunds back on the contract for the refunding.
  function loadRefund() public payable inState(State.Failure) {
    require(msg.value > 0);
    loadedRefund = safeAdd(loadedRefund, msg.value);
  }

  /// @dev Investors can claim refund.
  function refund() public inState(State.Refunding) {
    uint256 weiValue = investedAmountOf[msg.sender];
    if (weiValue == 0)
      return;
    investedAmountOf[msg.sender] = 0;
    weiRefunded = safeAdd(weiRefunded, weiValue);
    Refund(msg.sender, weiValue);
    msg.sender.transfer(weiValue);
  }

  /// @dev Minimum goal was reached
  /// @return true if the crowdsale has raised enough money to not initiate the refunding
  function isMinimumGoalReached() public constant returns (bool reached) {
    return weiToUsdCents(weiRaised) >= MIN_ICO_GOAL;
  }

  /// @dev Check if the ICO goal was reached.
  /// @return true if the crowdsale has raised enough money to be a success
  function isCrowdsaleFull() public constant returns (bool) {
    return weiToUsdCents(weiRaised) >= ICO_GOAL;
  }

  /// @dev Crowdfund state machine management.
  /// @return State current state
  function getState() public constant returns (State) {
    if (finalized)
      return State.Finalized;
    if (address(token) == 0 || address(multisigWallet) == 0 || now < preInvestStart)
      return State.Preparing;
    if (preInvestStart <= now && now < startsAt && !isMaximumPreFundingGoalReached())
      return State.PreFunding;
    if (now <= endsAt && !isCrowdsaleFull())
      return State.Funding;
    if (isMinimumGoalReached())
      return State.Success;
    if (!isMinimumGoalReached() && weiRaised > 0 && loadedRefund >= weiRaised)
      return State.Refunding;
    return State.Failure;
  }

  /// @dev Calculating tokens count
  /// @param weiAmount invested
  /// @return tokens amount
  function calculateTokens(uint weiAmount) internal returns (uint tokenAmount) {
    var multiplier = 10 ** token.decimals();

    uint usdAmount = weiToUsdCents(weiAmount);
    assert (usdAmount >= PRICE);

    return safeMul(usdAmount, safeDiv(multiplier, PRICE));
  }  

   /// @dev Check if the pre ICO goal was reached.
   /// @return true if the preICO has raised enough money to be a success
   function isMaximumPreFundingGoalReached() public constant returns (bool reached) {
     return weiToUsdCents(weiRaised) >= PRE_FUNDING_GOAL;
   }

   /// @dev Converts wei value into USD cents according to current exchange rate
   /// @param weiValue wei value to convert
   /// @return USD cents equivalent of the wei value
   function weiToUsdCents(uint weiValue) private returns (uint) {
     return safeDiv(safeMul(weiValue, exchangeRate), 1e18);
   }

   /// @dev Dynamically create tokens and assign them to the investor.
   /// @param receiver investor address
   /// @param tokenAmount The amount of tokens we try to give to the investor in the current transaction
   function assignTokens(address receiver, uint tokenAmount) private {
     token.mint(receiver, tokenAmount);
   }
}

Contract ABI

[{"constant":false,"inputs":[{"name":"receiver","type":"address"}],"name":"invest","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"newAgent","type":"address"}],"name":"setExchangeRateAgent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preInvestStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MIN_ICO_GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRE_ICO_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ICO_GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setEndsAt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRE_FUNDING_GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isMaximumPreFundingGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"startsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateAgent","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokensSold","type":"uint256"},{"name":"_weiRaised","type":"uint256"},{"name":"_investorCount","type":"uint256"}],"name":"setCrowdsaleData","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleFull","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"milestones","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"bonus","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"},{"name":"time","type":"uint256"}],"name":"setExchangeRate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TEAM_BONUS_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_multisigWallet","type":"address"},{"name":"_preInvestStart","type":"uint256"},{"name":"_start","type":"uint256"},{"name":"_end","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"Invested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"endsAt","type":"uint256"}],"name":"EndsAtChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"ExchangeRateChanged","type":"event"}]

Contract Creation Code

606060405260006006556000600755600060085560006009556000600a5534156200002957600080fd5b60405160a0806200190b83398101604052808051919060200180519190602001805191906020018051919060200180519150505b62000067620003b9565b600062000073620003e1565b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a0387161515620000a657600080fd5b851515620000b357600080fd5b841515620000c057600080fd5b831515620000cd57600080fd5b838510620000da57600080fd5b622e248086018411620000ec57600080fd5b60018054600160a060020a03808b16600160a060020a03199283161790925560028054928a169290911691909117905560038590556004849055600586905560a060405190810160405280606481526020016050815260200160468152602001603c815260200160328152509250600091505b6005821015620001fc5760118054600181016200017d838262000409565b916000526020600020906003020160005b6060604051908101604052808662093a80026005540181526020018660010162093a80026005540181526020018787600581101515620001ca57fe5b602002015190529190508151815560208201518160010155604082015181600201555050505b6001909101906200015f565b601180546001810162000210838262000409565b916000526020600020906003020160005b6060604051908101604090815260035480835262054600016020830152601990820152919050815181556020820151816001015560408201516002909101555050601180546001810162000276838262000409565b916000526020600020906003020160005b60606040519081016040908152600354620546008101835262093a80016020830152601490820152919050815181556020820151816001015560408201518160020155505050620002d7620003b9565b9250606060405190810160405280600f8152602001600a815260200160058152509050600191505b600382116200039e5760118054600181016200031c838262000409565b916000526020600020906003020160005b6060604051908101604052808662093a80026003540181526020018660010162093a800260035401815260200185600188036003811015156200036c57fe5b602002015190529190508151815560208201518160010155604082015181600201555050505b600190910190620002ff565b620003a8620003e1565b90505b50505050505050506200046f565b60a06040519081016040526005815b6000815260200190600190039081620003c85790505090565b60606040519081016040526003815b6000815260200190600190039081620003c85790505090565b81548183558181151162000438576003028160030283600052602060002091820191016200043891906200043e565b5b505050565b6200046c91905b808211156200046857600080825560018201819055600282015560030162000445565b5090565b90565b61148c806200047f6000396000f300606060405236156101e85763ffffffff60e060020a60003504166303f9c79381146101f9578063083903de1461020f5780630a09284a146102305780630d39820c146102555780631865c57d1461027a5780631aae3460146102b15780633ba0b9a9146102e25780634042b66f1461030757806341c0e1b51461032c578063442e10791461034157806345ad55cc146103665780634bb278f31461038b578063518ab2a8146103a0578063590e1ae3146103c55780635da89ac0146103da5780635ed7ca5b146103ff5780636a5690f6146104145780636e50eb3f1461043957806377dfec3c14610451578063797d9437146104765780637c2e08a31461049b57806387612102146104c25780638d859f3e146104cc5780638da5cb5b146104f15780639075becf1461052057806396bc22871461054f57806397b150ca146105745780639d1c3f03146105a5578063a6f2ae3a146105cc578063af468682146105d6578063b3f05b97146105fb578063b548174314610622578063b9b8af0b14610651578063c2c6256214610678578063cb3e64fd14610696578063d5d09021146106ab578063d7e64c00146106d2578063e89e4ed6146106f7578063f2fde38b14610731578063f55ecf0614610752578063f56b8a461461076d578063fc0c546a14610792575b6101f75b6101f46107c1565b5b565b005b6101f7600160a060020a03600435166107cd565b005b341561021a57600080fd5b6101f7600160a060020a03600435166107da565b005b341561023b57600080fd5b610243610832565b60405190815260200160405180910390f35b341561026057600080fd5b610243610838565b60405190815260200160405180910390f35b341561028557600080fd5b61028d61083e565b6040518082600781111561029d57fe5b60ff16815260200191505060405180910390f35b34156102bc57600080fd5b610243600160a060020a0360043516610933565b60405190815260200160405180910390f35b34156102ed57600080fd5b610243610945565b60405190815260200160405180910390f35b341561031257600080fd5b61024361094b565b60405190815260200160405180910390f35b341561033757600080fd5b6101f7610951565b005b341561034c57600080fd5b61024361097d565b60405190815260200160405180910390f35b341561037157600080fd5b610243610984565b60405190815260200160405180910390f35b341561039657600080fd5b6101f761098b565b005b34156103ab57600080fd5b610243610a0a565b60405190815260200160405180910390f35b34156103d057600080fd5b6101f7610a10565b005b34156103e557600080fd5b610243610afe565b60405190815260200160405180910390f35b341561040a57600080fd5b6101f7610b04565b005b341561041f57600080fd5b610243610b47565b60405190815260200160405180910390f35b341561044457600080fd5b6101f7600435610b50565b005b341561045c57600080fd5b610243610bb5565b60405190815260200160405180910390f35b341561048157600080fd5b610243610bbb565b60405190815260200160405180910390f35b34156104a657600080fd5b6104ae610bc1565b604051901515815260200160405180910390f35b6101f7610bda565b005b34156104d757600080fd5b610243610c1c565b60405190815260200160405180910390f35b34156104fc57600080fd5b610504610c21565b604051600160a060020a03909116815260200160405180910390f35b341561052b57600080fd5b610504610c30565b604051600160a060020a03909116815260200160405180910390f35b341561055a57600080fd5b610243610c3f565b60405190815260200160405180910390f35b341561057f57600080fd5b610243600160a060020a0360043516610c47565b60405190815260200160405180910390f35b34156105b057600080fd5b6104ae610c59565b604051901515815260200160405180910390f35b6101f76107c1565b005b34156105e157600080fd5b610243610c75565b60405190815260200160405180910390f35b341561060657600080fd5b6104ae610c7b565b604051901515815260200160405180910390f35b341561062d57600080fd5b610504610c84565b604051600160a060020a03909116815260200160405180910390f35b341561065c57600080fd5b6104ae610c93565b604051901515815260200160405180910390f35b341561068357600080fd5b6101f7600435602435604435610ca3565b005b34156106a157600080fd5b6101f7610cfb565b005b34156106b657600080fd5b6104ae610d51565b604051901515815260200160405180910390f35b34156106dd57600080fd5b610243610d6e565b60405190815260200160405180910390f35b341561070257600080fd5b61070d600435610d74565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561073c57600080fd5b6101f7600160a060020a0360043516610da7565b005b341561075d57600080fd5b6101f7600435602435610dff565b005b341561077857600080fd5b610243610eda565b60405190815260200160405180910390f35b341561079d57600080fd5b610504610edf565b604051600160a060020a03909116815260200160405180910390f35b6101f4336107cd565b5b565b6107d681610eee565b5b50565b60005433600160a060020a039081169116146107f557600080fd5b600160a060020a038116156107d657600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60045481565b60055481565b600b5460009060ff161561085457506006610930565b600154600160a060020a031615806108755750600254600160a060020a0316155b80610881575060055442105b1561088e57506001610930565b42600554111580156108a1575060035442105b80156108b257506108b0610c59565b155b156108bf57506002610930565b60045442111580156108d657506108d4610d51565b155b156108e357506003610930565b6108eb610bc1565b156108f857506004610930565b610900610bc1565b15801561090f57506000600754115b801561091f575060075460095410155b1561092c57506007610930565b5060055b90565b600f6020526000908152604090205481565b600c5481565b60075481565b60005433600160a060020a0390811691161461096c57600080fd5b600054600160a060020a0316ff5b5b565b6298968081565b622e248081565b6004805b61099761083e565b60078111156109a257fe5b146109ac57600080fd5b60005433600160a060020a039081169116146109c757600080fd5b60005460a060020a900460ff16156109de57600080fd5b600b5460ff16156109ee57600080fd5b600b805460ff191660011790556107d661111c565b5b5b5b5b50565b60065481565b60006007805b610a1e61083e565b6007811115610a2957fe5b14610a3357600080fd5b600160a060020a0333166000908152600f60205260409020549150811515610a5a57610af8565b600160a060020a0333166000908152600f6020526040812055600a54610a809083611172565b600a557fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610af857600080fd5b5b5b5050565b600a5481565b60005433600160a060020a03908116911614610b1f57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b6401dcd6500081565b60005433600160a060020a03908116911614610b6b57600080fd5b42811015610b7857600080fd5b60048190557fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3108160405190815260200160405180910390a15b5b50565b600d5481565b60095481565b600062989680610bd260075461119a565b101590505b90565b6005805b610be661083e565b6007811115610bf157fe5b14610bfb57600080fd5b60003411610c0857600080fd5b610c1460095434611172565b6009555b5b50565b606481565b600054600160a060020a031681565b600254600160a060020a031681565b6317d7840081565b60106020526000908152604090205481565b60006064623d090002610bd260075461119a565b101590505b90565b60035481565b600b5460ff1681565b600e54600160a060020a031681565b60005460a060020a900460ff1681565b60005433600160a060020a03908116911614610cbe57600080fd5b60008311610ccb57600080fd5b60008211610cd857600080fd5b60008111610ce557600080fd5b6006839055600782905560088190555b5b505050565b60005433600160a060020a03908116911614610d1657600080fd5b60005460a060020a900460ff161515610d2e57600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b600060646304c4b40002610bd260075461119a565b101590505b90565b60085481565b6011805482908110610d8257fe5b906000526020600020906003020160005b508054600182015460029092015490925083565b60005433600160a060020a03908116911614610dc257600080fd5b600160a060020a038116156107d6576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600e5433600160a060020a03908116911614610e1a57600080fd5b60008211610e2757600080fd5b60008111610e3457600080fd5b600d541580610e4d5750603c610e4a82426111c1565b11155b1515610e5857600080fd5b600c541580610e835750601e600c54610e7384600c546111c1565b606402811515610e7f57fe5b0411155b1515610e8e57600080fd5b7fb01b0304cdcaffa13e4b57ecbe280da183afb719becd1d56e9211cc3781ea421600c548360405191825260208201526040908101905180910390a1600c829055600d8190555b5b5050565b601981565b600154600160a060020a031681565b6000805481908190819060a060020a900460ff1615610f0c57600080fd5b610f1461083e565b935060035b846007811115610f2557fe5b1480610f3d575060025b846007811115610f3b57fe5b145b1515610f4857600080fd5b349250610f54836111dd565b9150610f6260008311611281565b60025b846007811115610f7157fe5b1415610f9b57610f96610f8f83610f86611291565b6040015161135e565b606461138d565b820191505b600160a060020a0385166000908152600f60205260409020541515610fc4576008805460010190555b600160a060020a0385166000908152600f6020526040902054610fe79084611172565b600160a060020a0386166000908152600f60209081526040808320939093556010905220546110169083611172565b600160a060020a03861660009081526010602052604090205560075461103c9084611172565b60075560065461104c9083611172565b60065561105985836113cf565b61106e61106783601961135e565b604b61138d565b60025490915061108790600160a060020a0316826113cf565b600254600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156110ba57600080fd5b7f9e9d071824fd57d062ca63fd8b786d8da48a6807eebbcb2d83f9e8d21398e28c8584846040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5050505050565b600154600160a060020a0316635f412d4f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561115b57600080fd5b6102c65a03f11515610cf557600080fd5b5050505b565b600082820161118f84821080159061118a5750838210155b611281565b8091505b5092915050565b60006111b96111ab83600c5461135e565b670de0b6b3a764000061138d565b90505b919050565b60008183038181121561118f576000035b8091505b5092915050565b60015460009081908190600160a060020a031663313ce56782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561122b57600080fd5b6102c65a03f1151561123c57600080fd5b50505060405180519050600a0a91506112548461119a565b90506112636064821015611281565b6112778161127284606461138d565b61135e565b92505b5050919050565b8015156107d657600080fd5b5b50565b61129961143e565b60005b60115481101561135957426011828154811015156112b657fe5b906000526020600020906003020160005b5054118015906112fa5750426011828154811015156112e257fe5b906000526020600020906003020160005b5060010154115b1561135057601180548290811061130d57fe5b906000526020600020906003020160005b506060604051908101604052908160008201548152602001600182015481526020016002820154815250509150611359565b5b60010161129c565b5b5090565b600082820261118f84158061118a575083858381151561137a57fe5b04145b611281565b8091505b5092915050565b60008061139c60008411611281565b82848115156113a757fe5b04905061118f83858115156113b857fe5b06828502018514611281565b8091505b5092915050565b600154600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561142557600080fd5b6102c65a03f1151561111457600080fd5b5050505b5050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a723058205f0c1023d3d803e18adfb499aa557c3a1bf1bb645b5223d11c8022a9173b6d340029000000000000000000000000646cec6ee42d258336165cbbd5deb4af14f0f4760000000000000000000000008009b7f7e94baf862d155bb7a3c0e589ea6a1a7500000000000000000000000000000000000000000000000000000000597902d10000000000000000000000000000000000000000000000000000000059f0fb51000000000000000000000000000000000000000000000000000000005a20714f

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

000000000000000000000000646cec6ee42d258336165cbbd5deb4af14f0f4760000000000000000000000008009b7f7e94baf862d155bb7a3c0e589ea6a1a7500000000000000000000000000000000000000000000000000000000597902d10000000000000000000000000000000000000000000000000000000059f0fb51000000000000000000000000000000000000000000000000000000005a20714f

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000646cec6ee42d258336165cbbd5deb4af14f0f476
Arg [1] : 0000000000000000000000008009b7f7e94baf862d155bb7a3c0e589ea6a1a75
Arg [2] : 00000000000000000000000000000000000000000000000000000000597902d1
Arg [3] : 0000000000000000000000000000000000000000000000000000000059f0fb51
Arg [4] : 000000000000000000000000000000000000000000000000000000005a20714f

Swarm Source

bzzr://5f0c1023d3d803e18adfb499aa557c3a1bf1bb645b5223d11c8022a9173b6d34
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.