Contract 0x6b7cc0c10a0838f8562257c8e227e8de057cb537

Contract Overview

Balance:
0 Ether
TxHash Block Age From To Value [TxFee]
0xf99c0a7aa1eb48a7cca8951c3659c88d22df087716af679cc51685ddebe8a4443552745261 days 14 hrs ago0x0a8b56748473bb7aa0a37249b41311d218316d77 IN 0x6b7cc0c10a0838f8562257c8e227e8de057cb5371 Ether0.000022951
0x6c043319343727c10d59b526fde451ee4e5424f366e777c6c156d34a91a5887d3069752334 days 19 hrs ago0xac4ba9e98e97294c7d3e3e2d19c7a936e187b1bf IN 0x6b7cc0c10a0838f8562257c8e227e8de057cb5371 Ether0.000108499
0x14201d4deae2e53a99a487e4e82478c9aea9d22981bf7e128d0e018e356e63493033006340 days 19 hrs ago0x0ac9e6b71867bec97cd804ade4c49aff4668f94e IN 0x6b7cc0c10a0838f8562257c8e227e8de057cb5374 Ether0.00073284
0x5155104190521b71f2da24f0b9d948797efba54d741b725789ad23bbfb3357763032932340 days 19 hrs ago0x0ac9e6b71867bec97cd804ade4c49aff4668f94e IN 0x6b7cc0c10a0838f8562257c8e227e8de057cb5376 Ether0.00073284
0x82ca17969a2dee0bd8f4fec91bf8cf63e593f327bb27ed928c1a072f2972a2743032929340 days 19 hrs ago0x0ac9e6b71867bec97cd804ade4c49aff4668f94e IN 0x6b7cc0c10a0838f8562257c8e227e8de057cb5371 Ether0.00108499
0x603500af7f37cfed54572f58c463b84a3fa8022b56b89fea4ae6004dcd7c96ee3018428343 days 2 hrs ago0x376e77df1ff40c53a98f34bf8641c72169b8162c IN 0x6b7cc0c10a0838f8562257c8e227e8de057cb5371.5 Ether0.000153499
[ Download CSV Export 

Latest 13 internal transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x6c043319343727c10d59b526fde451ee4e5424f366e777c6c156d34a91a5887d3069752334 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370xfd4c0f5848642fc2041c003cb684fc66b16217bc1 Ether
0x6c043319343727c10d59b526fde451ee4e5424f366e777c6c156d34a91a5887d3069752334 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370x7456f707ac3b3b9a728cb0506d79da4d5b70798c0 Ether
0x14201d4deae2e53a99a487e4e82478c9aea9d22981bf7e128d0e018e356e63493033006340 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370xfd4c0f5848642fc2041c003cb684fc66b16217bc4 Ether
0x14201d4deae2e53a99a487e4e82478c9aea9d22981bf7e128d0e018e356e63493033006340 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370x7456f707ac3b3b9a728cb0506d79da4d5b70798c0 Ether
0x5155104190521b71f2da24f0b9d948797efba54d741b725789ad23bbfb3357763032932340 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370xfd4c0f5848642fc2041c003cb684fc66b16217bc6 Ether
0x5155104190521b71f2da24f0b9d948797efba54d741b725789ad23bbfb3357763032932340 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370x7456f707ac3b3b9a728cb0506d79da4d5b70798c0 Ether
0x82ca17969a2dee0bd8f4fec91bf8cf63e593f327bb27ed928c1a072f2972a2743032929340 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370xfd4c0f5848642fc2041c003cb684fc66b16217bc1 Ether
0x82ca17969a2dee0bd8f4fec91bf8cf63e593f327bb27ed928c1a072f2972a2743032929340 days 19 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370x7456f707ac3b3b9a728cb0506d79da4d5b70798c0 Ether
0x603500af7f37cfed54572f58c463b84a3fa8022b56b89fea4ae6004dcd7c96ee3018428343 days 2 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370xfd4c0f5848642fc2041c003cb684fc66b16217bc1.5 Ether
0x603500af7f37cfed54572f58c463b84a3fa8022b56b89fea4ae6004dcd7c96ee3018428343 days 2 hrs ago0x6b7cc0c10a0838f8562257c8e227e8de057cb5370x7456f707ac3b3b9a728cb0506d79da4d5b70798c0 Ether
0x44085450d28770301bd2b10c1c61fa1a4c8aaaba12f2709541a0e9b24a1dc9643011883344 days 49 mins ago0x423105526255db03c36fd763c982dad96b95d17e0x6b7cc0c10a0838f8562257c8e227e8de057cb5370 Ether
0x44085450d28770301bd2b10c1c61fa1a4c8aaaba12f2709541a0e9b24a1dc9643011883344 days 49 mins ago0x423105526255db03c36fd763c982dad96b95d17e0x6b7cc0c10a0838f8562257c8e227e8de057cb5370 Ether
0x44085450d28770301bd2b10c1c61fa1a4c8aaaba12f2709541a0e9b24a1dc9643011883344 days 49 mins ago0x423105526255db03c36fd763c982dad96b95d17e  Contract Creation0 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
CappedSTO

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.21;

contract IST20 {

    // off-chain hash
    bytes32 public tokenDetails;

    //transfer, transferFrom must respect use respect the result of verifyTransfer
    function verifyTransfer(address _from, address _to, uint256 _amount) public view returns (bool success);

    //used to create tokens
    function mint(address _investor, uint256 _amount) public returns (bool success);
}

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

}

