ETH Price: $3,684.96 (+3.24%)

Contract

0x2584F892a2e50B5493Ed108FA61888bA373ec02D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer42373832017-09-04 11:44:442643 days ago1504525484IN
0x2584F892...A373ec02D
0.5 ETH0.0150
Transfer42369032017-09-04 8:29:032644 days ago1504513743IN
0x2584F892...A373ec02D
0.85 ETH0.0004200220
Finalize42368422017-09-04 8:00:482644 days ago1504512048IN
0x2584F892...A373ec02D
0 ETH0.001931321
Transfer42366942017-09-04 7:03:292644 days ago1504508609IN
0x2584F892...A373ec02D
1 ETH0.00420
Transfer42366212017-09-04 6:38:542644 days ago1504507134IN
0x2584F892...A373ec02D
1 ETH0.00840
Transfer42366152017-09-04 6:37:342644 days ago1504507054IN
0x2584F892...A373ec02D
2 ETH0.00620
Transfer42366102017-09-04 6:35:532644 days ago1504506953IN
0x2584F892...A373ec02D
1 ETH0.00420
Transfer42365992017-09-04 6:31:372644 days ago1504506697IN
0x2584F892...A373ec02D
2 ETH0.001150
Transfer42365942017-09-04 6:29:152644 days ago1504506555IN
0x2584F892...A373ec02D
2 ETH0.002480
Transfer42365022017-09-04 5:52:252644 days ago1504504345IN
0x2584F892...A373ec02D
1 ETH0.019899
Transfer42365002017-09-04 5:51:052644 days ago1504504265IN
0x2584F892...A373ec02D
2.4 ETH0.00525
Transfer42364892017-09-04 5:44:282644 days ago1504503868IN
0x2584F892...A373ec02D
1.8 ETH0.0040000220
Transfer42364782017-09-04 5:40:302644 days ago1504503630IN
0x2584F892...A373ec02D
1.9 ETH0.0420
Transfer42364632017-09-04 5:33:572644 days ago1504503237IN
0x2584F892...A373ec02D
1.9 ETH0.00420
Transfer42364612017-09-04 5:32:272644 days ago1504503147IN
0x2584F892...A373ec02D
15 ETH0.004221
Transfer42364432017-09-04 5:24:142644 days ago1504502654IN
0x2584F892...A373ec02D
1.8 ETH0.00400220
Transfer42364292017-09-04 5:18:532644 days ago1504502333IN
0x2584F892...A373ec02D
2 ETH0.00280
Transfer42364202017-09-04 5:16:362644 days ago1504502196IN
0x2584F892...A373ec02D
2 ETH0.0010500550
Transfer42364192017-09-04 5:16:312644 days ago1504502191IN
0x2584F892...A373ec02D
1.9 ETH0.0420
Transfer42364102017-09-04 5:10:332644 days ago1504501833IN
0x2584F892...A373ec02D
1.9 ETH0.00420
Transfer42364012017-09-04 5:08:282644 days ago1504501708IN
0x2584F892...A373ec02D
1.9 ETH0.00420
Transfer42363972017-09-04 5:07:262644 days ago1504501646IN
0x2584F892...A373ec02D
1.09 ETH0.00207999
Transfer42363712017-09-04 4:57:202644 days ago1504501040IN
0x2584F892...A373ec02D
0.1 ETH0.002420
Transfer42363712017-09-04 4:57:202644 days ago1504501040IN
0x2584F892...A373ec02D
1.88 ETH0.004221
Transfer42363672017-09-04 4:56:042644 days ago1504500964IN
0x2584F892...A373ec02D
1 ETH0.00207999
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
42363432017-09-04 4:48:332644 days ago1504500513
0x2584F892...A373ec02D
0.45 ETH
42363182017-09-04 4:39:122644 days ago1504499952
0x2584F892...A373ec02D
0.5 ETH
42363072017-09-04 4:35:112644 days ago1504499711
0x2584F892...A373ec02D
5.5 ETH
42363052017-09-04 4:34:312644 days ago1504499671
0x2584F892...A373ec02D
2.5 ETH
42362952017-09-04 4:32:162644 days ago1504499536
0x2584F892...A373ec02D
14.02 ETH
42362712017-09-04 4:23:342644 days ago1504499014
0x2584F892...A373ec02D
2.5 ETH
42362642017-09-04 4:20:342644 days ago1504498834
0x2584F892...A373ec02D
2 ETH
42362352017-09-04 4:06:572644 days ago1504498017
0x2584F892...A373ec02D
5 ETH
42362322017-09-04 4:06:282644 days ago1504497988
0x2584F892...A373ec02D
0.3 ETH
42361892017-09-04 3:48:222644 days ago1504496902
0x2584F892...A373ec02D
3 ETH
42361852017-09-04 3:46:332644 days ago1504496793
0x2584F892...A373ec02D
0.09 ETH
42361252017-09-04 3:18:262644 days ago1504495106
0x2584F892...A373ec02D
5 ETH
42361192017-09-04 3:15:372644 days ago1504494937
0x2584F892...A373ec02D
1.38 ETH
42361092017-09-04 3:12:362644 days ago1504494756
0x2584F892...A373ec02D
0.5 ETH
42361092017-09-04 3:12:362644 days ago1504494756
0x2584F892...A373ec02D
0.98 ETH
42361062017-09-04 3:10:452644 days ago1504494645
0x2584F892...A373ec02D
0.5 ETH
42361032017-09-04 3:09:352644 days ago1504494575
0x2584F892...A373ec02D
1 ETH
42361032017-09-04 3:09:352644 days ago1504494575
0x2584F892...A373ec02D
0.22 ETH
42360662017-09-04 2:51:582644 days ago1504493518
0x2584F892...A373ec02D
2 ETH
42360632017-09-04 2:51:132644 days ago1504493473
0x2584F892...A373ec02D
1.989 ETH
42360632017-09-04 2:51:132644 days ago1504493473
0x2584F892...A373ec02D
6 ETH
42360542017-09-04 2:46:582644 days ago1504493218
0x2584F892...A373ec02D
4 ETH
42360432017-09-04 2:42:312644 days ago1504492951
0x2584F892...A373ec02D
2 ETH
42360212017-09-04 2:32:062644 days ago1504492326
0x2584F892...A373ec02D
10 ETH
42360202017-09-04 2:31:582644 days ago1504492318
0x2584F892...A373ec02D
0.05 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PFCContribution

Compiler Version
v0.4.13+commit.fb4cb1a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.11;

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

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

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

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

    function max64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a >= b ? a : b;
    }

    function min64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a < b ? a : b;
    }

    function max256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a >= b ? a : b;
    }

    function min256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a < b ? a : b;
    }
}

/// @dev `Owned` is a base level contract that assigns an `owner` that can be
///  later changed
contract Owned {

    /// @dev `owner` is the only address that can call a function with this
    /// modifier
    modifier onlyOwner() {
        if(msg.sender != owner) throw;
        _;
    }

    address public owner;

    /// @notice The Constructor assigns the message sender to be `owner`
    function Owned() {
        owner = msg.sender;
    }

    address public newOwner;

    /// @notice `owner` can step down and assign some other address to this role
    /// @param _newOwner The address of the new owner. 0x0 can be used to create
    ///  an unowned neutral vault, however that cannot be undone
    function changeOwner(address _newOwner) onlyOwner {
        newOwner = _newOwner;
    }


    function acceptOwnership() {
        if (msg.sender == newOwner) {
            owner = newOwner;
        }
    }
}

contract ERC20Token {
    /* This is a slight change to the ERC20 base standard.
    function totalSupply() constant returns (uint256 supply);
    is replaced with:
    uint256 public totalSupply;
    This automatically creates a getter function for the totalSupply.
    This is moved to the base contract since public getter functions are not
    currently recognised as an implementation of the matching abstract
    function by the compiler.
    */
    /// total amount of tokens
    uint256 public totalSupply;

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256 balance);

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool success);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
contract Controlled {
    /// @notice The address of the controller is the only address that can call
    ///  a function with this modifier
    modifier onlyController { if (msg.sender != controller) throw; _; }

    address public controller;

    function Controlled() { controller = msg.sender;}

    /// @notice Changes the controller of the contract
    /// @param _newController The new controller of the contract
    function changeController(address _newController) onlyController {
        controller = _newController;
    }
}

contract StandardToken is ERC20Token ,Controlled{

    bool public showValue=true;

    // Flag that determines if the token is transferable or not.
    bool public transfersEnabled;

    function transfer(address _to, uint256 _value) returns (bool success) {

        if(!transfersEnabled) throw;

        if (balances[msg.sender] >= _value && _value > 0) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else {
            return false;
        }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {

        if(!transfersEnabled) throw;
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        } else {
            return false;
        }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        if(!showValue)
        return 0;
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        if(!transfersEnabled) throw;
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        if(!transfersEnabled) throw;
        return allowed[_owner][_spender];
    }

    /// @notice Enables token holders to transfer their tokens freely if true
    /// @param _transfersEnabled True if transfers are allowed in the clone
    function enableTransfers(bool _transfersEnabled) onlyController {
        transfersEnabled = _transfersEnabled;
    }
    function enableShowValue(bool _showValue) onlyController {
        showValue = _showValue;
    }

    function generateTokens(address _owner, uint _amount
    ) onlyController returns (bool) {
        uint curTotalSupply = totalSupply;
        if (curTotalSupply + _amount < curTotalSupply) throw; // Check for overflow
        totalSupply=curTotalSupply + _amount;

        balances[_owner]+=_amount;

        Transfer(0, _owner, _amount);
        return true;
    }
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
}

contract MiniMeTokenSimple is StandardToken {

    string public name;                //The Token's name: e.g. DigixDAO Tokens
    uint8 public decimals;             //Number of decimals of the smallest unit
    string public symbol;              //An identifier: e.g. REP
    string public version = 'MMT_0.1'; //An arbitrary versioning scheme


    // `parentToken` is the Token address that was cloned to produce this token;
    //  it will be 0x0 for a token that was not cloned
    address public parentToken;

    // `parentSnapShotBlock` is the block number from the Parent Token that was
    //  used to determine the initial distribution of the Clone Token
    uint public parentSnapShotBlock;

    // `creationBlock` is the block number that the Clone Token was created
    uint public creationBlock;

    // The factory used to create new clone tokens
    address public tokenFactory;

    ////////////////
    // Constructor
    ////////////////

    /// @notice Constructor to create a MiniMeTokenSimple
    /// @param _tokenFactory The address of the MiniMeTokenFactory contract that
    ///  will create the Clone token contracts, the token factory needs to be
    ///  deployed first
    /// @param _parentToken Address of the parent token, set to 0x0 if it is a
    ///  new token
    /// @param _parentSnapShotBlock Block of the parent token that will
    ///  determine the initial distribution of the clone token, set to 0 if it
    ///  is a new token
    /// @param _tokenName Name of the new token
    /// @param _decimalUnits Number of decimals of the new token
    /// @param _tokenSymbol Token Symbol for the new token
    /// @param _transfersEnabled If true, tokens will be able to be transferred
    function MiniMeTokenSimple(
    address _tokenFactory,
    address _parentToken,
    uint _parentSnapShotBlock,
    string _tokenName,
    uint8 _decimalUnits,
    string _tokenSymbol,
    bool _transfersEnabled
    ) {
        tokenFactory = _tokenFactory;
        name = _tokenName;                                 // Set the name
        decimals = _decimalUnits;                          // Set the decimals
        symbol = _tokenSymbol;                             // Set the symbol
        parentToken = _parentToken;
        parentSnapShotBlock = _parentSnapShotBlock;
        transfersEnabled = _transfersEnabled;
        creationBlock = block.number;
    }
    //////////
    // Safety Methods
    //////////

    /// @notice This method can be used by the controller to extract mistakenly
    ///  sent tokens to this contract.
    /// @param _token The address of the token contract that you want to recover
    ///  set to 0 in case you want to extract ether.
    function claimTokens(address _token) onlyController {
        if (_token == 0x0) {
            controller.transfer(this.balance);
            return;
        }

        ERC20Token token = ERC20Token(_token);
        uint balance = token.balanceOf(this);
        token.transfer(controller, balance);
        ClaimedTokens(_token, controller, balance);
    }

    event ClaimedTokens(address indexed _token, address indexed _controller, uint _amount);

}


contract PFCContribution is Owned {

    using SafeMath for uint256;
    MiniMeTokenSimple public PFC;
    uint256 public ratio=25000;

    uint256 public constant MIN_FUND = (0.001 ether);

    uint256 public startTime=0 ;
    uint256 public endTime =0;
    uint256 public finalizedBlock=0;
    uint256 public finalizedTime=0;

    bool public isFinalize = false;

    uint256 public totalContributedETH = 0;
    uint256 public totalTokenSaled=0;

    uint256 public MaxEth=15000 ether;


    address public pfcController;
    address public destEthFoundation;

    bool public paused;

    modifier initialized() {
        require(address(PFC) != 0x0);
        _;
    }

    modifier contributionOpen() {
        require(time() >= startTime &&
        time() <= endTime &&
        finalizedBlock == 0 &&
        address(PFC) != 0x0);
        _;
    }

    modifier notPaused() {
        require(!paused);
        _;
    }

    function PFCCContribution() {
        paused = false;
    }


    /// @notice This method should be called by the owner before the contribution
    ///  period starts This initializes most of the parameters
    /// @param _pfc Address of the PFC token contract
    /// @param _pfcController Token controller for the PFC that will be transferred after
    ///  the contribution finalizes.
    /// @param _startTime Time when the contribution period starts
    /// @param _endTime The time that the contribution period ends
    /// @param _destEthFoundation Destination address where the contribution ether is sent
    function initialize(
    address _pfc,
    address _pfcController,
    uint256 _startTime,
    uint256 _endTime,
    address _destEthFoundation,
    uint256 _maxEth
    ) public onlyOwner {
        // Initialize only once
        require(address(PFC) == 0x0);

        PFC = MiniMeTokenSimple(_pfc);
        require(PFC.totalSupply() == 0);
        require(PFC.controller() == address(this));
        require(PFC.decimals() == 18);  // Same amount of decimals as ETH

        startTime = _startTime;
        endTime = _endTime;

        assert(startTime < endTime);

        require(_pfcController != 0x0);
        pfcController = _pfcController;

        require(_destEthFoundation != 0x0);
        destEthFoundation = _destEthFoundation;

        require(_maxEth >1 ether);
        MaxEth=_maxEth;
    }

    /// @notice If anybody sends Ether directly to this contract, consider he is
    ///  getting PFCs.
    function () public payable notPaused {

        if(totalContributedETH>=MaxEth) throw;
        proxyPayment(msg.sender);
    }


    //////////
    // MiniMe Controller functions
    //////////

    /// @notice This method will generally be called by the PFC token contract to
    ///  acquire PFCs. Or directly from third parties that want to acquire PFCs in
    ///  behalf of a token holder.
    /// @param _account PFC holder where the PFC will be minted.
    function proxyPayment(address _account) public payable initialized contributionOpen returns (bool) {
        require(_account != 0x0);

        require( msg.value >= MIN_FUND );

        uint256 tokenSaling;
        uint256 rValue;
        uint256 t_totalContributedEth=totalContributedETH+msg.value;
        uint256 reFund=0;
        if(t_totalContributedEth>MaxEth) {
            reFund=t_totalContributedEth-MaxEth;
        }
        rValue=msg.value-reFund;
        tokenSaling=rValue.mul(ratio);
        if(reFund>0)
        msg.sender.transfer(reFund);
        assert(PFC.generateTokens(_account,tokenSaling));
        destEthFoundation.transfer(rValue);

        totalContributedETH +=rValue;
        totalTokenSaled+=tokenSaling;

        NewSale(msg.sender, rValue,tokenSaling);
    }

    function setMaxEth(uint256 _maxEth) onlyOwner initialized{
        MaxEth=_maxEth;
    }

    function setRatio(uint256 _ratio) onlyOwner initialized{
        ratio=_ratio;
    }

    function issueTokenToAddress(address _account, uint256 _amount) onlyOwner initialized {


        assert(PFC.generateTokens(_account, _amount));

        totalTokenSaled +=_amount;

        NewIssue(_account, _amount);

    }

    function finalize() public onlyOwner initialized {
        require(time() >= startTime);

        require(finalizedBlock == 0);

        finalizedBlock = getBlockNumber();
        finalizedTime = now;

        PFC.changeController(pfcController);
        isFinalize=true;
        Finalized();
    }

    function time() constant returns (uint) {
        return block.timestamp;
    }

    //////////
    // Constant functions
    //////////

    /// @return Total tokens issued in weis.
    function tokensIssued() public constant returns (uint256) {
        return PFC.totalSupply();
    }

    //////////
    // Testing specific methods
    //////////

    /// @notice This function is overridden by the test Mocks.
    function getBlockNumber() internal constant returns (uint256) {
        return block.number;
    }

    //////////
    // Safety Methods
    //////////

    /// @notice This method can be used by the controller to extract mistakenly
    ///  sent tokens to this contract.
    /// @param _token The address of the token contract that you want to recover
    ///  set to 0 in case you want to extract ether.
    function claimTokens(address _token) public onlyOwner {
        if (PFC.controller() == address(this)) {
            PFC.claimTokens(_token);
        }
        if (_token == 0x0) {
            owner.transfer(this.balance);
            return;
        }

        ERC20Token token = ERC20Token(_token);
        uint256 balance = token.balanceOf(this);
        token.transfer(owner, balance);
        ClaimedTokens(_token, owner, balance);
    }

    /// @notice Pauses the contribution if there is any issue
    function pauseContribution() onlyOwner {
        paused = true;
    }

    /// @notice Resumes the contribution
    function resumeContribution() onlyOwner {
        paused = false;
    }

    event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount);
    event NewSale(address _account, uint256 _amount,uint256 _tokenAmount);
    event NewIssue(address indexed _th, uint256 _amount);
    event Finalized();
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"PFCCContribution","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"time","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PFC","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalContributedETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalizedBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_maxEth","type":"uint256"}],"name":"setMaxEth","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pauseContribution","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"destEthFoundation","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_pfc","type":"address"},{"name":"_pfcController","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_destEthFoundation","type":"address"},{"name":"_maxEth","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MIN_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalize","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalTokenSaled","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ratio","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensIssued","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_amount","type":"uint256"}],"name":"issueTokenToAddress","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_ratio","type":"uint256"}],"name":"setRatio","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"resumeContribution","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MaxEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pfcController","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"}],"name":"proxyPayment","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"finalizedTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":true,"name":"_controller","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_account","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_tokenAmount","type":"uint256"}],"name":"NewSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_th","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"NewIssue","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"}]

60606040526161a8600355600060048190556005819055600681905560078190556008805460ff191690556009819055600a5569032d26d12e980b600000600b555b60008054600160a060020a03191633600160a060020a03161790555b5b6112468061006d6000396000f300606060405236156101645763ffffffff60e060020a6000350416630888ad4181146101b057806316ada547146101c55780633197cbb6146101ea5780633701fada1461020f5780633d5d07201461023e5780634084c3ab1461026357806342226e02146102885780634b8adcf7146102a05780634bb278f3146102b5578063503eb429146102ca57806354812d17146102f957806355b2bb0f146103315780635c975abb14610356578063671e44051461037d5780636af91799146103a457806371ca337d146103c957806378e97925146103ee57806379ba5097146104135780637c48bbda146104285780638da5cb5b1461044d5780638e9bf09c1461047c578063a6f9dae1146104a0578063b2237ba3146104c1578063b681f9f6146104d9578063cd48578f146104ee578063cfab886214610513578063d4ee1d9014610542578063df8de3e714610571578063f48c305414610592578063fe67a189146105ba575b6101ae5b600d5474010000000000000000000000000000000000000000900460ff161561019057600080fd5b600b54600954106101a057600080fd5b6101a9336105df565b505b5b565b005b34156101bb57600080fd5b6101ae610816565b005b34156101d057600080fd5b6101d8610837565b60405190815260200160405180910390f35b34156101f557600080fd5b6101d861083c565b60405190815260200160405180910390f35b341561021a57600080fd5b610222610842565b604051600160a060020a03909116815260200160405180910390f35b341561024957600080fd5b6101d8610851565b60405190815260200160405180910390f35b341561026e57600080fd5b6101d8610857565b60405190815260200160405180910390f35b341561029357600080fd5b6101ae60043561085d565b005b34156102ab57600080fd5b6101ae61089a565b005b34156102c057600080fd5b6101ae6108ee565b005b34156102d557600080fd5b6102226109fb565b604051600160a060020a03909116815260200160405180910390f35b341561030457600080fd5b6101ae600160a060020a0360043581169060243581169060443590606435906084351660a435610a0a565b005b341561033c57600080fd5b6101d8610c68565b60405190815260200160405180910390f35b341561036157600080fd5b610369610c73565b604051901515815260200160405180910390f35b341561038857600080fd5b610369610c94565b604051901515815260200160405180910390f35b34156103af57600080fd5b6101d8610c9d565b60405190815260200160405180910390f35b34156103d457600080fd5b6101d8610ca3565b60405190815260200160405180910390f35b34156103f957600080fd5b6101d8610ca9565b60405190815260200160405180910390f35b341561041e57600080fd5b6101ae610caf565b005b341561043357600080fd5b6101d8610cf9565b60405190815260200160405180910390f35b341561045857600080fd5b610222610d63565b604051600160a060020a03909116815260200160405180910390f35b341561048757600080fd5b6101ae600160a060020a0360043516602435610d72565b005b34156104ab57600080fd5b6101ae600160a060020a0360043516610e72565b005b34156104cc57600080fd5b6101ae600435610eba565b005b34156104e457600080fd5b6101ae610ef7565b005b34156104f957600080fd5b6101d8610f34565b60405190815260200160405180910390f35b341561051e57600080fd5b610222610f3a565b604051600160a060020a03909116815260200160405180910390f35b341561054d57600080fd5b610222610f49565b604051600160a060020a03909116815260200160405180910390f35b341561057c57600080fd5b6101ae600160a060020a0360043516610f58565b005b610369600160a060020a03600435166105df565b604051901515815260200160405180910390f35b34156105c557600080fd5b6101d86111e0565b60405190815260200160405180910390f35b6002546000908190819081908190600160a060020a0316151561060157600080fd5b60045461060c610837565b101580156106235750600554610620610837565b11155b801561062f5750600654155b80156106455750600254600160a060020a031615155b151561065057600080fd5b600160a060020a038616151561066557600080fd5b66038d7ea4c6800034101561067957600080fd5b3460095401915060009050600b548211156106955750600b5481035b80340392506106af600354846111e690919063ffffffff16565b935060008111156106eb57600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156106eb57600080fd5b5b600254600160a060020a031663827f32c0878660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561074b57600080fd5b6102c65a03f1151561075c57600080fd5b50505060405180519050151561076e57fe5b600d54600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156107a157600080fd5b6009805484019055600a8054850190557fa3ed4207b1480804a4590a74f4b9cc310dc0fc839af8d10e2141ca3b72fd93483384866040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5b50505050919050565b600d805474ff0000000000000000000000000000000000000000191690555b565b425b90565b60055481565b600254600160a060020a031681565b60095481565b60065481565b60005433600160a060020a0390811691161461087857600080fd5b600254600160a060020a0316151561088f57600080fd5b600b8190555b5b5b50565b60005433600160a060020a039081169116146108b557600080fd5b600d805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b60005433600160a060020a0390811691161461090957600080fd5b600254600160a060020a0316151561092057600080fd5b60045461092b610837565b101561093657600080fd5b6006541561094357600080fd5b61094b611215565b60065542600755600254600c54600160a060020a0391821691633cebb823911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b50506008805460ff19166001179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a15b5b5b565b600d54600160a060020a031681565b60005433600160a060020a03908116911614610a2557600080fd5b600254600160a060020a031615610a3b57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038881169190911791829055166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610aa657600080fd5b6102c65a03f11515610ab757600080fd5b5050506040518051159050610acb57600080fd5b600254600160a060020a03308116911663f77c47916000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b1757600080fd5b6102c65a03f11515610b2857600080fd5b50505060405180519050600160a060020a0316141515610b4757600080fd5b600254600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b8f57600080fd5b6102c65a03f11515610ba057600080fd5b5050506040518051905060ff166012141515610bbb57600080fd5b60048490556005839055828410610bce57fe5b600160a060020a0385161515610be357600080fd5b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038781169190911790915582161515610c1d57600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416179055670de0b6b3a76400008111610c5957600080fd5b600b8190555b5b505050505050565b66038d7ea4c6800081565b600d5474010000000000000000000000000000000000000000900460ff1681565b60085460ff1681565b600a5481565b60035481565b60045481565b60015433600160a060020a03908116911614156101ab576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b565b600254600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d4357600080fd5b6102c65a03f11515610d5457600080fd5b50505060405180519150505b90565b600054600160a060020a031681565b60005433600160a060020a03908116911614610d8d57600080fd5b600254600160a060020a03161515610da457600080fd5b600254600160a060020a031663827f32c0838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e0357600080fd5b6102c65a03f11515610e1457600080fd5b505050604051805190501515610e2657fe5b600a805482019055600160a060020a0382167fcde93eec44d2333fae3ca0af42ad74f9246177e0ac7d90d7999eb38d326649dd8260405190815260200160405180910390a25b5b5b5050565b60005433600160a060020a03908116911614610e8d57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a03908116911614610ed557600080fd5b600254600160a060020a03161515610eec57600080fd5b60038190555b5b5b50565b60005433600160a060020a0390811691161461081657600080fd5b600d805474ff0000000000000000000000000000000000000000191690555b5b565b600b5481565b600c54600160a060020a031681565b600154600160a060020a031681565b60008054819033600160a060020a03908116911614610f7657600080fd5b600254600160a060020a03308116911663f77c47916000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fc257600080fd5b6102c65a03f11515610fd357600080fd5b50505060405180519050600160a060020a0316141561105157600254600160a060020a031663df8de3e78460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561103c57600080fd5b6102c65a03f1151561104d57600080fd5b5050505b600160a060020a038316151561109f57600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561109a57600080fd5b6111da565b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156110f957600080fd5b6102c65a03f1151561110a57600080fd5b505050604051805160008054919350600160a060020a03808616935063a9059cbb92169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561117a57600080fd5b6102c65a03f1151561118b57600080fd5b50505060405180515050600054600160a060020a039081169084167ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c8360405190815260200160405180910390a35b5b505050565b60075481565b600082820283158061120257508284828115156111ff57fe5b04145b151561120a57fe5b8091505b5092915050565b435b905600a165627a7a7230582095497da6f8791e076bdce032b9d023dccea3603f6dd8b599a4f22bc8e9605c940029

Deployed Bytecode

0x606060405236156101645763ffffffff60e060020a6000350416630888ad4181146101b057806316ada547146101c55780633197cbb6146101ea5780633701fada1461020f5780633d5d07201461023e5780634084c3ab1461026357806342226e02146102885780634b8adcf7146102a05780634bb278f3146102b5578063503eb429146102ca57806354812d17146102f957806355b2bb0f146103315780635c975abb14610356578063671e44051461037d5780636af91799146103a457806371ca337d146103c957806378e97925146103ee57806379ba5097146104135780637c48bbda146104285780638da5cb5b1461044d5780638e9bf09c1461047c578063a6f9dae1146104a0578063b2237ba3146104c1578063b681f9f6146104d9578063cd48578f146104ee578063cfab886214610513578063d4ee1d9014610542578063df8de3e714610571578063f48c305414610592578063fe67a189146105ba575b6101ae5b600d5474010000000000000000000000000000000000000000900460ff161561019057600080fd5b600b54600954106101a057600080fd5b6101a9336105df565b505b5b565b005b34156101bb57600080fd5b6101ae610816565b005b34156101d057600080fd5b6101d8610837565b60405190815260200160405180910390f35b34156101f557600080fd5b6101d861083c565b60405190815260200160405180910390f35b341561021a57600080fd5b610222610842565b604051600160a060020a03909116815260200160405180910390f35b341561024957600080fd5b6101d8610851565b60405190815260200160405180910390f35b341561026e57600080fd5b6101d8610857565b60405190815260200160405180910390f35b341561029357600080fd5b6101ae60043561085d565b005b34156102ab57600080fd5b6101ae61089a565b005b34156102c057600080fd5b6101ae6108ee565b005b34156102d557600080fd5b6102226109fb565b604051600160a060020a03909116815260200160405180910390f35b341561030457600080fd5b6101ae600160a060020a0360043581169060243581169060443590606435906084351660a435610a0a565b005b341561033c57600080fd5b6101d8610c68565b60405190815260200160405180910390f35b341561036157600080fd5b610369610c73565b604051901515815260200160405180910390f35b341561038857600080fd5b610369610c94565b604051901515815260200160405180910390f35b34156103af57600080fd5b6101d8610c9d565b60405190815260200160405180910390f35b34156103d457600080fd5b6101d8610ca3565b60405190815260200160405180910390f35b34156103f957600080fd5b6101d8610ca9565b60405190815260200160405180910390f35b341561041e57600080fd5b6101ae610caf565b005b341561043357600080fd5b6101d8610cf9565b60405190815260200160405180910390f35b341561045857600080fd5b610222610d63565b604051600160a060020a03909116815260200160405180910390f35b341561048757600080fd5b6101ae600160a060020a0360043516602435610d72565b005b34156104ab57600080fd5b6101ae600160a060020a0360043516610e72565b005b34156104cc57600080fd5b6101ae600435610eba565b005b34156104e457600080fd5b6101ae610ef7565b005b34156104f957600080fd5b6101d8610f34565b60405190815260200160405180910390f35b341561051e57600080fd5b610222610f3a565b604051600160a060020a03909116815260200160405180910390f35b341561054d57600080fd5b610222610f49565b604051600160a060020a03909116815260200160405180910390f35b341561057c57600080fd5b6101ae600160a060020a0360043516610f58565b005b610369600160a060020a03600435166105df565b604051901515815260200160405180910390f35b34156105c557600080fd5b6101d86111e0565b60405190815260200160405180910390f35b6002546000908190819081908190600160a060020a0316151561060157600080fd5b60045461060c610837565b101580156106235750600554610620610837565b11155b801561062f5750600654155b80156106455750600254600160a060020a031615155b151561065057600080fd5b600160a060020a038616151561066557600080fd5b66038d7ea4c6800034101561067957600080fd5b3460095401915060009050600b548211156106955750600b5481035b80340392506106af600354846111e690919063ffffffff16565b935060008111156106eb57600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156106eb57600080fd5b5b600254600160a060020a031663827f32c0878660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561074b57600080fd5b6102c65a03f1151561075c57600080fd5b50505060405180519050151561076e57fe5b600d54600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156107a157600080fd5b6009805484019055600a8054850190557fa3ed4207b1480804a4590a74f4b9cc310dc0fc839af8d10e2141ca3b72fd93483384866040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5b50505050919050565b600d805474ff0000000000000000000000000000000000000000191690555b565b425b90565b60055481565b600254600160a060020a031681565b60095481565b60065481565b60005433600160a060020a0390811691161461087857600080fd5b600254600160a060020a0316151561088f57600080fd5b600b8190555b5b5b50565b60005433600160a060020a039081169116146108b557600080fd5b600d805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b60005433600160a060020a0390811691161461090957600080fd5b600254600160a060020a0316151561092057600080fd5b60045461092b610837565b101561093657600080fd5b6006541561094357600080fd5b61094b611215565b60065542600755600254600c54600160a060020a0391821691633cebb823911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b50506008805460ff19166001179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a15b5b5b565b600d54600160a060020a031681565b60005433600160a060020a03908116911614610a2557600080fd5b600254600160a060020a031615610a3b57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038881169190911791829055166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610aa657600080fd5b6102c65a03f11515610ab757600080fd5b5050506040518051159050610acb57600080fd5b600254600160a060020a03308116911663f77c47916000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b1757600080fd5b6102c65a03f11515610b2857600080fd5b50505060405180519050600160a060020a0316141515610b4757600080fd5b600254600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b8f57600080fd5b6102c65a03f11515610ba057600080fd5b5050506040518051905060ff166012141515610bbb57600080fd5b60048490556005839055828410610bce57fe5b600160a060020a0385161515610be357600080fd5b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038781169190911790915582161515610c1d57600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416179055670de0b6b3a76400008111610c5957600080fd5b600b8190555b5b505050505050565b66038d7ea4c6800081565b600d5474010000000000000000000000000000000000000000900460ff1681565b60085460ff1681565b600a5481565b60035481565b60045481565b60015433600160a060020a03908116911614156101ab576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b565b600254600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d4357600080fd5b6102c65a03f11515610d5457600080fd5b50505060405180519150505b90565b600054600160a060020a031681565b60005433600160a060020a03908116911614610d8d57600080fd5b600254600160a060020a03161515610da457600080fd5b600254600160a060020a031663827f32c0838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e0357600080fd5b6102c65a03f11515610e1457600080fd5b505050604051805190501515610e2657fe5b600a805482019055600160a060020a0382167fcde93eec44d2333fae3ca0af42ad74f9246177e0ac7d90d7999eb38d326649dd8260405190815260200160405180910390a25b5b5b5050565b60005433600160a060020a03908116911614610e8d57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a03908116911614610ed557600080fd5b600254600160a060020a03161515610eec57600080fd5b60038190555b5b5b50565b60005433600160a060020a0390811691161461081657600080fd5b600d805474ff0000000000000000000000000000000000000000191690555b5b565b600b5481565b600c54600160a060020a031681565b600154600160a060020a031681565b60008054819033600160a060020a03908116911614610f7657600080fd5b600254600160a060020a03308116911663f77c47916000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fc257600080fd5b6102c65a03f11515610fd357600080fd5b50505060405180519050600160a060020a0316141561105157600254600160a060020a031663df8de3e78460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561103c57600080fd5b6102c65a03f1151561104d57600080fd5b5050505b600160a060020a038316151561109f57600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561109a57600080fd5b6111da565b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156110f957600080fd5b6102c65a03f1151561110a57600080fd5b505050604051805160008054919350600160a060020a03808616935063a9059cbb92169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561117a57600080fd5b6102c65a03f1151561118b57600080fd5b50505060405180515050600054600160a060020a039081169084167ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c8360405190815260200160405180910390a35b5b505050565b60075481565b600082820283158061120257508284828115156111ff57fe5b04145b151561120a57fe5b8091505b5092915050565b435b905600a165627a7a7230582095497da6f8791e076bdce032b9d023dccea3603f6dd8b599a4f22bc8e9605c940029

Swarm Source

bzzr://95497da6f8791e076bdce032b9d023dccea3603f6dd8b599a4f22bc8e9605c94

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.