Sponsored Link:   Buy your 1st Ethereum in 5 minutes. Trusted by more than 100k buyers.
Contract Overview | StormTokenCrowdsale
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 4726 txns
Token Tracker 0xd0a4b8946cb52f0661273bfbc6fd0e0c75fc6433
  Latest 25 txns from a total Of 4726 transactions View All

TxHash Age From To Value [TxFee]
0x56d082f016cf322b5cc36715e9ec5905d112f0079465360f4e94cd23d5a9f8a94 days 5 hrs ago0x2766d3d688a27fd3386249bc8598f0e076eab4e2  IN   StormTokenCrowdsale0.99 Ether0.0025
0xd5582ff7374992dfa98a72043f2488c757d4fcae97c079285ae503d77e4521894 days 5 hrs ago0x4cc5954c81b0fedcd8925898b727af7f35b29759  IN   StormTokenCrowdsale0.99 Ether0.0025
0x110401c8d7613a266dc3ee1b0475f4e2d4c0ef5b60f8377b0aad4853c5f262ea4 days 5 hrs ago0xab90acbe0585d642c9522e6a7ab39e1e74cdc5ae  IN   StormTokenCrowdsale0.00545508 Ether0.00026873
0xb7ea3ea6cf438396965bc26703a2a8ebe8b14f7321768ec6acf9660d44041fef4 days 6 hrs ago0xc85f8ef202ef169a8d1453d2459d1346a63831cc  IN   StormTokenCrowdsale0.00277 Ether0.0015
0x79a137611a6b2f3d7d5382f4330bd3347c61cc4eb56c2095f3655217335296384 days 6 hrs ago0x3d79366b5d1375ed6854344ae7cec9131b01d09c  IN   StormTokenCrowdsale1 Ether0.0025
0xc3cf0ee06debac90977a35f6d95022c16d51f4f1fd4b557227bd4a21cad591b84 days 6 hrs ago0x767198bc3dc03ee599994ed4f1732954c1d9a7e2  IN   StormTokenCrowdsale0.175 Ether0.0025
0xed844b8d81523539dde4194cf815e881eba231468f34f227f395b639cf8762b04 days 6 hrs ago0x3c10f77d2a6db2548dba897db8669cc22b0848f8  IN   StormTokenCrowdsale0.547803211020849 Ether0.00026873
0x264530edcaf91836f0183d1a8de76dba8b2c1750cca53cf83fe5219d6192df584 days 7 hrs ago0x6d2ff5655d4af0ddb9179f9df57fb2d9a1789ddc  IN   StormTokenCrowdsale0.22 Ether0.00025
0xde38b4bc9f0debe9950b1ebf56c2934486083f3aede8b5527d9f0efd857a17094 days 9 hrs ago0x5da0f2bc90c6ec5f7b5b18cd1090ab7e2c138215  IN   StormTokenCrowdsale1 Ether0.000295603
0x7f02424e8515d4b627523e6c63f587a9812f912cf1756fc7ea46c6529f059f014 days 14 hrs ago0x1f6db008c020bea814c7967612aae0f42b5932e1  IN   StormTokenCrowdsale0.0275 Ether0.0025
0xb47006b98c6c34cb285ce5926cfda185d10477e773387f99e3bba18957d3150c4 days 18 hrs ago0x74a8a9e8ad62db82733ee15c637e71ae74598d6a  IN   StormTokenCrowdsale0.99 Ether0.0025
0xa5a5332f8c54556c78a248d037a9a280d1495eb4597253b46008f8fc1fd3c5004 days 21 hrs ago0xe753910e13ac6e46ed06e995b3a8f1711cac180c  IN   StormTokenCrowdsale4.26 Ether0.00505
0x33ea6a41a906e30b2a2dc8bc2b3a6ee43a51e0f0078978c3a6cba682770939fa4 days 22 hrs ago0x3f3ab4526df8024838901d83f87f616978f50fa9  IN   StormTokenCrowdsale2.1 Ether0.00525
0x3713f67f6a60928801de8e8d3f14c7391b0dc5f04dc147150d133c5ef49d0fa64 days 22 hrs ago0x6016c0c9236600047eec6ac5a6a126f3f998724f  IN   StormTokenCrowdsale0.16 Ether0.00525
0x6c5092e0342df62cb39feec01b7b8094ae285fd08e7cf3aa8233a8a37f15e0f54 days 22 hrs ago0xb7a9904e9e5e91ef5f0cb1780383e4900e59ffac  IN   StormTokenCrowdsale0.2 Ether0.00525
0x25f736d4cbf0eff7ffb264ccc03f63f06c2a7a17d9f88572f6d5f09c659530314 days 22 hrs ago0x56c53d9cdfeba298725ce75686a29a660ace1327  IN   StormTokenCrowdsale2.768369395 Ether0.00525
0x43efad5fe37b144272a68cc44ca2b87ab42aa8688f53e663a9cf724179506f874 days 23 hrs ago0x1567c901f69f053e1224bc9c8dffff845396b889  IN   StormTokenCrowdsale0.1 Ether0.00525
0xe9b1aff565bfda14e88f768cb443c74ab7ada3825121f5b5b904872656d22c3e4 days 23 hrs ago0x9d2b644f362e104534288c87d7f792e7a35be9b1  IN   StormTokenCrowdsale0.21 Ether0.00525
0x95fe89b53edf00d464ecf2662900d6fecfbc9f5cfac42d4734879b565c3907d35 days 41 mins ago0x525c17b8c9d3bdf8b916eab8e51150c6a5d98d9c  IN   StormTokenCrowdsale0.25 Ether0.00525
0x9f3ef3280117c543d3f8e92085a6dda128ddee0fad5c79e7623cd2d495947c4b5 days 1 hr ago0x353609b621f92bad3b939ca6f1596a6027dc46a8  IN   StormTokenCrowdsale2.99475 Ether0.00525
0xee6aaa641b40adc38651c58dbfc9f6f906f3c79d3aa80544c560c81d738284b65 days 1 hr ago0xec5a0a966645272ab72e339c3128fdfac399856f  IN   StormTokenCrowdsale0.14283 Ether0.00525
0xedb8c3ede1bd341bbfe718f7d89257fe478cf943b0eb69c901107d89b1662b335 days 1 hr ago0x6deb95c45064d350c2dfa05e8d9f756dacc5bb0c  IN   StormTokenCrowdsale0.14 Ether0.00525
0x75f486c90bf94a02ed067959786c6bb2e935c5acc8a5eb41dabe147fb82cb6ad5 days 2 hrs ago0x5b45002a412e15a06aade10f6f2af267c6e7de17  IN   StormTokenCrowdsale2 Ether0.00525
0x221911ace87239b082f6c25ebba4e1177200ae9a2805267fe5d2cd9a0ce7e1395 days 2 hrs ago0x42a027068c487de6e58ea55e7174810e59fb384b  IN   StormTokenCrowdsale0.5 Ether0.00525
0x27a72f83b75bbc55c9648987c69145a305a936cbe257077cfa0c8aa2113fe22a5 days 3 hrs ago0x9d77cd5f8a98cea843f436a3133da1654dcf4442  IN   StormTokenCrowdsale0.01 Ether0.0006637631
[ 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
0xdc9989fa2a5a0b6f2202b04100b987d17113f5cad909a48d44a1cba4bfb47a6b46941187 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341 Ether
0xe173b475a122f242ad1a57d7240ffb194ce41e1214f6369b1f793c1439bc48b346940907 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c342.7 Ether
0xd589af81c1445c111a7b4b437d7041dfe025bfa54557fab4fe13e089d6a4cfea46940907 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c34231 Ether
0x721225775845b696172007ec69b0f7c4244d5a36c590dcd3fbcfe1e8d91dfac146940767 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341,667 Ether
0xdf01ba39594ff371ce36a6d4b102aff17841063ee8cf8b885071cefe28eb790b46940717 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c3437.11 Ether
0xc257b4c499ee41effe4994a73f04d17f06aef4515d30e96769d49c68da782cab46940577 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341 Ether
0x997398a9ce2c0b414c2d2137c097020ed07782f1f3e1d699035c746e310ca03346940227 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c3415 Ether
0x404c42d807b1e5e330b1bc1ad9187a76a4d1680fd0f1506d193a92ff8854a3a046940167 days 4 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c346 Ether
0xf544c8bede9443c1d4a83b6e6829e4712017aba1f1ed691c9b1fe8f98d526af846939687 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c342 Ether
0xcacca5cc1a787da3c3cdb8c3e832f880889734ff21a10162bf4a2bc2ac594f0d46939667 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c342.45 Ether
0x648abcd2c62d00184b9cfc11124f156b1e9f0a86bdf7a64771989d65fbdb31b446939657 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c342 Ether
0xd89cde1e0be2ed22802e26e7a7304de645185dc6e1508dece93edf7d1f9eae1746939627 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c340.10443531 Ether
0xab26434a568453d04a651d44b2e508d477447b57a7caa7ac7c1855da57584a2e46939607 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c344.29274524 Ether
0x7af9680c957d5ae50acf8c7f65a596ffbc311d6fb63a30f513adf07f48a7c76846939467 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341.24 Ether
0x38bb483c962b0df2db8e9dcb8f92cf47b80df39bda3b01afd23ad0cded690c8546939377 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c340.5 Ether
0xf79723e87b5fbb12ec84f81f3b1a238184827bad9663824d8904049773235b6046939207 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c3410 Ether
0x808100ac26381045371174b1d38af836f66382e2f66f62fabe800cb9ffafe85b46938097 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c344 Ether
0x4a077d602e1520125d616e63791018def0f8d48a1696275979f2f77ec78c21ed46938097 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c3411 Ether
0x10ecd061384afa33fa1879d178edcfe00a2bb8b157cdcfd00e6c909acbcc128146937927 days 5 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c3414.6 Ether
0x43f74f1a4302af2ea13272e7e49442648604b7b1e5f97217c597b4a4e791495346937597 days 6 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341 Ether
0x5b5565743d0a12faba744528ab79da9078fb745aaf564fad155a7726301e46cb46937347 days 6 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c340.88314687 Ether
0xfd68d536cb022706d17f9f37e12f0d6531129780da893ddcbe7edb5e453b37ad46937317 days 6 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c342.48 Ether
0x9d606d451b8bbd66f9e08fb0d2c5b735efee6ce08d149c06b5ddea8f1c6655fa46937077 days 6 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341.01 Ether
0xfd3ed62fc0ae5437f6c19b7294d07a0d7b75c61fa9394f5607622158662bc17746936487 days 6 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c341 Ether
0xc4850ca693785666206f691858f65f94843df34e00f941cf91f1176dadd7ed8e46936347 days 6 hrs ago0xc88c7e1aebd89187d13bd42e1ff814d32f492bf60x606b2272215a0cdd1cf4f38293ffaa42f0f56c340.13 Ether
[ Download CSV Export  ] 
Contract Source Code Verified
Contract Name: StormCrowdsale
Compiler Version: v0.4.19-nightly.2017.11.11+commit.284c3839
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.13;
contract IERC20Token {
  function totalSupply() constant returns (uint256 totalSupply);
  function balanceOf(address _owner) constant returns (uint256 balance) {}
  function transfer(address _to, uint256 _value) returns (bool success) {}
  function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
  function approve(address _spender, uint256 _value) returns (bool success) {}
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}
  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
contract IToken {
  function totalSupply() constant returns (uint256 totalSupply);
  function mintTokens(address _to, uint256 _amount) {}
}
contract Owned {
    address public owner;
    address public newOwner;
    function Owned() {
        owner = msg.sender;
    }
    modifier onlyOwner {
        assert(msg.sender == owner);
        _;
    }
    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != owner);
        newOwner = _newOwner;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        OwnerUpdate(owner, newOwner);
        owner = newOwner;
        newOwner = 0x0;
    }
    event OwnerUpdate(address _prevOwner, address _newOwner);
}
contract ReentrancyHandling {
    bool locked;
    modifier noReentrancy() {
        require(!locked);
        locked = true;
        _;
        locked = false;
    }
}
/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }
  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }
  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}
