ETH Price: $2,732.62 (+0.41%)
Gas: 0.91 Gwei

Contract

0x0062179227C03eFC81301Ade144f447F2561eDd5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Change Token Min...54171682018-04-10 20:01:372508 days ago1523390497IN
0x00621792...F2561eDd5
0 ETH0.00003311
Register Payment54171312018-04-10 19:53:102508 days ago1523389990IN
0x00621792...F2561eDd5
0 ETH0.000025781
Register Payment54171032018-04-10 19:44:562508 days ago1523389496IN
0x00621792...F2561eDd5
0 ETH0.000025781
Register Payment...54043442018-04-08 16:58:292510 days ago1523206709IN
0x00621792...F2561eDd5
0 ETH0.003430481
Register Payment...54043352018-04-08 16:56:022510 days ago1523206562IN
0x00621792...F2561eDd5
0 ETH0.003673961
Register Payment...54043272018-04-08 16:54:462510 days ago1523206486IN
0x00621792...F2561eDd5
0 ETH0.003673961
Register Payment...54042862018-04-08 16:47:412510 days ago1523206061IN
0x00621792...F2561eDd5
0 ETH0.003674021
Register Payment...54042442018-04-08 16:36:012510 days ago1523205361IN
0x00621792...F2561eDd5
0 ETH0.003673891
Register Payment...54041972018-04-08 16:24:222510 days ago1523204662IN
0x00621792...F2561eDd5
0 ETH0.003673831
Register Payment...54041772018-04-08 16:20:472510 days ago1523204447IN
0x00621792...F2561eDd5
0 ETH0.003674091
Register Payment...54041622018-04-08 16:17:012510 days ago1523204221IN
0x00621792...F2561eDd5
0 ETH0.003673891
Register Payment...54041152018-04-08 16:02:402510 days ago1523203360IN
0x00621792...F2561eDd5
0 ETH0.003644021
Register Payment...54040922018-04-08 15:57:062510 days ago1523203026IN
0x00621792...F2561eDd5
0 ETH0.003673891
Register Payment...54038072018-04-08 14:49:282510 days ago1523198968IN
0x00621792...F2561eDd5
0 ETH0.003673961
Register Payment...54037832018-04-08 14:45:272510 days ago1523198727IN
0x00621792...F2561eDd5
0 ETH0.003674021
Register Payment...54037402018-04-08 14:33:402510 days ago1523198020IN
0x00621792...F2561eDd5
0 ETH0.003673891
Register Payment...54037222018-04-08 14:29:272510 days ago1523197767IN
0x00621792...F2561eDd5
0 ETH0.003674021
Register Payment...54037102018-04-08 14:26:292510 days ago1523197589IN
0x00621792...F2561eDd5
0 ETH0.003673831
Register Payment...54036942018-04-08 14:22:542510 days ago1523197374IN
0x00621792...F2561eDd5
0 ETH0.003673831
Register Payment...54036832018-04-08 14:19:122510 days ago1523197152IN
0x00621792...F2561eDd5
0 ETH0.003673961
Register Payment...54036752018-04-08 14:16:492510 days ago1523197009IN
0x00621792...F2561eDd5
0 ETH0.003673891
Register Payment...54036442018-04-08 14:12:482510 days ago1523196768IN
0x00621792...F2561eDd5
0 ETH0.003674021
Register Payment...54036232018-04-08 14:08:072510 days ago1523196487IN
0x00621792...F2561eDd5
0 ETH0.003673891
Register Payment...54035832018-04-08 13:58:142510 days ago1523195894IN
0x00621792...F2561eDd5
0 ETH0.003674091
Register Payment...54034992018-04-08 13:36:122510 days ago1523194572IN
0x00621792...F2561eDd5
0 ETH0.003673961
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Presale

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.18;

// File: contracts/IPricingStrategy.sol

interface IPricingStrategy {

    function isPricingStrategy() public view returns (bool);

    /** Calculate the current price for buy in amount. */
    function calculateTokenAmount(uint weiAmount, uint tokensSold) public view returns (uint tokenAmount);

}

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

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
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);
}

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

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

// File: contracts/token/ERC223.sol

contract ERC223 is ERC20 {
    function transfer(address _to, uint _value, bytes _data) public returns (bool);
    function transferFrom(address _from, address _to, uint _value, bytes _data) public returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint value, bytes data);
}

// File: contracts/token/TokenReciever.sol

/*
 * Contract that is working with ERC223 tokens
 */
 
 contract TokenReciever {
    function tokenFallback(address _from, uint _value, bytes _data) public pure {
    }
}

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

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
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;
  }
}

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

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


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


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


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

}

