Contract Overview
Balance: 0.5 Ether
Transactions: 7 txns
 Latest 7 txns


TxHash Age From To Value [TxFee]
0xf010f6ee35275a0902e114d08367b5e387dd7ab6d6b49d63d89e03df0730d69d34 days 21 hrs ago0x6c0ac78467670f47e65dd5798c104869b7c639ad  IN   0x6e1bf540d0791bb8ec6980d938243a75fa868ac20.1 Ether0.002963357
0xb415aa470303b700e2aa2a9f50fc6e8fe463efc3a4ad98242d6603ee06bf350439 days 17 hrs ago0x79b67dff9fb21d2550937d879ec2eacb2f377da0  IN   0x6e1bf540d0791bb8ec6980d938243a75fa868ac20.4 Ether0.000144554
0xb52255e5591744ec00f3cb10ad91f8d92e09e6ca15b4df4cd3d5b4f969cbe33539 days 20 hrs ago0x66c4c6211a1fe5d2167882fedd7b1a0c59527b22  IN   0x6e1bf540d0791bb8ec6980d938243a75fa868ac20 Ether0.000032097
0x7d034a6c7a8b808f12d4bc0db0ca5caae5cedf93c95d43c083376d941dba489039 days 20 hrs ago0xf9bae462a41cbf93d631400037081fd252df73cf  IN   0x6e1bf540d0791bb8ec6980d938243a75fa868ac21.1 Ether0.002963357
0xbbc517f1284ec467eca30001b3a6633ff839a7d4ed07656415f21d166385061639 days 20 hrs ago0x012d0ff26caf5b7d41e44cb355db51347944cbc4  IN   0x6e1bf540d0791bb8ec6980d938243a75fa868ac20.2 Ether0.001733357
0xe3f38beb3891a28b393383af247211d6bc5674ec7975564b0e7096af17e8133f39 days 20 hrs ago0x012d0ff26caf5b7d41e44cb355db51347944cbc4  IN   0x6e1bf540d0791bb8ec6980d938243a75fa868ac20.3 Ether0.003578357
0xf8bf280bfc5af08dada486a5a67f8c8dae3010d30150be4ee9f5217d817fc68039 days 21 hrs ago0x66c4c6211a1fe5d2167882fedd7b1a0c59527b22  IN    Contract Creation0 Ether0.001071004
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 1 Internal Transaction

ParentTxHash Block Age From To Value
0xb52255e5591744ec00f3cb10ad91f8d92e09e6ca15b4df4cd3d5b4f969cbe335304983639 days 20 hrs ago0x6e1bf540d0791bb8ec6980d938243a75fa868ac20xf9bae462a41cbf93d631400037081fd252df73cf1.6 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: ParadiseTokenSale
Compiler Version: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

/**
 * @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;
  }

}

/**
 * @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();
  }
}

/**
 * @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;
  }
}

 /**
 * @title ERC20Basic
 * @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);
}

/**
 * @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);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken
 */
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];
  }

}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 */
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];
  }

  /**
   * @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;
  }

}


/*
 * ParadiseToken is a standard ERC20 token with some additional functionalities:
 * - Transfers are only enabled after contract owner enables it (after the ICO)
 * - Contract sets 70% of the total supply as allowance for ICO contract
 */
    
