ETH Price: $3,242.55 (-9.64%)
Gas: 77 Gwei

Contract

0xaac3090257be280087D8bdc530265203d105b120
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Exchange51570982018-02-26 2:06:262213 days ago1519610786IN
Wanchain: Token Sale
0 ETH0.000209459
Exchange51568702018-02-26 1:11:062213 days ago1519607466IN
Wanchain: Token Sale
0 ETH0.000209459
Claim Tokens51441442018-02-23 21:10:562215 days ago1519420256IN
Wanchain: Token Sale
0 ETH0.000290638
Transfer51441312018-02-23 21:08:162215 days ago1519420096IN
Wanchain: Token Sale
0 ETH0.0002303810.46428569
Transfer47310132017-12-14 11:49:402286 days ago1513252180IN
Wanchain: Token Sale
0.0001 ETH0.001100850
Transfer47310012017-12-14 11:46:112286 days ago1513251971IN
Wanchain: Token Sale
0.0001 ETH0.001100850
Transfer47309772017-12-14 11:41:102286 days ago1513251670IN
Wanchain: Token Sale
0.0001 ETH0.001100850
Claim Tokens45838472017-11-19 19:15:332311 days ago1511118933IN
Wanchain: Token Sale
0 ETH0.0022642260
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
Transfer44207062017-10-24 12:36:402337 days ago1508848600IN
Wanchain: Token Sale
20 ETH0.0013209660
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
0x7f74657344206952017-10-24 12:33:432337 days ago1508848423IN
Wanchain: Token Sale
0.27 ETH0.0014194260
Transfer44206902017-10-24 12:31:552337 days ago1508848315IN
Wanchain: Token Sale
0.27 ETH0.0013209660
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
22.84701007 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
2.15298992 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
50 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
4 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
6 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
65 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
17 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
31 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
2.7 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
12.8 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
4.5 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
5.2 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
4.09 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
21.7 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
6.5 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
1 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
64 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
5 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
65 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
0.19 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
2.8 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
2 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
65 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
12 ETH
43365812017-10-04 16:10:552357 days ago1507133455
Wanchain: Token Sale
10 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WanchainContribution

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-10-02
*/

pragma solidity ^0.4.11;


/**
 * Math operations with safety checks
 */
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);
    uint c = a / b;
    assert(a == b * c + a % b);
    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() {
        require(msg.sender == owner);
        _;
    }

    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 ERC20Protocol {
    /* This is a slight change to the ERC20 base standard.
    function totalSupply() constant returns (uint supply);
    is replaced with:
    uint 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
    uint public totalSupply;

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint 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, uint _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, uint _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, uint _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 (uint remaining);

    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}


contract StandardToken is ERC20Protocol {
    using SafeMath for uint;

    /**
    * @dev Fix for the ERC20 short address attack.
    */
    modifier onlyPayloadSize(uint size) {
        require(msg.data.length >= size + 4);
        _;
    }

    function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) returns (bool success) {
        //Default assumes totalSupply can't be over max (2^256 - 1).
        //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
        //Replace the if with this one instead.
        //if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if (balances[msg.sender] >= _value) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else { return false; }
    }

    function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) returns (bool success) {
        //same as above. Replace this line with the following if you want to protect against wrapping uints.
        //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value) {
            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 (uint balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint _value) onlyPayloadSize(2 * 32) returns (bool success) {
        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        assert((_value == 0) || (allowed[msg.sender][_spender] == 0));

        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint remaining) {
      return allowed[_owner][_spender];
    }

    mapping (address => uint) balances;
    mapping (address => mapping (address => uint)) allowed;
}

/// @title Wanchain Token Contract
/// For more information about this token sale, please visit https://wanchain.org
/// @author Cathy - <[email protected]>
contract WanToken is StandardToken {
    using SafeMath for uint;

    /// Constant token specific fields
    string public constant name = "WanCoin";
    string public constant symbol = "WAN";
    uint public constant decimals = 18;

    /// Wanchain total tokens supply
    uint public constant MAX_TOTAL_TOKEN_AMOUNT = 210000000 ether;

    /// Fields that are only changed in constructor
    /// Wanchain contribution contract
    address public minter; 
    /// ICO start time
    uint public startTime;
    /// ICO end time
    uint public endTime;

    /// Fields that can be changed by functions
    mapping (address => uint) public lockedBalances;
    /*
     * MODIFIERS
     */

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

    modifier isLaterThan (uint x){
        assert(now > x);
        _;
    }

    modifier maxWanTokenAmountNotReached (uint amount){
        assert(totalSupply.add(amount) <= MAX_TOTAL_TOKEN_AMOUNT);
        _;
    }

    /**
     * CONSTRUCTOR 
     * 
     * @dev Initialize the Wanchain Token
     * @param _minter The Wanchain Contribution Contract     
     * @param _startTime ICO start time
     * @param _endTime ICO End Time
     */
    function WanToken(address _minter, uint _startTime, uint _endTime){
        minter = _minter;
        startTime = _startTime;
        endTime = _endTime;
    }

    /**
     * EXTERNAL FUNCTION 
     * 
     * @dev Contribution contract instance mint token
     * @param receipent The destination account owned mint tokens    
     * @param amount The amount of mint token
     * be sent to this address.
     */    
    function mintToken(address receipent, uint amount)
        external
        onlyMinter
        maxWanTokenAmountNotReached(amount)
        returns (bool)
    {
        require(now <= endTime);
        lockedBalances[receipent] = lockedBalances[receipent].add(amount);
        totalSupply = totalSupply.add(amount);
        return true;
    }

    /*
     * PUBLIC FUNCTIONS
     */

    /// @dev Locking period has passed - Locked tokens have turned into tradeable
    ///      All tokens owned by receipent will be tradeable
    function claimTokens(address receipent)
        public
        onlyMinter
    {
        balances[receipent] = balances[receipent].add(lockedBalances[receipent]);
        lockedBalances[receipent] = 0;
    }

    /*
     * CONSTANT METHODS
     */
    function lockedBalanceOf(address _owner) constant returns (uint balance) {
        return lockedBalances[_owner];
    }
}

/// @title Wanchain Contribution Contract
/// ICO Rules according: https://www.wanchain.org/crowdsale
/// For more information about this token sale, please visit https://wanchain.org
/// @author Zane Liang - <[email protected]>
contract WanchainContribution is Owned {
    using SafeMath for uint;

    /// Constant fields
    /// Wanchain total tokens supply
    uint public constant WAN_TOTAL_SUPPLY = 210000000 ether;
    uint public constant EARLY_CONTRIBUTION_DURATION = 24 hours;
    uint public constant MAX_CONTRIBUTION_DURATION = 3 weeks;

    /// Exchange rates for first phase
    uint public constant PRICE_RATE_FIRST = 880;
    /// Exchange rates for second phase
    uint public constant PRICE_RATE_SECOND = 790;
    /// Exchange rates for last phase
    uint public constant PRICE_RATE_LAST = 750;

    /// ----------------------------------------------------------------------------------------------------
    /// |                                                  |                    |                 |        |
    /// |        PUBLIC SALE (PRESALE + OPEN SALE)         |      DEV TEAM      |    FOUNDATION   |  MINER |
    /// |                       51%                        |         20%        |       19%       |   10%  |    
    /// ----------------------------------------------------------------------------------------------------
      /// OPEN_SALE_STAKE + PRESALE_STAKE = 51; 51% sale for public
    uint public constant OPEN_SALE_STAKE = 510;  // 51% for open sale

    // Reserved stakes
    uint public constant DEV_TEAM_STAKE = 200;   // 20%
    uint public constant FOUNDATION_STAKE = 190; // 19%
    uint public constant MINERS_STAKE = 100;     // 10%

    uint public constant DIVISOR_STAKE = 1000;

    uint public constant PRESALE_RESERVERED_AMOUNT = 41506655 ether; //presale prize amount(40000*880)
  
    /// Holder address for presale and reserved tokens
    /// TODO: change addressed before deployed to main net

    // Addresses of Patrons
    address public constant DEV_TEAM_HOLDER = 0x0001cdC69b1eb8bCCE29311C01092Bdcc92f8f8F;
    address public constant FOUNDATION_HOLDER = 0x00dB4023b32008C45E62Add57De256a9399752D4;
    address public constant MINERS_HOLDER = 0x00f870D11eA43AA1c4C715c61dC045E32d232787;
    address public constant PRESALE_HOLDER = 0x00577c25A81fA2401C5246F4a7D5ebaFfA4b00Aa;
  
    uint public MAX_OPEN_SOLD = WAN_TOTAL_SUPPLY * OPEN_SALE_STAKE / DIVISOR_STAKE - PRESALE_RESERVERED_AMOUNT;

    /// Fields that are only changed in constructor    
    /// All deposited ETH will be instantly forwarded to this address.
    address public wanport;
    /// Early Adopters reserved start time
    uint public earlyReserveBeginTime;
    /// Contribution start time
    uint public startTime;
    /// Contribution end time
    uint public endTime;

    /// Fields that can be changed by functions
    /// Accumulator for open sold tokens
    uint public openSoldTokens;
    /// Due to an emergency, set this to true to halt the contribution
    bool public halted; 
    /// ERC20 compilant wanchain token contact instance
    WanToken public wanToken; 

    /// Quota for early adopters sale, Quota
    mapping (address => uint256) public earlyUserQuotas;
    /// tags show address can join in open sale
    mapping (address => uint256) public fullWhiteList;

    uint256 public normalBuyLimit = 65 ether;

    /*
     * EVENTS
     */

    event NewSale(address indexed destAddress, uint ethCost, uint gotTokens);
    //event PartnerAddressQuota(address indexed partnerAddress, uint quota);

    /*
     * MODIFIERS
     */

    modifier onlyWallet {
        require(msg.sender == wanport);
        _;
    }

    modifier notHalted() {
        require(!halted);
        _;
    }

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

    modifier notEarlierThan(uint x) {
        require(now >= x);
        _;
    }

    modifier earlierThan(uint x) {
        require(now < x);
        _;
    }

    modifier ceilingNotReached() {
        require(openSoldTokens < MAX_OPEN_SOLD);
        _;
    }  

    modifier isSaleEnded() {
        require(now > endTime || openSoldTokens >= MAX_OPEN_SOLD);
        _;
    }


    /**
     * CONSTRUCTOR 
     * 
     * @dev Initialize the Wanchain contribution contract
     * @param _wanport The escrow account address, all ethers will be sent to this address.
     * @param _bootTime ICO boot time
     */
    function WanchainContribution(address _wanport, uint _bootTime){
      require(_wanport != 0x0);

        halted = false;
      wanport = _wanport;
        earlyReserveBeginTime = _bootTime;
      startTime = earlyReserveBeginTime + EARLY_CONTRIBUTION_DURATION;
      endTime = startTime + MAX_CONTRIBUTION_DURATION;
        openSoldTokens = 0;
        /// Create wanchain token contract instance
      wanToken = new WanToken(this,startTime, endTime);

        /// Reserve tokens according wanchain ICO rules
      uint stakeMultiplier = WAN_TOTAL_SUPPLY / DIVISOR_STAKE;
    
        wanToken.mintToken(DEV_TEAM_HOLDER, DEV_TEAM_STAKE * stakeMultiplier);
        wanToken.mintToken(FOUNDATION_HOLDER, FOUNDATION_STAKE * stakeMultiplier);
        wanToken.mintToken(MINERS_HOLDER, MINERS_STAKE * stakeMultiplier);
    
        wanToken.mintToken(PRESALE_HOLDER, PRESALE_RESERVERED_AMOUNT);    
    
    }

    /**
     * Fallback function 
     * 
     * @dev If anybody sends Ether directly to this  contract, consider he is getting wan token
     */
    function () public payable {
      buyWanCoin(msg.sender);
    }

    /*
     * PUBLIC FUNCTIONS
     */

    /// @dev Exchange msg.value ether to WAN for account recepient
    /// @param receipient WAN tokens receiver
    function buyWanCoin(address receipient) 
        public 
        payable 
        notHalted 
        initialized 
        ceilingNotReached 
        notEarlierThan(earlyReserveBeginTime)
        earlierThan(endTime)
        returns (bool) 
    {
        require(receipient != 0x0);
        require(msg.value >= 0.1 ether);

        // Do not allow contracts to game the system
        require(!isContract(msg.sender));        

        if( now < startTime && now >= earlyReserveBeginTime)
            buyEarlyAdopters(receipient);
        else {
            require( tx.gasprice <= 50000000000 wei );
            require(msg.value <= normalBuyLimit);
            buyNormal(receipient);
        }

        return true;
    }

    function setNormalBuyLimit(uint256 limit)
        public
        initialized
        onlyOwner
        earlierThan(endTime)
    {
        normalBuyLimit = limit;
    }


    /// @dev batch set quota for early user quota
    function setEarlyWhitelistQuotas(address[] users, uint earlyCap, uint openTag)
        public
        onlyOwner
        earlierThan(earlyReserveBeginTime)
    {
        for( uint i = 0; i < users.length; i++) {
            earlyUserQuotas[users[i]] = earlyCap;
            fullWhiteList[users[i]] = openTag;
        }
    }

    /// @dev batch set quota for early user quota
    function setLaterWhiteList(address[] users, uint openTag)
        public
        onlyOwner
        earlierThan(endTime)
    {
        require(saleNotEnd());
        for( uint i = 0; i < users.length; i++) {
            fullWhiteList[users[i]] = openTag;
        }
    }

    /// @dev Emergency situation that requires contribution period to stop.
    /// Contributing not possible anymore.
    function halt() public onlyWallet{
        halted = true;
    }

    /// @dev Emergency situation resolved.
    /// Contributing becomes possible again withing the outlined restrictions.
    function unHalt() public onlyWallet{
        halted = false;
    }

    /// @dev Emergency situation
    function changeWalletAddress(address newAddress) onlyWallet { 
        wanport = newAddress; 
    }

    /// @return true if sale not ended, false otherwise.
    function saleNotEnd() constant returns (bool) {
        return now < endTime && openSoldTokens < MAX_OPEN_SOLD;
    }

    /// CONSTANT METHODS
    /// @dev Get current exchange rate
    function priceRate() public constant returns (uint) {
        // Three price tiers
        if (earlyReserveBeginTime <= now && now < startTime + 1 weeks)
            return PRICE_RATE_FIRST;
        if (startTime + 1 weeks <= now && now < startTime + 2 weeks)
            return PRICE_RATE_SECOND;
        if (startTime + 2 weeks <= now && now < endTime)
            return PRICE_RATE_LAST;
        // Should not be called before or after contribution period
        assert(false);
    }

    function claimTokens(address receipent)
        public
        isSaleEnded
    {
        wanToken.claimTokens(receipent);
    }

    /*
     * INTERNAL FUNCTIONS
     */

    /// @dev Buy wanchain tokens for early adopters
    function buyEarlyAdopters(address receipient) internal {
      uint quotaAvailable = earlyUserQuotas[receipient];
      require(quotaAvailable > 0);

        uint toFund = quotaAvailable.min256(msg.value);
        uint tokenAvailable4Adopter = toFund.mul(PRICE_RATE_FIRST);

      earlyUserQuotas[receipient] = earlyUserQuotas[receipient].sub(toFund);
      buyCommon(receipient, toFund, tokenAvailable4Adopter);
    }

    /// @dev Buy wanchain token normally
    function buyNormal(address receipient) internal {
        uint inWhiteListTag = fullWhiteList[receipient];
        require(inWhiteListTag > 0);

        // protect partner quota in stage one
        uint tokenAvailable = MAX_OPEN_SOLD.sub(openSoldTokens);
        require(tokenAvailable > 0);

      uint toFund;
      uint toCollect;
      (toFund, toCollect) = costAndBuyTokens(tokenAvailable);
        buyCommon(receipient, toFund, toCollect);
    }

    /// @dev Utility function for bug wanchain token
    function buyCommon(address receipient, uint toFund, uint wanTokenCollect) internal {
        require(msg.value >= toFund); // double check

        if(toFund > 0) {
            require(wanToken.mintToken(receipient, wanTokenCollect));         
            wanport.transfer(toFund);
            openSoldTokens = openSoldTokens.add(wanTokenCollect);
            NewSale(receipient, toFund, wanTokenCollect);            
        }

        uint toReturn = msg.value.sub(toFund);
        if(toReturn > 0) {
            msg.sender.transfer(toReturn);
        }
    }

    /// @dev Utility function for calculate available tokens and cost ethers
    function costAndBuyTokens(uint availableToken) constant internal returns (uint costValue, uint getTokens){
      // all conditions has checked in the caller functions
      uint exchangeRate = priceRate();
      getTokens = exchangeRate * msg.value;

      if(availableToken >= getTokens){
        costValue = msg.value;
      } else {
        costValue = availableToken / exchangeRate;
        getTokens = availableToken;
      }
    }

    /// @dev Internal function to determine if an address is a contract
    /// @param _addr The address being queried
    /// @return True if `_addr` is a contract
    function isContract(address _addr) constant internal returns(bool) {
        uint size;
        if (_addr == 0) return false;
        assembly {
            size := extcodesize(_addr)
        }
        return size > 0;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"DEV_TEAM_STAKE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"},{"name":"earlyCap","type":"uint256"},{"name":"openTag","type":"uint256"}],"name":"setEarlyWhitelistQuotas","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRICE_RATE_LAST","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"normalBuyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DEV_TEAM_HOLDER","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_HOLDER","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_OPEN_SOLD","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":"","type":"address"}],"name":"earlyUserQuotas","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DIVISOR_STAKE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"uint256"}],"name":"setNormalBuyLimit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"saleNotEnd","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"EARLY_CONTRIBUTION_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRESALE_RESERVERED_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unHalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRICE_RATE_SECOND","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":"wanport","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MINERS_HOLDER","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wanToken","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"},{"name":"openTag","type":"uint256"}],"name":"setLaterWhiteList","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"FOUNDATION_STAKE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"OPEN_SALE_STAKE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"openSoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"WAN_TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRICE_RATE_FIRST","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRESALE_HOLDER","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"priceRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"receipient","type":"address"}],"name":"buyWanCoin","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"receipent","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_CONTRIBUTION_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newAddress","type":"address"}],"name":"changeWalletAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MINERS_STAKE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"earlyReserveBeginTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"fullWhiteList","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_wanport","type":"address"},{"name":"_bootTime","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"destAddress","type":"address"},{"indexed":false,"name":"ethCost","type":"uint256"},{"indexed":false,"name":"gotTokens","type":"uint256"}],"name":"NewSale","type":"event"}]

