Latest 5 txns

TxHash Age From To Value [TxFee]
0xe5d36dd6059617d4aeab1b8de652af09caadad58891fe27fe371f1686d272398257 days 19 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN   0x118c51f08f1497af24cf2930b20866267b4709300 Ether0.002018268
0x7616aa5fe48477931685b9a2898ff3026b6084480d8906c7520cb791c3af01a9257 days 20 hrs ago0xd8c2eee8d6a390932ca4fdc46aae38a8056fea4f  IN   0x118c51f08f1497af24cf2930b20866267b4709301 Ether0.002562231
0x66c09ac0299aba6df29cdaedf418e0c772bf8b974c630a42bc29823d295224d6257 days 20 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN   0x118c51f08f1497af24cf2930b20866267b4709300 Ether0.001045821
0xe177316e9a30d26b5e15d91593e163b5e053d333036fcc864cdc2de931ddb74a257 days 20 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN   0x118c51f08f1497af24cf2930b20866267b4709300 Ether0.001045821
0xb31de20283441c1dc106014fa86bf40a431fe37b1b4fbd0f59343a69288569d7257 days 21 hrs ago0x49d8621f8862c423abba0dfae4916f838cd264f6  IN    Contract Creation0 Ether0.000005037945
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 7 Internal Transactions

ParentTxHash Block Age From To Value
0xe5d36dd6059617d4aeab1b8de652af09caadad58891fe27fe371f1686d2723983395951257 days 19 hrs ago0x118c51f08f1497af24cf2930b20866267b4709300xe64b595ac25de02b28c8603a3b1a518651dee7a80 Ether
0xe5d36dd6059617d4aeab1b8de652af09caadad58891fe27fe371f1686d2723983395951257 days 19 hrs ago0x118c51f08f1497af24cf2930b20866267b4709300xe64b595ac25de02b28c8603a3b1a518651dee7a80 Ether
0xe5d36dd6059617d4aeab1b8de652af09caadad58891fe27fe371f1686d2723983395951257 days 19 hrs ago0x118c51f08f1497af24cf2930b20866267b4709300xe64b595ac25de02b28c8603a3b1a518651dee7a80 Ether
0xe5d36dd6059617d4aeab1b8de652af09caadad58891fe27fe371f1686d2723983395951257 days 19 hrs ago0x118c51f08f1497af24cf2930b20866267b4709300xe64b595ac25de02b28c8603a3b1a518651dee7a80 Ether
0x7616aa5fe48477931685b9a2898ff3026b6084480d8906c7520cb791c3af01a93395824257 days 20 hrs ago0x118c51f08f1497af24cf2930b20866267b4709300x49d8621f8862c423abba0dfae4916f838cd264f61 Ether
0x7616aa5fe48477931685b9a2898ff3026b6084480d8906c7520cb791c3af01a93395824257 days 20 hrs ago0x118c51f08f1497af24cf2930b20866267b4709300xe64b595ac25de02b28c8603a3b1a518651dee7a80 Ether
0xb31de20283441c1dc106014fa86bf40a431fe37b1b4fbd0f59343a69288569d73395464257 days 21 hrs ago0x118c51f08f1497af24cf2930b20866267b470930  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: ICO
Compiler Version: v0.4.23+commit.124ca40d
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.23;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


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


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


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

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

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

}


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}


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


/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

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

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

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

}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

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


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

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

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

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

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

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

}


/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


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

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

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner canMint public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}


/**
* @title OneledgerToken
* @dev this is the oneledger token
*/
contract OneledgerToken is MintableToken {
    using SafeMath for uint256;

    string public name = "Oneledger Token";
    string public symbol = "OLT";
    uint8 public decimals = 18;
    bool public active = false;
    /**
     * @dev restrict function to be callable when token is active
     */
    modifier activated() {
        require(active == true);
        _;
    }

    /**
     * @dev activate token transfers
     */
    function activate() public onlyOwner {
        active = true;
    }

    /**
     * @dev transfer    ERC20 standard transfer wrapped with `activated` modifier
     */
    function transfer(address to, uint256 value) public activated returns (bool) {
        return super.transfer(to, value);
    }

    /**
     * @dev transfer    ERC20 standard transferFrom wrapped with `activated` modifier
     */
    function transferFrom(address from, address to, uint256 value) public activated returns (bool) {
        return super.transferFrom(from, to, value);
    }
}