contract ISecurityToken is IST20, Ownable {

    //TODO: Factor out more stuff here
    function checkPermission(address _delegate, address _module, bytes32 _perm) public view returns(bool);

}

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

//Simple interface that any module contracts should implement
contract IModuleFactory is Ownable {

    ERC20 public polyToken;

    function IModuleFactory(address _polyAddress) public {
      polyToken = ERC20(_polyAddress);
    }

    //Should create an instance of the Module, or throw
    function deploy(bytes _data) external returns(address);

    function getType() public view returns(uint8);

    function getName() public view returns(bytes32);

    //Return the cost (in POLY) to use this factory
    function getCost() public view returns(uint256);

    function getDescription() public view returns(string);

    function getTitle() public view returns(string);

    function getInstructions() public view returns (string);

    //Pull function sig from _data
    function getSig(bytes _data) internal pure returns (bytes4 sig) {
        uint len = _data.length < 4 ? _data.length : 4;
        for (uint i = 0; i < len; i++) {
            sig = bytes4(uint(sig) + uint(_data[i]) * (2 ** (8 * (len - 1 - i))));
        }
    }

}

//Simple interface that any module contracts should implement
contract IModule {

    address public factory;

    address public securityToken;

    function IModule(address _securityToken) public {
        securityToken = _securityToken;
        factory = msg.sender;
    }

    function getInitFunction() public returns (bytes4);
    
    //Allows owner, factory or permissioned delegate
    modifier withPerm(bytes32 _perm) {
        bool isOwner = msg.sender == ISecurityToken(securityToken).owner();
        bool isFactory = msg.sender == factory;
        require(isOwner||isFactory||ISecurityToken(securityToken).checkPermission(msg.sender, address(this), _perm));
        _;
    }

    modifier onlyOwner {
        require(msg.sender == ISecurityToken(securityToken).owner());
        _;
    }

    modifier onlyFactory {
        require(msg.sender == factory);
        _;
    }

    modifier onlyFactoryOwner {
        require(msg.sender == IModuleFactory(factory).owner());
        _;
    }

    function getPermissions() public view returns(bytes32[]);
}

contract ISTO is IModule {

    enum FundraiseType { ETH, POLY }
    FundraiseType public fundraiseType;

    address public polyAddress;

    function verifyInvestment(address _beneficiary, uint256 _fundsAmount) public view returns(bool) {
        return ERC20(polyAddress).allowance(_beneficiary, address(this)) >= _fundsAmount;
    }

    function getRaisedEther() public view returns (uint256);

    function getRaisedPOLY() public view returns (uint256);

    function getNumberInvestors() public view returns (uint256);

    function _check(uint8 _fundraiseType, address _polyToken) internal {
        require(_fundraiseType == 0 || _fundraiseType == 1);
        if (_fundraiseType == 0) {
            fundraiseType = FundraiseType.ETH;
        }
        if (_fundraiseType == 1) {
            require(_polyToken != address(0));
            fundraiseType = FundraiseType.POLY;
            polyAddress = _polyToken;
        }
    }

    function _forwardPoly(address _beneficiary, address _to, uint256 _fundsAmount) internal {
        ERC20(polyAddress).transferFrom(_beneficiary, _to, _fundsAmount);
    }

}

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

contract CappedSTO is ISTO {
    using SafeMath for uint256;

    // Address where funds are collected and tokens are issued to
    address public wallet;

    // How many token units a buyer gets per wei
    uint256 public rate;

    // Amount of funds raised
    uint256 public fundsRaised;

    uint256 public investorCount;

    // Start time of the STO
    uint256 public startTime;
    // End time of the STO
    uint256 public endTime;

    // Amount of tokens sold
    uint256 public tokensSold;

    //How many tokens this STO will be allowed to sell to investors
    uint256 public cap;

    mapping (address => uint256) public investors;

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

    function CappedSTO(address _securityToken) public
    IModule(_securityToken)
    {
    }

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

    function configure(
        uint256 _startTime,
        uint256 _endTime,
        uint256 _cap,
        uint256 _rate,
        uint8 _fundRaiseType,
        address _polyToken,
        address _fundsReceiver
    )
    public
    onlyFactory
    {
        require(_rate > 0);
        require(_fundsReceiver != address(0));
        require(_startTime >= now && _endTime > _startTime);
        require(_cap > 0);
        startTime = _startTime;
        endTime = _endTime;
        cap = _cap;
        rate = _rate;
        wallet = _fundsReceiver;

        _check(_fundRaiseType, _polyToken);
    }

    function getInitFunction() public returns (bytes4) {
        return bytes4(keccak256("configure(uint256,uint256,uint256,uint256,uint8,address,address)"));
    }

    /**
      * @dev low level token purchase ***DO NOT OVERRIDE***
      * @param _beneficiary Address performing the token purchase
      */
    function buyTokens(address _beneficiary) public payable {
        require(fundraiseType == FundraiseType.ETH);

        uint256 weiAmount = msg.value;
        _processTx(_beneficiary, weiAmount);

        _forwardFunds();
        _postValidatePurchase(_beneficiary, weiAmount);
    }

    /**
      * @dev low level token purchase
      * @param _investedPOLY Amount of POLY invested
      */
    function buyTokensWithPoly(uint256 _investedPOLY) public {
        require(fundraiseType == FundraiseType.POLY);
        require(verifyInvestment(msg.sender, _investedPOLY));
        _processTx(msg.sender, _investedPOLY);
        _forwardPoly(msg.sender, wallet, _investedPOLY);
        _postValidatePurchase(msg.sender, _investedPOLY);
    }

    /**
    * @dev Checks whether the cap has been reached.
    * @return Whether the cap was reached
    */
    function capReached() public view returns (bool) {
        return fundsRaised >= cap;
    }

    function getRaisedEther() public view returns (uint256) {
        if (fundraiseType == FundraiseType.ETH)
            return fundsRaised;
        else
            return 0;
    }

    function getRaisedPOLY() public view returns (uint256) {
        if (fundraiseType == FundraiseType.POLY)
            return fundsRaised;
        else
            return 0;
    }

    function getNumberInvestors() public view returns (uint256) {
        return investorCount;
    }

    function getPermissions() public view returns(bytes32[]) {
        bytes32[] memory allPermissions = new bytes32[](0);
        return allPermissions;
    }

    // -----------------------------------------
    // Internal interface (extensible)
    // -----------------------------------------
    /**
      * Processing the purchase as well as verify the required validations
      * @param _beneficiary Address performing the token purchase
      * @param _investedAmount Value in wei involved in the purchase
    */
    function _processTx(address _beneficiary, uint256 _investedAmount) internal {

        _preValidatePurchase(_beneficiary, _investedAmount);
        // calculate token amount to be created
        uint256 tokens = _getTokenAmount(_investedAmount);

        // update state
        fundsRaised = fundsRaised.add(_investedAmount);
        tokensSold = tokensSold.add(tokens);

        _processPurchase(_beneficiary, tokens);
        emit TokenPurchase(msg.sender, _beneficiary, _investedAmount, tokens);

        _updatePurchasingState(_beneficiary, _investedAmount);
    }

    /**
    * @dev Validation of an incoming purchase.
      Use require statements to revert state when conditions are not met. Use super to concatenate validations.
    * @param _beneficiary Address performing the token purchase
    * @param _investedAmount Value in wei involved in the purchase
    */
    function _preValidatePurchase(address _beneficiary, uint256 _investedAmount) internal view {
        require(_beneficiary != address(0));
        require(_investedAmount != 0);
        require(tokensSold.add(_getTokenAmount(_investedAmount)) <= cap);
        require(now >= startTime && now <= endTime);
    }

    /**
    * @dev Validation of an executed purchase.
      Observe state and use revert statements to undo rollback when valid conditions are not met.
    */
    function _postValidatePurchase(address /*_beneficiary*/, uint256 /*_investedAmount*/) internal pure {
      // optional override
    }

    /**
    * @dev Source of tokens.
      Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens.
    * @param _beneficiary Address performing the token purchase
    * @param _tokenAmount Number of tokens to be emitted
    */
    function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
        require(IST20(securityToken).mint(_beneficiary, _tokenAmount));
    }

    /**
    * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
    * @param _beneficiary Address receiving the tokens
    * @param _tokenAmount Number of tokens to be purchased
    */
    function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
        if (investors[_beneficiary] == 0) {
            investorCount = investorCount + 1;
        }
        investors[_beneficiary] = investors[_beneficiary].add(_tokenAmount);

        _deliverTokens(_beneficiary, _tokenAmount);
    }

    /**
    * @dev Override for extensions that require an internal state to check for validity
      (current user contributions, etc.)
    */
    function _updatePurchasingState(address /*_beneficiary*/, uint256 /*_investedAmount*/) internal pure {
      // optional override
    }

    /**
    * @dev Override to extend the way in which ether is converted to tokens.
    * @param _investedAmount Value in wei to be converted into tokens
    * @return Number of tokens that can be purchased with the specified _investedAmount
    */
    function _getTokenAmount(uint256 _investedAmount) internal view returns (uint256) {
        return _investedAmount.mul(rate);
    }

    /**
    * @dev Determines how ETH is stored/forwarded on purchases.
    */
    function _forwardFunds() internal {
        wallet.transfer(msg.value);
    }

}