contract Crowdsale is ReentrancyHandling, Owned {
  using SafeMath for uint256;
  
  struct ContributorData {
    bool isWhiteListed;
    bool isCommunityRoundApproved;
    uint256 contributionAmount;
    uint256 tokensIssued;
  }
  mapping(address => ContributorData) public contributorList;
  enum state { pendingStart, communityRound, crowdsaleStarted, crowdsaleEnded }
  state crowdsaleState;
  uint public communityRoundStartDate;
  uint public crowdsaleStartDate;
  uint public crowdsaleEndDate;
  event CommunityRoundStarted(uint timestamp);
  event CrowdsaleStarted(uint timestamp);
  event CrowdsaleEnded(uint timestamp);
  IToken token = IToken(0x0);
  uint ethToTokenConversion;
  uint256 maxCrowdsaleCap;
  uint256 maxCommunityCap;
  uint256 maxCommunityWithoutBonusCap;
  uint256 maxContribution;
  uint256 tokenSold = 0;
  uint256 communityTokenSold = 0;
  uint256 communityTokenWithoutBonusSold = 0;
  uint256 crowdsaleTokenSold = 0;
  uint256 public ethRaisedWithoutCompany = 0;
  address companyAddress;   // company wallet address in cold/hardware storage 
  uint maxTokenSupply;
  uint companyTokens;
  bool treasuryLocked = false;
  bool ownerHasClaimedTokens = false;
  bool ownerHasClaimedCompanyTokens = false;
  // validates sender is whitelisted
  modifier onlyWhiteListUser {
    require(contributorList[msg.sender].isWhiteListed == true);
    _;
  }
  // limit gas price to 50 Gwei (about 5-10x the normal amount)
  modifier onlyLowGasPrice {
	  require(tx.gasprice <= 50*10**9 wei);
	  _;
  }
  //
  // Unnamed function that runs when eth is sent to the contract
  //
  function() public noReentrancy onlyWhiteListUser onlyLowGasPrice payable {
    require(msg.value != 0);                                         // Throw if value is 0
    require(companyAddress != 0x0);
    require(token != IToken(0x0));
    checkCrowdsaleState();                                           // Calibrate crowdsale state
    assert((crowdsaleState == state.communityRound && contributorList[msg.sender].isCommunityRoundApproved) ||
            crowdsaleState == state.crowdsaleStarted);
    
    processTransaction(msg.sender, msg.value);                       // Process transaction and issue tokens
    checkCrowdsaleState();                                           // Calibrate crowdsale state
  }
  // 
  // return state of smart contract
  //
  function getState() public constant returns (uint256, uint256, uint) {
    uint currentState = 0;
    if (crowdsaleState == state.pendingStart) {
      currentState = 1;
    }
    else if (crowdsaleState == state.communityRound) {
      currentState = 2;
    }
    else if (crowdsaleState == state.crowdsaleStarted) {
      currentState = 3;
    }
    else if (crowdsaleState == state.crowdsaleEnded) {
      currentState = 4;
    }
    return (tokenSold, communityTokenSold, currentState);
  }
  //
  // Check crowdsale state and calibrate it
  //
  function checkCrowdsaleState() internal {
    if (now > crowdsaleEndDate || tokenSold >= maxTokenSupply) {  // end crowdsale once all tokens are sold or run out of time
      if (crowdsaleState != state.crowdsaleEnded) {
        crowdsaleState = state.crowdsaleEnded;
        CrowdsaleEnded(now);
      }
    }
    else if (now > crowdsaleStartDate) { // move into crowdsale round
      if (crowdsaleState != state.crowdsaleStarted) {
        uint256 communityTokenRemaining = maxCommunityCap.sub(communityTokenSold);  // apply any remaining tokens from community round to crowdsale round
        maxCrowdsaleCap = maxCrowdsaleCap.add(communityTokenRemaining);
        crowdsaleState = state.crowdsaleStarted;  // change state
        CrowdsaleStarted(now);
      }
    }
    else if (now > communityRoundStartDate) {
      if (communityTokenSold < maxCommunityCap) {
        if (crowdsaleState != state.communityRound) {
          crowdsaleState = state.communityRound;
          CommunityRoundStarted(now);
        }
      }
      else {  // automatically start crowdsale when all community round tokens are sold out 
        if (crowdsaleState != state.crowdsaleStarted) {
          crowdsaleState = state.crowdsaleStarted;
          CrowdsaleStarted(now);
        }
      }
    }
  }
  //
  // Issue tokens and return if there is overflow
  //
  function calculateCommunity(address _contributor, uint256 _newContribution) internal returns (uint256, uint256) {
    uint256 communityEthAmount = 0;
    uint256 communityTokenAmount = 0;
    uint previousContribution = contributorList[_contributor].contributionAmount;  // retrieve previous contributions
    // community round ONLY
    if (crowdsaleState == state.communityRound && 
        contributorList[_contributor].isCommunityRoundApproved && 
        previousContribution < maxContribution) {
        communityEthAmount = _newContribution;
        uint256 availableEthAmount = maxContribution.sub(previousContribution);                 
        // limit the contribution ETH amount to the maximum allowed for the community round
        if (communityEthAmount > availableEthAmount) {
          communityEthAmount = availableEthAmount;
        }
        // compute community tokens without bonus
        communityTokenAmount = communityEthAmount.mul(ethToTokenConversion);
        uint256 availableTokenAmount = maxCommunityWithoutBonusCap.sub(communityTokenWithoutBonusSold);
        // verify community tokens do not go over the max cap for community round
        if (communityTokenAmount > availableTokenAmount) {
          // cap the tokens to the max allowed for the community round
          communityTokenAmount = availableTokenAmount;
          // recalculate the corresponding ETH amount
          communityEthAmount = communityTokenAmount.div(ethToTokenConversion);
        }
        // track tokens sold during community round
        communityTokenWithoutBonusSold = communityTokenWithoutBonusSold.add(communityTokenAmount);
        // compute bonus tokens
        uint256 bonusTokenAmount = communityTokenAmount.mul(15);
        bonusTokenAmount = bonusTokenAmount.div(100);
        // add bonus to community tokens
        communityTokenAmount = communityTokenAmount.add(bonusTokenAmount);
        // track tokens sold during community round
        communityTokenSold = communityTokenSold.add(communityTokenAmount);
    }
    return (communityTokenAmount, communityEthAmount);
  }
  //
  // Issue tokens and return if there is overflow
  //
  function calculateCrowdsale(uint256 _remainingContribution) internal returns (uint256, uint256) {
    uint256 crowdsaleEthAmount = _remainingContribution;
    // compute crowdsale tokens
    uint256 crowdsaleTokenAmount = crowdsaleEthAmount.mul(ethToTokenConversion);
    // determine crowdsale tokens remaining
    uint256 availableTokenAmount = maxCrowdsaleCap.sub(crowdsaleTokenSold);
    // verify crowdsale tokens do not go over the max cap for crowdsale round
    if (crowdsaleTokenAmount > availableTokenAmount) {
      // cap the tokens to the max allowed for the crowdsale round
      crowdsaleTokenAmount = availableTokenAmount;
      // recalculate the corresponding ETH amount
      crowdsaleEthAmount = crowdsaleTokenAmount.div(ethToTokenConversion);
    }
    // track tokens sold during crowdsale round
    crowdsaleTokenSold = crowdsaleTokenSold.add(crowdsaleTokenAmount);
    return (crowdsaleTokenAmount, crowdsaleEthAmount);
  }
  //
  // Issue tokens and return if there is overflow
  //
  function processTransaction(address _contributor, uint256 _amount) internal {
    uint256 newContribution = _amount;
    var (communityTokenAmount, communityEthAmount) = calculateCommunity(_contributor, newContribution);
    // compute remaining ETH amount available for purchasing crowdsale tokens
    var (crowdsaleTokenAmount, crowdsaleEthAmount) = calculateCrowdsale(newContribution.sub(communityEthAmount));
    // add up crowdsale + community tokens
    uint256 tokenAmount = crowdsaleTokenAmount.add(communityTokenAmount);
    assert(tokenAmount > 0);
    // Issue new tokens
    token.mintTokens(_contributor, tokenAmount);                              
    // log token issuance
    contributorList[_contributor].tokensIssued = contributorList[_contributor].tokensIssued.add(tokenAmount);                
    // Add contribution amount to existing contributor
    newContribution = crowdsaleEthAmount.add(communityEthAmount);
    contributorList[_contributor].contributionAmount = contributorList[_contributor].contributionAmount.add(newContribution);
    ethRaisedWithoutCompany = ethRaisedWithoutCompany.add(newContribution);                              // Add contribution amount to ETH raised
    tokenSold = tokenSold.add(tokenAmount);                                  // track how many tokens are sold
    // compute any refund if applicable
    uint256 refundAmount = _amount.sub(newContribution);
    if (refundAmount > 0) {
      _contributor.transfer(refundAmount);                                   // refund contributor amount behind the maximum ETH cap
    }
    companyAddress.transfer(newContribution);                                // send ETH to company
  }
  //
  // whitelist validated participants.
  //
  function WhiteListContributors(address[] _contributorAddresses, bool[] _contributorCommunityRoundApproved) public onlyOwner {
    require(_contributorAddresses.length == _contributorCommunityRoundApproved.length); // Check if input data is correct
    for (uint cnt = 0; cnt < _contributorAddresses.length; cnt++) {
      contributorList[_contributorAddresses[cnt]].isWhiteListed = true;
      contributorList[_contributorAddresses[cnt]].isCommunityRoundApproved = _contributorCommunityRoundApproved[cnt];
    }
  }
  //
  // Method is needed for recovering tokens accidentally sent to token address
  //
  function salvageTokensFromContract(address _tokenAddress, address _to, uint _amount) public onlyOwner {
    IERC20Token(_tokenAddress).transfer(_to, _amount);
  }
  //
  // Owner can set multisig address for crowdsale
  //
  function setCompanyAddress(address _newAddress) public onlyOwner {
    require(!treasuryLocked);                              // Check if owner has already claimed tokens
    companyAddress = _newAddress;
    treasuryLocked = true;
  }
  //
  // Owner can set token address where mints will happen
  //
  function setToken(address _newAddress) public onlyOwner {
    token = IToken(_newAddress);
  }
  function getToken() public constant returns (address) {
    return address(token);
  }
  //
  // Claims company tokens
  //
  function claimCompanyTokens() public onlyOwner {
    require(!ownerHasClaimedCompanyTokens);                     // Check if owner has already claimed tokens
    require(companyAddress != 0x0);
    
    tokenSold = tokenSold.add(companyTokens); 
    token.mintTokens(companyAddress, companyTokens);            // Issue company tokens 
    ownerHasClaimedCompanyTokens = true;                        // Block further mints from this method
  }
  //
  // Claim remaining tokens when crowdsale ends
  //
  function claimRemainingTokens() public onlyOwner {
    checkCrowdsaleState();                                        // Calibrate crowdsale state
    require(crowdsaleState == state.crowdsaleEnded);              // Check crowdsale has ended
    require(!ownerHasClaimedTokens);                              // Check if owner has already claimed tokens
    require(companyAddress != 0x0);
    uint256 remainingTokens = maxTokenSupply.sub(token.totalSupply());
    token.mintTokens(companyAddress, remainingTokens);            // Issue tokens to company
    ownerHasClaimedTokens = true;                                 // Block further mints from this method
  }
}
contract StormCrowdsale is Crowdsale {
    string public officialWebsite;
    string public officialFacebook;
    string public officialTelegram;
    string public officialEmail;
  function StormCrowdsale() public {
    officialWebsite = "https://www.stormtoken.com";
    officialFacebook = "https://www.facebook.com/stormtoken/";
    officialTelegram = "https://t.me/joinchat/GHTZGQwsy9mZk0KFEEjGtg";
    officialEmail = "[email protected]";
    communityRoundStartDate = 1510063200;                       // Nov 7, 2017 @ 6am PST
    crowdsaleStartDate = communityRoundStartDate + 24 hours;    // 24 hours later
    crowdsaleEndDate = communityRoundStartDate + 30 days + 12 hours; // 30 days + 12 hours later: Dec 7th, 2017 @ 6pm PST [1512698400]
    crowdsaleState = state.pendingStart;
    ethToTokenConversion = 26950;                 // 1 ETH == 26,950 STORM tokens
    maxTokenSupply = 10000000000 ether;           // 10,000,000,000
    companyTokens = 8124766171 ether;             // allocation for company pool, private presale, user pool 
                                                  // 2,325,649,071 tokens from the company pool are voluntarily locked for 2 years
    maxCommunityWithoutBonusCap = 945000000 ether;
    maxCommunityCap = 1086750000 ether;           // 945,000,000 with 15% bonus of 141,750,000
    maxCrowdsaleCap = 788483829 ether;            // tokens allocated to crowdsale 
    maxContribution = 100 ether;                  // maximum contribution during community round
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleEndDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStartDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"officialEmail","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimRemainingTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"officialFacebook","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setCompanyAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributorList","outputs":[{"name":"isWhiteListed","type":"bool"},{"name":"isCommunityRoundApproved","type":"bool"},{"name":"contributionAmount","type":"uint256"},{"name":"tokensIssued","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethRaisedWithoutCompany","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"salvageTokensFromContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"officialTelegram","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimCompanyTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"officialWebsite","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"communityRoundStartDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contributorAddresses","type":"address[]"},{"name":"_contributorCommunityRoundApproved","type":"bool[]"}],"name":"WhiteListContributors","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"CommunityRoundStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"CrowdsaleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"CrowdsaleEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prevOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405260078054600160a060020a03191690556000600d819055600e819055600f81905560108190556011556015805462ffffff1916905534156200004557600080fd5b6000805461010060a860020a03191661010033600160a060020a03160217905560408051908101604052601a81527f68747470733a2f2f7777772e73746f726d746f6b656e2e636f6d00000000000060208201526016908051620000ae9291602001906200026a565b50606060405190810160405280602481526020017f68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f73746f726d746f81526020017f6b656e2f000000000000000000000000000000000000000000000000000000008152506017908051620001219291602001906200026a565b50606060405190810160405280602c81526020017f68747470733a2f2f742e6d652f6a6f696e636861742f4748545a47517773793981526020017f6d5a6b304b4645456a47746700000000000000000000000000000000000000008152506018908051620001949291602001906200026a565b5060408051908101604052601381527f696e666f4073746f726d746f6b656e2e636f6d0000000000000000000000000060208201526019908051620001de9291602001906200026a565b50635a01bc60600455635a030de0600555635a29f2206006556003805460ff191690556169466008556b204fce5e3e250261100000006013556b1a40a628ad3f45122e8c00006014556b030daf88a662792f51000000600b556b0382f0438c2471c336c00000600a556b028c37f204c14b8baab4000060095568056bc75e2d63100000600c556200030f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002ad57805160ff1916838001178555620002dd565b82800160010185558215620002dd579182015b82811115620002dd578251825591602001919060010190620002c0565b50620002eb929150620002ef565b5090565b6200030c91905b80821115620002eb5760008155600101620002f6565b90565b611468806200031f6000396000f3006060604052600436106101035763ffffffff60e060020a600035041663144fa6d7811461021a5780631865c57d1461023b578063192f10761461027257806321df0da7146102975780632edcc661146102c65780632fa146d8146102d9578063313602d4146103635780634e58e920146103765780634f63a7721461038957806379ba5097146103a85780638da5cb5b146103bb57806392acb4d6146103ce5780639bf070b51461041b578063a0929cda1461042e578063a10d6a5114610456578063b7e621c314610469578063bf3d99951461047c578063d1baaf581461048f578063d4ee1d90146104a2578063f2fde38b146104b5578063fbbc2243146104d4575b60005460ff161561011357600080fd5b6000805460ff191660019081178255600160a060020a0333168252600260205260409091205460ff1615151461014857600080fd5b640ba43b74003a111561015a57600080fd5b34151561016657600080fd5b601254600160a060020a0316151561017d57600080fd5b600754600160a060020a0316151561019457600080fd5b61019c610563565b60016003805460ff16908111156101af57fe5b1480156101d9575033600160a060020a0316600090815260026020526040902054610100900460ff165b806101f4575060026003805460ff16908111156101f257fe5b145b15156101fc57fe5b610206333461073d565b61020e610563565b6000805460ff19169055005b341561022557600080fd5b610239600160a060020a0360043516610952565b005b341561024657600080fd5b61024e61099e565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561027d57600080fd5b610285610a32565b60405190815260200160405180910390f35b34156102a257600080fd5b6102aa610a38565b604051600160a060020a03909116815260200160405180910390f35b34156102d157600080fd5b610285610a47565b34156102e457600080fd5b6102ec610a4d565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610328578082015183820152602001610310565b50505050905090810190601f1680156103555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036e57600080fd5b610239610aeb565b341561038157600080fd5b6102ec610c53565b341561039457600080fd5b610239600160a060020a0360043516610cbe565b34156103b357600080fd5b610239610d27565b34156103c657600080fd5b6102aa610deb565b34156103d957600080fd5b6103ed600160a060020a0360043516610dff565b6040519315158452911515602084015260408084019190915260608301919091526080909101905180910390f35b341561042657600080fd5b610285610e2d565b341561043957600080fd5b610239600160a060020a0360043581169060243516604435610e33565b341561046157600080fd5b6102ec610ecd565b341561047457600080fd5b610239610f38565b341561048757600080fd5b6102ec611021565b341561049a57600080fd5b61028561108c565b34156104ad57600080fd5b6102aa611092565b34156104c057600080fd5b610239600160a060020a03600435166110a1565b34156104df57600080fd5b61023960046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061110d95505050505050565b60006006544211806105795750601354600d5410155b156105d9576003805460ff168181111561058f57fe5b146105d4576003805460ff1916811790557f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b4260405190815260200160405180910390a15b61073a565b60055442111561066e5760026003805460ff16908111156105f657fe5b146105d457600e54600a546106109163ffffffff6111f616565b600954909150610626908263ffffffff61120816565b6009556003805460ff191660021790557f712173de1d50109191e0d0671c67415bf3d44508558069796106054c5600d5014260405190815260200160405180910390a161073a565b60045442111561073a57600a54600e5410156106e15760016003805460ff169081111561069757fe5b146105d4576003805460ff191660011790557f0c4f5d815bd2c3e7c8433a9d1cfd00fb1eb7882d59378327a234d51009fae8254260405190815260200160405180910390a161073a565b60026003805460ff16908111156106f457fe5b1461073a576003805460ff191660021790557f712173de1d50109191e0d0671c67415bf3d44508558069796106054c5600d5014260405190815260200160405180910390a15b50565b806000808080808061074f898861121e565b909650945061076c610767888763ffffffff6111f616565b611383565b9094509250610781848763ffffffff61120816565b91506000821161078d57fe5b600754600160a060020a031663f0dda65c8a8460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156107e357600080fd5b6102c65a03f115156107f457600080fd5b505050600160a060020a03891660009081526002602081905260409091200154610824908363ffffffff61120816565b600160a060020a038a1660009081526002602081905260409091200155610851838663ffffffff61120816565b600160a060020a038a16600090815260026020526040902060010154909750610880908863ffffffff61120816565b600160a060020a038a166000908152600260205260409020600101556011546108af908863ffffffff61120816565b601155600d546108c5908363ffffffff61120816565b600d556108d8888863ffffffff6111f616565b9050600081111561091457600160a060020a03891681156108fc0282604051600060405180830381858888f19350505050151561091457600080fd5b601254600160a060020a031687156108fc0288604051600060405180830381858888f19350505050151561094757600080fd5b505050505050505050565b60005433600160a060020a03908116610100909204161461096f57fe5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000808080806003805460ff16908111156109b557fe5b14156109c357506001610a20565b60016003805460ff16908111156109d657fe5b14156109e457506002610a20565b60026003805460ff16908111156109f757fe5b1415610a0557506003610a20565b6003805460ff1681811115610a1657fe5b1415610a20575060045b600d54600e5490959094509092509050565b60065481565b600754600160a060020a031690565b60055481565b60198054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae35780601f10610ab857610100808354040283529160200191610ae3565b820191906000526020600020905b815481529060010190602001808311610ac657829003601f168201915b505050505081565b6000805433600160a060020a039081166101009092041614610b0957fe5b610b11610563565b6003805460ff1681811115610b2257fe5b14610b2c57600080fd5b601554610100900460ff1615610b4157600080fd5b601254600160a060020a03161515610b5857600080fd5b600754610bcd90600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ba457600080fd5b6102c65a03f11515610bb557600080fd5b5050506040518051601354915063ffffffff6111f616565b600754601254919250600160a060020a039081169163f0dda65c91168360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610c2d57600080fd5b6102c65a03f11515610c3e57600080fd5b50506015805461ff0019166101001790555050565b60178054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae35780601f10610ab857610100808354040283529160200191610ae3565b60005433600160a060020a039081166101009092041614610cdb57fe5b60155460ff1615610ceb57600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556015805460ff19166001179055565b60015433600160a060020a03908116911614610d4257600080fd5b6000546001547f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91600160a060020a0361010090910481169116604051600160a060020a039283168152911660208201526040908101905180910390a1600180546000805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a0384160217905573ffffffffffffffffffffffffffffffffffffffff19169055565b6000546101009004600160a060020a031681565b600260208190526000918252604090912080546001820154919092015460ff80841693610100900416919084565b60115481565b60005433600160a060020a039081166101009092041614610e5057fe5b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ead57600080fd5b6102c65a03f11515610ebe57600080fd5b50505060405180515050505050565b60188054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae35780601f10610ab857610100808354040283529160200191610ae3565b60005433600160a060020a039081166101009092041614610f5557fe5b60155462010000900460ff1615610f6b57600080fd5b601254600160a060020a03161515610f8257600080fd5b601454600d54610f979163ffffffff61120816565b600d55600754601254601454600160a060020a039283169263f0dda65c92169060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610ffa57600080fd5b6102c65a03f1151561100b57600080fd5b50506015805462ff000019166201000017905550565b60168054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae35780601f10610ab857610100808354040283529160200191610ae3565b60045481565b600154600160a060020a031681565b60005433600160a060020a0390811661010090920416146110be57fe5b600054600160a060020a038281166101009092041614156110de57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805433600160a060020a03908116610100909204161461112b57fe5b815183511461113957600080fd5b5060005b82518110156111f15760016002600085848151811061115857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905581818151811061119657fe5b90602001906020020151600260008584815181106111b057fe5b90602001906020020151600160a060020a03168152602081019190915260400160002080549115156101000261ff001990921691909117905560010161113d565b505050565b60008282111561120257fe5b50900390565b60008282018381101561121757fe5b9392505050565b600160a060020a03821660009081526002602052604081206001908101548291829182918290819081906003805460ff169081111561125957fe5b1480156112835750600160a060020a038a16600090815260026020526040902054610100900460ff165b80156112905750600c5484105b1561137357600c548996506112ab908563ffffffff6111f616565b9250828611156112b9578295505b6008546112cd90879063ffffffff61140116565b94506112e6600f54600b546111f690919063ffffffff16565b91508185111561130b578194506113086008548661142590919063ffffffff16565b95505b600f5461131e908663ffffffff61120816565b600f90815561133490869063ffffffff61140116565b905061134781606463ffffffff61142516565b9050611359858263ffffffff61120816565b600e5490955061136f908663ffffffff61120816565b600e555b5092989397509295505050505050565b60008060008060008592506113a36008548461140190919063ffffffff16565b91506113bc6010546009546111f690919063ffffffff16565b9050808211156113e1578091506113de6008548361142590919063ffffffff16565b92505b6010546113f4908363ffffffff61120816565b6010555094909350915050565b600082820283158061141d575082848281151561141a57fe5b04145b151561121757fe5b600080828481151561143357fe5b049493505050505600a165627a7a72305820e2b689ace3daeac854c0fa90273b3f3c22656dce664044dba6788eb8a6b45d510029

   Swarm Source:
bzzr://e2b689ace3daeac854c0fa90273b3f3c22656dce664044dba6788eb8a6b45d51

 

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