contract ParadiseToken is StandardToken, Ownable {
    
    // Constants
    string public constant symbol = "PDT";
    string public constant name = "Paradise Token";
    uint8 public constant decimals = 18;
    uint256 public constant InitialSupplyCup = 300000000 * (10 ** uint256(decimals)); // 300 mil tokens minted
    uint256 public constant TokenAllowance = 210000000 * (10 ** uint256(decimals));   // 210 mil tokens public allowed 
    uint256 public constant AdminAllowance = InitialSupplyCup - TokenAllowance;       // 90 mil tokens admin allowed 
    
    // Properties
    address public adminAddr;              // the number of tokens available for the administrator
    address public tokenAllowanceAddr = 0x012d0FF26cAf5b7D41E44cB355dB51347944cbC4; // the number of tokens available for crowdsales
    bool public transferEnabled = false;   // indicates if transferring tokens is enabled or not
    
    
    modifier onlyWhenTransferAllowed() {
        require(transferEnabled || msg.sender == adminAddr || msg.sender == tokenAllowanceAddr);
        _;
    }

    /**
     * Check if token offering address is set or not
     */
    modifier onlyTokenOfferingAddrNotSet() {
        require(tokenAllowanceAddr == address(0x0));
        _;
    }

    /**
     * Check if address is a valid destination to transfer tokens to
     * - must not be zero address
     * - must not be the token address
     * - must not be the owner's address
     * - must not be the admin's address
     * - must not be the token offering contract address
     */
    modifier validDestination(address to) {
        require(to != address(0x0));
        require(to != address(this));
        require(to != owner);
        require(to != address(adminAddr));
        require(to != address(tokenAllowanceAddr));
        _;
    }
    
    /**
     * Token contract constructor
     *
     * @param admin Address of admin account
     */
    function ParadiseToken(address admin) public {
        totalSupply = InitialSupplyCup;
        
        // Mint tokens
        balances[msg.sender] = totalSupply;
        Transfer(address(0x0), msg.sender, totalSupply);

        // Approve allowance for admin account
        adminAddr = admin;
        approve(adminAddr, AdminAllowance);
    }

    /**
     * Set token offering to approve allowance for offering contract to distribute tokens
     *
     * Note that if _amountForSale is 0, then it is assumed that the full
     * remaining crowdsale supply is made available to the crowdsale.
     * 
     * @param offeringAddr Address of token offerng contract
     * @param amountForSale Amount of tokens for sale, set 0 to max out
     */
    function setTokenOffering(address offeringAddr, uint256 amountForSale) external onlyOwner onlyTokenOfferingAddrNotSet {
        require(!transferEnabled);

        uint256 amount = (amountForSale == 0) ? TokenAllowance : amountForSale;
        require(amount <= TokenAllowance);

        approve(offeringAddr, amount);
        tokenAllowanceAddr = offeringAddr;
        
    }
    
    /**
     * Enable transfers
     */
    function enableTransfer() external onlyOwner {
        transferEnabled = true;

        // End the offering
        approve(tokenAllowanceAddr, 0);
    }

    /**
     * Transfer from sender to another account
     *
     * @param to Destination address
     * @param value Amount of PDTtokens to send
     */
    function transfer(address to, uint256 value) public onlyWhenTransferAllowed validDestination(to) returns (bool) {
        return super.transfer(to, value);
    }
    
    /**
     * Transfer from `from` account to `to` account using allowance in `from` account to the sender
     *
     * @param from Origin address
     * @param to Destination address
     * @param value Amount of PDTtokens to send
     */
    function transferFrom(address from, address to, uint256 value) public onlyWhenTransferAllowed validDestination(to) returns (bool) {
        return super.transferFrom(from, to, value);
    }
    
}

/**
 * The ParadiseToken token (PDT) has a fixed supply and restricts the ability
 * to transfer tokens until the owner has called the enableTransfer()
 * function.
 *
 * The owner can associate the token with a token sale contract. In that
 * case, the token balance is moved to the token sale contract, which
 * in turn can transfer its tokens to contributors to the sale.
 */