contract OneledgerTokenVesting is Ownable{
    using SafeMath for uint256;

    event Released(uint256 amount);

    // beneficiary of tokens after they are released
    address public beneficiary;

    uint256 public startFrom;
    uint256 public period;
    uint256 public tokensReleasedPerPeriod;

    uint256 public elapsedPeriods;

    OneledgerToken private token;

    /**
     * @dev Creates a vesting contract for OneledgerToken
     * @param _beneficiary address of the beneficiary to whom vested tokens are transferred
     * @param _startFrom Datetime when the vesting will begin
     * @param _period The preiod to release the token
     * @param _tokensReleasedPerPeriod the token to release per period
     */
    constructor(
        address _beneficiary,
        uint256 _startFrom,
        uint256 _period,
        uint256 _tokensReleasedPerPeriod,
        OneledgerToken _token
    ) public {
        require(_beneficiary != address(0));
        require(_startFrom >= now);

        beneficiary = _beneficiary;
        startFrom = _startFrom;
        period = _period;
        tokensReleasedPerPeriod = _tokensReleasedPerPeriod;
        elapsedPeriods = 0;
        token = _token;
    }

    /**
     *  @dev getToken this may be more convinience for user
     *        to check if their vesting contract is binded with a right token
     * return OneledgerToken
     */
     function getToken() public view returns(OneledgerToken) {
       return token;
     }

    /**
     * @dev release
     * param _token Oneledgertoken that will be released to beneficiary
     */
    function release() public {
        require(msg.sender == owner || msg.sender == beneficiary);
        require(token.balanceOf(this) >= 0 && now >= startFrom);
        uint256 elapsedTime = now.sub(startFrom);
        uint256 periodsInCurrentRelease = elapsedTime.div(period).sub(elapsedPeriods);
        uint256 tokensReadyToRelease = periodsInCurrentRelease.mul(tokensReleasedPerPeriod);
        uint256 amountToTransfer = tokensReadyToRelease > token.balanceOf(this) ? token.balanceOf(this) : tokensReadyToRelease;
        require(amountToTransfer > 0);
        elapsedPeriods = elapsedPeriods.add(periodsInCurrentRelease);
        token.transfer(beneficiary, amountToTransfer);
        emit Released(amountToTransfer);
    }
}


contract ICO is Ownable {
    using SafeMath for uint256;

    struct WhiteListRecord {
        uint256 offeredWei;
        uint256 lastPurchasedTimestamp;
    }

    OneledgerToken public token;
    address public wallet; // Address where funds are collected
    uint256 public rate;   // How many token units a buyer gets per eth
    mapping (address => WhiteListRecord) public whiteList;
    uint256 public initialTime;
    bool public saleClosed;
    uint256 public weiCap;
    uint256 public weiRaised;

    uint256 public TOTAL_TOKEN_SUPPLY = 1000000000 * (10 ** 18);

    event BuyTokens(uint256 weiAmount, uint256 rate, uint256 token, address beneficiary);
    event UpdateRate(uint256 rate);

    /**
    * @dev constructor
    */
    constructor(address _wallet, uint256 _rate, uint256 _startDate, uint256 _weiCap) public {
        require(_rate > 0);
        require(_wallet != address(0));
        require(_weiCap.mul(_rate) <= TOTAL_TOKEN_SUPPLY);

        wallet = _wallet;
        rate = _rate;
        initialTime = _startDate;
        saleClosed = false;
        weiCap = _weiCap;
        weiRaised = 0;

        token = new OneledgerToken();
    }

    /**
     * @dev fallback function ***DO NOT OVERRIDE***
     */
    function() external payable {
        buyTokens();
    }

    /**
     * @dev update the rate
     */
    function updateRate(uint256 rate_) public onlyOwner {
      require(now <= initialTime);
      rate = rate_;
      emit UpdateRate(rate);
    }

    /**
     * @dev buy tokens
     */
    function buyTokens() public payable {
        validatePurchase(msg.value);
        uint256 tokenToBuy = msg.value.mul(rate);
        whiteList[msg.sender].lastPurchasedTimestamp = now;
        weiRaised = weiRaised.add(msg.value);
        token.mint(msg.sender, tokenToBuy);
        wallet.transfer(msg.value);
        emit BuyTokens(msg.value, rate, tokenToBuy, msg.sender);
    }

    /**
    * @dev add to white list
    * param addresses the list of address added to white list
    * param weiPerContributor the wei can be transfer per contributor
    * param capWei for the user in this list
    */
    function addToWhiteList(address[] addresses, uint256 weiPerContributor) public onlyOwner {
        for (uint32 i = 0; i < addresses.length; i++) {
            whiteList[addresses[i]] = WhiteListRecord(weiPerContributor, 0);
        }
    }

    /**
     * @dev mint token to new address, either contract or a wallet
     * param OneledgerTokenVesting vesting contract
     * param uint256 total token number to mint
    */
    function mintToken(address target, uint256 tokenToMint) public onlyOwner {
      token.mint(target, tokenToMint);
    }

    /**
     * @dev close the ICO
     */
    function closeSale() public onlyOwner {
        saleClosed = true;
        token.mint(owner, TOTAL_TOKEN_SUPPLY.sub(token.totalSupply()));
        token.finishMinting();
        token.transferOwnership(owner);
    }

    function validatePurchase(uint256 weiPaid) internal view{
        require(!saleClosed);
        require(initialTime <= now);
        require(whiteList[msg.sender].offeredWei > 0);
        require(weiPaid <= weiCap.sub(weiRaised));
        // can only purchase once every 24 hours
        require(now.sub(whiteList[msg.sender].lastPurchasedTimestamp) > 24 hours);
        uint256 elapsedTime = now.sub(initialTime);
        // check day 1 buy limit
        require(elapsedTime > 24 hours || msg.value <= whiteList[msg.sender].offeredWei);
        // check day 2 buy limit
        require(elapsedTime > 48 hours || msg.value <= whiteList[msg.sender].offeredWei.mul(2));
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whiteList","outputs":[{"name":"offeredWei","type":"uint256"},{"name":"lastPurchasedTimestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"weiPerContributor","type":"uint256"}],"name":"addToWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"rate_","type":"uint256"}],"name":"updateRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"tokenToMint","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_TOKEN_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"closeSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_wallet","type":"address"},{"name":"_rate","type":"uint256"},{"name":"_startDate","type":"uint256"},{"name":"_weiCap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"rate","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"},{"indexed":false,"name":"beneficiary","type":"address"}],"name":"BuyTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"UpdateRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040526b033b2e3c9fd0803ce800000060095534801561002057600080fd5b50604051608080611b59833981016040908152815160208301519183015160609093015160008054600160a060020a03191633600160a060020a0316178155919391831161006d57600080fd5b600160a060020a038416151561008257600080fd5b60095461009c8285640100000000610ada61012f82021704565b11156100a757600080fd5b60028054600160a060020a031916600160a060020a038616179055600383905560058290556006805460ff19169055600781905560006008556100e8610165565b604051809103906000f080158015610104573d6000803e3d6000fd5b5060018054600160a060020a031916600160a060020a03929092169190911790555061017592505050565b600080831515610142576000915061015e565b5082820282848281151561015257fe5b041461015a57fe5b8091505b5092915050565b604051610e7880610ce183390190565b610b5d806101846000396000f3006080604052600436106100e55763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e81146100ef578063372c12b1146101165780633aaec5c5146101505780634042b66f146101a7578063521eb273146101bc57806369ea1771146101ed57806379c650681461020557806384fe5029146102295780638da5cb5b1461023e5780639ced0e9b14610253578063b8c766b814610268578063ccf053ba14610291578063d0febe4c146100e5578063ee55efee146102a6578063f2fde38b146102bb578063fc0c546a146102dc575b6100ed6102f1565b005b3480156100fb57600080fd5b50610104610472565b60408051918252519081900360200190f35b34801561012257600080fd5b50610137600160a060020a0360043516610478565b6040805192835260208301919091528051918290030190f35b34801561015c57600080fd5b50604080516020600480358082013583810280860185019096528085526100ed9536959394602494938501929182918501908490808284375094975050933594506104919350505050565b3480156101b357600080fd5b50610104610529565b3480156101c857600080fd5b506101d161052f565b60408051600160a060020a039092168252519081900360200190f35b3480156101f957600080fd5b506100ed60043561053e565b34801561021157600080fd5b506100ed600160a060020a03600435166024356105a3565b34801561023557600080fd5b5061010461065d565b34801561024a57600080fd5b506101d1610663565b34801561025f57600080fd5b50610104610672565b34801561027457600080fd5b5061027d610678565b604080519115158252519081900360200190f35b34801561029d57600080fd5b50610104610681565b3480156102b257600080fd5b506100ed610687565b3480156102c757600080fd5b506100ed600160a060020a03600435166108fe565b3480156102e857600080fd5b506101d1610996565b60006102fc346109a5565b60035461031090349063ffffffff610ada16565b600160a060020a033316600090815260046020526040902042600190910155600854909150610345903463ffffffff610b1016565b600855600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03338116600483015260248201859052915191909216916340c10f199160448083019260209291908290030181600087803b1580156103b757600080fd5b505af11580156103cb573d6000803e3d6000fd5b505050506040513d60208110156103e157600080fd5b5050600254604051600160a060020a03909116903480156108fc02916000818181858888f1935050505015801561041c573d6000803e3d6000fd5b50600354604080513481526020810192909252818101839052600160a060020a0333166060830152517fb0a26abd1881722831618cb96c8beb509644778c8596bc1710928f800aa5bda79181900360800190a150565b60035481565b6004602052600090815260409020805460019091015482565b6000805433600160a060020a039081169116146104ad57600080fd5b5060005b82518163ffffffff161015610524576040805190810160405280838152602001600081525060046000858463ffffffff168151811015156104ee57fe5b6020908102909101810151600160a060020a031682528181019290925260400160002082518155910151600191820155016104b1565b505050565b60085481565b600254600160a060020a031681565b60005433600160a060020a0390811691161461055957600080fd5b60055442111561056857600080fd5b60038190556040805182815290517fc04ab144c3f6fd32b71825eb92c20af3c8b2f2b6680dfaf3645b527f098c245b9181900360200190a150565b60005433600160a060020a039081169116146105be57600080fd5b600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015260248201859052915191909216916340c10f199160448083019260209291908290030181600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b505050506040513d602081101561065757600080fd5b50505050565b60075481565b600054600160a060020a031681565b60055481565b60065460ff1681565b60095481565b60005433600160a060020a039081169116146106a257600080fd5b6006805460ff191660019081179091555460008054604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946340c10f199493169261075f9286926318160ddd92600480840193602093929083900390910190829087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b505050506040513d602081101561074e57600080fd5b50516009549063ffffffff610b1f16565b6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156107ca57600080fd5b505af11580156107de573d6000803e3d6000fd5b505050506040513d60208110156107f457600080fd5b5050600154604080517f7d64bcb40000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691637d64bcb4916004808201926020929091908290030181600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050506040513d602081101561088057600080fd5b505060015460008054604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201529051919093169263f2fde38b92602480830193919282900301818387803b1580156108ea57600080fd5b505af1158015610657573d6000803e3d6000fd5b60005433600160a060020a0390811691161461091957600080fd5b600160a060020a038116151561092e57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b60065460009060ff16156109b857600080fd5b6005544210156109c757600080fd5b600160a060020a033316600090815260046020526040812054116109ea57600080fd5b6008546007546109ff9163ffffffff610b1f16565b821115610a0b57600080fd5b600160a060020a0333166000908152600460205260409020600101546201518090610a3d90429063ffffffff610b1f16565b11610a4757600080fd5b600554610a5b90429063ffffffff610b1f16565b905062015180811180610a865750600160a060020a0333166000908152600460205260409020543411155b1515610a9157600080fd5b6202a300811180610acb5750600160a060020a033316600090815260046020526040902054610ac790600263ffffffff610ada16565b3411155b1515610ad657600080fd5b5050565b600080831515610aed5760009150610b09565b50828202828482811515610afd57fe5b0414610b0557fe5b8091505b5092915050565b600082820183811015610b0557fe5b600082821115610b2b57fe5b509003905600a165627a7a723058203e2970179e582557a48a9328e6513caed6b6ec3af6d50c1cc72284db0686799000296003805460a060020a60ff021916905560c0604052600f60808190527f4f6e656c656467657220546f6b656e000000000000000000000000000000000060a090815261004e91600491906100c8565b506040805180820190915260038082527f4f4c5400000000000000000000000000000000000000000000000000000000006020909201918252610093916005916100c8565b5060068054601260ff199091161761ff001916905560038054600160a060020a03191633600160a060020a0316179055610163565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610136565b82800160010185558215610136579182015b8281111561013657825182559160200191906001019061011b565b50610142929150610146565b5090565b61016091905b80821115610142576000815560010161014c565b90565b610d06806101726000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302fb0c5e811461010057806305d2035b1461012957806306fdde031461013e578063095ea7b3146101c85780630f15f4c0146101ec57806318160ddd1461020357806323b872dd1461022a578063313ce5671461025457806340c10f191461027f57806366188463146102a357806370a08231146102c75780637d64bcb4146102e85780638da5cb5b146102fd57806395d89b411461032e578063a9059cbb14610343578063d73dd62314610367578063dd62ed3e1461038b578063f2fde38b146103b2575b600080fd5b34801561010c57600080fd5b506101156103d3565b604080519115158252519081900360200190f35b34801561013557600080fd5b506101156103e1565b34801561014a57600080fd5b50610153610402565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d457600080fd5b50610115600160a060020a0360043516602435610490565b3480156101f857600080fd5b506102016104fa565b005b34801561020f57600080fd5b50610218610526565b60408051918252519081900360200190f35b34801561023657600080fd5b50610115600160a060020a036004358116906024351660443561052c565b34801561026057600080fd5b5061026961055c565b6040805160ff9092168252519081900360200190f35b34801561028b57600080fd5b50610115600160a060020a0360043516602435610565565b3480156102af57600080fd5b50610115600160a060020a0360043516602435610684565b3480156102d357600080fd5b50610218600160a060020a036004351661077d565b3480156102f457600080fd5b50610115610798565b34801561030957600080fd5b50610312610842565b60408051600160a060020a039092168252519081900360200190f35b34801561033a57600080fd5b50610153610851565b34801561034f57600080fd5b50610115600160a060020a03600435166024356108ac565b34801561037357600080fd5b50610115600160a060020a03600435166024356108da565b34801561039757600080fd5b50610218600160a060020a036004358116906024351661097c565b3480156103be57600080fd5b50610201600160a060020a03600435166109a7565b600654610100900460ff1681565b60035474010000000000000000000000000000000000000000900460ff1681565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104885780601f1061045d57610100808354040283529160200191610488565b820191906000526020600020905b81548152906001019060200180831161046b57829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60035433600160a060020a0390811691161461051557600080fd5b6006805461ff001916610100179055565b60015490565b60065460009060ff61010090910416151560011461054957600080fd5b610554848484610a40565b949350505050565b60065460ff1681565b60035460009033600160a060020a0390811691161461058357600080fd5b60035474010000000000000000000000000000000000000000900460ff16156105ab57600080fd5b6001546105be908363ffffffff610bc016565b600155600160a060020a0383166000908152602081905260409020546105ea908363ffffffff610bc016565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156106e157600160a060020a033381166000908152600260209081526040808320938816835292905290812055610718565b6106f1818463ffffffff610bcf16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b60035460009033600160a060020a039081169116146107b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156107de57600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600354600160a060020a031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104885780601f1061045d57610100808354040283529160200191610488565b60065460009060ff6101009091041615156001146108c957600080fd5b6108d38383610be1565b9392505050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610912908363ffffffff610bc016565b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a039081169116146109c257600080fd5b600160a060020a03811615156109d757600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610a5757600080fd5b600160a060020a038416600090815260208190526040902054821115610a7c57600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610aaf57600080fd5b600160a060020a038416600090815260208190526040902054610ad8908363ffffffff610bcf16565b600160a060020a038086166000908152602081905260408082209390935590851681522054610b0d908363ffffffff610bc016565b600160a060020a0380851660009081526020818152604080832094909455878316825260028152838220339093168252919091522054610b53908363ffffffff610bcf16565b600160a060020a038086166000818152600260209081526040808320338616845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b6000828201838110156108d357fe5b600082821115610bdb57fe5b50900390565b6000600160a060020a0383161515610bf857600080fd5b600160a060020a033316600090815260208190526040902054821115610c1d57600080fd5b600160a060020a033316600090815260208190526040902054610c46908363ffffffff610bcf16565b600160a060020a033381166000908152602081905260408082209390935590851681522054610c7b908363ffffffff610bc016565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3506001929150505600a165627a7a723058209b6dab328593d8217755c44d0b6edaf870aa084ff6c55c55347192c2090d7306002900000000000000000000000049d8621f8862c423abba0dfae4916f838cd264f600000000000000000000000000000000000000000000000000000000000025c4000000000000000000000000000000000000000000000000000000005b19f6b200000000000000000000000000000000000000000000021e19e0c9bab2400000

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

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000049d8621f8862c423abba0dfae4916f838cd264f6
Arg [1] : 00000000000000000000000000000000000000000000000000000000000025c4
Arg [2] : 000000000000000000000000000000000000000000000000000000005b19f6b2
Arg [3] : 00000000000000000000000000000000000000000000021e19e0c9bab2400000


   Swarm Source:
bzzr://9b6dab328593d8217755c44d0b6edaf870aa084ff6c55c55347192c2090d7306

 

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