Contract ABI

[{"constant":false,"inputs":[],"name":"getInitFunction","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRaisedEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberInvestors","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundsRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investors","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRaisedPOLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_fundsAmount","type":"uint256"}],"name":"verifyInvestment","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"securityToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPermissions","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investedPOLY","type":"uint256"}],"name":"buyTokensWithPoly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundraiseType","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_cap","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_fundRaiseType","type":"uint8"},{"name":"_polyToken","type":"address"},{"name":"_fundsReceiver","type":"address"}],"name":"configure","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"polyAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_securityToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]

Contract Creation Code

6060604052341561000f57600080fd5b604051602080610bc78339810160405280805160018054600160a060020a03928316600160a060020a0319918216179091556000805433909316929091169190911790555050610b63806100646000396000f3006060604052600436106101195763ffffffff60e060020a6000350416631613ec9d81146101245780632c4e722e1461016c5780633197cbb614610191578063355274ea146101a457806335ff3a51146101b757806338c59de9146101ca5780634f935945146101dd578063518ab2a814610204578063521eb273146102175780636681b9fd146102465780636f7bc9be1461025957806378e9792514610278578063a3fb8f151461028b578063a412f87c1461029e578063b84dfbd2146102c0578063c3a07df6146102d3578063c45a015514610339578063cb7526791461034c578063d0d832ad14610362578063d7e64c0014610399578063dd2761de146103ac578063ec8ac4d8146103e3578063ff61c0de146103f7575b6101223361040a565b005b341561012f57600080fd5b61013761044d565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b341561017757600080fd5b61017f6104ad565b60405190815260200160405180910390f35b341561019c57600080fd5b61017f6104b3565b34156101af57600080fd5b61017f6104b9565b34156101c257600080fd5b61017f6104bf565b34156101d557600080fd5b61017f6104f2565b34156101e857600080fd5b6101f06104f8565b604051901515815260200160405180910390f35b341561020f57600080fd5b61017f610503565b341561022257600080fd5b61022a610509565b604051600160a060020a03909116815260200160405180910390f35b341561025157600080fd5b61017f610518565b341561026457600080fd5b61017f600160a060020a036004351661051e565b341561028357600080fd5b61017f610530565b341561029657600080fd5b61017f610536565b34156102a957600080fd5b6101f0600160a060020a036004351660243561053f565b34156102cb57600080fd5b61022a6105bd565b34156102de57600080fd5b6102e66105cc565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561032557808201518382015260200161030d565b505050509050019250505060405180910390f35b341561034457600080fd5b61022a610601565b341561035757600080fd5b610122600435610610565b341561036d57600080fd5b610375610677565b6040518082600181111561038557fe5b60ff16815260200191505060405180910390f35b34156103a457600080fd5b61017f610687565b34156103b757600080fd5b61012260043560243560443560643560ff60843516600160a060020a0360a43581169060c4351661068d565b610122600160a060020a036004351661040a565b341561040257600080fd5b61022a610740565b6000806001805460a060020a900460ff169081111561042557fe5b1461042f57600080fd5b503461043b828261074f565b6104436107fa565b61044982825b5050565b60006040517f636f6e6669677572652875696e743235362c75696e743235362c75696e74323581527f362c75696e743235362c75696e74382c616464726573732c6164647265737329602082015260409081019051809103902090505b90565b60045481565b60085481565b600a5481565b6000805b6001805460a060020a900460ff16908111156104db57fe5b14156104ea57506005546104aa565b5060006104aa565b60065490565b600a54600554101590565b60095481565b600354600160a060020a031681565b60055481565b600b6020526000908152604090205481565b60075481565b600060016104c3565b6002546000908290600160a060020a031663dd62ed3e853060405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561059c57600080fd5b5af115156105a957600080fd5b505050604051805190501015905092915050565b600154600160a060020a031681565b6105d4610b25565b6105dc610b25565b60006040518059106105eb5750595b8181526020918202810190910160405292915050565b600054600160a060020a031681565b600180805460a060020a900460ff169081111561062957fe5b1461063357600080fd5b61063d338261053f565b151561064857600080fd5b610652338261074f565b60035461066a903390600160a060020a031683610830565b6106743382610449565b50565b60015460a060020a900460ff1681565b60065481565b60005433600160a060020a039081169116146106a857600080fd5b600084116106b557600080fd5b600160a060020a03811615156106ca57600080fd5b4287101580156106d957508686115b15156106e457600080fd5b600085116106f157600080fd5b60078790556008869055600a85905560048490556003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905561073783836108af565b50505050505050565b600254600160a060020a031681565b600061075b838361096d565b610764826109d6565b60055490915061077a908363ffffffff6109f316565b600555600954610790908263ffffffff6109f316565b60095561079d8382610a0d565b82600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a36107f58383610449565b505050565b600354600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561082e57600080fd5b565b600254600160a060020a03166323b872dd84848460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561089357600080fd5b5af115156108a057600080fd5b50505060405180515050505050565b60ff821615806108c257508160ff166001145b15156108cd57600080fd5b60ff821615156108f6576001805474ff0000000000000000000000000000000000000000191690555b8160ff166001141561044957600160a060020a038116151561091757600080fd5b6001805460a060020a74ff0000000000000000000000000000000000000000199091161790556002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b600160a060020a038216151561098257600080fd5b80151561098e57600080fd5b600a546109ac61099d836109d6565b6009549063ffffffff6109f316565b11156109b757600080fd5b60075442101580156109cb57506008544211155b151561044957600080fd5b60006109ed60045483610a8290919063ffffffff16565b92915050565b600082820183811015610a0257fe5b8091505b5092915050565b600160a060020a0382166000908152600b60205260409020541515610a36576006805460010190555b600160a060020a0382166000908152600b6020526040902054610a5f908263ffffffff6109f316565b600160a060020a0383166000908152600b60205260409020556104498282610aad565b600080831515610a955760009150610a06565b50828202828482811515610aa557fe5b0414610a0257fe5b600154600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b0357600080fd5b5af11515610b1057600080fd5b50505060405180519050151561044957600080fd5b602060405190810160405260008152905600a165627a7a723058202f1c522820e022674092278d799a81b2913fc65101e527f032fad7edd670f8f800290000000000000000000000007456f707ac3b3b9a728cb0506d79da4d5b70798c

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

0000000000000000000000007456f707ac3b3b9a728cb0506d79da4d5b70798c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007456f707ac3b3b9a728cb0506d79da4d5b70798c

Swarm Source

bzzr://2f1c522820e022674092278d799a81b2913fc65101e527f032fad7edd670f8f8
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward