Contract Overview
ETH Balance: 0 Ether
No Of Transactions: 1 txn
  Latest 1 txn

TxHash Age From To Value [TxFee]
0x7cf83afca39f72e81d3938a6029c7c322533293d9fdca5488a6ddaeda55fdd5f11 days 10 hrs ago0xad6b063871094a8ebe050b0861d8e7f16f5963e4  IN    Contract Creation0 Ether0.262768
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 1 Internal Transaction

ParentTxHash Block Age From To Value
0x7cf83afca39f72e81d3938a6029c7c322533293d9fdca5488a6ddaeda55fdd5f166650811 days 10 hrs ago0x242ca065b52c5810217b322a5ea79d5d9b813f92  Contract Creation0 Ether
[ Download CSV Export  ] 
Contract Source Code Verified
Contract Name: MySale
Compiler Version: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.11;

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

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

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

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

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

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

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) returns (bool) {
    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) constant returns (uint256 balance) {
    return balances[_owner];
  }

}

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

/**
 * @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)) 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 amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

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

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // 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
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    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 specifing the amount of tokens still avaible for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}

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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    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) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}

/**
 * @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 recieve 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 returns (bool) {
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    return true;
  }

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

/**
 * @title Crowdsale 
 * @dev Crowdsale is a base contract for managing a token crowdsale.
 * Crowdsales have a start and end block, where investors can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet 
 * as they arrive.
 */
contract Crowdsale {
  using SafeMath for uint256;

  // The token being sold
  MintableToken public token;

  // start and end block where investments are allowed (both inclusive)
  uint256 public startBlock;
  uint256 public endBlock;

  // address where funds are collected
  address public wallet;

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

  // amount of raised money in wei
  uint256 public weiRaised;

  /**
   * 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 Crowdsale(uint256 _startBlock, uint256 _endBlock, uint256 _rate, address _wallet) {
    require(_startBlock >= block.number);
    require(_endBlock >= _startBlock);
    require(_rate > 0);
    require(_wallet != 0x0);

    token = createTokenContract();
    startBlock = _startBlock;
    endBlock = _endBlock;
    rate = _rate;
    wallet = _wallet;
  }

  // creates the token to be sold. 
  // override this method to have crowdsale of a specific mintable token.
  function createTokenContract() internal returns (MintableToken) {
    return new MintableToken();
  }


  // fallback function can be used to buy tokens
  function () payable {
    buyTokens(msg.sender);
  }

  // low level token purchase function
  function buyTokens(address beneficiary) payable {
    require(beneficiary != 0x0);
    require(validPurchase());

    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

    forwardFunds();
  }

  // send ether to the fund collection wallet
  // override to create custom fund forwarding mechanisms
  function forwardFunds() internal {
    wallet.transfer(msg.value);
  }

  // @return true if the transaction can buy tokens
  function validPurchase() internal constant returns (bool) {
    uint256 current = block.number;
    bool withinPeriod = current >= startBlock && current <= endBlock;
    bool nonZeroPurchase = msg.value != 0;
    return withinPeriod && nonZeroPurchase;
  }

  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    return block.number > endBlock;
  }


}

/**
 * @title CappedCrowdsale
 * @dev Extension of Crowsdale with a max amount of funds raised
 */
contract CappedCrowdsale is Crowdsale {
  using SafeMath for uint256;

  uint256 public cap;

  function CappedCrowdsale(uint256 _cap) {
    require(_cap > 0);
    cap = _cap;
  }

  // overriding Crowdsale#validPurchase to add extra cap logic
  // @return true if investors can buy at the moment
  function validPurchase() internal constant returns (bool) {
    bool withinCap = weiRaised.add(msg.value) <= cap;
    return super.validPurchase() && withinCap;
  }

  // overriding Crowdsale#hasEnded to add cap logic
  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    bool capReached = weiRaised >= cap;
    return super.hasEnded() || capReached;
  }

}

/**
 * @title FinalizableCrowdsale
 * @dev Extension of Crowsdale where an owner can do extra work
 * after finishing. By default, it will end token minting.
 */