contract ParadiseTokenSale is Pausable {

    using SafeMath for uint256;

    // The beneficiary is the future recipient of the funds
    address public beneficiary = 0xF9BAE462A41cbF93D631400037081fd252Df73Cf;

    // The crowdsale has a funding goal, cap, deadline, and minimum contribution
    uint public fundingGoal = 4000 ether;
    uint public fundingCap = 40000 ether;
    uint public minContribution = 10**17; // 0.1 Ether
    bool public fundingGoalReached = false;
    bool public fundingCapReached = false;
    bool public saleClosed = false;

    // Time period of sale (UNIX timestamps)
    uint public startTime = 1523314800;
    uint public endTime = 1525993200;

    // Keeps track of the amount of wei raised
    uint public amountRaised;


    // The ratio of PDT to Ether
    uint public rate = 5000;
    
    // The token being sold
    ParadiseToken public tokenReward;

    // A map that tracks the amount of wei contributed by address
    mapping(address => uint256) public balanceOf;
    
    // A map that tracks the amount of PDT tokens that should be allocated to each address
    mapping(address => uint256) public tokenBalanceOf;

    // Events
    event GoalReached(address _beneficiary, uint _amountRaised);
    event CapReached(address _beneficiary, uint _amountRaised);
    event FundTransfer(address _backer, uint _amount, bool _isContribution);

    // Modifiers
    modifier beforeDeadline()   { require (currentTime() < endTime); _; }
    modifier afterDeadline()    { require (currentTime() >= endTime); _; }
    modifier afterStartTime()    { require (currentTime() >= startTime); _; }

    modifier saleNotClosed()    { require (!saleClosed); _; }

    
    /**
     * Constructor for a crowdsale of ParadiseToken tokens.
     *
     * @param ifSuccessfulSendTo            the beneficiary of the fund
     * @param fundingGoalInEthers           the minimum goal to be reached
     * @param fundingCapInEthers            the cap (maximum) size of the fund
     * @param minimumContributionInWei      minimum contribution (in wei)
     * @param start                         the start time (UNIX timestamp)
     * @param durationInMinutes             the duration of the crowdsale in minutes
     * @param ratePDTToEther                the conversion rate from PDT to Ether
     * @param addressOfTokenUsedAsReward    address of the token being sold
     */
    function ParadiseTokenSale(
        address ifSuccessfulSendTo,
        uint fundingGoalInEthers,
        uint fundingCapInEthers,
        uint minimumContributionInWei,
        uint start,
        uint durationInMinutes,
        uint ratePDTToEther,
        address addressOfTokenUsedAsReward
    ) {
        require(ifSuccessfulSendTo != address(0) && ifSuccessfulSendTo != address(this));
        require(addressOfTokenUsedAsReward != address(0) && addressOfTokenUsedAsReward != address(this));
        require(fundingGoalInEthers <= fundingCapInEthers);
        require(durationInMinutes > 0);
        beneficiary = ifSuccessfulSendTo;
        fundingGoal = fundingGoalInEthers * 1 ether;
        fundingCap = fundingCapInEthers * 1 ether;
        minContribution = minimumContributionInWei;
        startTime = start;
        endTime = start + durationInMinutes * 1 minutes; 
        setRate(ratePDTToEther);
        tokenReward = ParadiseToken(addressOfTokenUsedAsReward);
    }

    /**
     * This function is called whenever Ether is sent to the
     * smart contract. It can only be executed when the crowdsale is
     * not paused, not closed, and before the deadline has been reached.
     *
     * This function will update state variables for whether or not the
     * funding goal or cap have been reached. It also ensures that the
     * tokens are transferred to the sender, and that the correct
     * number of tokens are sent according to the current rate.
     */
    function () payable {
        buy();
    }

    function buy ()
        payable public
        whenNotPaused
        beforeDeadline
        afterStartTime
        saleNotClosed
    {
        require(msg.value >= minContribution);
        uint amount = msg.value;
        
        // Compute the number of tokens to be rewarded to the sender
        // Note: it's important for this calculation that both wei
        // and PDT have the same number of decimal places (18)
        uint numTokens = amount.mul(rate);

        // update the total amount raised
        amountRaised = amountRaised.add(amount);
     
        // update the sender's balance of wei contributed
        balanceOf[msg.sender] = balanceOf[msg.sender].add(amount);
        // add to the token balance of the sender
        tokenBalanceOf[msg.sender] = tokenBalanceOf[msg.sender].add(numTokens);

        FundTransfer(msg.sender, amount, true);
        // Check if the funding goal or cap have been reached
        checkFundingGoal();
        checkFundingCap();
    }
    
    /**
     * The owner can't update the rate (PDT to ETH).
     *
     * @param _rate  the new rate for converting PDT to ETH
     */
    function setRate(uint _rate) public onlyOwner {
        rate = _rate;
    }
    
     /**
     * The owner can terminate the crowdsale at any time.
     */
    function terminate() external onlyOwner {
        saleClosed = true;
    }
    
     /**
     *
     * The owner can allocate the specified amount of tokens from the
     * crowdsale allowance to the recipient (_to).
     *
     * NOTE: be extremely careful to get the amounts correct, which
     * are in units of wei and mini-PDT. Every digit counts.
     *
     * @param _to            the recipient of the tokens
     * @param amountWei     the amount contributed in wei
     * @param amountMiniPDT the amount of tokens transferred in mini-PDT
     */
     
     
     function ownerAllocateTokens(address _to, uint amountWei, uint amountMiniPDT)
            onlyOwner 
    {
        // don't allocate tokens for the admin
        // require(tokenReward.adminAddr() != _to);

        amountRaised = amountRaised.add(amountWei);

        tokenBalanceOf[_to] = tokenBalanceOf[_to].add(amountMiniPDT);
        balanceOf[_to] = balanceOf[_to].add(amountWei);

        FundTransfer(_to, amountWei, true);
        checkFundingGoal();
        checkFundingCap();
    }

    /**
     * The owner can call this function to withdraw the funds that
     * have been sent to this contract for the crowdsale subject to
     * the funding goal having been reached. The funds will be sent
     * to the beneficiary specified when the crowdsale was created.
     */
    function ownerSafeWithdrawal() external onlyOwner  {
        uint balanceToSend = this.balance;
        beneficiary.transfer(balanceToSend);
        FundTransfer(beneficiary, balanceToSend, false);
    }
    
   /**
     * Checks if the funding goal has been reached. If it has, then
     * the GoalReached event is triggered.
     */
    function checkFundingGoal() internal {
        if (!fundingGoalReached) {
            if (amountRaised >= fundingGoal) {
                fundingGoalReached = true;
                GoalReached(beneficiary, amountRaised);
            }
        }
    }

    /**
     * Checks if the funding cap has been reached. If it has, then
     * the CapReached event is triggered.
     */
   function checkFundingCap() internal {
        if (!fundingCapReached) {
            if (amountRaised >= fundingCap) {
                fundingCapReached = true;
                saleClosed = true;
                CapReached(beneficiary, amountRaised);
            }
        }
    }

    /**
     * Returns the current time.
     * Useful to abstract calls to "now" for tests.
    */
    function currentTime() constant returns (uint _currentTime) {
        return now;
    }
}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"amountWei","type":"uint256"},{"name":"amountMiniPDT","type":"uint256"}],"name":"ownerAllocateTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"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":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","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":"tokenReward","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ownerSafeWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amountRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundingCapReached","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":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"minContribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTime","outputs":[{"name":"_currentTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingGoalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"ifSuccessfulSendTo","type":"address"},{"name":"fundingGoalInEthers","type":"uint256"},{"name":"fundingCapInEthers","type":"uint256"},{"name":"minimumContributionInWei","type":"uint256"},{"name":"start","type":"uint256"},{"name":"durationInMinutes","type":"uint256"},{"name":"ratePDTToEther","type":"uint256"},{"name":"addressOfTokenUsedAsReward","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amountRaised","type":"uint256"}],"name":"GoalReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amountRaised","type":"uint256"}],"name":"CapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_backer","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_isContribution","type":"bool"}],"name":"FundTransfer","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"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460a060020a60ff021916905560018054600160a060020a03191673f9bae462a41cbf93d631400037081fd252df73cf17905568d8d726b7177a800000600255690878678326eac900000060035567016345785d8a00006004556005805462ffffff19169055635acbf070600655635af4cef0600755611388600955341561008e57600080fd5b60405161010080610d39833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a03908116919091179091559092508916158015915061011a575030600160a060020a031688600160a060020a031614155b151561012557600080fd5b600160a060020a0381161580159061014f575030600160a060020a031681600160a060020a031614155b151561015a57600080fd5b8587111561016757600080fd5b6000831161017457600080fd5b60018054600160a060020a031916600160a060020a038a16179055670de0b6b3a7640000878102600255860260035560048590556006849055603c830284016007556101cc826401000000006101f981026106791704565b600a8054600160a060020a031916600160a060020a03929092169190911790555061021995505050505050565b60005433600160a060020a0390811691161461021457600080fd5b600955565b610b11806102286000396000f3006060604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461015257806328e08186146101655780632c4e722e1461018a5780633197cbb6146101af57806334fcf437146101c257806338af3eed146101d85780633f4ba83a146102075780635c975abb1461021a5780636e66f6e91461024157806370a0823114610254578063782e34c91461027357806378e97925146102865780637a3a0e84146102995780637b3e5e7b146102ac5780638456cb59146102bf578063848b3821146102d25780638da5cb5b146102e5578063a6f2ae3a14610148578063aaffadf3146102f8578063b8c766b81461030b578063d18e81b31461031e578063d424f62814610331578063e3b2594f14610344578063e42c08f214610357578063f2fde38b14610376575b610150610395565b005b341561015d57600080fd5b61015061051e565b341561017057600080fd5b610150600160a060020a036004351660243560443561054c565b341561019557600080fd5b61019d61066d565b60405190815260200160405180910390f35b34156101ba57600080fd5b61019d610673565b34156101cd57600080fd5b610150600435610679565b34156101e357600080fd5b6101eb610699565b604051600160a060020a03909116815260200160405180910390f35b341561021257600080fd5b6101506106a8565b341561022557600080fd5b61022d610727565b604051901515815260200160405180910390f35b341561024c57600080fd5b6101eb610737565b341561025f57600080fd5b61019d600160a060020a0360043516610746565b341561027e57600080fd5b610150610758565b341561029157600080fd5b61019d610810565b34156102a457600080fd5b61019d610816565b34156102b757600080fd5b61019d61081c565b34156102ca57600080fd5b610150610822565b34156102dd57600080fd5b61022d6108a6565b34156102f057600080fd5b6101eb6108b4565b341561030357600080fd5b61019d6108c3565b341561031657600080fd5b61022d6108c9565b341561032957600080fd5b61019d6108d8565b341561033c57600080fd5b61022d6108dc565b341561034f57600080fd5b61019d6108e5565b341561036257600080fd5b61019d600160a060020a03600435166108eb565b341561038157600080fd5b610150600160a060020a03600435166108fd565b60008054819060a060020a900460ff16156103af57600080fd5b6007546103ba6108d8565b106103c457600080fd5b6006546103cf6108d8565b10156103da57600080fd5b60055462010000900460ff16156103f057600080fd5b6004543410156103ff57600080fd5b60095434925061041690839063ffffffff61099816565b60085490915061042c908363ffffffff6109ce16565b600855600160a060020a0333166000908152600b6020526040902054610458908363ffffffff6109ce16565b600160a060020a0333166000908152600b6020908152604080832093909355600c9052205461048d908263ffffffff6109ce16565b600c600033600160a060020a0316600160a060020a03168152602001908152602001600020819055507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf633836001604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a16105126109dd565b61051a610a58565b5050565b60005433600160a060020a0390811691161461053957600080fd5b6005805462ff0000191662010000179055565b60005433600160a060020a0390811691161461056757600080fd5b60085461057a908363ffffffff6109ce16565b600855600160a060020a0383166000908152600c60205260409020546105a6908263ffffffff6109ce16565b600160a060020a0384166000908152600c6020908152604080832093909355600b905220546105db908363ffffffff6109ce16565b600b600085600160a060020a0316600160a060020a03168152602001908152602001600020819055507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf683836001604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a16106606109dd565b610668610a58565b505050565b60095481565b60075481565b60005433600160a060020a0390811691161461069457600080fd5b600955565b600154600160a060020a031681565b60005433600160a060020a039081169116146106c357600080fd5b60005460a060020a900460ff1615156106db57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60005460a060020a900460ff1681565b600a54600160a060020a031681565b600b6020526000908152604090205481565b6000805433600160a060020a0390811691161461077457600080fd5b50600154600160a060020a0330811631911681156108fc0282604051600060405180830381858888f1935050505015156107ad57600080fd5b6001547fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf690600160a060020a0316826000604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a150565b60065481565b60025481565b60085481565b60005433600160a060020a0390811691161461083d57600080fd5b60005460a060020a900460ff161561085457600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600554610100900460ff1681565b600054600160a060020a031681565b60045481565b60055462010000900460ff1681565b4290565b60055460ff1681565b60035481565b600c6020526000908152604090205481565b60005433600160a060020a0390811691161461091857600080fd5b600160a060020a038116151561092d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000808315156109ab57600091506109c7565b508282028284828115156109bb57fe5b04146109c357fe5b8091505b5092915050565b6000828201838110156109c357fe5b60055460ff161515610a565760025460085410610a56576005805460ff19166001908117909155546008547fec3f991caf7857d61663fd1bba1739e04abd4781238508cde554bb849d790c8591600160a060020a031690604051600160a060020a03909216825260208201526040908101905180910390a15b565b600554610100900460ff161515610a565760035460085410610a56576005805462ff00001961ff00199091166101001716620100001790556001546008547f195de8a1ebf5a1244af169b7e0bd0f735307a2626a73abce88f9b488628c6c2491600160a060020a031690604051600160a060020a03909216825260208201526040908101905180910390a15600a165627a7a723058206794bff06dbfc15fb49f0cea246f7c2276f2641ea63e4492aeba79efb2ca42a30029000000000000000000000000f9bae462a41cbf93d631400037081fd252df73cf0000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000005acbf070000000000000000000000000000000000000000000000000000000000000ae600000000000000000000000000000000000000000000000000000000000001388000000000000000000000000012d0ff26caf5b7d41e44cb355db51347944cbc4

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

-----Decoded View---------------
Found 8 constructor arguments :
Arg [0] : 000000000000000000000000f9bae462a41cbf93d631400037081fd252df73cf
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000fa0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000009c40
Arg [3] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [4] : 000000000000000000000000000000000000000000000000000000005acbf070
Arg [5] : 000000000000000000000000000000000000000000000000000000000000ae60
Arg [6] : 0000000000000000000000000000000000000000000000000000000000001388
Arg [7] : 000000000000000000000000012d0ff26caf5b7d41e44cb355db51347944cbc4


   Swarm Source:
bzzr://6794bff06dbfc15fb49f0cea246f7c2276f2641ea63e4492aeba79efb2ca42a3

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward