ETH Price: $3,447.94 (-1.15%)
Gas: 9 Gwei

Contract

0x5a779aaeB53D2cBa1755442c38dd6721C0cb31D0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer51423172018-02-23 13:49:192336 days ago1519393759IN
Republic Protocol: Token Sale
0.26 ETH0.0011266550
Finalize51059832018-02-17 9:56:362342 days ago1518861396IN
Republic Protocol: Token Sale
0 ETH0.0080566299
Transfer50660382018-02-10 16:58:532349 days ago1518281933IN
Republic Protocol: Token Sale
1 ETH0.00247863110
Transfer50252982018-02-03 20:56:262356 days ago1517691386IN
Republic Protocol: Token Sale
0.2 ETH0.000022531
Transfer50252962018-02-03 20:56:062356 days ago1517691366IN
Republic Protocol: Token Sale
0.2 ETH0.000022531
Transfer50252942018-02-03 20:55:332356 days ago1517691333IN
Republic Protocol: Token Sale
0.2 ETH0.000022531
Transfer50252912018-02-03 20:55:142356 days ago1517691314IN
Republic Protocol: Token Sale
0.2 ETH0.000022531
Transfer50251432018-02-03 20:21:012356 days ago1517689261IN
Republic Protocol: Token Sale
1 ETH0.0013519860
Transfer50251422018-02-03 20:20:522356 days ago1517689252IN
Republic Protocol: Token Sale
1 ETH0.0013519860
Transfer50245172018-02-03 17:43:202356 days ago1517679800IN
Republic Protocol: Token Sale
1 ETH0.0013519860
Transfer50244382018-02-03 17:22:362356 days ago1517678556IN
Republic Protocol: Token Sale
1 ETH0.0016223772
Transfer50243472018-02-03 17:02:222356 days ago1517677342IN
Republic Protocol: Token Sale
5 ETH0.0013519860
Transfer50241882018-02-03 16:25:102356 days ago1517675110IN
Republic Protocol: Token Sale
3 ETH0.0004731921
Transfer50240252018-02-03 15:44:322356 days ago1517672672IN
Republic Protocol: Token Sale
1 ETH0.0004731921
Transfer50239892018-02-03 15:35:152356 days ago1517672115IN
Republic Protocol: Token Sale
24 ETH00.0000004
Transfer50239672018-02-03 15:30:522356 days ago1517671852IN
Republic Protocol: Token Sale
0.3 ETH0.0015773170
Transfer50239222018-02-03 15:20:452356 days ago1517671245IN
Republic Protocol: Token Sale
3.8 ETH0.0022307699
Transfer50239202018-02-03 15:19:512356 days ago1517671191IN
Republic Protocol: Token Sale
3.8 ETH0.0022307699
Transfer50238922018-02-03 15:15:132356 days ago1517670913IN
Republic Protocol: Token Sale
13 ETH0.0067599300
Transfer50238912018-02-03 15:15:032356 days ago1517670903IN
Republic Protocol: Token Sale
10 ETH0.0011266550
Transfer50238902018-02-03 15:14:502356 days ago1517670890IN
Republic Protocol: Token Sale
1 ETH0.0020730392
Transfer50238902018-02-03 15:14:502356 days ago1517670890IN
Republic Protocol: Token Sale
2 ETH0.000045062
Transfer50238902018-02-03 15:14:502356 days ago1517670890IN
Republic Protocol: Token Sale
50 ETH0.000045062
Transfer50238902018-02-03 15:14:502356 days ago1517670890IN
Republic Protocol: Token Sale
3.3 ETH0.000045062
Transfer50238902018-02-03 15:14:502356 days ago1517670890IN
Republic Protocol: Token Sale
1 ETH0.000090134
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
50238252018-02-03 15:00:062356 days ago1517670006
Republic Protocol: Token Sale
326.12343646 ETH
50238252018-02-03 15:00:062356 days ago1517670006
Republic Protocol: Token Sale
38.87656353 ETH
50238252018-02-03 15:00:062356 days ago1517670006
Republic Protocol: Token Sale
900 ETH
50238252018-02-03 15:00:062356 days ago1517670006
Republic Protocol: Token Sale
104 ETH
50238242018-02-03 14:59:542356 days ago1517669994
Republic Protocol: Token Sale
0.4 ETH
50238242018-02-03 14:59:542356 days ago1517669994
Republic Protocol: Token Sale
1 ETH
50238222018-02-03 14:59:012356 days ago1517669941
Republic Protocol: Token Sale
0.41 ETH
50238202018-02-03 14:58:392356 days ago1517669919
Republic Protocol: Token Sale
1 ETH
50238192018-02-03 14:58:262356 days ago1517669906
Republic Protocol: Token Sale
1 ETH
50238162018-02-03 14:57:552356 days ago1517669875
Republic Protocol: Token Sale
1 ETH
50238152018-02-03 14:57:422356 days ago1517669862
Republic Protocol: Token Sale
1 ETH
50238152018-02-03 14:57:422356 days ago1517669862
Republic Protocol: Token Sale
1 ETH
50238122018-02-03 14:57:222356 days ago1517669842
Republic Protocol: Token Sale
1 ETH
50238112018-02-03 14:57:182356 days ago1517669838
Republic Protocol: Token Sale
0.2 ETH
50238102018-02-03 14:57:022356 days ago1517669822
Republic Protocol: Token Sale
0.069 ETH
50238102018-02-03 14:57:022356 days ago1517669822
Republic Protocol: Token Sale
1 ETH
50238102018-02-03 14:57:022356 days ago1517669822
Republic Protocol: Token Sale
0.14 ETH
50238082018-02-03 14:56:332356 days ago1517669793
Republic Protocol: Token Sale
1 ETH
50238082018-02-03 14:56:332356 days ago1517669793
Republic Protocol: Token Sale
1 ETH
50238082018-02-03 14:56:332356 days ago1517669793
Republic Protocol: Token Sale
0.2 ETH
50238082018-02-03 14:56:332356 days ago1517669793
Republic Protocol: Token Sale
1 ETH
50238072018-02-03 14:56:072356 days ago1517669767
Republic Protocol: Token Sale
1 ETH
50238072018-02-03 14:56:072356 days ago1517669767
Republic Protocol: Token Sale
0.55 ETH
50238062018-02-03 14:55:522356 days ago1517669752
Republic Protocol: Token Sale
1 ETH
50238062018-02-03 14:55:522356 days ago1517669752
Republic Protocol: Token Sale
1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RenCrowdsale

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.13;

contract ReentrancyGuard {

  /**
   * @dev We use a single lock for the whole contract.
   */
  bool private rentrancy_lock = false;

  /**
   * @dev Prevents a contract from calling itself, directly or indirectly.
   * @notice If you mark a function `nonReentrant`, you should also
   * mark it `external`. Calling one nonReentrant function from
   * another is not supported. Instead, you can implement a
   * `private` function doing the actual work, and a `external`
   * wrapper marked as `nonReentrant`.
   */
  modifier nonReentrant() {
    require(!rentrancy_lock);
    rentrancy_lock = true;
    _;
    rentrancy_lock = false;
  }

}

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

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

contract RefundVault is Ownable {
  using SafeMath for uint256;

  enum State { Active, Refunding, Closed }

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

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

  function RefundVault(address _wallet) public {
    require(_wallet != address(0));
    wallet = _wallet;
    state = State.Active;
  }

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

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

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

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

contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

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

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract StandardToken is ERC20, BasicToken {

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


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

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

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

}

contract BurnableToken is StandardToken {

    event Burn(address indexed burner, uint256 value);

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

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

contract PausableToken is StandardToken, Pausable {

  function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
    return super.transfer(_to, _value);
  }

  function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
    return super.transferFrom(_from, _to, _value);
  }

  function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
    return super.approve(_spender, _value);
  }

  function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) {
    return super.increaseApproval(_spender, _addedValue);
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) {
    return super.decreaseApproval(_spender, _subtractedValue);
  }
}

contract RenCrowdsale is Ownable, ReentrancyGuard {
    using SafeMath for uint256;

    // We have a window in the first 5hrs that permits to allocate all whitelist 
    // participants with an equal distribution => fiveHourCap = cap / whitelist participants.
    uint256 public fiveHourCap;
    uint256 public cap;
    uint256 public goal;
    uint256 public rate;


    address public wallet;
    RefundVault public vault;
    RepublicToken public token;

    uint256 public startTime;
    uint256 public endTime;
    uint256 public fiveHours;
    bool public isFinalized = false;
    uint256 public weiRaised;

    mapping(address => bool) public whitelist;
    mapping(address => uint256) public contribution;
    
    event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);
    event TokenRelease(address indexed beneficiary, uint256 amount);
    event TokenRefund(address indexed refundee, uint256 amount);
    event Finalized();

    function RenCrowdsale(
        address _token, 
        address _wallet,
        uint256 _startTime,
        uint256 _endTime,
        uint256 _rate,
        uint256 _cap,
        uint256 _fiveHourCap,
        uint256 _goal
    ) {
        require(_startTime >= getBlockTimestamp());
        require(_endTime >= _startTime);
        require(_rate > 0);
        require(_goal > 0);
        require(_cap > 0);
        require(_wallet != 0x0);

        vault = new RefundVault(_wallet);
        token = RepublicToken(_token);
        startTime = _startTime;
        wallet = _wallet;
        endTime = _endTime;
        fiveHours = startTime + 5 * 1 hours;
        fiveHourCap = _fiveHourCap;
        rate = _rate;
        goal = _goal;
        cap = _cap;
    }

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

    //low level function to buy tokens
    function buyTokens(address beneficiary) internal {
        require(beneficiary != 0x0);
        require(whitelist[beneficiary]);
        require(validPurchase());
        //derive amount in wei to buy 
        uint256 weiAmount = msg.value;

        // check if contribution is in the first 5 hours
        if (getBlockTimestamp() <= fiveHours) {
             require((contribution[beneficiary].add(weiAmount)) <= fiveHourCap);
        }
        // check if there is enough funds 
        uint256 remainingToFund = cap.sub(weiRaised);
        if (weiAmount > remainingToFund) {
            weiAmount = remainingToFund;
        }
        uint256 weiToReturn = msg.value.sub(weiAmount);
        //Forward funds to the vault 
        forwardFunds(weiAmount);
        //refund if the contribution exceed the cap
        if (weiToReturn > 0) {
            msg.sender.transfer(weiToReturn);
            TokenRefund(beneficiary, weiToReturn);
        }
        //derive how many tokens
        uint256 tokens = getTokens(weiAmount);
        //update the state of weiRaised
        weiRaised = weiRaised.add(weiAmount);
        contribution[beneficiary] = contribution[beneficiary].add(weiAmount);
     
        //Trigger the event of TokenPurchase
        TokenPurchase(
            msg.sender,
            beneficiary,
            weiAmount,
            tokens
        );
        token.transferTokens(beneficiary, tokens);
        
    }

    function getTokens(uint256 amount) internal constant returns (uint256) {
        return amount.mul(rate);
    }

    // contributors can claim refund if the goal is not reached
    function claimRefund() nonReentrant external {
        require(isFinalized);
        require(!goalReached());
        vault.refund(msg.sender);
    }

    //in case of endTime before the reach of the cap, the owner can claim the unsold tokens
    function claimUnsold() onlyOwner {
        require(endTime <= getBlockTimestamp());
        uint256 unsold = token.balanceOf(this);

        if (unsold > 0) {
            require(token.transferTokens(msg.sender, unsold));
        }
    }

    // add/remove to whitelist array of addresses based on boolean status
    function updateWhitelist(address[] addresses, bool status) public onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            address contributorAddress = addresses[i];
            whitelist[contributorAddress] = status;
        }
    }

    //Only owner can manually finalize the sale
    function finalize() onlyOwner {
        require(!isFinalized);
        require(hasEnded());

        if (goalReached()) {
            //Close the vault
            vault.close();
            //Unpause the token 
            token.unpause();
            //give ownership back to deployer
            token.transferOwnership(owner);
        } else {
            //else enable refunds
            vault.enableRefunds();
        }
        //update the sate of isFinalized
        isFinalized = true;
        //trigger and emit the event of finalization
        Finalized();
    } 

    // send ether to the fund collection wallet, the vault in this case
    function forwardFunds(uint256 weiAmount) internal {
        vault.deposit.value(weiAmount)(msg.sender);
    }

    // @return true if crowdsale event has ended or cap reached
    function hasEnded() public constant returns (bool) {
        bool passedEndTime = getBlockTimestamp() > endTime;
        return passedEndTime || capReached();
    }

    function capReached() public constant returns (bool) {
        return weiRaised >= cap;
    }

    function goalReached() public constant returns (bool) {
        return weiRaised >= goal;
    }

    function isWhitelisted(address contributor) public constant returns (bool) {
        return whitelist[contributor];
    }

    // @return true if the transaction can buy tokens
    function validPurchase() internal constant returns (bool) {
        bool withinPeriod = getBlockTimestamp() >= startTime && getBlockTimestamp() <= endTime;
        bool nonZeroPurchase = msg.value != 0;
        bool capNotReached = weiRaised < cap;
        return withinPeriod && nonZeroPurchase && capNotReached;
    }

    function getBlockTimestamp() internal constant returns (uint256) {
        return block.timestamp;
    }
}