60606040526a22556046b3c0d21a1c00006103e86c015a0f0b29a8eda647dc0000005b04036002556803860e639d80640000600b5534156200004057600080fd5b604051604080620020ca83398101604052808051919060200180519150505b60005b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a03831615156200009457600080fd5b6008805460ff1916905560038054600160a060020a031916600160a060020a03851617905560048290556201518082016005819055621d0100830160068190556000600755309190620000e662000435565b8084600160a060020a0316600160a060020a031681526020018381526020018281526020019350505050604051809103906000f08015156200012757600080fd5b60088054600160a060020a03929092166101000261010060a860020a03199092169190911790556103e86aadb53acfa41aee120000005b60085491900491506101009004600160a060020a03166379c650687201cdc69b1eb8bcce29311c01092bdcc92f8f8f60c884026000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620001f757600080fd5b6102c65a03f115156200020957600080fd5b505050604051805150506008546101009004600160a060020a03166379c6506872db4023b32008c45e62add57de256a9399752d460be84026000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620002a757600080fd5b6102c65a03f11515620002b957600080fd5b505050604051805150506008546101009004600160a060020a03166379c6506872f870d11ea43aa1c4c715c61dc045e32d232787606484026000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200035757600080fd5b6102c65a03f115156200036957600080fd5b505050604051805150506008546101009004600160a060020a03166379c6506872577c25a81fa2401c5246f4a7d5ebaffa4b00aa6a22556046b3c0d21a1c00006000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200040f57600080fd5b6102c65a03f115156200042157600080fd5b505050604051805150505b50505062000446565b604051610a2c806200169e83390190565b61124880620004566000396000f300606060405236156101dc5763ffffffff60e060020a6000350416620150a081146101ef578063072ce64f146102145780630dbf19cb1461026c57806315c8d628146102915780631ca4399b146102b657806323967d78146102e55780632f86f2ee146103145780633197cbb6146103395780633da3b2721461035e5780633f423afe1461038f57806340a50a5e146103b45780634f93995d146103cc5780635ed7ca5b146103f3578063671982071461040857806374aa9e2c1461042d57806376865eea14610452578063773ef38e1461046757806378e979251461048c57806379ba5097146104b15780637f0bd881146104c65780638261c4c7146104f5578063847e27d91461052457806385f77693146105535780638d6cd879146105a65780638da5cb5b146105cb57806391aadff6146105fa578063a6f9dae11461061f578063b2450b1514610640578063b6d8f59d14610665578063b9b8af0b1461068a578063bdf75a6a146106b1578063ca75b954146106d6578063ceb791d914610705578063d4ee1d901461072a578063df4ebd9d14610759578063df8de3e714610781578063e9d8d3d7146107a2578063ec8edf7a146107c7578063ed0b01cf146107e8578063ef80c53a1461080d578063fcdbe6df14610832575b6101ed5b6101e933610863565b505b565b005b34156101fa57600080fd5b61020261095d565b60405190815260200160405180910390f35b341561021f57600080fd5b6101ed60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505084359460200135935061096292505050565b005b341561027757600080fd5b610202610a26565b60405190815260200160405180910390f35b341561029c57600080fd5b610202610a2c565b60405190815260200160405180910390f35b34156102c157600080fd5b6102c9610a32565b604051600160a060020a03909116815260200160405180910390f35b34156102f057600080fd5b6102c9610a49565b604051600160a060020a03909116815260200160405180910390f35b341561031f57600080fd5b610202610a60565b60405190815260200160405180910390f35b341561034457600080fd5b610202610a66565b60405190815260200160405180910390f35b341561036957600080fd5b610202600160a060020a0360043516610a6c565b60405190815260200160405180910390f35b341561039a57600080fd5b610202610a7e565b60405190815260200160405180910390f35b34156103bf57600080fd5b6101ed600435610a84565b005b34156103d757600080fd5b6103df610ad3565b604051901515815260200160405180910390f35b34156103fe57600080fd5b6101ed610aef565b005b341561041357600080fd5b610202610b1b565b60405190815260200160405180910390f35b341561043857600080fd5b610202610b22565b60405190815260200160405180910390f35b341561045d57600080fd5b6101ed610b31565b005b341561047257600080fd5b610202610b5a565b60405190815260200160405180910390f35b341561049757600080fd5b610202610b60565b60405190815260200160405180910390f35b34156104bc57600080fd5b6101ed610b66565b005b34156104d157600080fd5b6102c9610bb0565b604051600160a060020a03909116815260200160405180910390f35b341561050057600080fd5b6102c9610bbf565b604051600160a060020a03909116815260200160405180910390f35b341561052f57600080fd5b6102c9610bd6565b604051600160a060020a03909116815260200160405180910390f35b341561055e57600080fd5b6101ed60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505093359350610bea92505050565b005b34156105b157600080fd5b610202610c81565b60405190815260200160405180910390f35b34156105d657600080fd5b6102c9610c86565b604051600160a060020a03909116815260200160405180910390f35b341561060557600080fd5b610202610c95565b60405190815260200160405180910390f35b341561062a57600080fd5b6101ed600160a060020a0360043516610c9b565b005b341561064b57600080fd5b610202610ce3565b60405190815260200160405180910390f35b341561067057600080fd5b610202610ce9565b60405190815260200160405180910390f35b341561069557600080fd5b6103df610cf8565b604051901515815260200160405180910390f35b34156106bc57600080fd5b610202610d01565b60405190815260200160405180910390f35b34156106e157600080fd5b6102c9610d07565b604051600160a060020a03909116815260200160405180910390f35b341561071057600080fd5b610202610d1e565b60405190815260200160405180910390f35b341561073557600080fd5b6102c9610d9d565b604051600160a060020a03909116815260200160405180910390f35b6103df600160a060020a0360043516610863565b604051901515815260200160405180910390f35b341561078c57600080fd5b6101ed600160a060020a0360043516610dac565b005b34156107ad57600080fd5b610202610e39565b60405190815260200160405180910390f35b34156107d257600080fd5b6101ed600160a060020a0360043516610e40565b005b34156107f357600080fd5b610202610e88565b60405190815260200160405180910390f35b341561081857600080fd5b610202610e8d565b60405190815260200160405180910390f35b341561083d57600080fd5b610202600160a060020a0360043516610e93565b60405190815260200160405180910390f35b60085460009060ff161561087657600080fd5b600354600160a060020a0316151561088d57600080fd5b6002546007541061089d57600080fd5b60045442819010156108ae57600080fd5b600654428190106108be57600080fd5b600160a060020a03841615156108d357600080fd5b67016345785d8a00003410156108e857600080fd5b6108f133610ea5565b156108fb57600080fd5b6005544210801561090e57506004544210155b156109215761091c84610ed2565b61094b565b640ba43b74003a111561093357600080fd5b600b5434111561094257600080fd5b61094b84610f74565b5b600192505b5b505b505b5b5b919050565b60c881565b6000805433600160a060020a0390811691161461097e57600080fd5b6004544281901061098e57600080fd5b600091505b8451821015610a1c5783600960008785815181106109ad57fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000208190555082600a60008785815181106109ec57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600190910190610993565b5b5b505b50505050565b6102ee81565b600b5481565b7201cdc69b1eb8bcce29311c01092bdcc92f8f8f81565b72db4023b32008c45e62add57de256a9399752d481565b60025481565b60065481565b60096020526000908152604090205481565b6103e881565b600354600160a060020a03161515610a9b57600080fd5b60005433600160a060020a03908116911614610ab657600080fd5b60065442819010610ac657600080fd5b600b8290555b5b505b5b50565b600060065442108015610ae95750600254600754105b90505b90565b60035433600160a060020a03908116911614610b0a57600080fd5b6008805460ff191660011790555b5b565b6201518081565b6a22556046b3c0d21a1c000081565b60035433600160a060020a03908116911614610b4c57600080fd5b6008805460ff191690555b5b565b61031681565b60055481565b60015433600160a060020a03908116911614156101eb576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b565b600354600160a060020a031681565b72f870d11ea43aa1c4c715c61dc045e32d23278781565b6008546101009004600160a060020a031681565b6000805433600160a060020a03908116911614610c0657600080fd5b60065442819010610c1657600080fd5b610c1e610ad3565b1515610c2957600080fd5b600091505b8351821015610a205782600a6000868581518110610c4857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600190910190610c2e565b5b5b505b505050565b60be81565b600054600160a060020a031681565b6101fe81565b60005433600160a060020a03908116911614610cb657600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60075481565b6aadb53acfa41aee1200000081565b60085460ff1681565b61037081565b72577c25a81fa2401c5246f4a7d5ebaffa4b00aa81565b60004260045411158015610d38575060055462093a800142105b15610d465750610370610aec565b4260055462093a800111158015610d635750600554621275000142105b15610d715750610316610aec565b42600554621275000111158015610d89575060065442105b15610d9757506102ee610aec565bfe5b5b90565b600154600160a060020a031681565b600654421180610dc0575060025460075410155b1515610dcb57600080fd5b6008546101009004600160a060020a031663df8de3e78260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610e2057600080fd5b6102c65a03f11515610a2057600080fd5b5050505b5b50565b621baf8081565b60035433600160a060020a03908116911614610e5b57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b606481565b60045481565b600a6020526000908152604090205481565b600080600160a060020a0383161515610ec15760009150610954565b823b90506000811191505b50919050565b600160a060020a0381166000908152600960205260408120549080808311610ef957600080fd5b610f09833463ffffffff610fe116565b9150610f1d8261037063ffffffff610ffb16565b600160a060020a038516600090815260096020526040902054909150610f49908363ffffffff61102a16565b600160a060020a038516600090815260096020526040902055610a20848383611041565b5b50505050565b600160a060020a0381166000908152600a6020526040812054908080808411610f9c57600080fd5b600754600254610fb19163ffffffff61102a16565b925060008311610fc057600080fd5b610fc9836111c6565b9092509050610a1c858383611041565b5b5050505050565b6000818310610ff05781610ff2565b825b90505b92915050565b6000828202831580611017575082848281151561101457fe5b04145b151561101f57fe5b8091505b5092915050565b60008282111561103657fe5b508082035b92915050565b6000348390101561105157600080fd5b6000831115611172576008546101009004600160a060020a03166379c65068858460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110be57600080fd5b6102c65a03f115156110cf57600080fd5b5050506040518051905015156110e457600080fd5b600354600160a060020a031683156108fc0284604051600060405180830381858888f19350505050151561111757600080fd5b60075461112a908363ffffffff61120216565b600755600160a060020a0384167fa3ed4207b1480804a4590a74f4b9cc310dc0fc839af8d10e2141ca3b72fd9348848460405191825260208201526040908101905180910390a25b611182348463ffffffff61102a16565b90506000811115610a2057600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610a2057600080fd5b5b5b50505050565b60008060006111d3610d1e565b348102925090508184106111e9573492506111fb565b80848115156111f457fe5b0492508391505b5b50915091565b60008282018381101561101f57fe5b8091505b50929150505600a165627a7a723058209f5504cb9e61fb0a419a0f8e7c7ae711531548c4c30af6f97d7b374816858ad400296060604052341561000f57600080fd5b604051606080610a2c8339810160405280805191906020018051919060200180519150505b60038054600160a060020a031916600160a060020a038516179055600482905560058190555b5050505b6109bf8061006d6000396000f300606060405236156100ee5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630483a7f681146100f357806306fdde031461012457806307546172146101af578063095ea7b3146101de57806318160ddd1461021457806323b872dd14610239578063313ce567146102755780633197cbb61461029a57806359355736146102bf57806370a08231146102f057806378e979251461032157806379c650681461034657806395d89b411461037c578063a89c5be014610407578063a9059cbb1461042c578063dd62ed3e14610462578063df8de3e714610499575b600080fd5b34156100fe57600080fd5b610112600160a060020a03600435166104ba565b60405190815260200160405180910390f35b341561012f57600080fd5b6101376104cc565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101745780820151818401525b60200161015b565b50505050905090810190601f1680156101a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101ba57600080fd5b6101c2610503565b604051600160a060020a03909116815260200160405180910390f35b34156101e957600080fd5b610200600160a060020a0360043516602435610512565b604051901515815260200160405180910390f35b341561021f57600080fd5b6101126105c9565b60405190815260200160405180910390f35b341561024457600080fd5b610200600160a060020a03600435811690602435166044356105cf565b604051901515815260200160405180910390f35b341561028057600080fd5b6101126106d2565b60405190815260200160405180910390f35b34156102a557600080fd5b6101126106d7565b60405190815260200160405180910390f35b34156102ca57600080fd5b610112600160a060020a03600435166106dd565b60405190815260200160405180910390f35b34156102fb57600080fd5b610112600160a060020a03600435166106fc565b60405190815260200160405180910390f35b341561032c57600080fd5b61011261071b565b60405190815260200160405180910390f35b341561035157600080fd5b610200600160a060020a0360043516602435610721565b604051901515815260200160405180910390f35b341561038757600080fd5b6101376107dc565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101745780820151818401525b60200161015b565b50505050905090810190601f1680156101a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041257600080fd5b610112610813565b60405190815260200160405180910390f35b341561043757600080fd5b610200600160a060020a0360043516602435610822565b604051901515815260200160405180910390f35b341561046d57600080fd5b610112600160a060020a03600435811690602435166108d4565b60405190815260200160405180910390f35b34156104a457600080fd5b6104b8600160a060020a0360043516610901565b005b60066020526000908152604090205481565b60408051908101604052600781527f57616e436f696e00000000000000000000000000000000000000000000000000602082015281565b600354600160a060020a031681565b60006040604436101561052457600080fd5b8215806105545750600160a060020a03338116600090815260026020908152604080832093881683529290522054155b151561055c57fe5b600160a060020a03338116600081815260026020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a3600191505b5b5092915050565b60005481565b6000606060643610156105e157600080fd5b600160a060020a0385166000908152600160205260409020548390108015906106315750600160a060020a0380861660009081526002602090815260408083203390941683529290522054839010155b156106c357600160a060020a03808516600081815260016020908152604080832080548901905589851680845281842080548a90039055600283528184203390961684529490915290819020805487900390559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191506106c8565b600091505b5b5b509392505050565b601281565b60055481565b600160a060020a0381166000908152600660205260409020545b919050565b600160a060020a0381166000908152600160205260409020545b919050565b60045481565b60035460009033600160a060020a0390811691161461073c57fe5b816aadb53acfa41aee1200000061075e8260005461097990919063ffffffff16565b111561076657fe5b60055442111561077557600080fd5b600160a060020a03841660009081526006602052604090205461079e908463ffffffff61097916565b600160a060020a038516600090815260066020526040812091909155546107cb908463ffffffff61097916565b600055600191505b5b505b92915050565b60408051908101604052600381527f57414e0000000000000000000000000000000000000000000000000000000000602082015281565b6aadb53acfa41aee1200000081565b60006040604436101561083457600080fd5b600160a060020a0333166000908152600160205260409020548390106108c257600160a060020a033381166000818152600160205260408082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191506105c1565b600091506105c1565b5b5b5092915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461091957fe5b600160a060020a03811660009081526006602090815260408083205460019092529091205461094d9163ffffffff61097916565b600160a060020a03821660009081526001602090815260408083209390935560069052908120555b5b50565b60008282018381101561098857fe5b8091505b50929150505600a165627a7a72305820cf354415565dbcba55ca7d803241ed623e9875b86e7d49619e734c70d0b4d0bf00290000000000000000000000000010242590b52545afdc82fe44b064ce055479eb0000000000000000000000000000000000000000000000000000000059d3b400

Deployed Bytecode

0x606060405236156101dc5763ffffffff60e060020a6000350416620150a081146101ef578063072ce64f146102145780630dbf19cb1461026c57806315c8d628146102915780631ca4399b146102b657806323967d78146102e55780632f86f2ee146103145780633197cbb6146103395780633da3b2721461035e5780633f423afe1461038f57806340a50a5e146103b45780634f93995d146103cc5780635ed7ca5b146103f3578063671982071461040857806374aa9e2c1461042d57806376865eea14610452578063773ef38e1461046757806378e979251461048c57806379ba5097146104b15780637f0bd881146104c65780638261c4c7146104f5578063847e27d91461052457806385f77693146105535780638d6cd879146105a65780638da5cb5b146105cb57806391aadff6146105fa578063a6f9dae11461061f578063b2450b1514610640578063b6d8f59d14610665578063b9b8af0b1461068a578063bdf75a6a146106b1578063ca75b954146106d6578063ceb791d914610705578063d4ee1d901461072a578063df4ebd9d14610759578063df8de3e714610781578063e9d8d3d7146107a2578063ec8edf7a146107c7578063ed0b01cf146107e8578063ef80c53a1461080d578063fcdbe6df14610832575b6101ed5b6101e933610863565b505b565b005b34156101fa57600080fd5b61020261095d565b60405190815260200160405180910390f35b341561021f57600080fd5b6101ed60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505084359460200135935061096292505050565b005b341561027757600080fd5b610202610a26565b60405190815260200160405180910390f35b341561029c57600080fd5b610202610a2c565b60405190815260200160405180910390f35b34156102c157600080fd5b6102c9610a32565b604051600160a060020a03909116815260200160405180910390f35b34156102f057600080fd5b6102c9610a49565b604051600160a060020a03909116815260200160405180910390f35b341561031f57600080fd5b610202610a60565b60405190815260200160405180910390f35b341561034457600080fd5b610202610a66565b60405190815260200160405180910390f35b341561036957600080fd5b610202600160a060020a0360043516610a6c565b60405190815260200160405180910390f35b341561039a57600080fd5b610202610a7e565b60405190815260200160405180910390f35b34156103bf57600080fd5b6101ed600435610a84565b005b34156103d757600080fd5b6103df610ad3565b604051901515815260200160405180910390f35b34156103fe57600080fd5b6101ed610aef565b005b341561041357600080fd5b610202610b1b565b60405190815260200160405180910390f35b341561043857600080fd5b610202610b22565b60405190815260200160405180910390f35b341561045d57600080fd5b6101ed610b31565b005b341561047257600080fd5b610202610b5a565b60405190815260200160405180910390f35b341561049757600080fd5b610202610b60565b60405190815260200160405180910390f35b34156104bc57600080fd5b6101ed610b66565b005b34156104d157600080fd5b6102c9610bb0565b604051600160a060020a03909116815260200160405180910390f35b341561050057600080fd5b6102c9610bbf565b604051600160a060020a03909116815260200160405180910390f35b341561052f57600080fd5b6102c9610bd6565b604051600160a060020a03909116815260200160405180910390f35b341561055e57600080fd5b6101ed60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505093359350610bea92505050565b005b34156105b157600080fd5b610202610c81565b60405190815260200160405180910390f35b34156105d657600080fd5b6102c9610c86565b604051600160a060020a03909116815260200160405180910390f35b341561060557600080fd5b610202610c95565b60405190815260200160405180910390f35b341561062a57600080fd5b6101ed600160a060020a0360043516610c9b565b005b341561064b57600080fd5b610202610ce3565b60405190815260200160405180910390f35b341561067057600080fd5b610202610ce9565b60405190815260200160405180910390f35b341561069557600080fd5b6103df610cf8565b604051901515815260200160405180910390f35b34156106bc57600080fd5b610202610d01565b60405190815260200160405180910390f35b34156106e157600080fd5b6102c9610d07565b604051600160a060020a03909116815260200160405180910390f35b341561071057600080fd5b610202610d1e565b60405190815260200160405180910390f35b341561073557600080fd5b6102c9610d9d565b604051600160a060020a03909116815260200160405180910390f35b6103df600160a060020a0360043516610863565b604051901515815260200160405180910390f35b341561078c57600080fd5b6101ed600160a060020a0360043516610dac565b005b34156107ad57600080fd5b610202610e39565b60405190815260200160405180910390f35b34156107d257600080fd5b6101ed600160a060020a0360043516610e40565b005b34156107f357600080fd5b610202610e88565b60405190815260200160405180910390f35b341561081857600080fd5b610202610e8d565b60405190815260200160405180910390f35b341561083d57600080fd5b610202600160a060020a0360043516610e93565b60405190815260200160405180910390f35b60085460009060ff161561087657600080fd5b600354600160a060020a0316151561088d57600080fd5b6002546007541061089d57600080fd5b60045442819010156108ae57600080fd5b600654428190106108be57600080fd5b600160a060020a03841615156108d357600080fd5b67016345785d8a00003410156108e857600080fd5b6108f133610ea5565b156108fb57600080fd5b6005544210801561090e57506004544210155b156109215761091c84610ed2565b61094b565b640ba43b74003a111561093357600080fd5b600b5434111561094257600080fd5b61094b84610f74565b5b600192505b5b505b505b5b5b919050565b60c881565b6000805433600160a060020a0390811691161461097e57600080fd5b6004544281901061098e57600080fd5b600091505b8451821015610a1c5783600960008785815181106109ad57fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000208190555082600a60008785815181106109ec57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600190910190610993565b5b5b505b50505050565b6102ee81565b600b5481565b7201cdc69b1eb8bcce29311c01092bdcc92f8f8f81565b72db4023b32008c45e62add57de256a9399752d481565b60025481565b60065481565b60096020526000908152604090205481565b6103e881565b600354600160a060020a03161515610a9b57600080fd5b60005433600160a060020a03908116911614610ab657600080fd5b60065442819010610ac657600080fd5b600b8290555b5b505b5b50565b600060065442108015610ae95750600254600754105b90505b90565b60035433600160a060020a03908116911614610b0a57600080fd5b6008805460ff191660011790555b5b565b6201518081565b6a22556046b3c0d21a1c000081565b60035433600160a060020a03908116911614610b4c57600080fd5b6008805460ff191690555b5b565b61031681565b60055481565b60015433600160a060020a03908116911614156101eb576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b565b600354600160a060020a031681565b72f870d11ea43aa1c4c715c61dc045e32d23278781565b6008546101009004600160a060020a031681565b6000805433600160a060020a03908116911614610c0657600080fd5b60065442819010610c1657600080fd5b610c1e610ad3565b1515610c2957600080fd5b600091505b8351821015610a205782600a6000868581518110610c4857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600190910190610c2e565b5b5b505b505050565b60be81565b600054600160a060020a031681565b6101fe81565b60005433600160a060020a03908116911614610cb657600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60075481565b6aadb53acfa41aee1200000081565b60085460ff1681565b61037081565b72577c25a81fa2401c5246f4a7d5ebaffa4b00aa81565b60004260045411158015610d38575060055462093a800142105b15610d465750610370610aec565b4260055462093a800111158015610d635750600554621275000142105b15610d715750610316610aec565b42600554621275000111158015610d89575060065442105b15610d9757506102ee610aec565bfe5b5b90565b600154600160a060020a031681565b600654421180610dc0575060025460075410155b1515610dcb57600080fd5b6008546101009004600160a060020a031663df8de3e78260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610e2057600080fd5b6102c65a03f11515610a2057600080fd5b5050505b5b50565b621baf8081565b60035433600160a060020a03908116911614610e5b57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b606481565b60045481565b600a6020526000908152604090205481565b600080600160a060020a0383161515610ec15760009150610954565b823b90506000811191505b50919050565b600160a060020a0381166000908152600960205260408120549080808311610ef957600080fd5b610f09833463ffffffff610fe116565b9150610f1d8261037063ffffffff610ffb16565b600160a060020a038516600090815260096020526040902054909150610f49908363ffffffff61102a16565b600160a060020a038516600090815260096020526040902055610a20848383611041565b5b50505050565b600160a060020a0381166000908152600a6020526040812054908080808411610f9c57600080fd5b600754600254610fb19163ffffffff61102a16565b925060008311610fc057600080fd5b610fc9836111c6565b9092509050610a1c858383611041565b5b5050505050565b6000818310610ff05781610ff2565b825b90505b92915050565b6000828202831580611017575082848281151561101457fe5b04145b151561101f57fe5b8091505b5092915050565b60008282111561103657fe5b508082035b92915050565b6000348390101561105157600080fd5b6000831115611172576008546101009004600160a060020a03166379c65068858460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110be57600080fd5b6102c65a03f115156110cf57600080fd5b5050506040518051905015156110e457600080fd5b600354600160a060020a031683156108fc0284604051600060405180830381858888f19350505050151561111757600080fd5b60075461112a908363ffffffff61120216565b600755600160a060020a0384167fa3ed4207b1480804a4590a74f4b9cc310dc0fc839af8d10e2141ca3b72fd9348848460405191825260208201526040908101905180910390a25b611182348463ffffffff61102a16565b90506000811115610a2057600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610a2057600080fd5b5b5b50505050565b60008060006111d3610d1e565b348102925090508184106111e9573492506111fb565b80848115156111f457fe5b0492508391505b5b50915091565b60008282018381101561101f57fe5b8091505b50929150505600a165627a7a723058209f5504cb9e61fb0a419a0f8e7c7ae711531548c4c30af6f97d7b374816858ad40029

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

0000000000000000000000000010242590b52545afdc82fe44b064ce055479eb0000000000000000000000000000000000000000000000000000000059d3b400

-----Decoded View---------------
Arg [0] : _wanport (address): 0x0010242590B52545AfDc82FE44b064cE055479EB
Arg [1] : _bootTime (uint256): 1507046400

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000010242590b52545afdc82fe44b064ce055479eb
Arg [1] : 0000000000000000000000000000000000000000000000000000000059d3b400


Swarm Source

bzzr://cf354415565dbcba55ca7d803241ed623e9875b86e7d49619e734c70d0b4d0bf

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

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.