// File: zeppelin-solidity/contracts/ownership/Contactable.sol

/**
 * @title Contactable token
 * @dev Basic version of a contactable contract, allowing the owner to provide a string with their
 * contact information.
 */
contract Contactable is Ownable{

    string public contactInformation;

    /**
     * @dev Allows the owner to set a string with their contact information.
     * @param info The contact information to attach to the contract.
     */
    function setContactInformation(string info) onlyOwner public {
         contactInformation = info;
     }
}

// File: contracts/token/PlayHallToken.sol

contract PlayHallToken is ERC223, Contactable {
    using SafeMath for uint;

    string constant public name = "PlayHall Token";
    string constant public symbol = "PHT";
    uint constant public decimals = 18;

    bool public isActivated = false;

    mapping (address => uint) balances;
    mapping (address => mapping (address => uint)) internal allowed;
    mapping (address => bool) public freezedList;
    
    // address, who is allowed to issue new tokens (presale and sale contracts)
    address public minter;

    bool public mintingFinished = false;

    event Mint(address indexed to, uint amount);
    event MintingFinished();

    modifier onlyMinter() {
        require(msg.sender == minter);
        _;
    }

    modifier canMint() {
        require(!mintingFinished);
        _;
    }

    modifier whenActivated() {
        require(isActivated);
        _;
    }

    function PlayHallToken() public {
        minter = msg.sender;
    }

    /**
    * @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, uint _value) public returns (bool) {
        bytes memory empty;
        return transfer(_to, _value, empty);
    }

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    * @param _data Optional metadata.
    */
    function transfer(address _to, uint _value, bytes _data) public whenActivated returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);
        require(!freezedList[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);

        if (isContract(_to)) {
            TokenReciever receiver = TokenReciever(_to);
            receiver.tokenFallback(msg.sender, _value, _data);
        }

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

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

    /**
     * @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 uint the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint _value) public returns (bool) {
        bytes memory empty;
        return transferFrom(_from, _to, _value, empty);
    }

    /**
     * @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 uint the amount of tokens to be transferred
     * @param _data Optional metadata.
     */
    function transferFrom(address _from, address _to, uint _value, bytes _data) public whenActivated returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        require(!freezedList[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);

        if (isContract(_to)) {
            TokenReciever receiver = TokenReciever(_to);
            receiver.tokenFallback(_from, _value, _data);
        }

        Transfer(_from, _to, _value);
        Transfer(_from, _to, _value, _data);
        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, uint _value) public returns (bool) {
        require(_value == 0 || allowed[msg.sender][_spender] == 0);
        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 uint specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public view returns (uint) {
        return allowed[_owner][_spender];
    }

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

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

      /**
     * @dev Function to mint tokens
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address _to, uint _amount, bool freeze) canMint onlyMinter external returns (bool) {
        totalSupply = totalSupply.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        if (freeze) {
            freezedList[_to] = true;
        }
        Mint(_to, _amount);
        Transfer(address(0), _to, _amount);
        return true;
    }

    /**
     * @dev Function to stop minting new tokens.
     * @return True if the operation was successful.
     */
    function finishMinting() canMint onlyMinter external returns (bool) {
        mintingFinished = true;
        MintingFinished();
        return true;
    }
    
    /**
     * Minter can pass it's role to another address
     */
    function setMinter(address _minter) external onlyMinter {
        require(_minter != 0x0);
        minter = _minter;
    }

    /**
     * Owner can unfreeze any address
     */
    function removeFromFreezedList(address user) external onlyOwner {
        freezedList[user] = false;
    }

    /**
     * Activation of the token allows all tokenholders to operate with the token
     */
    function activate() external onlyOwner returns (bool) {
        isActivated = true;
        return true;
    }

    function isContract(address _addr) private view returns (bool) {
        uint length;
        assembly {
              //retrieve the size of the code on target address, this needs assembly
              length := extcodesize(_addr)
        }
        return (length>0);
    }
}

// File: zeppelin-solidity/contracts/lifecycle/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
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();
  }
}

// File: contracts/SaleBase.sol

contract SaleBase is Pausable, Contactable {
    using SafeMath for uint;
  
    // The token being sold
    PlayHallToken public token;
  
    // start and end timestamps where purchases are allowed (both inclusive)
    uint public startTime;
    uint public endTime;
  
    // address where funds are collected
    address public wallet;
  
    // the contract, which determine how many token units a buyer gets per wei
    IPricingStrategy public pricingStrategy;
  
    // amount of raised money in wei
    uint public weiRaised;

    // amount of tokens that was sold on the crowdsale
    uint public tokensSold;

    // maximum amount of wei in total, that can be bought
    uint public weiMaximumGoal;

    // if weiMinimumGoal will not be reached till endTime, buyers will be able to refund ETH
    uint public weiMinimumGoal;

    // minimum amount of wel, that can be contributed
    uint public weiMinimumAmount;

    // How many distinct addresses have bought
    uint public buyerCount;

    // how much wei we have returned back to the contract after a failed crowdfund
    uint public loadedRefund;

    // how much wei we have given back to buyers
    uint public weiRefunded;

    // how much ETH each address has bought to this crowdsale
    mapping (address => uint) public boughtAmountOf;

    // whether a buyer already bought some tokens
    mapping (address => bool) public isBuyer;

    // whether a buyer bought tokens through other currencies
    mapping (address => bool) public isExternalBuyer;

    address public admin;

    /**
     * event for token purchase logging
     * @param purchaser who paid for the tokens
     * @param beneficiary who got the tokens
     * @param value weis paid for purchase
     * @param tokenAmount amount of tokens purchased
     */
    event TokenPurchase(
        address indexed purchaser,
        address indexed beneficiary,
        uint value,
        uint tokenAmount
    );

    // a refund was processed for an buyer
    event Refund(address buyer, uint weiAmount);
    event RefundLoaded(uint amount);

    function SaleBase(
        uint _startTime,
        uint _endTime,
        IPricingStrategy _pricingStrategy,
        PlayHallToken _token,
        address _wallet,
        uint _weiMaximumGoal,
        uint _weiMinimumGoal,
        uint _weiMinimumAmount,
        address _admin
    ) public
    {
        require(_startTime >= now);
        require(_endTime >= _startTime);
        require(_pricingStrategy.isPricingStrategy());
        require(address(_token) != 0x0);
        require(_wallet != 0x0);
        require(_weiMaximumGoal > 0);
        require(_admin != 0x0);

        startTime = _startTime;
        endTime = _endTime;
        pricingStrategy = _pricingStrategy;
        token = _token;
        wallet = _wallet;
        weiMaximumGoal = _weiMaximumGoal;
        weiMinimumGoal = _weiMinimumGoal;
        weiMinimumAmount = _weiMinimumAmount;
        admin = _admin;
    }


    modifier onlyOwnerOrAdmin() {
        require(msg.sender == owner || msg.sender == admin); 
        _;
    }

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

    // low level token purchase function
    function buyTokens(address beneficiary) public whenNotPaused payable returns (bool) {
        uint weiAmount = msg.value;

        require(beneficiary != 0x0);
        require(weiAmount >= weiMinimumAmount);
        require(validPurchase(msg.value));
    
        // calculate token amount to be created
        uint tokenAmount = pricingStrategy.calculateTokenAmount(weiAmount, weiRaised);
        
        mintTokenToBuyer(beneficiary, tokenAmount, weiAmount);
        
        wallet.transfer(msg.value);

        return true;
    }

    function mintTokenToBuyer(address beneficiary, uint tokenAmount, uint weiAmount) internal {
        if (!isBuyer[beneficiary]) {
            // A new buyer
            buyerCount++;
            isBuyer[beneficiary] = true;
        }

        boughtAmountOf[beneficiary] = boughtAmountOf[beneficiary].add(weiAmount);
        weiRaised = weiRaised.add(weiAmount);
        tokensSold = tokensSold.add(tokenAmount);
    
        token.mint(beneficiary, tokenAmount, true);
        TokenPurchase(msg.sender, beneficiary, weiAmount, tokenAmount);
    }

    // return true if the transaction can buy tokens
    function validPurchase(uint weiAmount) internal constant returns (bool) {
        bool withinPeriod = now >= startTime && now <= endTime;
        bool withinCap = weiRaised.add(weiAmount) <= weiMaximumGoal;

        return withinPeriod && withinCap;
    }

    // return true if crowdsale event has ended
    function hasEnded() public constant returns (bool) {
        bool capReached = weiRaised >= weiMaximumGoal;
        bool afterEndTime = now > endTime;
        
        return capReached || afterEndTime;
    }

    // get the amount of unsold tokens allocated to this contract;
    function getWeiLeft() external constant returns (uint) {
        return weiMaximumGoal - weiRaised;
    }

    // return true if the crowdsale has raised enough money to be a successful.
    function isMinimumGoalReached() public constant returns (bool) {
        return weiRaised >= weiMinimumGoal;
    }
    
    // allows to update tokens rate for owner
    function setPricingStrategy(IPricingStrategy _pricingStrategy) external onlyOwner returns (bool) {
        pricingStrategy = _pricingStrategy;
        return true;
    }

    /**
    * Allow load refunds back on the contract for the refunding.
    *
    * The team can transfer the funds back on the smart contract in the case the minimum goal was not reached..
    */
    function loadRefund() external payable {
        require(msg.sender == wallet);
        require(msg.value > 0);
        require(!isMinimumGoalReached());
        
        loadedRefund = loadedRefund.add(msg.value);

        RefundLoaded(msg.value);
    }

    /**
    * Buyers can claim refund.
    *
    * Note that any refunds from proxy buyers should be handled separately,
    * and not through this contract.
    */
    function refund() external {
        require(!isMinimumGoalReached() && loadedRefund > 0);
        require(!isExternalBuyer[msg.sender]);
        uint weiValue = boughtAmountOf[msg.sender];
        require(weiValue > 0);
        
        boughtAmountOf[msg.sender] = 0;
        weiRefunded = weiRefunded.add(weiValue);
        msg.sender.transfer(weiValue);

        Refund(msg.sender, weiValue);
    }

    function registerPayment(address beneficiary, uint tokenAmount, uint weiAmount) public onlyOwnerOrAdmin {
        require(validPurchase(weiAmount));
        isExternalBuyer[beneficiary] = true;
        mintTokenToBuyer(beneficiary, tokenAmount, weiAmount);
    }

    function registerPayments(address[] beneficiaries, uint[] tokenAmounts, uint[] weiAmounts) external onlyOwnerOrAdmin {
        require(beneficiaries.length == tokenAmounts.length);
        require(tokenAmounts.length == weiAmounts.length);

        for (uint i = 0; i < beneficiaries.length; i++) {
            registerPayment(beneficiaries[i], tokenAmounts[i], weiAmounts[i]);
        }
    }

    function setAdmin(address adminAddress) external onlyOwner {
        admin = adminAddress;
    }
}

// File: contracts/presale/Presale.sol

/**
 * @title Presale
 * @dev Presale is a contract for managing a token crowdsale.
 * Presales have a start and end timestamps, where buyers can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive.
 */
contract Presale is SaleBase {
    function Presale(
        uint _startTime,
        uint _endTime,
        IPricingStrategy _pricingStrategy,
        PlayHallToken _token,
        address _wallet,
        uint _weiMaximumGoal,
        uint _weiMinimumGoal,
        uint _weiMinimumAmount,
        address _admin
    ) public SaleBase(
        _startTime,
        _endTime,
        _pricingStrategy,
        _token,
        _wallet,
        _weiMaximumGoal,
        _weiMinimumGoal,
        _weiMinimumAmount,
        _admin) 
    {

    }

    function changeTokenMinter(address newMinter) external onlyOwner {
        require(newMinter != 0x0);
        require(hasEnded());

        token.setMinter(newMinter);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"getWeiLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBuyer","outputs":[{"name":"","type":"bool"}],"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":"contactInformation","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiMinimumAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pricingStrategy","type":"address"}],"name":"setPricingStrategy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiMaximumGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"adminAddress","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pricingStrategy","outputs":[{"name":"","type":"address"}],"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":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiMinimumGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiaries","type":"address[]"},{"name":"tokenAmounts","type":"uint256[]"},{"name":"weiAmounts","type":"uint256[]"}],"name":"registerPayments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"boughtAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"info","type":"string"}],"name":"setContactInformation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinter","type":"address"}],"name":"changeTokenMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"tokenAmount","type":"uint256"},{"name":"weiAmount","type":"uint256"}],"name":"registerPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isExternalBuyer","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":"admin","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":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_pricingStrategy","type":"address"},{"name":"_token","type":"address"},{"name":"_wallet","type":"address"},{"name":"_weiMaximumGoal","type":"uint256"},{"name":"_weiMinimumGoal","type":"uint256"},{"name":"_weiMinimumAmount","type":"uint256"},{"name":"_admin","type":"address"}],"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":"tokenAmount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"RefundLoaded","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60606040526000805460a060020a60ff0219169055341561001f57600080fd5b604051610120806112f683398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a031617905591508990508888888888888888428910156100a057600080fd5b888810156100ad57600080fd5b86600160a060020a03166304bbc2556040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561010357600080fd5b5af1151561011057600080fd5b50505060405180519050151561012557600080fd5b600160a060020a038616151561013a57600080fd5b600160a060020a038516151561014f57600080fd5b6000841161015c57600080fd5b600160a060020a038116151561017157600080fd5b60039890985560049690965560068054600160a060020a0319908116600160a060020a03978816179091556002805482169587169590951790945560058054851693861693909317909255600955600a55600b929092556012805490921692169190911790555061110397508796506101f395506000945050505050396000f30060606040526004361061019d5763ffffffff60e060020a600035041663122e74f481146101a95780632a55feec146101ce5780633197cbb61461020157806336f7ab5e1461021457806338310f491461029e5780633f4ba83a146102b15780634042b66f146102c657806350c67734146102d9578063518ab2a8146102f8578063521eb2731461030b5780635506aa6c1461033a578063590e1ae31461034d5780635c975abb146103605780635da89ac014610373578063704b6c021461038657806378b99c24146103a557806378e97925146103b8578063797d9437146103cb5780637c2e08a3146103de57806382768708146103f15780638456cb591461040457806387612102146104175780638da5cb5b1461041f57806396581de1146104325780639e0cea0514610468578063b6f356241461047b578063b967a52e1461049a578063c9dca9ba146104eb578063ead1ed5b1461050a578063ec8ac4d81461052f578063ecb70fb714610543578063efb610bc14610556578063f2fde38b14610575578063f851a44014610594578063fc0c546a146105a7575b6101a6336105ba565b50005b34156101b457600080fd5b6101bc6106c8565b60405190815260200160405180910390f35b34156101d957600080fd5b6101ed600160a060020a03600435166106d3565b604051901515815260200160405180910390f35b341561020c57600080fd5b6101bc6106e8565b341561021f57600080fd5b6102276106ee565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561026357808201518382015260200161024b565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102a957600080fd5b6101bc61078c565b34156102bc57600080fd5b6102c4610792565b005b34156102d157600080fd5b6101bc610811565b34156102e457600080fd5b6101ed600160a060020a0360043516610817565b341561030357600080fd5b6101bc610865565b341561031657600080fd5b61031e61086b565b604051600160a060020a03909116815260200160405180910390f35b341561034557600080fd5b6101bc61087a565b341561035857600080fd5b6102c4610880565b341561036b57600080fd5b6101ed610997565b341561037e57600080fd5b6101bc6109a7565b341561039157600080fd5b6102c4600160a060020a03600435166109ad565b34156103b057600080fd5b61031e6109f7565b34156103c357600080fd5b6101bc610a06565b34156103d657600080fd5b6101bc610a0c565b34156103e957600080fd5b6101ed610a12565b34156103fc57600080fd5b6101bc610a1d565b341561040f57600080fd5b6102c4610a23565b6102c4610aa7565b341561042a57600080fd5b61031e610b2c565b341561043d57600080fd5b6102c46024600480358281019290820135918135808301929082013591604435918201910135610b3b565b341561047357600080fd5b6101bc610bf5565b341561048657600080fd5b6101bc600160a060020a0360043516610bfb565b34156104a557600080fd5b6102c460046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c0d95505050505050565b34156104f657600080fd5b6102c4600160a060020a0360043516610c3f565b341561051557600080fd5b6102c4600160a060020a0360043516602435604435610ce5565b6101ed600160a060020a03600435166105ba565b341561054e57600080fd5b6101ed610d62565b341561056157600080fd5b6101ed600160a060020a0360043516610d85565b341561058057600080fd5b6102c4600160a060020a0360043516610d9a565b341561059f57600080fd5b61031e610e35565b34156105b257600080fd5b61031e610e44565b600080548190819060a060020a900460ff16156105d657600080fd5b349150600160a060020a03841615156105ee57600080fd5b600b548210156105fd57600080fd5b61060634610e53565b151561061157600080fd5b600654600754600160a060020a0390911690630355383590849060405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561066657600080fd5b5af1151561067357600080fd5b50505060405180519050905061068a848284610e9c565b600554600160a060020a03163480156108fc0290604051600060405180830381858888f1935050505015156106be57600080fd5b5060019392505050565b600754600954035b90565b60106020526000908152604090205460ff1681565b60045481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107845780601f1061075957610100808354040283529160200191610784565b820191906000526020600020905b81548152906001019060200180831161076757829003601f168201915b505050505081565b600b5481565b60005433600160a060020a039081169116146107ad57600080fd5b60005460a060020a900460ff1615156107c557600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60075481565b6000805433600160a060020a0390811691161461083357600080fd5b5060068054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60085481565b600554600160a060020a031681565b60095481565b600061088a610a12565b15801561089957506000600d54115b15156108a457600080fd5b600160a060020a03331660009081526011602052604090205460ff16156108ca57600080fd5b50600160a060020a0333166000908152600f60205260408120549081116108f057600080fd5b600160a060020a0333166000908152600f6020526040812055600e5461091c908263ffffffff61102916565b600e55600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561095057600080fd5b7fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3382604051600160a060020a03909216825260208201526040908101905180910390a150565b60005460a060020a900460ff1681565b600e5481565b60005433600160a060020a039081169116146109c857600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600654600160a060020a031681565b60035481565b600d5481565b600a54600754101590565b600a5481565b60005433600160a060020a03908116911614610a3e57600080fd5b60005460a060020a900460ff1615610a5557600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60055433600160a060020a03908116911614610ac257600080fd5b60003411610acf57600080fd5b610ad7610a12565b15610ae157600080fd5b600d54610af4903463ffffffff61102916565b600d557fff13c6c63336413f032ad2ec351d9e01203de54fc79ce8899050e0bc2ec7134b3460405190815260200160405180910390a1565b600054600160a060020a031681565b6000805433600160a060020a0390811691161480610b67575060125433600160a060020a039081169116145b1515610b7257600080fd5b858414610b7e57600080fd5b838214610b8a57600080fd5b5060005b85811015610bec57610be4878783818110610ba557fe5b90506020020135600160a060020a03168686848181101515610bc357fe5b905060200201358585858181101515610bd857fe5b90506020020135610ce5565b600101610b8e565b50505050505050565b600c5481565b600f6020526000908152604090205481565b60005433600160a060020a03908116911614610c2857600080fd5b6001818051610c3b92916020019061103f565b5050565b60005433600160a060020a03908116911614610c5a57600080fd5b600160a060020a0381161515610c6f57600080fd5b610c77610d62565b1515610c8257600080fd5b600254600160a060020a031663fca3b5aa8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610cd257600080fd5b5af11515610cdf57600080fd5b50505050565b60005433600160a060020a0390811691161480610d10575060125433600160a060020a039081169116145b1515610d1b57600080fd5b610d2481610e53565b1515610d2f57600080fd5b600160a060020a0383166000908152601160205260409020805460ff19166001179055610d5d838383610e9c565b505050565b600954600754600454600092909110159042118180610d7e5750805b9250505090565b60116020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610db557600080fd5b600160a060020a0381161515610dca57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601254600160a060020a031681565b600254600160a060020a031681565b60008060006003544210158015610e6c57506004544211155b9150600954610e868560075461102990919063ffffffff16565b11159050818015610e945750805b949350505050565b600160a060020a03831660009081526010602052604090205460ff161515610eee57600c80546001908101909155600160a060020a0384166000908152601060205260409020805460ff191690911790555b600160a060020a0383166000908152600f6020526040902054610f17908263ffffffff61102916565b600160a060020a0384166000908152600f6020526040902055600754610f43908263ffffffff61102916565b600755600854610f59908363ffffffff61102916565b600855600254600160a060020a031663d1a1beb48484600160405160e060020a63ffffffff8616028152600160a060020a039093166004840152602483019190915215156044820152606401602060405180830381600087803b1515610fbe57600080fd5b5af11515610fcb57600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18838560405191825260208201526040908101905180910390a3505050565b60008282018381101561103857fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061108057805160ff19168380011785556110ad565b828001600101855582156110ad579182015b828111156110ad578251825591602001919060010190611092565b506110b99291506110bd565b5090565b6106d091905b808211156110b957600081556001016110c35600a165627a7a72305820ba3c28fc7c70f348a38a5db1f33070032de92318ad1c5d463b543499c54920200029000000000000000000000000000000000000000000000000000000005aba74a8000000000000000000000000000000000000000000000000000000005acc7d100000000000000000000000001114380bea291009dc83a937a3446cc763c4650200000000000000000000000095442a375dd03e97f347f7671a48ba40b2751455000000000000000000000000f3f3425faa8dbf3ef6ab115d514f44757a39f55d0000000000000000000000000000000000000000000002f6f10780d22cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000d5fe6421e3d770e9008b0ab7f0abb56f2946200a

Deployed Bytecode

0x60606040526004361061019d5763ffffffff60e060020a600035041663122e74f481146101a95780632a55feec146101ce5780633197cbb61461020157806336f7ab5e1461021457806338310f491461029e5780633f4ba83a146102b15780634042b66f146102c657806350c67734146102d9578063518ab2a8146102f8578063521eb2731461030b5780635506aa6c1461033a578063590e1ae31461034d5780635c975abb146103605780635da89ac014610373578063704b6c021461038657806378b99c24146103a557806378e97925146103b8578063797d9437146103cb5780637c2e08a3146103de57806382768708146103f15780638456cb591461040457806387612102146104175780638da5cb5b1461041f57806396581de1146104325780639e0cea0514610468578063b6f356241461047b578063b967a52e1461049a578063c9dca9ba146104eb578063ead1ed5b1461050a578063ec8ac4d81461052f578063ecb70fb714610543578063efb610bc14610556578063f2fde38b14610575578063f851a44014610594578063fc0c546a146105a7575b6101a6336105ba565b50005b34156101b457600080fd5b6101bc6106c8565b60405190815260200160405180910390f35b34156101d957600080fd5b6101ed600160a060020a03600435166106d3565b604051901515815260200160405180910390f35b341561020c57600080fd5b6101bc6106e8565b341561021f57600080fd5b6102276106ee565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561026357808201518382015260200161024b565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102a957600080fd5b6101bc61078c565b34156102bc57600080fd5b6102c4610792565b005b34156102d157600080fd5b6101bc610811565b34156102e457600080fd5b6101ed600160a060020a0360043516610817565b341561030357600080fd5b6101bc610865565b341561031657600080fd5b61031e61086b565b604051600160a060020a03909116815260200160405180910390f35b341561034557600080fd5b6101bc61087a565b341561035857600080fd5b6102c4610880565b341561036b57600080fd5b6101ed610997565b341561037e57600080fd5b6101bc6109a7565b341561039157600080fd5b6102c4600160a060020a03600435166109ad565b34156103b057600080fd5b61031e6109f7565b34156103c357600080fd5b6101bc610a06565b34156103d657600080fd5b6101bc610a0c565b34156103e957600080fd5b6101ed610a12565b34156103fc57600080fd5b6101bc610a1d565b341561040f57600080fd5b6102c4610a23565b6102c4610aa7565b341561042a57600080fd5b61031e610b2c565b341561043d57600080fd5b6102c46024600480358281019290820135918135808301929082013591604435918201910135610b3b565b341561047357600080fd5b6101bc610bf5565b341561048657600080fd5b6101bc600160a060020a0360043516610bfb565b34156104a557600080fd5b6102c460046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c0d95505050505050565b34156104f657600080fd5b6102c4600160a060020a0360043516610c3f565b341561051557600080fd5b6102c4600160a060020a0360043516602435604435610ce5565b6101ed600160a060020a03600435166105ba565b341561054e57600080fd5b6101ed610d62565b341561056157600080fd5b6101ed600160a060020a0360043516610d85565b341561058057600080fd5b6102c4600160a060020a0360043516610d9a565b341561059f57600080fd5b61031e610e35565b34156105b257600080fd5b61031e610e44565b600080548190819060a060020a900460ff16156105d657600080fd5b349150600160a060020a03841615156105ee57600080fd5b600b548210156105fd57600080fd5b61060634610e53565b151561061157600080fd5b600654600754600160a060020a0390911690630355383590849060405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561066657600080fd5b5af1151561067357600080fd5b50505060405180519050905061068a848284610e9c565b600554600160a060020a03163480156108fc0290604051600060405180830381858888f1935050505015156106be57600080fd5b5060019392505050565b600754600954035b90565b60106020526000908152604090205460ff1681565b60045481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107845780601f1061075957610100808354040283529160200191610784565b820191906000526020600020905b81548152906001019060200180831161076757829003601f168201915b505050505081565b600b5481565b60005433600160a060020a039081169116146107ad57600080fd5b60005460a060020a900460ff1615156107c557600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60075481565b6000805433600160a060020a0390811691161461083357600080fd5b5060068054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60085481565b600554600160a060020a031681565b60095481565b600061088a610a12565b15801561089957506000600d54115b15156108a457600080fd5b600160a060020a03331660009081526011602052604090205460ff16156108ca57600080fd5b50600160a060020a0333166000908152600f60205260408120549081116108f057600080fd5b600160a060020a0333166000908152600f6020526040812055600e5461091c908263ffffffff61102916565b600e55600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561095057600080fd5b7fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3382604051600160a060020a03909216825260208201526040908101905180910390a150565b60005460a060020a900460ff1681565b600e5481565b60005433600160a060020a039081169116146109c857600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600654600160a060020a031681565b60035481565b600d5481565b600a54600754101590565b600a5481565b60005433600160a060020a03908116911614610a3e57600080fd5b60005460a060020a900460ff1615610a5557600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60055433600160a060020a03908116911614610ac257600080fd5b60003411610acf57600080fd5b610ad7610a12565b15610ae157600080fd5b600d54610af4903463ffffffff61102916565b600d557fff13c6c63336413f032ad2ec351d9e01203de54fc79ce8899050e0bc2ec7134b3460405190815260200160405180910390a1565b600054600160a060020a031681565b6000805433600160a060020a0390811691161480610b67575060125433600160a060020a039081169116145b1515610b7257600080fd5b858414610b7e57600080fd5b838214610b8a57600080fd5b5060005b85811015610bec57610be4878783818110610ba557fe5b90506020020135600160a060020a03168686848181101515610bc357fe5b905060200201358585858181101515610bd857fe5b90506020020135610ce5565b600101610b8e565b50505050505050565b600c5481565b600f6020526000908152604090205481565b60005433600160a060020a03908116911614610c2857600080fd5b6001818051610c3b92916020019061103f565b5050565b60005433600160a060020a03908116911614610c5a57600080fd5b600160a060020a0381161515610c6f57600080fd5b610c77610d62565b1515610c8257600080fd5b600254600160a060020a031663fca3b5aa8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610cd257600080fd5b5af11515610cdf57600080fd5b50505050565b60005433600160a060020a0390811691161480610d10575060125433600160a060020a039081169116145b1515610d1b57600080fd5b610d2481610e53565b1515610d2f57600080fd5b600160a060020a0383166000908152601160205260409020805460ff19166001179055610d5d838383610e9c565b505050565b600954600754600454600092909110159042118180610d7e5750805b9250505090565b60116020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610db557600080fd5b600160a060020a0381161515610dca57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601254600160a060020a031681565b600254600160a060020a031681565b60008060006003544210158015610e6c57506004544211155b9150600954610e868560075461102990919063ffffffff16565b11159050818015610e945750805b949350505050565b600160a060020a03831660009081526010602052604090205460ff161515610eee57600c80546001908101909155600160a060020a0384166000908152601060205260409020805460ff191690911790555b600160a060020a0383166000908152600f6020526040902054610f17908263ffffffff61102916565b600160a060020a0384166000908152600f6020526040902055600754610f43908263ffffffff61102916565b600755600854610f59908363ffffffff61102916565b600855600254600160a060020a031663d1a1beb48484600160405160e060020a63ffffffff8616028152600160a060020a039093166004840152602483019190915215156044820152606401602060405180830381600087803b1515610fbe57600080fd5b5af11515610fcb57600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18838560405191825260208201526040908101905180910390a3505050565b60008282018381101561103857fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061108057805160ff19168380011785556110ad565b828001600101855582156110ad579182015b828111156110ad578251825591602001919060010190611092565b506110b99291506110bd565b5090565b6106d091905b808211156110b957600081556001016110c35600a165627a7a72305820ba3c28fc7c70f348a38a5db1f33070032de92318ad1c5d463b543499c54920200029

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

000000000000000000000000000000000000000000000000000000005aba74a8000000000000000000000000000000000000000000000000000000005acc7d100000000000000000000000001114380bea291009dc83a937a3446cc763c4650200000000000000000000000095442a375dd03e97f347f7671a48ba40b2751455000000000000000000000000f3f3425faa8dbf3ef6ab115d514f44757a39f55d0000000000000000000000000000000000000000000002f6f10780d22cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000d5fe6421e3d770e9008b0ab7f0abb56f2946200a

-----Decoded View---------------
Arg [0] : _startTime (uint256): 1522169000
Arg [1] : _endTime (uint256): 1523350800
Arg [2] : _pricingStrategy (address): 0x1114380BeA291009Dc83A937A3446cC763c46502
Arg [3] : _token (address): 0x95442A375Dd03e97F347f7671A48bA40B2751455
Arg [4] : _wallet (address): 0xf3f3425FAA8DBF3ef6ab115d514f44757A39f55D
Arg [5] : _weiMaximumGoal (uint256): 14000000000000000000000
Arg [6] : _weiMinimumGoal (uint256): 0
Arg [7] : _weiMinimumAmount (uint256): 10000000000000000000
Arg [8] : _admin (address): 0xd5Fe6421e3D770e9008b0ab7f0ABb56f2946200A

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005aba74a8
Arg [1] : 000000000000000000000000000000000000000000000000000000005acc7d10
Arg [2] : 0000000000000000000000001114380bea291009dc83a937a3446cc763c46502
Arg [3] : 00000000000000000000000095442a375dd03e97f347f7671a48ba40b2751455
Arg [4] : 000000000000000000000000f3f3425faa8dbf3ef6ab115d514f44757a39f55d
Arg [5] : 0000000000000000000000000000000000000000000002f6f10780d22cc00000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000008ac7230489e80000
Arg [8] : 000000000000000000000000d5fe6421e3d770e9008b0ab7f0abb56f2946200a


Swarm Source

bzzr://ba3c28fc7c70f348a38a5db1f33070032de92318ad1c5d463b543499c5492020

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  ]

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.