contract RepublicToken is PausableToken, BurnableToken {

    string public constant name = "Republic Token";
    string public constant symbol = "REN";
    uint8 public constant decimals = 18;
    uint256 public constant INITIAL_SUPPLY = 1000000000 * 10**uint256(decimals);
    
    /**
     * @notice The RepublicToken Constructor.
     */
    function RepublicToken() {
        totalSupply = INITIAL_SUPPLY;   
        balances[msg.sender] = INITIAL_SUPPLY;
    }

    function transferTokens(address beneficiary, uint256 amount) onlyOwner returns (bool) {
        require(amount > 0);

        balances[owner] = balances[owner].sub(amount);
        balances[beneficiary] = balances[beneficiary].add(amount);
        Transfer(owner, beneficiary, amount);

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"contributor","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fiveHours","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fiveHourCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"status","type":"bool"}],"name":"updateWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimUnsold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_wallet","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_cap","type":"uint256"},{"name":"_fiveHourCap","type":"uint256"},{"name":"_goal","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenRelease","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"refundee","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenRefund","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

606060405260008060146101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff02191690831515021790555034156200004557600080fd5b604051610100806200250683398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000100620002d564010000000002620015f9176401000000009004565b86101515156200010f57600080fd5b8585101515156200011f57600080fd5b6000841115156200012f57600080fd5b6000811115156200013f57600080fd5b6000831115156200014f57600080fd5b60008773ffffffffffffffffffffffffffffffffffffffff16141515156200017657600080fd5b8662000181620002dd565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801515620001ce57600080fd5b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560088190555086600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460098190555061465060085401600a81905550816001819055508360048190555080600381905550826002819055505050505050505050620002ee565b600042905090565b604051610a778062001a8f83390190565b61179180620002fe6000396000f30060606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632c4e722e146101495780633197cbb614610172578063355274ea1461019b5780633af32abf146101c457806340193883146102155780634042b66f1461023e57806346315237146102675780634bb278f3146102905780634f935945146102a5578063521eb273146102d2578063559234711461032757806378e97925146103505780637d3d6522146103795780638d4e4083146103a65780638da5cb5b146103d35780639b19251a14610428578063aff177ca14610479578063b5545a3c146104de578063dad72332146104f3578063e2dc431014610508578063ecb70fb714610555578063f2fde38b14610582578063fbfa77cf146105bb578063fc0c546a14610610575b61014733610665565b005b341561015457600080fd5b61015c610a67565b6040518082815260200191505060405180910390f35b341561017d57600080fd5b610185610a6d565b6040518082815260200191505060405180910390f35b34156101a657600080fd5b6101ae610a73565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b6101fb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a79565b604051808215151515815260200191505060405180910390f35b341561022057600080fd5b610228610acf565b6040518082815260200191505060405180910390f35b341561024957600080fd5b610251610ad5565b6040518082815260200191505060405180910390f35b341561027257600080fd5b61027a610adb565b6040518082815260200191505060405180910390f35b341561029b57600080fd5b6102a3610ae1565b005b34156102b057600080fd5b6102b8610e83565b604051808215151515815260200191505060405180910390f35b34156102dd57600080fd5b6102e5610e92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033257600080fd5b61033a610eb8565b6040518082815260200191505060405180910390f35b341561035b57600080fd5b610363610ebe565b6040518082815260200191505060405180910390f35b341561038457600080fd5b61038c610ec4565b604051808215151515815260200191505060405180910390f35b34156103b157600080fd5b6103b9610ed3565b604051808215151515815260200191505060405180910390f35b34156103de57600080fd5b6103e6610ee6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043357600080fd5b61045f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f0b565b604051808215151515815260200191505060405180910390f35b341561048457600080fd5b6104dc6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080351515906020019091905050610f2b565b005b34156104e957600080fd5b6104f161101b565b005b34156104fe57600080fd5b61050661116d565b005b341561051357600080fd5b61053f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113c4565b6040518082815260200191505060405180910390f35b341561056057600080fd5b6105686113dc565b604051808215151515815260200191505060405180910390f35b341561058d57600080fd5b6105b9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611403565b005b34156105c657600080fd5b6105ce611558565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061b57600080fd5b61062361157e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008060008573ffffffffffffffffffffffffffffffffffffffff161415151561069157600080fd5b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106e957600080fd5b6106f16115a4565b15156106fc57600080fd5b349350600a5461070a6115f9565b1115156107745760015461076685600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160190919063ffffffff16565b1115151561077357600080fd5b5b61078b600c5460025461161f90919063ffffffff16565b925082841115610799578293505b6107ac843461161f90919063ffffffff16565b91506107b784611638565b600082111561084f573373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561080057600080fd5b8473ffffffffffffffffffffffffffffffffffffffff167f50ea9274879b4e2a584129ff0e7d656cf15144ef80e8935d4cf890390f8f1580836040518082815260200191505060405180910390a25b6108588461170c565b905061086f84600c5461160190919063ffffffff16565b600c819055506108c784600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160190919063ffffffff16565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188684604051808381526020018281526020019250505060405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bec3fa1786836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610a4457600080fd5b6102c65a03f11515610a5557600080fd5b50505060405180519050505050505050565b60045481565b60095481565b60025481565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60035481565b600c5481565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b3c57600080fd5b600b60009054906101000a900460ff16151515610b5857600080fd5b610b606113dc565b1515610b6b57600080fd5b610b73610ec4565b15610da057600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610bfd57600080fd5b6102c65a03f11515610c0e57600080fd5b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610c9657600080fd5b6102c65a03f11515610ca757600080fd5b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610d8757600080fd5b6102c65a03f11515610d9857600080fd5b505050610e3a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610e2557600080fd5b6102c65a03f11515610e3657600080fd5b5050505b6001600b60006101000a81548160ff0219169083151502179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1565b6000600254600c541015905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60085481565b6000600354600c541015905090565b600b60009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f8957600080fd5b600091505b8351821015611015578382815181101515610fa557fe5b90602001906020020151905082600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610f8e565b50505050565b600060149054906101000a900460ff1615151561103757600080fd5b6001600060146101000a81548160ff021916908315150217905550600b60009054906101000a900460ff16151561106d57600080fd5b611075610ec4565b15151561108157600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa89401a336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561113d57600080fd5b6102c65a03f1151561114e57600080fd5b50505060008060146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111ca57600080fd5b6111d26115f9565b600954111515156111e257600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156112a757600080fd5b6102c65a03f115156112b857600080fd5b50505060405180519050905060008111156113c157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bec3fa1733836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561139a57600080fd5b6102c65a03f115156113ab57600080fd5b5050506040518051905015156113c057600080fd5b5b50565b600e6020528060005260406000206000915090505481565b6000806009546113ea6115f9565b11905080806113fd57506113fc610e83565b5b91505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561145e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561149a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806008546115b56115f9565b101580156115cc57506009546115c96115f9565b11155b925060003414159150600254600c541090508280156115e85750815b80156115f15750805b935050505090565b600042905090565b600080828401905083811015151561161557fe5b8091505092915050565b600082821115151561162d57fe5b818303905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b15156116f457600080fd5b6125ee5a03f1151561170557600080fd5b5050505050565b60006117236004548361172a90919063ffffffff16565b9050919050565b600080600084141561173f576000915061175e565b828402905082848281151561175057fe5b0414151561175a57fe5b8091505b50929150505600a165627a7a723058205386f13bc249f606e72798887aa927b06f8a7d9c9c7b168f1cfffa7cf17bf3ba00296060604052341561000f57600080fd5b604051602080610a7783398101604052808051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100a757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff0219169083600281111561010757fe5b02179055505061095b8061011c6000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806343d726d61461009e578063521eb273146100b35780638c52dc41146101085780638da5cb5b1461011d578063c19d93fb14610172578063cb13cddb146101a9578063f2fde38b146101f6578063f340fa011461022f578063fa89401a1461025d575b600080fd5b34156100a957600080fd5b6100b1610296565b005b34156100be57600080fd5b6100c66103ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561011357600080fd5b61011b610415565b005b341561012857600080fd5b6101306104f6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561017d57600080fd5b61018561051b565b6040518082600281111561019557fe5b60ff16815260200191505060405180910390f35b34156101b457600080fd5b6101e0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061052e565b6040518082815260200191505060405180910390f35b341561020157600080fd5b61022d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610546565b005b61025b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061069b565b005b341561026857600080fd5b610294600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107c2565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102f157600080fd5b600060028111156102fe57fe5b600260149054906101000a900460ff16600281111561031957fe5b14151561032557600080fd5b60028060146101000a81548160ff0219169083600281111561034357fe5b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156103ed57600080fd5b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561047057600080fd5b6000600281111561047d57fe5b600260149054906101000a900460ff16600281111561049857fe5b1415156104a457600080fd5b6001600260146101000a81548160ff021916908360028111156104c357fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff1681565b60016020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105dd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106f657600080fd5b6000600281111561070357fe5b600260149054906101000a900460ff16600281111561071e57fe5b14151561072a57600080fd5b61077c34600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461091190919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600160028111156107d157fe5b600260149054906101000a900460ff1660028111156107ec57fe5b1415156107f857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156108bf57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651826040518082815260200191505060405180910390a25050565b600080828401905083811015151561092557fe5b80915050929150505600a165627a7a72305820775532d1c75d6a92a65fae9fe2631f9315d2c4d9c1840e4c95a7eab5d0c5bef60029000000000000000000000000408e41876cccdc0f92210600ef50372656052a380000000000000000000000009a4cd44c1a55cfda565430dee9bfb54f2aacfd6a000000000000000000000000000000000000000000000000000000005a758820000000000000000000000000000000000000000000000000000000005a9a72200000000000000000000000000000000000000000000000000000000000004330000000000000000000000000000000000000000000000109a12906aff61000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000

Deployed Bytecode

0x60606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632c4e722e146101495780633197cbb614610172578063355274ea1461019b5780633af32abf146101c457806340193883146102155780634042b66f1461023e57806346315237146102675780634bb278f3146102905780634f935945146102a5578063521eb273146102d2578063559234711461032757806378e97925146103505780637d3d6522146103795780638d4e4083146103a65780638da5cb5b146103d35780639b19251a14610428578063aff177ca14610479578063b5545a3c146104de578063dad72332146104f3578063e2dc431014610508578063ecb70fb714610555578063f2fde38b14610582578063fbfa77cf146105bb578063fc0c546a14610610575b61014733610665565b005b341561015457600080fd5b61015c610a67565b6040518082815260200191505060405180910390f35b341561017d57600080fd5b610185610a6d565b6040518082815260200191505060405180910390f35b34156101a657600080fd5b6101ae610a73565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b6101fb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a79565b604051808215151515815260200191505060405180910390f35b341561022057600080fd5b610228610acf565b6040518082815260200191505060405180910390f35b341561024957600080fd5b610251610ad5565b6040518082815260200191505060405180910390f35b341561027257600080fd5b61027a610adb565b6040518082815260200191505060405180910390f35b341561029b57600080fd5b6102a3610ae1565b005b34156102b057600080fd5b6102b8610e83565b604051808215151515815260200191505060405180910390f35b34156102dd57600080fd5b6102e5610e92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033257600080fd5b61033a610eb8565b6040518082815260200191505060405180910390f35b341561035b57600080fd5b610363610ebe565b6040518082815260200191505060405180910390f35b341561038457600080fd5b61038c610ec4565b604051808215151515815260200191505060405180910390f35b34156103b157600080fd5b6103b9610ed3565b604051808215151515815260200191505060405180910390f35b34156103de57600080fd5b6103e6610ee6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043357600080fd5b61045f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f0b565b604051808215151515815260200191505060405180910390f35b341561048457600080fd5b6104dc6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080351515906020019091905050610f2b565b005b34156104e957600080fd5b6104f161101b565b005b34156104fe57600080fd5b61050661116d565b005b341561051357600080fd5b61053f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113c4565b6040518082815260200191505060405180910390f35b341561056057600080fd5b6105686113dc565b604051808215151515815260200191505060405180910390f35b341561058d57600080fd5b6105b9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611403565b005b34156105c657600080fd5b6105ce611558565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061b57600080fd5b61062361157e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008060008573ffffffffffffffffffffffffffffffffffffffff161415151561069157600080fd5b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106e957600080fd5b6106f16115a4565b15156106fc57600080fd5b349350600a5461070a6115f9565b1115156107745760015461076685600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160190919063ffffffff16565b1115151561077357600080fd5b5b61078b600c5460025461161f90919063ffffffff16565b925082841115610799578293505b6107ac843461161f90919063ffffffff16565b91506107b784611638565b600082111561084f573373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561080057600080fd5b8473ffffffffffffffffffffffffffffffffffffffff167f50ea9274879b4e2a584129ff0e7d656cf15144ef80e8935d4cf890390f8f1580836040518082815260200191505060405180910390a25b6108588461170c565b905061086f84600c5461160190919063ffffffff16565b600c819055506108c784600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160190919063ffffffff16565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188684604051808381526020018281526020019250505060405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bec3fa1786836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610a4457600080fd5b6102c65a03f11515610a5557600080fd5b50505060405180519050505050505050565b60045481565b60095481565b60025481565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60035481565b600c5481565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b3c57600080fd5b600b60009054906101000a900460ff16151515610b5857600080fd5b610b606113dc565b1515610b6b57600080fd5b610b73610ec4565b15610da057600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610bfd57600080fd5b6102c65a03f11515610c0e57600080fd5b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610c9657600080fd5b6102c65a03f11515610ca757600080fd5b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610d8757600080fd5b6102c65a03f11515610d9857600080fd5b505050610e3a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610e2557600080fd5b6102c65a03f11515610e3657600080fd5b5050505b6001600b60006101000a81548160ff0219169083151502179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1565b6000600254600c541015905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60085481565b6000600354600c541015905090565b600b60009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f8957600080fd5b600091505b8351821015611015578382815181101515610fa557fe5b90602001906020020151905082600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610f8e565b50505050565b600060149054906101000a900460ff1615151561103757600080fd5b6001600060146101000a81548160ff021916908315150217905550600b60009054906101000a900460ff16151561106d57600080fd5b611075610ec4565b15151561108157600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa89401a336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561113d57600080fd5b6102c65a03f1151561114e57600080fd5b50505060008060146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111ca57600080fd5b6111d26115f9565b600954111515156111e257600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156112a757600080fd5b6102c65a03f115156112b857600080fd5b50505060405180519050905060008111156113c157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bec3fa1733836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561139a57600080fd5b6102c65a03f115156113ab57600080fd5b5050506040518051905015156113c057600080fd5b5b50565b600e6020528060005260406000206000915090505481565b6000806009546113ea6115f9565b11905080806113fd57506113fc610e83565b5b91505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561145e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561149a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806008546115b56115f9565b101580156115cc57506009546115c96115f9565b11155b925060003414159150600254600c541090508280156115e85750815b80156115f15750805b935050505090565b600042905090565b600080828401905083811015151561161557fe5b8091505092915050565b600082821115151561162d57fe5b818303905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b15156116f457600080fd5b6125ee5a03f1151561170557600080fd5b5050505050565b60006117236004548361172a90919063ffffffff16565b9050919050565b600080600084141561173f576000915061175e565b828402905082848281151561175057fe5b0414151561175a57fe5b8091505b50929150505600a165627a7a723058205386f13bc249f606e72798887aa927b06f8a7d9c9c7b168f1cfffa7cf17bf3ba0029

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

000000000000000000000000408e41876cCCDC0F92210600ef50372656052a380000000000000000000000009A4CD44C1a55CFDa565430DEe9bfb54f2aAcFd6A000000000000000000000000000000000000000000000000000000005A758820000000000000000000000000000000000000000000000000000000005A9A72200000000000000000000000000000000000000000000000000000000000004330000000000000000000000000000000000000000000000109A12906AFF61000000000000000000000000000000000000000000000000000000DE0B6B3A76400000000000000000000000000000000000000000000000000000DE0B6B3A7640000

-----Decoded View---------------
Arg [0] : _token (address): 0x408e41876cCCDC0F92210600ef50372656052a38
Arg [1] : _wallet (address): 0x9A4CD44C1a55CFDa565430DEe9bfb54f2aAcFd6A
Arg [2] : _startTime (uint256): 1517652000
Arg [3] : _endTime (uint256): 1520071200
Arg [4] : _rate (uint256): 17200
Arg [5] : _cap (uint256): 4900000000000000000000
Arg [6] : _fiveHourCap (uint256): 1000000000000000000
Arg [7] : _goal (uint256): 1000000000000000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000408e41876cCCDC0F92210600ef50372656052a38
Arg [1] : 0000000000000000000000009A4CD44C1a55CFDa565430DEe9bfb54f2aAcFd6A
Arg [2] : 000000000000000000000000000000000000000000000000000000005A758820
Arg [3] : 000000000000000000000000000000000000000000000000000000005A9A7220
Arg [4] : 0000000000000000000000000000000000000000000000000000000000004330
Arg [5] : 000000000000000000000000000000000000000000000109A12906AFF6100000
Arg [6] : 0000000000000000000000000000000000000000000000000DE0B6B3A7640000
Arg [7] : 0000000000000000000000000000000000000000000000000DE0B6B3A7640000


Swarm Source

bzzr://775532d1c75d6a92a65fae9fe2631f9315d2c4d9c1840e4c95a7eab5d0c5bef6

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.