ETH Price: $2,660.80 (+1.70%)

Contract

0x383670AE601BDc30F15eEE3FAB8b55AbF997D097
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Batch Return Eth...46572742017-12-01 16:56:012628 days ago1512147361IN
0x383670AE...bF997D097
0 ETH0.003978085
Transfer46552132017-12-01 8:58:182628 days ago1512118698IN
0x383670AE...bF997D097
0.2 ETH0.0019139421
Transfer46532452017-12-01 1:12:262628 days ago1512090746IN
0x383670AE...bF997D097
0.1 ETH0.0032354735.5
Transfer46532202017-12-01 1:07:452628 days ago1512090465IN
0x383670AE...bF997D097
1 ETH0.0010629321
Transfer46526192017-11-30 22:46:542628 days ago1512082014IN
0x383670AE...bF997D097
1 ETH0.001822820
Transfer46524162017-11-30 22:00:442629 days ago1512079244IN
0x383670AE...bF997D097
1.01 ETH0.0020050822
Transfer46515642017-11-30 18:50:322629 days ago1512067832IN
0x383670AE...bF997D097
60 ETH0.0005061610
Transfer46515582017-11-30 18:48:362629 days ago1512067716IN
0x383670AE...bF997D097
20 ETH0.0009741210
Transfer46511392017-11-30 17:03:522629 days ago1512061432IN
0x383670AE...bF997D097
1.37 ETH0.0019654521
Transfer46511092017-11-30 16:56:252629 days ago1512060985IN
0x383670AE...bF997D097
1 ETH0.000093591
Transfer46510762017-11-30 16:48:272629 days ago1512060507IN
0x383670AE...bF997D097
0.5 ETH0.000093591
Transfer46510682017-11-30 16:46:222629 days ago1512060382IN
0x383670AE...bF997D097
0.5 ETH0.0000211
Transfer46510132017-11-30 16:33:562629 days ago1512059636IN
0x383670AE...bF997D097
0.3 ETH0.0019654521
Transfer46509612017-11-30 16:22:432629 days ago1512058963IN
0x383670AE...bF997D097
0.4 ETH0.0019654521
Transfer46508662017-11-30 16:00:192629 days ago1512057619IN
0x383670AE...bF997D097
0.125 ETH0.001216713
Transfer46508592017-11-30 15:59:132629 days ago1512057553IN
0x383670AE...bF997D097
1.01 ETH0.0005306910
Transfer46508552017-11-30 15:57:322629 days ago1512057452IN
0x383670AE...bF997D097
1 ETH0.0009359310
Transfer46507052017-11-30 15:18:112629 days ago1512055091IN
0x383670AE...bF997D097
0.19 ETH0.0009359310
Transfer46503052017-11-30 13:44:262629 days ago1512049466IN
0x383670AE...bF997D097
1.5 ETH0.000093591
Transfer46494872017-11-30 10:36:522629 days ago1512038212IN
0x383670AE...bF997D097
1 ETH0.0004220
Transfer46494142017-11-30 10:16:502629 days ago1512037010IN
0x383670AE...bF997D097
0.05 ETH0.0018718620
Transfer46493342017-11-30 9:56:162629 days ago1512035776IN
0x383670AE...bF997D097
1 ETH0.0019654521
Transfer46491422017-11-30 9:13:402629 days ago1512033220IN
0x383670AE...bF997D097
1 ETH0.0009359310
Transfer46491362017-11-30 9:11:352629 days ago1512033095IN
0x383670AE...bF997D097
1 ETH0.0009359310
Transfer46491282017-11-30 9:08:422629 days ago1512032922IN
0x383670AE...bF997D097
2 ETH0.0019654521
View all transactions

Latest 23 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.2 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.1 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1.01 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
80 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1.37 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.5 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.3 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.4 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.125 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
2.01 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.19 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1.5 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
0.05 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
50 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
1 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
2 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
2 ETH
46572742017-12-01 16:56:012628 days ago1512147361
0x383670AE...bF997D097
2 ETH
46493582017-11-30 10:03:302629 days ago1512036210
0x383670AE...bF997D097
50 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MediaSifterSeedCrowdsale

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-11-29
*/

/*

  Copyright 2017 Cofound.it.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.4.13;

contract ReentrancyHandlingContract {

    bool locked;

    modifier noReentrancy() {
        require(!locked);
        locked = true;
        _;
        locked = false;
    }
}
contract Owned {
    address public owner;
    address public newOwner;

    function Owned() public {
        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 PriorityPassInterface {
    function getAccountLimit(address _accountAddress) public constant returns (uint);
    function getAccountActivity(address _accountAddress) public constant returns (bool);
}
contract ERC20TokenInterface {
  function totalSupply() public constant returns (uint256 _totalSupply);
  function balanceOf(address _owner) public constant returns (uint256 balance);
  function transfer(address _to, uint256 _value) public returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
  function approve(address _spender, uint256 _value) public returns (bool success);
  function allowance(address _owner, address _spender) public 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 SeedCrowdsaleContract is ReentrancyHandlingContract, Owned {

  struct ContributorData {
    uint contributionAmount;
  }

  mapping(address => ContributorData) public contributorList;
  uint public nextContributorIndex;
  mapping(uint => address) public contributorIndexes;

  state public crowdsaleState = state.pendingStart;
  enum state { pendingStart, priorityPass, openedPriorityPass, crowdsaleEnded }

  uint public presaleStartTime;
  uint public presaleUnlimitedStartTime;
  uint public crowdsaleEndedTime;

  event PresaleStarted(uint blocktime);
  event PresaleUnlimitedStarted(uint blocktime);
  event CrowdsaleEnded(uint blocktime);
  event ErrorSendingETH(address to, uint amount);
  event MinCapReached(uint blocktime);
  event MaxCapReached(uint blocktime);
  event ContributionMade(address indexed contributor, uint amount);

  PriorityPassInterface priorityPassContract = PriorityPassInterface(0x0);

  uint public minCap;
  uint public maxP1Cap;
  uint public maxCap;
  uint public ethRaised;

  address public multisigAddress;

  uint nextContributorToClaim;
  mapping(address => bool) hasClaimedEthWhenFail;

  //
  // Unnamed function that runs when eth is sent to the contract
  // @payable
  //
  function() noReentrancy payable public {
    require(msg.value != 0);                                                    // Throw if value is 0
    require(crowdsaleState != state.crowdsaleEnded);                            // Check if crowdsale has ended

    bool stateChanged = checkCrowdsaleState();                                  // Check blocks time and calibrate crowdsale state

    if (crowdsaleState == state.priorityPass) {
      if (priorityPassContract.getAccountActivity(msg.sender)) {                // Check if contributor is in priorityPass
        processTransaction(msg.sender, msg.value);                              // Process transaction and issue tokens
      } else {
        refundTransaction(stateChanged);                                        // Set state and return funds or throw
      }
    } else if (crowdsaleState == state.openedPriorityPass) {
      if (priorityPassContract.getAccountActivity(msg.sender)) {                // Check if contributor is in priorityPass
        processTransaction(msg.sender, msg.value);                              // Process transaction and issue tokens
      } else {
        refundTransaction(stateChanged);                                        // Set state and return funds or throw
      }
    } else {
      refundTransaction(stateChanged);                                          // Set state and return funds or throw
    }
  }

  //
  // @internal checks crowdsale state and emits events it
  // @returns boolean
  //
  function checkCrowdsaleState() internal returns (bool) {
    if (ethRaised == maxCap && crowdsaleState != state.crowdsaleEnded) {        // Check if max cap is reached
      crowdsaleState = state.crowdsaleEnded;
      MaxCapReached(block.timestamp);                                           // Close the crowdsale
      CrowdsaleEnded(block.timestamp);                                          // Raise event
      return true;
    }

    if (block.timestamp > presaleStartTime && block.timestamp <= presaleUnlimitedStartTime) { // Check if we are in presale phase
      if (crowdsaleState != state.priorityPass) {                               // Check if state needs to be changed
        crowdsaleState = state.priorityPass;                                    // Set new state
        PresaleStarted(block.timestamp);                                        // Raise event
        return true;
      }
    } else if (block.timestamp > presaleUnlimitedStartTime && block.timestamp <= crowdsaleEndedTime) {  // Check if we are in presale unlimited phase
      if (crowdsaleState != state.openedPriorityPass) {                         // Check if state needs to be changed
        crowdsaleState = state.openedPriorityPass;                              // Set new state
        PresaleUnlimitedStarted(block.timestamp);                               // Raise event
        return true;
      }
    } else {
      if (crowdsaleState != state.crowdsaleEnded && block.timestamp > crowdsaleEndedTime) {// Check if crowdsale is over
        crowdsaleState = state.crowdsaleEnded;                                  // Set new state
        CrowdsaleEnded(block.timestamp);                                        // Raise event
        return true;
      }
    }
    return false;
  }

  //
  // @internal determines if return eth or throw according to changing state
  // @param _stateChanged boolean message about state change
  //
  function refundTransaction(bool _stateChanged) internal {
    if (_stateChanged) {
      msg.sender.transfer(msg.value);
    } else {
      revert();
    }
  }

  //
  // Getter to calculate how much user can contribute
  // @param _contributor address of the contributor
  //
  function calculateMaxContribution(address _contributor) constant public returns (uint maxContribution) {
    uint maxContrib;

    if (crowdsaleState == state.priorityPass) {                                 // Check if we are in priority pass
      maxContrib = priorityPassContract.getAccountLimit(_contributor) - contributorList[_contributor].contributionAmount;

	    if (maxContrib > (maxP1Cap - ethRaised)) {                                // Check if max contribution is more that max cap
        maxContrib = maxP1Cap - ethRaised;                                      // Alter max cap
      }

    } else {
      maxContrib = maxCap - ethRaised;                                          // Alter max cap
    }
    return maxContrib;
  }

  //
  // Return if there is overflow of contributed eth
  // @internal processes transactions
  // @param _contributor address of an contributor
  // @param _amount contributed amount
  //
  function processTransaction(address _contributor, uint _amount) internal {
    uint maxContribution = calculateMaxContribution(_contributor);              // Calculate max users contribution
    uint contributionAmount = _amount;
    uint returnAmount = 0;

	  if (maxContribution < _amount) {                                            // Check if max contribution is lower than _amount sent
      contributionAmount = maxContribution;                                     // Set that user contributes his maximum alowed contribution
      returnAmount = _amount - maxContribution;                                 // Calculate how much he must get back
    }

    if (ethRaised + contributionAmount >= minCap && minCap > ethRaised) {
      MinCapReached(block.timestamp);
    } 

    if (contributorList[_contributor].contributionAmount == 0) {                // Check if contributor has already contributed
      contributorList[_contributor].contributionAmount = contributionAmount;    // Set their contribution
      contributorIndexes[nextContributorIndex] = _contributor;                  // Set contributors index
      nextContributorIndex++;
    } else {
      contributorList[_contributor].contributionAmount += contributionAmount;   // Add contribution amount to existing contributor
    }
    ethRaised += contributionAmount;                                            // Add to eth raised

    ContributionMade(msg.sender, contributionAmount);                           // Raise event about contribution

	  if (returnAmount != 0) {
      _contributor.transfer(returnAmount);                                      // Return overflow of ether
    } 
  }

  //
  // Recovers ERC20 tokens other than eth that are send to this address
  // @owner refunds the erc20 tokens
  // @param _tokenAddress address of the erc20 token
  // @param _to address to where tokens should be send to
  // @param _amount amount of tokens to refund
  //
  function salvageTokensFromContract(address _tokenAddress, address _to, uint _amount) onlyOwner public {
    ERC20TokenInterface(_tokenAddress).transfer(_to, _amount);
  }

  //
  // withdrawEth when minimum cap is reached
  // @owner sets contributions to withdraw
  //
  function withdrawEth() onlyOwner public {
    require(this.balance != 0);
    require(ethRaised >= minCap);

    pendingEthWithdrawal = this.balance;
  }


  uint public pendingEthWithdrawal;
  //
  // pulls the funds that were set to send with calling of
  // withdrawEth when minimum cap is reached
  // @multisig pulls the contributions to self
  //
  function pullBalance() public {
    require(msg.sender == multisigAddress);
    require(pendingEthWithdrawal > 0);

    multisigAddress.transfer(pendingEthWithdrawal);
    pendingEthWithdrawal = 0;
  }

  //
  // Owner can batch return contributors contributions(eth)
  // @owner returns contributions
  // @param _numberOfReturns number of returns to do in one transaction
  //
  function batchReturnEthIfFailed(uint _numberOfReturns) onlyOwner public {
    require(block.timestamp > crowdsaleEndedTime && ethRaised < minCap);        // Check if crowdsale has failed

    address currentParticipantAddress;
    uint contribution;

    for (uint cnt = 0; cnt < _numberOfReturns; cnt++) {
      currentParticipantAddress = contributorIndexes[nextContributorToClaim];   // Get next unclaimed participant

      if (currentParticipantAddress == 0x0) {
         return;                                                                // Check if all the participants were compensated
      }

      if (!hasClaimedEthWhenFail[currentParticipantAddress]) {                  // Check if participant has already claimed
        contribution = contributorList[currentParticipantAddress].contributionAmount; // Get contribution of participant
        hasClaimedEthWhenFail[currentParticipantAddress] = true;                // Set that he has claimed

        if (!currentParticipantAddress.send(contribution)) {                    // Refund eth
          ErrorSendingETH(currentParticipantAddress, contribution);             // If there is an issue raise event for manual recovery
        }
      }
      nextContributorToClaim += 1;                                              // Repeat
    }
  }

  //
  // If there were any issue with refund owner can withdraw eth at the end for manual recovery
  // @owner withdraws remaining funds
  //
  function withdrawRemainingBalanceForManualRecovery() onlyOwner public {
    require(this.balance != 0);                                                 // Check if there are any eth to claim
    require(block.timestamp > crowdsaleEndedTime);                              // Check if crowdsale is over
    require(contributorIndexes[nextContributorToClaim] == 0x0);                 // Check if all the users were refunded
    multisigAddress.transfer(this.balance);                                     // Withdraw to multisig for manual processing
  }

  //
  // Owner can set multisig address for crowdsale
  // @owner sets an address where funds will go
  // @param _newAddress
  //
  function setMultisigAddress(address _newAddress) onlyOwner public {
    multisigAddress = _newAddress;
  }

  //
  // Setter for the whitelist contract
  // @owner sets address of whitelist contract
  // @param address
  //
  function setPriorityPassContract(address _newAddress) onlyOwner public {
    priorityPassContract = PriorityPassInterface(_newAddress);
  }

  //
  // Getter for the whitelist contract
  // @returns white list contract address
  //
  function priorityPassContractAddress() constant public returns (address) {
    return address(priorityPassContract);
  }

  //
  // Before crowdsale starts owner can calibrate time of crowdsale stages
  // @owner sends new times for the sale
  // @param _presaleStartTime timestamp for sale limited start
  // @param _presaleUnlimitedStartTime timestamp for sale unlimited
  // @param _crowdsaleEndedTime timestamp for ending sale
  //
  function setCrowdsaleTimes(uint _presaleStartTime, uint _presaleUnlimitedStartTime, uint _crowdsaleEndedTime) onlyOwner public {
    require(crowdsaleState == state.pendingStart);                              // Check if crowdsale has started
    require(_presaleStartTime != 0);                                            // Check if any value is 0
    require(_presaleStartTime < _presaleUnlimitedStartTime);                    // Check if presaleUnlimitedStartTime is set properly
    require(_presaleUnlimitedStartTime != 0);                                   // Check if any value is 0
    require(_presaleUnlimitedStartTime < _crowdsaleEndedTime);                  // Check if crowdsaleEndedTime is set properly
    require(_crowdsaleEndedTime != 0);                                          // Check if any value is 0
    presaleStartTime = _presaleStartTime;
    presaleUnlimitedStartTime = _presaleUnlimitedStartTime;
    crowdsaleEndedTime = _crowdsaleEndedTime;
  }
}

contract MediaSifterSeedCrowdsale is SeedCrowdsaleContract {
  
  function MediaSifterSeedCrowdsale() {

    presaleStartTime = 1512032400;
    presaleUnlimitedStartTime = 1512063000;
    crowdsaleEndedTime = 1512140400;

    minCap = 416 ether;
    maxP1Cap = 802 ether;
    maxCap = 891 ether;
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setMultisigAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presaleUnlimitedStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contributorIndexes","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawRemainingBalanceForManualRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingEthWithdrawal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priorityPassContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxP1Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multisigAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setPriorityPassContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_presaleStartTime","type":"uint256"},{"name":"_presaleUnlimitedStartTime","type":"uint256"},{"name":"_crowdsaleEndedTime","type":"uint256"}],"name":"setCrowdsaleTimes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_contributor","type":"address"}],"name":"calculateMaxContribution","outputs":[{"name":"maxContribution","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_numberOfReturns","type":"uint256"}],"name":"batchReturnEthIfFailed","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":"contributionAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextContributorIndex","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":false,"inputs":[],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presaleStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pullBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleEndedTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktime","type":"uint256"}],"name":"PresaleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktime","type":"uint256"}],"name":"PresaleUnlimitedStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktime","type":"uint256"}],"name":"CrowdsaleEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ErrorSendingETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktime","type":"uint256"}],"name":"MinCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktime","type":"uint256"}],"name":"MaxCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contributor","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ContributionMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prevOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"}]

60606040526005805460ff1916905560098054600160a060020a0319169055341561002957600080fd5b60008054600160a060020a0333166101000261010060a860020a0319909116179055635a1fc890600655635a204018600755635a216e7060085568168d28e3f002800000600a55682b79fc5ed267480000600b5568304d1be347990c0000600c556110a5806100996000396000f3006060604052600436106101455763ffffffff60e060020a6000350416630554053481146102ce578063101e652e146102ef5780631790bd17146103145780632165e1aa1461034657806323548b8b146103595780632c0a7e331461036c5780633e84b2661461037f5780633fa615b0146103925780634aa5a05d146103a55780635462870d146103b857806358b0a2aa146103cb57806359a591be146103ea5780635f2536f71461040657806379ba5097146104255780637f860330146104385780638da5cb5b1461044e57806392acb4d6146104615780639561a03814610480578063a0929cda14610493578063a0ef91df146104bb578063a82524b2146104ce578063b45aff16146104e1578063d4ee1d90146104f4578063e7bb523314610507578063f2fde38b1461053e578063f3a5644d1461055d578063fddf0fc014610570575b6000805460ff161561015657600080fd5b6000805460ff1916600117905534151561016f57600080fd5b600360055460ff16600381111561018257fe5b141561018d57600080fd5b610195610583565b9050600160055460ff1660038111156101aa57fe5b141561024657600954600160a060020a0316634afb07c43360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561020957600080fd5b6102c65a03f1151561021a57600080fd5b5050506040518051905015610238576102333334610794565b610241565b61024181610925565b6102c1565b600260055460ff16600381111561025957fe5b14156102b857600954600160a060020a0316634afb07c43360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561020957600080fd5b6102c181610925565b506000805460ff19169055005b34156102d957600080fd5b6102ed600160a060020a036004351661096a565b005b34156102fa57600080fd5b6103026109b6565b60405190815260200160405180910390f35b341561031f57600080fd5b61032a6004356109bc565b604051600160a060020a03909116815260200160405180910390f35b341561035157600080fd5b6102ed6109d7565b341561036457600080fd5b610302610a78565b341561037757600080fd5b610302610a7e565b341561038a57600080fd5b61032a610a84565b341561039d57600080fd5b610302610a93565b34156103b057600080fd5b610302610a99565b34156103c357600080fd5b61032a610a9f565b34156103d657600080fd5b6102ed600160a060020a0360043516610aae565b34156103f557600080fd5b6102ed600435602435604435610afa565b341561041157600080fd5b610302600160a060020a0360043516610b7e565b341561043057600080fd5b6102ed610c51565b341561044357600080fd5b6102ed600435610d15565b341561045957600080fd5b61032a610e5e565b341561046c57600080fd5b610302600160a060020a0360043516610e72565b341561048b57600080fd5b610302610e84565b341561049e57600080fd5b6102ed600160a060020a0360043581169060243516604435610e8a565b34156104c657600080fd5b6102ed610f24565b34156104d957600080fd5b610302610f78565b34156104ec57600080fd5b6102ed610f7e565b34156104ff57600080fd5b61032a610fe9565b341561051257600080fd5b61051a610ff8565b6040518082600381111561052a57fe5b60ff16815260200191505060405180910390f35b341561054957600080fd5b6102ed600160a060020a0360043516611001565b341561056857600080fd5b61030261106d565b341561057b57600080fd5b610302611073565b6000600c54600d541480156105a95750600360055460ff1660038111156105a657fe5b14155b15610629576005805460ff191660031790557f38caa2c61728c18eb71cbd06d1915e4164ffe51c69a09b68d78be1f125a5dea74260405190815260200160405180910390a17f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b4260405190815260200160405180910390a1506001610791565b6006544211801561063c57506007544211155b156106a657600160055460ff16600381111561065457fe5b146106a1576005805460ff191660011790557f350219912288aa2ab1c63b5922619564a732d06ab5d23696cafa1afe515304a04260405190815260200160405180910390a1506001610791565b61078d565b600754421180156106b957506008544211155b1561071e57600260055460ff1660038111156106d157fe5b146106a1576005805460ff191660021790557fb7375af7a044d5065808a05cbebd17a66f5bdf2d4f7ca631a5bd4be6c7f1bb324260405190815260200160405180910390a1506001610791565b600360055460ff16600381111561073157fe5b14158015610740575060085442115b1561078d576005805460ff191660031790557f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b4260405190815260200160405180910390a1506001610791565b5060005b90565b60008060006107a285610b7e565b925083915060009050838310156107bb57508190508083035b600a5482600d5401101580156107d45750600d54600a54115b1561080d577f71bd1f47064193be653e360173639170d33d2cfe47bf52a3de621ca4040e23584260405190815260200160405180910390a15b600160a060020a038516600090815260026020526040902054151561088357600160a060020a03851660008181526002602090815260408083208690556003805484526004909252909120805473ffffffffffffffffffffffffffffffffffffffff1916909217909155805460010190556108a2565b600160a060020a03851660009081526002602052604090208054830190555b600d805483019055600160a060020a0333167f6770260ea820d2f539364e7617e021543aaf6d192f2fd2a47c20db6bd99a4eb98360405190815260200160405180910390a2801561091e57600160a060020a03851681156108fc0282604051600060405180830381858888f19350505050151561091e57600080fd5b5050505050565b801561096257600160a060020a0333163480156108fc0290604051600060405180830381858888f19350505050151561095d57600080fd5b610967565b600080fd5b50565b60005433600160a060020a03908116610100909204161461098757fe5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60075481565b600460205260009081526040902054600160a060020a031681565b60005433600160a060020a0390811661010090920416146109f457fe5b600160a060020a033016311515610a0a57600080fd5b6008544211610a1857600080fd5b600f54600090815260046020526040902054600160a060020a031615610a3d57600080fd5b600e54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610a7657600080fd5b565b600c5481565b60115481565b600954600160a060020a031690565b600a5481565b600b5481565b600e54600160a060020a031681565b60005433600160a060020a039081166101009092041614610acb57fe5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081166101009092041614610b1757fe5b600060055460ff166003811115610b2a57fe5b14610b3457600080fd5b821515610b4057600080fd5b818310610b4c57600080fd5b811515610b5857600080fd5b808210610b6457600080fd5b801515610b7057600080fd5b600692909255600755600855565b600080600160055460ff166003811115610b9457fe5b1415610c4257600160a060020a03808416600090815260026020526040808220546009549093169163caa4041e91879190516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c0857600080fd5b6102c65a03f11515610c1957600080fd5b50505060405180519050039050600d54600b5403811115610c3d5750600d54600b54035b610c4b565b50600d54600c54035b92915050565b60015433600160a060020a03908116911614610c6c57600080fd5b6000546001547f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91600160a060020a0361010090910481169116604051600160a060020a039283168152911660208201526040908101905180910390a1600180546000805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a0384160217905573ffffffffffffffffffffffffffffffffffffffff19169055565b600080548190819033600160a060020a039081166101009092041614610d3757fe5b60085442118015610d4b5750600a54600d54105b1515610d5657600080fd5b5060005b83811015610e5857600f54600090815260046020526040902054600160a060020a03169250821515610d8b57610e58565b600160a060020a03831660009081526010602052604090205460ff161515610e4657600160a060020a038316600081815260026020908152604080832054601090925291829020805460ff19166001179055935083156108fc0290849051600060405180830381858888f193505050501515610e46577fdb623bd5ad9b688a8d252706b5f3b2849545e7c47f1a9be77f95b198445a67d38383604051600160a060020a03909216825260208201526040908101905180910390a15b600f8054600190810190915501610d5a565b50505050565b6000546101009004600160a060020a031681565b60026020526000908152604090205481565b60035481565b60005433600160a060020a039081166101009092041614610ea757fe5b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610f0457600080fd5b6102c65a03f11515610f1557600080fd5b50505060405180515050505050565b60005433600160a060020a039081166101009092041614610f4157fe5b600160a060020a033016311515610f5757600080fd5b600a54600d541015610f6857600080fd5b600160a060020a03301631601155565b60065481565b600e5433600160a060020a03908116911614610f9957600080fd5b60115460009011610fa957600080fd5b600e54601154600160a060020a039091169080156108fc0290604051600060405180830381858888f193505050501515610fe257600080fd5b6000601155565b600154600160a060020a031681565b60055460ff1681565b60005433600160a060020a03908116610100909204161461101e57fe5b600054600160a060020a0382811661010090920416141561103e57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b600d54815600a165627a7a72305820c962283108af1052917302bad2472c3ab97ab1017602296c1aae587ed4ebedee0029

Deployed Bytecode

0x6060604052600436106101455763ffffffff60e060020a6000350416630554053481146102ce578063101e652e146102ef5780631790bd17146103145780632165e1aa1461034657806323548b8b146103595780632c0a7e331461036c5780633e84b2661461037f5780633fa615b0146103925780634aa5a05d146103a55780635462870d146103b857806358b0a2aa146103cb57806359a591be146103ea5780635f2536f71461040657806379ba5097146104255780637f860330146104385780638da5cb5b1461044e57806392acb4d6146104615780639561a03814610480578063a0929cda14610493578063a0ef91df146104bb578063a82524b2146104ce578063b45aff16146104e1578063d4ee1d90146104f4578063e7bb523314610507578063f2fde38b1461053e578063f3a5644d1461055d578063fddf0fc014610570575b6000805460ff161561015657600080fd5b6000805460ff1916600117905534151561016f57600080fd5b600360055460ff16600381111561018257fe5b141561018d57600080fd5b610195610583565b9050600160055460ff1660038111156101aa57fe5b141561024657600954600160a060020a0316634afb07c43360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561020957600080fd5b6102c65a03f1151561021a57600080fd5b5050506040518051905015610238576102333334610794565b610241565b61024181610925565b6102c1565b600260055460ff16600381111561025957fe5b14156102b857600954600160a060020a0316634afb07c43360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561020957600080fd5b6102c181610925565b506000805460ff19169055005b34156102d957600080fd5b6102ed600160a060020a036004351661096a565b005b34156102fa57600080fd5b6103026109b6565b60405190815260200160405180910390f35b341561031f57600080fd5b61032a6004356109bc565b604051600160a060020a03909116815260200160405180910390f35b341561035157600080fd5b6102ed6109d7565b341561036457600080fd5b610302610a78565b341561037757600080fd5b610302610a7e565b341561038a57600080fd5b61032a610a84565b341561039d57600080fd5b610302610a93565b34156103b057600080fd5b610302610a99565b34156103c357600080fd5b61032a610a9f565b34156103d657600080fd5b6102ed600160a060020a0360043516610aae565b34156103f557600080fd5b6102ed600435602435604435610afa565b341561041157600080fd5b610302600160a060020a0360043516610b7e565b341561043057600080fd5b6102ed610c51565b341561044357600080fd5b6102ed600435610d15565b341561045957600080fd5b61032a610e5e565b341561046c57600080fd5b610302600160a060020a0360043516610e72565b341561048b57600080fd5b610302610e84565b341561049e57600080fd5b6102ed600160a060020a0360043581169060243516604435610e8a565b34156104c657600080fd5b6102ed610f24565b34156104d957600080fd5b610302610f78565b34156104ec57600080fd5b6102ed610f7e565b34156104ff57600080fd5b61032a610fe9565b341561051257600080fd5b61051a610ff8565b6040518082600381111561052a57fe5b60ff16815260200191505060405180910390f35b341561054957600080fd5b6102ed600160a060020a0360043516611001565b341561056857600080fd5b61030261106d565b341561057b57600080fd5b610302611073565b6000600c54600d541480156105a95750600360055460ff1660038111156105a657fe5b14155b15610629576005805460ff191660031790557f38caa2c61728c18eb71cbd06d1915e4164ffe51c69a09b68d78be1f125a5dea74260405190815260200160405180910390a17f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b4260405190815260200160405180910390a1506001610791565b6006544211801561063c57506007544211155b156106a657600160055460ff16600381111561065457fe5b146106a1576005805460ff191660011790557f350219912288aa2ab1c63b5922619564a732d06ab5d23696cafa1afe515304a04260405190815260200160405180910390a1506001610791565b61078d565b600754421180156106b957506008544211155b1561071e57600260055460ff1660038111156106d157fe5b146106a1576005805460ff191660021790557fb7375af7a044d5065808a05cbebd17a66f5bdf2d4f7ca631a5bd4be6c7f1bb324260405190815260200160405180910390a1506001610791565b600360055460ff16600381111561073157fe5b14158015610740575060085442115b1561078d576005805460ff191660031790557f9145a7fd7de2aa5b50a289cf5dd2e2d100aa067911e49855b88f94b5a196f04b4260405190815260200160405180910390a1506001610791565b5060005b90565b60008060006107a285610b7e565b925083915060009050838310156107bb57508190508083035b600a5482600d5401101580156107d45750600d54600a54115b1561080d577f71bd1f47064193be653e360173639170d33d2cfe47bf52a3de621ca4040e23584260405190815260200160405180910390a15b600160a060020a038516600090815260026020526040902054151561088357600160a060020a03851660008181526002602090815260408083208690556003805484526004909252909120805473ffffffffffffffffffffffffffffffffffffffff1916909217909155805460010190556108a2565b600160a060020a03851660009081526002602052604090208054830190555b600d805483019055600160a060020a0333167f6770260ea820d2f539364e7617e021543aaf6d192f2fd2a47c20db6bd99a4eb98360405190815260200160405180910390a2801561091e57600160a060020a03851681156108fc0282604051600060405180830381858888f19350505050151561091e57600080fd5b5050505050565b801561096257600160a060020a0333163480156108fc0290604051600060405180830381858888f19350505050151561095d57600080fd5b610967565b600080fd5b50565b60005433600160a060020a03908116610100909204161461098757fe5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60075481565b600460205260009081526040902054600160a060020a031681565b60005433600160a060020a0390811661010090920416146109f457fe5b600160a060020a033016311515610a0a57600080fd5b6008544211610a1857600080fd5b600f54600090815260046020526040902054600160a060020a031615610a3d57600080fd5b600e54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610a7657600080fd5b565b600c5481565b60115481565b600954600160a060020a031690565b600a5481565b600b5481565b600e54600160a060020a031681565b60005433600160a060020a039081166101009092041614610acb57fe5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081166101009092041614610b1757fe5b600060055460ff166003811115610b2a57fe5b14610b3457600080fd5b821515610b4057600080fd5b818310610b4c57600080fd5b811515610b5857600080fd5b808210610b6457600080fd5b801515610b7057600080fd5b600692909255600755600855565b600080600160055460ff166003811115610b9457fe5b1415610c4257600160a060020a03808416600090815260026020526040808220546009549093169163caa4041e91879190516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c0857600080fd5b6102c65a03f11515610c1957600080fd5b50505060405180519050039050600d54600b5403811115610c3d5750600d54600b54035b610c4b565b50600d54600c54035b92915050565b60015433600160a060020a03908116911614610c6c57600080fd5b6000546001547f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91600160a060020a0361010090910481169116604051600160a060020a039283168152911660208201526040908101905180910390a1600180546000805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a0384160217905573ffffffffffffffffffffffffffffffffffffffff19169055565b600080548190819033600160a060020a039081166101009092041614610d3757fe5b60085442118015610d4b5750600a54600d54105b1515610d5657600080fd5b5060005b83811015610e5857600f54600090815260046020526040902054600160a060020a03169250821515610d8b57610e58565b600160a060020a03831660009081526010602052604090205460ff161515610e4657600160a060020a038316600081815260026020908152604080832054601090925291829020805460ff19166001179055935083156108fc0290849051600060405180830381858888f193505050501515610e46577fdb623bd5ad9b688a8d252706b5f3b2849545e7c47f1a9be77f95b198445a67d38383604051600160a060020a03909216825260208201526040908101905180910390a15b600f8054600190810190915501610d5a565b50505050565b6000546101009004600160a060020a031681565b60026020526000908152604090205481565b60035481565b60005433600160a060020a039081166101009092041614610ea757fe5b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610f0457600080fd5b6102c65a03f11515610f1557600080fd5b50505060405180515050505050565b60005433600160a060020a039081166101009092041614610f4157fe5b600160a060020a033016311515610f5757600080fd5b600a54600d541015610f6857600080fd5b600160a060020a03301631601155565b60065481565b600e5433600160a060020a03908116911614610f9957600080fd5b60115460009011610fa957600080fd5b600e54601154600160a060020a039091169080156108fc0290604051600060405180830381858888f193505050501515610fe257600080fd5b6000601155565b600154600160a060020a031681565b60055460ff1681565b60005433600160a060020a03908116610100909204161461101e57fe5b600054600160a060020a0382811661010090920416141561103e57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b600d54815600a165627a7a72305820c962283108af1052917302bad2472c3ab97ab1017602296c1aae587ed4ebedee0029

Swarm Source

bzzr://c962283108af1052917302bad2472c3ab97ab1017602296c1aae587ed4ebedee

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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