contract MyFinalizableCrowdsale is Crowdsale, Ownable {
  using SafeMath for uint256;

  bool public isFinalized = false;

  // address where funds are collected
  address public tokenWallet;

  event Finalized();
  event FinalTokens(uint256 _generated);

  function MyFinalizableCrowdsale(address _tokenWallet) {
    tokenWallet = _tokenWallet;
  }


  function finalize() onlyOwner {
    require(!isFinalized);
    require(hasEnded());

    finalization();
    Finalized();
    
    isFinalized = true;
  }

  function generateFinalTokens(uint256 ratio) internal {
    uint256 finalValue = token.totalSupply();
    finalValue = finalValue.mul(ratio).div(100);

    token.mint(tokenWallet, finalValue);
    FinalTokens(finalValue);
  }

  // end token minting on finalization
  // override this with custom logic if needed
  function finalization() internal {
    token.finishMinting();
  }



}

/**
 * @title MultiCappedCrowdsale
 * @dev Extension of Crowsdale with a soft cap and a hard cap.
 * after finishing. By default, it will end token minting.
 */
contract MultiCappedCrowdsale is Crowdsale, Ownable {
  using SafeMath for uint256;

  uint256 public softCap;
  uint256 public hardCap = 0;
  bytes32 public hardCapHash;
  uint256 public hardCapBlock = 0;
  uint256 public constant endBuffer = 700;
  event NotFinalized(bytes32 _a, bytes32 _b);

  function MultiCappedCrowdsale(uint256 _softCap, bytes32 _hardCapHash) {
    require(_softCap > 0);
    softCap = _softCap;
    hardCapHash = _hardCapHash;
  }

  //
  //  Soft cap logic
  //
  
  // overriding Crowdsale#validPurchase to add extra cap logic
  // @return true if investors can buy at the moment
  function validPurchase() internal constant returns (bool) {
    if (hardCap > 0) {
      checkHardCap(weiRaised.add(msg.value));
    }
    return super.validPurchase();
  }

  // overriding Crowdsale#hasEnded to add cap logic
  // @return true if crowdsale event has ended
  //function hasEnded() public constant returns (bool) {
  //  return super.hasEnded();
  //}

  //
  //  Hard cap logic
  //

  // should be called after crowdsale ends, to do
  // some extra finalization work
  function bytes32ToString (bytes32 data) private returns (string) {
    bytes memory bytesString = new bytes(32);
    for (uint j=0; j<32; j++) {
        byte char = byte(bytes32(uint(data) * 2 ** (8 * j)));
        if (char != 0) {
            bytesString[j] = char;
        }
    }
    return string(bytesString);
  }

  function hashHardCap(uint256 _hardCap) internal constant returns (bytes32) {
    return sha256(bytes32ToString(bytes32(_hardCap)));
  }

  function setHardCap(uint256 _hardCap) external onlyOwner {
    if (hardCapHash != hashHardCap(_hardCap)) {
      NotFinalized(hashHardCap(_hardCap), hardCapHash);
      return;
    }
    hardCap = _hardCap;
    checkHardCap(weiRaised);
  }

  function checkHardCap(uint256 totalRaised) internal {
    if (hardCapBlock == 0 && totalRaised > hardCap) {
      hardCapBlock = block.number;
      endBlock = block.number+endBuffer;
    }
  }

}

/**
 * @title MyCrowdsaleToken
 */
contract MyCrowdsaleToken is MintableToken {

  string public constant name = "Sample Crowdsale Token";
  string public constant symbol = "SCT";
  uint8 public constant decimals = 18;


}

/**
 * @title SampleCrowdsale
 * @dev This is an example of a fully fledged crowdsale.
 * The way to add new features to a base crowdsale is by multiple inheritance.
 * In this example we are providing following extensions:
 * CappedCrowdsale - sets a max boundary for raised funds
 *
 * After adding multiple features it's good practice to run integration tests
 * to ensure that subcontracts works together as intended.
 */
//contract MySale is Crowdsale {
contract MySale is MyFinalizableCrowdsale, MultiCappedCrowdsale {

  // how many token units a buyer gets per wei
  uint256 public finalRate;

  function MySale(uint256 _startTime, uint256 _endTime, uint256 _rate, uint256 _finalRate, uint256 _softCap, address _wallet, bytes32 _hardCapHash, address _tokenWallet)
   MultiCappedCrowdsale(_softCap, _hardCapHash)
   MyFinalizableCrowdsale(_tokenWallet)
   Crowdsale(_startTime, _endTime, _rate, _wallet)
  {
    finalRate = _finalRate;
  }

  function pregenTokens(address beneficiary, uint256 weiAmount) onlyOwner {
    require(beneficiary != 0x0);

    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
  }

  // low level token purchase function, called from default payable
  function buyTokens(address beneficiary) payable {
    require(beneficiary != 0x0);
    require(validPurchase());

    uint256 weiAmount = msg.value;

    uint256 currentRate = rate;
    if (weiRaised > softCap) {
        currentRate = finalRate;
    }
    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(currentRate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

    forwardFunds();
  }

  function createTokenContract() internal returns (MintableToken) {
    return new MyCrowdsaleToken();
  }

  // end token minting on finalization
  // override this with custom logic if needed
  function finalization() internal {
    if (weiRaised < softCap) {
      generateFinalTokens(50);
    } else if (weiRaised < hardCap) {
      generateFinalTokens(40);
    } else {
      generateFinalTokens(30);
    }
    super.finalization();
  }

}

  Contract ABI  
[{"constant":true,"inputs":[],"name":"hardCapBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBuffer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"weiAmount","type":"uint256"}],"name":"pregenTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hardCap","type":"uint256"}],"name":"setHardCap","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":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_finalRate","type":"uint256"},{"name":"_softCap","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_hardCapHash","type":"bytes32"},{"name":"_tokenWallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_a","type":"bytes32"},{"indexed":false,"name":"_b","type":"bytes32"}],"name":"NotFinalized","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_generated","type":"uint256"}],"name":"FinalTokens","type":"event"},{"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 Switch To Opcodes View
60606040526006805460a060020a60ff021916905560006009819055600b55341561002957600080fd5b6040516101008061237a83398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519150505b83825b825b5b8a8a8a885b4384101561008a57600080fd5b8383101561009757600080fd5b600082116100a457600080fd5b600160a060020a03811615156100b957600080fd5b6100ce640100000000610d8861017782021704565b60008054600160a060020a0319908116600160a060020a0393841617909155600186905560028590556004849055600380549091169183169190911790555b505060068054600160a060020a03191633600160a060020a031617905550505b60078054600160a060020a031916600160a060020a0383161790555b506000821161015757600080fd5b6008829055600a8190555b5050600c8590555b50505050505050506101ad565b600061018161019d565b604051809103906000f080151561019757600080fd5b90505b90565b6040516109ea8061199083390190565b6117d4806101bc6000396000f300606060405236156101005763ffffffff60e060020a6000350416626b16c6811461010d578063083c63231461013257806321106109146101575780632c4e722e1461017c5780633e07905e146101a15780634042b66f146101c657806348cd4cb1146101eb5780634bb278f314610210578063521eb27314610225578063576cb655146102545780638d4e4083146102785780638da5cb5b1461029f578063906a26e0146102ce578063bff99c6c146102f3578063c2dc9af414610322578063d18d944b14610347578063ec8ac4d81461035f578063ecb70fb714610375578063f2fde38b1461039c578063fb86a404146103bd578063fc0c546a146103e2575b5b61010a33610411565b5b005b341561011857600080fd5b61012061055b565b60405190815260200160405180910390f35b341561013d57600080fd5b610120610561565b60405190815260200160405180910390f35b341561016257600080fd5b610120610567565b60405190815260200160405180910390f35b341561018757600080fd5b61012061056d565b60405190815260200160405180910390f35b34156101ac57600080fd5b610120610573565b60405190815260200160405180910390f35b34156101d157600080fd5b610120610579565b60405190815260200160405180910390f35b34156101f657600080fd5b61012061057f565b60405190815260200160405180910390f35b341561021b57600080fd5b61010a610585565b005b341561023057600080fd5b610238610648565b604051600160a060020a03909116815260200160405180910390f35b341561025f57600080fd5b61010a600160a060020a0360043516602435610657565b005b341561028357600080fd5b61028b61078a565b604051901515815260200160405180910390f35b34156102aa57600080fd5b6102386107ab565b604051600160a060020a03909116815260200160405180910390f35b34156102d957600080fd5b6101206107ba565b60405190815260200160405180910390f35b34156102fe57600080fd5b6102386107c0565b604051600160a060020a03909116815260200160405180910390f35b341561032d57600080fd5b6101206107cf565b60405190815260200160405180910390f35b341561035257600080fd5b61010a6004356107d5565b005b61010a600160a060020a0360043516610411565b005b341561038057600080fd5b61028b610860565b604051901515815260200160405180910390f35b34156103a757600080fd5b61010a600160a060020a0360043516610869565b005b34156103c857600080fd5b6101206108c1565b60405190815260200160405180910390f35b34156103ed57600080fd5b6102386108c7565b604051600160a060020a03909116815260200160405180910390f35b60008080600160a060020a038416151561042a57600080fd5b6104326108d6565b151561043d57600080fd5b3492506004549150600854600554111561045757600c5491505b610467838363ffffffff61090d16565b60055490915061047d908463ffffffff61093c16565b60055560008054600160a060020a0316906340c10f1990869084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156104e257600080fd5b6102c65a03f115156104f357600080fd5b505050604051805190505083600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18858460405191825260208201526040908101905180910390a3610554610956565b5b50505050565b600b5481565b60025481565b600c5481565b60045481565b6102bc81565b60055481565b60015481565b60065433600160a060020a039081169116146105a057600080fd5b60065474010000000000000000000000000000000000000000900460ff16156105c857600080fd5b6105d0610860565b15156105db57600080fd5b6105e361098d565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16006805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b600354600160a060020a031681565b60065460009033600160a060020a0390811691161461067557600080fd5b600160a060020a038316151561068a57600080fd5b60045461069e90839063ffffffff61090d16565b6005549091506106b4908363ffffffff61093c16565b60055560008054600160a060020a0316906340c10f1990859084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561071957600080fd5b6102c65a03f1151561072a57600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a35b5b505050565b60065474010000000000000000000000000000000000000000900460ff1681565b600654600160a060020a031681565b60085481565b600754600160a060020a031681565b600a5481565b60065433600160a060020a039081169116146107f057600080fd5b6107f9816109da565b600a541461084a577f62c63e313cb0df61acad466dd69f55d428057e43d2bc2b115635897b75bbcad761082b826109da565b600a5460405191825260208201526040908101905180910390a161085b565b600981905560055461085b90610a72565b5b5b50565b60025443115b90565b60065433600160a060020a0390811691161461088457600080fd5b600160a060020a0381161561085b576006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60095481565b600054600160a060020a031681565b60008060095411156108fe576005546108fe906108f9903463ffffffff61093c16565b610a72565b5b610907610a9a565b90505b90565b6000828202831580610929575082848281151561092657fe5b04145b151561093157fe5b8091505b5092915050565b60008282018381101561093157fe5b8091505b5092915050565b600354600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561064557600080fd5b5b565b60085460055410156109a8576109a36032610ad0565b6109cd565b60095460055410156109c3576109a36028610ad0565b6109cd565b6109cd601e610ad0565b5b5b610645610c15565b5b565b600060026109e783610c7c565b6000604051602001526040518082805190602001908083835b60208310610a2057805182525b601f199092019160209182019101610a00565b6001836020036101000a03801982511681845116808217855250505050505090500191505060206040518083038160008661646e5a03f11515610a6257600080fd5b505060405180519150505b919050565b600b54158015610a83575060095481115b1561085b5743600b8190556102bc016002555b5b50565b6000806000804392506001548310158015610ab757506002548311155b915050341515818015610ac75750805b93505b50505090565b60008054600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b1857600080fd5b6102c65a03f11515610b2957600080fd5b50505060405180519150610b5690506064610b4a838563ffffffff61090d16565b9063ffffffff610d4816565b60008054600754929350600160a060020a03908116926340c10f199291169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bc157600080fd5b6102c65a03f11515610bd257600080fd5b50505060405180519050507f18d5312de723843f24877b7489d85b95ba8eb03cab753c32a8d6888ee89528a78160405190815260200160405180910390a15b5050565b60008054600160a060020a031690637d64bcb490604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c5e57600080fd5b6102c65a03f11515610c6f57600080fd5b505050604051805150505b565b610c84610d64565b610c8c610d64565b6000806020604051805910610c9e5750595b908082528060200260200182016040525b509250600091505b6020821015610d3c57506008810260020a84027fff00000000000000000000000000000000000000000000000000000000000000811615610d305780838381518110610cff57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b5b600190910190610cb7565b8293505b505050919050565b6000808284811515610d5657fe5b0490508091505b5092915050565b60206040519081016040526000815290565b60206040519081016040526000815290565b6000610d92610dae565b604051809103906000f080151561090757600080fd5b90505b90565b6040516109ea80610dbf83390190560060606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b6109a9806100416000396000f300606060405236156100cd5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100d257806306fdde03146100f9578063095ea7b31461018457806318160ddd146101ba57806323b872dd146101df578063313ce5671461021b57806340c10f191461024457806370a082311461027a5780637d64bcb4146102ab5780638da5cb5b146102d257806395d89b4114610301578063a9059cbb1461038c578063dd62ed3e146103c2578063f2fde38b146103f9575b600080fd5b34156100dd57600080fd5b6100e561041a565b604051901515815260200160405180910390f35b341561010457600080fd5b61010c61043b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101495780820151818401525b602001610130565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018f57600080fd5b6100e5600160a060020a0360043516602435610472565b604051901515815260200160405180910390f35b34156101c557600080fd5b6101cd610519565b60405190815260200160405180910390f35b34156101ea57600080fd5b6100e5600160a060020a036004358116906024351660443561051f565b604051901515815260200160405180910390f35b341561022657600080fd5b61022e610634565b60405160ff909116815260200160405180910390f35b341561024f57600080fd5b6100e5600160a060020a0360043516602435610639565b604051901515815260200160405180910390f35b341561028557600080fd5b6101cd600160a060020a036004351661071b565b60405190815260200160405180910390f35b34156102b657600080fd5b6100e561073a565b604051901515815260200160405180910390f35b34156102dd57600080fd5b6102e56107c1565b604051600160a060020a03909116815260200160405180910390f35b341561030c57600080fd5b61010c6107d0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101495780820151818401525b602001610130565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039757600080fd5b6100e5600160a060020a0360043516602435610807565b604051901515815260200160405180910390f35b34156103cd57600080fd5b6101cd600160a060020a03600435811690602435166108c7565b60405190815260200160405180910390f35b341561040457600080fd5b610418600160a060020a03600435166108f4565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b60008115806104a45750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b15156104af57600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610566908463ffffffff61094c16565b600160a060020a03808616600090815260016020526040808220939093559087168152205461059b908463ffffffff61096616565b600160a060020a0386166000908152600160205260409020556105c4818463ffffffff61096616565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a0390811691161461065757600080fd5b60035474010000000000000000000000000000000000000000900460ff161561067f57600080fd5b600054610692908363ffffffff61094c16565b6000908155600160a060020a0384168152600160205260409020546106bd908363ffffffff61094c16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a25060015b5b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075857600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a033316600090815260016020526040812054610830908363ffffffff61096616565b600160a060020a033381166000908152600160205260408082209390935590851681522054610865908363ffffffff61094c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461090f57600080fd5b600160a060020a03811615610947576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60008282018381101561095b57fe5b8091505b5092915050565b60008282111561097257fe5b508082035b929150505600a165627a7a72305820819b168a12996c88df4ac51e3eeb20d6e70cb5378bee593933f334432dbad2d50029a165627a7a7230582096dc45e29d1b223be12f04357fe839ea976434c0dabbed0095cbee31bf4ea0fa002960606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b6109a9806100416000396000f300606060405236156100cd5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100d257806306fdde03146100f9578063095ea7b31461018457806318160ddd146101ba57806323b872dd146101df578063313ce5671461021b57806340c10f191461024457806370a082311461027a5780637d64bcb4146102ab5780638da5cb5b146102d257806395d89b4114610301578063a9059cbb1461038c578063dd62ed3e146103c2578063f2fde38b146103f9575b600080fd5b34156100dd57600080fd5b6100e561041a565b604051901515815260200160405180910390f35b341561010457600080fd5b61010c61043b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101495780820151818401525b602001610130565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018f57600080fd5b6100e5600160a060020a0360043516602435610472565b604051901515815260200160405180910390f35b34156101c557600080fd5b6101cd610519565b60405190815260200160405180910390f35b34156101ea57600080fd5b6100e5600160a060020a036004358116906024351660443561051f565b604051901515815260200160405180910390f35b341561022657600080fd5b61022e610634565b60405160ff909116815260200160405180910390f35b341561024f57600080fd5b6100e5600160a060020a0360043516602435610639565b604051901515815260200160405180910390f35b341561028557600080fd5b6101cd600160a060020a036004351661071b565b60405190815260200160405180910390f35b34156102b657600080fd5b6100e561073a565b604051901515815260200160405180910390f35b34156102dd57600080fd5b6102e56107c1565b604051600160a060020a03909116815260200160405180910390f35b341561030c57600080fd5b61010c6107d0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101495780820151818401525b602001610130565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039757600080fd5b6100e5600160a060020a0360043516602435610807565b604051901515815260200160405180910390f35b34156103cd57600080fd5b6101cd600160a060020a03600435811690602435166108c7565b60405190815260200160405180910390f35b341561040457600080fd5b610418600160a060020a03600435166108f4565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b60008115806104a45750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b15156104af57600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610566908463ffffffff61094c16565b600160a060020a03808616600090815260016020526040808220939093559087168152205461059b908463ffffffff61096616565b600160a060020a0386166000908152600160205260409020556105c4818463ffffffff61096616565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a0390811691161461065757600080fd5b60035474010000000000000000000000000000000000000000900460ff161561067f57600080fd5b600054610692908363ffffffff61094c16565b6000908155600160a060020a0384168152600160205260409020546106bd908363ffffffff61094c16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a25060015b5b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075857600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a033316600090815260016020526040812054610830908363ffffffff61096616565b600160a060020a033381166000908152600160205260408082209390935590851681522054610865908363ffffffff61094c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461090f57600080fd5b600160a060020a03811615610947576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60008282018381101561095b57fe5b8091505b5092915050565b60008282111561097257fe5b508082035b929150505600a165627a7a72305820819b168a12996c88df4ac51e3eeb20d6e70cb5378bee593933f334432dbad2d500290000000000000000000000000000000000000000000000000000000000196dcc000000000000000000000000000000000000000000000000000000000019e2fc00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000ad6b063871094a8ebe050b0861d8e7f16f5963e4b316befd43ac2f3c4d30fa8065777d9c13fd498da13bd5c2556bb48a5bccbce200000000000000000000000071835a2662bed47dff7d079f6d0f0dd89ce4bb70

    Constructor Arguments (ABI-encoded and appended to the ByteCode above)
0000000000000000000000000000000000000000000000000000000000196dcc000000000000000000000000000000000000000000000000000000000019e2fc00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000ad6b063871094a8ebe050b0861d8e7f16f5963e4b316befd43ac2f3c4d30fa8065777d9c13fd498da13bd5c2556bb48a5bccbce200000000000000000000000071835a2662bed47dff7d079f6d0f0dd89ce4bb70

-----Decoded View---------------
Found 8 constructor arguments :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000196dcc
Arg [1] : 000000000000000000000000000000000000000000000000000000000019e2fc
Arg [2] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [4] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [5] : 000000000000000000000000ad6b063871094a8ebe050b0861d8e7f16f5963e4
Arg [6] : b316befd43ac2f3c4d30fa8065777d9c13fd498da13bd5c2556bb48a5bccbce2
Arg [7] : 00000000000000000000000071835a2662bed47dff7d079f6d0f0dd89ce4bb70


   Swarm Source:
bzzr://819b168a12996c88df4ac51e3eeb20d6e70cb5378bee593933f334432dbad2d5
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward