Contract 0x360e51857242661de8f3ec4e6c684b45b3c0de87

 

Contract Overview

Balance:
0.093333333333333334 Ether

EtherValue:
$11.85 (@ $126.92/ETH)
TxHash Block Age From To Value [TxFee]
0xd78ed4d946398b074c0a0c38f49c6064381a66770ee5bec112434165c67d4f4e5290986333 days 20 hrs ago0xf0d863095d15b90132fffd9b9dcd8804ea3821a6  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000091516
0xa7af344aa476e333373351f99d3fed11d063ced90a8af5b5d91176a3b5322b0d5290964333 days 20 hrs ago0xf0d863095d15b90132fffd9b9dcd8804ea3821a6  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000091516
0x3c1e0e9547e3c72eb1e70da71ae2710996bb66bd6e22a9e3d94c94a7aa8897f65290271333 days 22 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000154776
0x953439a7ef421eef5425721e011f39afdafe0a6520d4a865fd0d4f41768fa6165199245349 days 9 hrs ago0x996b1df572b6f39bb267407e39083dc80917a192  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.00009596112
0x4c45d231512cb878382a4c41e9acf4b4fce28125e100c4a61c3c29000ba3c0565181022352 days 11 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000223644
0x818b847628738c455cfeac05b73b9ef84b6193bd26f3aabced1d60825940ce935130915361 days 16 mins ago0x846ca334b66c346c84d4db4cff9bd45ba86d8ab2  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000446712
0x78e040324a1cdfd8bff385c264c40e711db5fabe0e0d029ace0b20bdbe59b55d5130873361 days 27 mins ago0x846ca334b66c346c84d4db4cff9bd45ba86d8ab2  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000462
0xc5f88adca713109836d4c1905ae11582a1182c255d3b65ded7f8c482980bcf185015053380 days 12 hrs ago0xf0d863095d15b90132fffd9b9dcd8804ea3821a6  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000185456
0x497c8b012148e1ec49345e0e90aa87f0bcb648b73ea621c5eebc36936987478a5014268380 days 15 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.0004041
0x89f8a9eef0482db2fa1e60a73b41a55ff6e63226768ac3920fb34bca1cc2782f4994964383 days 22 hrs ago0xb8163d6445c194ac066605026b6a22691d5f0d8f  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.0000093496
0x64f474fb9a4025d5f5984fc6f87ffbde7d02123d16e041b303d10fc0e293ee234990297384 days 17 hrs ago0x6ca1b4e3aa27201b34f3b0ba08169b33bc88609b  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000092772
0x5fdb068d2acb828f8678de1f7c8c32eb9dd2b1c73efd161192b697627400827d4989441384 days 20 hrs ago0x97c9f955d50c03752e78ed551256c48f779fbe82  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000093028
0x8231655fc9b4147945999747e86cff1806b193db9c6085771b35c64dfec18c914976449387 days 1 hr ago0x846ca334b66c346c84d4db4cff9bd45ba86d8ab2  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870.1 Ether0.000473445
0x403ff8457a20c8b45da90c552057b551a5f2116084748651e3630d6beed9ce754976433387 days 1 hr ago0x846ca334b66c346c84d4db4cff9bd45ba86d8ab2  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.001948212
0x56bbf7c9b827df74415a9d9036645a5218911ba514d2ead29fec10116bf1a4be4973933387 days 11 hrs ago0x996b1df572b6f39bb267407e39083dc80917a192  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.000092772
0x01d4b3cab212c255d815e39c2b5f926a19fdb72733d76501b4f0319e0fda63374967999388 days 11 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870.04 Ether0.000112725
0x2336544399ffec01ae6d4b2ac93435004b6c3793a0429d5fc314c9cd70d5efa34967734388 days 12 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   0x360e51857242661de8f3ec4e6c684b45b3c0de870 Ether0.00054088
0x42844e0f04013eefbf714b53881d4ddb581d9cd85073313de0528415d69ce3ca4962186389 days 10 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   Contract Creation0 Ether0.009303415
[ Download CSV Export 

Latest 2 Internal Transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x3c1e0e9547e3c72eb1e70da71ae2710996bb66bd6e22a9e3d94c94a7aa8897f65290271333 days 22 hrs ago0x360e51857242661de8f3ec4e6c684b45b3c0de870xdb6794aca55ce8b87caf3d626dd4a7c758924b4d0.023333333333333333 Ether
0x953439a7ef421eef5425721e011f39afdafe0a6520d4a865fd0d4f41768fa6165199245349 days 9 hrs ago0x360e51857242661de8f3ec4e6c684b45b3c0de870x996b1df572b6f39bb267407e39083dc80917a1920.023333333333333333 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Karma
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.18;

/** SafeMath libs are inspired by:
  *  https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol
  * There is debate as to whether this lib should use assert or require:
  *  https://github.com/OpenZeppelin/zeppelin-solidity/issues/565

  * `require` is used in these libraries for the following reasons:
  *   - overflows should not be checked in contract function bodies; DRY
  *   - "valid" user input can cause overflows, which should not assert()
  */
library SafeMath {
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    return a - b;
  }

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

library SafeMath64 {
  function sub(uint64 a, uint64 b) internal pure returns (uint64) {
    require(b <= a);
    return a - b;
  }

  function add(uint64 a, uint64 b) internal pure returns (uint64) {
    uint64 c = a + b;
    require(c >= a);
    return c;
  }
}


// https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/ownership/Ownable.sol
contract Ownable {
  address public owner;

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

  function Ownable() public {
    owner = msg.sender;
  }

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

  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}


// https://github.com/ethereum/EIPs/issues/179
contract ERC20Basic {
  uint256 public totalSupply;
  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);
}


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


// https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/DetailedERC20.sol
contract DetailedERC20 is ERC20 {
  string public name;
  string public symbol;
  uint8 public decimals;

  function DetailedERC20(string _name, string _symbol, uint8 _decimals) public {
    name = _name;
    symbol = _symbol;
    decimals = _decimals;
  }
}


/** KarmaToken has the following properties:
  *
  * User Creation:
  * - Self-registration
  *   - Owner signs hash(address, username, endowment), and sends to user
  *   - User registers with username, endowment, and signature to create new account.
  * - Mod creates new user.
  *
  * Karma/Token Rules:
  * - Karma is created by initial user creation endowment.
  * - Karma can also be minted by mod into an existing account.
  * - Karma can only be transferred to existing account holder.
  * - Karma implements the ERC20 token interface.
  *
  * Dividends:
  * - each user can withdraw a dividend once per month.
  * - dividend is total contract value at end of the month, divided by total number of users as end of the month.
  * - user has 1 month to withdraw their dividend from the previous month.
  * - if user does not withdraw their dividend, their share will be rolled over as a donation to the next month.
  * - mod can place a user on a 1 month "timeout", whereby they won't be eligible for a dividend.

  * Eg: 10 eth is sent to the contract in January. There are 100 token holders on Jan 31. At any time in February, 
  * each token holder can withdraw .1 eth for their January dividend (unless they were given a "timeout" in January).
  */
contract Karma is Ownable, DetailedERC20("KarmaToken", "KARMA", 0) {
  // SafeMath libs are responsible for checking overflow.
  using SafeMath for uint256;
  using SafeMath64 for uint64;

  // TODO ensure this all fits in a single 256 bit block.
  struct User {
    bytes20 username;
    uint64 karma; 
    uint16 canWithdrawPeriod;
    uint16 birthPeriod;
  }

  // Manage users.
  mapping(address => User) public users;
  mapping(bytes20 => address) public usernames;

  // Manage dividend payments.
  uint256 public epoch;
  uint256 public dividend;
  uint64 public numUsers;
  uint64 public newUsers;
  uint16 public currentPeriod = 1;

  address public moderator;

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

  event Mint(address indexed to, uint256 amount);
  event PeriodEnd(uint16 period, uint256 amount, uint64 users);
  event Donation(address indexed from, uint256 amount);
  event Withdrawal(address indexed to, uint16 indexed period, uint256 amount);
  event NewUser(address addr, bytes20 username, uint64 endowment);

  modifier onlyMod() {
    require(msg.sender == moderator);
    _;
  }

  function Karma(uint256 _startEpoch) public {
    epoch = _startEpoch;
    moderator = msg.sender;
  }

  function() payable public {
    Donation(msg.sender, msg.value);
  }

  /** 
   * Owner Functions 
   */

  function setMod(address _newMod) public onlyOwner {
    moderator = _newMod;
  }

  // Owner should call this on 1st of every month.
  function newPeriod() public onlyOwner {
    require(now >= epoch + 28 days);

    // Calculate dividend.
    uint64 existingUsers = numUsers;
    if (existingUsers == 0) {
      dividend = 0;
    } else {
      dividend = this.balance / existingUsers;
    }

    numUsers = numUsers.add(newUsers);
    newUsers = 0;
    currentPeriod++;
    epoch = now;

    PeriodEnd(currentPeriod-1, this.balance, existingUsers);
  }

  /**
    * Mod Functions
    */

  function createUser(address _addr, bytes20 _username, uint64 _amount) public onlyMod {
    newUser(_addr, _username, _amount);
  }

  // Send karma to existing account.
  function mint(address _addr, uint64 _amount) public onlyMod {
    require(users[_addr].canWithdrawPeriod != 0);

    users[_addr].karma = users[_addr].karma.add(_amount);
    totalSupply = totalSupply.add(_amount);
    Mint(_addr, _amount);
  }

  // If a user has been bad, they won't be able to receive a dividend :(
  function timeout(address _addr) public onlyMod {
    require(users[_addr].canWithdrawPeriod != 0);

    users[_addr].canWithdrawPeriod = currentPeriod + 1;
  }

  /**
    * User Functions
    */

  // Owner will sign hash(address, username, amount), and address owner uses this 
  // signature to register their account.
  function register(bytes20 _username, uint64 _endowment, bytes _sig) public {
    require(recover(keccak256(msg.sender, _username, _endowment), _sig) == owner);
    newUser(msg.sender, _username, _endowment);
  }

  // User can withdraw their share of donations from the previous month.
  function withdraw() public {
    require(users[msg.sender].canWithdrawPeriod != 0);
    require(users[msg.sender].canWithdrawPeriod < currentPeriod);

    users[msg.sender].canWithdrawPeriod = currentPeriod;
    msg.sender.transfer(dividend);
    Withdrawal(msg.sender, currentPeriod-1, dividend);
  }

  /**
    * ERC20 Functions
    */

  function balanceOf(address _owner) public view returns (uint256 balance) {
    return users[_owner].karma;
  }

  // Contrary to most ERC20 implementations, require that recipient is existing user.
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(users[_to].canWithdrawPeriod != 0);
    require(_value <= users[msg.sender].karma);

    // Type assertion to uint64 is safe because we require that _value is < uint64 above.
    users[msg.sender].karma = users[msg.sender].karma.sub(uint64(_value));
    users[_to].karma = users[_to].karma.add(uint64(_value));
    Transfer(msg.sender, _to, _value);
    return true;
  }

  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

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

  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;
  }

  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;
  }

  // Contrary to most ERC20 implementations, require that recipient is existing user.
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(users[_to].canWithdrawPeriod != 0);
    require(_value <= users[_from].karma);
    require(_value <= allowed[_from][msg.sender]);

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

  /**
    * Private Functions
    */

  // https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/ECRecovery.sol
  function recover(bytes32 hash, bytes sig) internal pure returns (address) {
    bytes32 r;
    bytes32 s;
    uint8 v;

    //Check the signature length
    if (sig.length != 65) {
      return (address(0));
    }

    // Divide the signature in r, s and v variables
    assembly {
      r := mload(add(sig, 32))
      s := mload(add(sig, 64))
      v := byte(0, mload(add(sig, 96)))
    }

    // Version of signature should be 27 or 28, but 0 and 1 are also possible versions
    if (v < 27) {
      v += 27;
    }

    // If the version is correct return the signer address
    if (v != 27 && v != 28) {
      return (address(0));
    } else {
      return ecrecover(hash, v, r, s);
    }
  }

  // Ensures that username isn't taken, and account doesn't already exist for 
  // user's address.
  function newUser(address _addr, bytes20 _username, uint64 _endowment) private {
    require(usernames[_username] == address(0));
    require(users[_addr].canWithdrawPeriod == 0);

    users[_addr].canWithdrawPeriod = currentPeriod + 1;
    users[_addr].birthPeriod = currentPeriod;
    users[_addr].karma = _endowment;
    users[_addr].username = _username;
    usernames[_username] = _addr;

    newUsers = newUsers.add(1);
    totalSupply = totalSupply.add(_endowment);
    NewUser(_addr, _username, _endowment);
  }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"currentPeriod","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dividend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numUsers","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint64"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newMod","type":"address"}],"name":"setMod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"moderator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"newPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newUsers","outputs":[{"name":"","type":"uint64"}],"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":"epoch","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"users","outputs":[{"name":"username","type":"bytes20"},{"name":"karma","type":"uint64"},{"name":"canWithdrawPeriod","type":"uint16"},{"name":"birthPeriod","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_username","type":"bytes20"},{"name":"_amount","type":"uint64"}],"name":"createUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"timeout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes20"}],"name":"usernames","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_username","type":"bytes20"},{"name":"_endowment","type":"uint64"},{"name":"_sig","type":"bytes"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_startEpoch","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"period","type":"uint16"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"users","type":"uint64"}],"name":"PeriodEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Donation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"period","type":"uint16"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"username","type":"bytes20"},{"indexed":false,"name":"endowment","type":"uint64"}],"name":"NewUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Contract Creation Code
606060405260098054608060020a61ffff02191670010000000000000000000000000000000017905534156200003457600080fd5b60405160208062001a498339810160405280805191506040905080519081016040908152600a82527f4b61726d61546f6b656e0000000000000000000000000000000000000000000060208301528051908101604052600581527f4b41524d41000000000000000000000000000000000000000000000000000000602082015260008054600160a060020a03191633600160a060020a03161781556002838051620000e492916020019062000135565b506003828051620000fa92916020019062000135565b506004805460ff191660ff929092169190911790555050600755600a8054600160a060020a03191633600160a060020a0316179055620001da565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017857805160ff1916838001178555620001a8565b82800160010185558215620001a8579182015b82811115620001a85782518255916020019190600101906200018b565b50620001b6929150620001ba565b5090565b620001d791905b80821115620001b65760008155600101620001c1565b90565b61185f80620001ea6000396000f3006060604052600436106101505763ffffffff60e060020a60003504166306040618811461018f57806306fdde03146101b9578063095ea7b3146102435780630ff8cf9b1461027957806318160ddd1461029e57806319a50f49146102b157806323b872dd146102e15780632893c5b014610309578063313ce56714610337578063376d567c14610360578063387439041461037f5780633ccfd60b146103ae5780635e11544b146103c157806366188463146103d457806370a08231146103f65780637dd10e4f146104155780638da5cb5b14610428578063900cf0cf1461043b57806395d89b411461044e578063a87430ba14610461578063a9059cbb146104ca578063ab108915146104ec578063aedd18dc1461052a578063b6f085c714610549578063d73dd6231461056e578063dd62ed3e14610590578063f2fde38b146105b5578063ffd9ca40146105d4575b33600160a060020a03167f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e3460405190815260200160405180910390a2005b341561019a57600080fd5b6101a2610649565b60405161ffff909116815260200160405180910390f35b34156101c457600080fd5b6101cc61065a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102085780820151838201526020016101f0565b50505050905090810190601f1680156102355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561024e57600080fd5b610265600160a060020a03600435166024356106f8565b604051901515815260200160405180910390f35b341561028457600080fd5b61028c610764565b60405190815260200160405180910390f35b34156102a957600080fd5b61028c61076a565b34156102bc57600080fd5b6102c4610770565b60405167ffffffffffffffff909116815260200160405180910390f35b34156102ec57600080fd5b610265600160a060020a0360043581169060243516604435610780565b341561031457600080fd5b610335600160a060020a036004351667ffffffffffffffff60243516610987565b005b341561034257600080fd5b61034a610aa1565b60405160ff909116815260200160405180910390f35b341561036b57600080fd5b610335600160a060020a0360043516610aaa565b341561038a57600080fd5b610392610af4565b604051600160a060020a03909116815260200160405180910390f35b34156103b957600080fd5b610335610b03565b34156103cc57600080fd5b610335610c4d565b34156103df57600080fd5b610265600160a060020a0360043516602435610dc8565b341561040157600080fd5b61028c600160a060020a0360043516610ec2565b341561042057600080fd5b6102c4610eee565b341561043357600080fd5b610392610f0a565b341561044657600080fd5b61028c610f19565b341561045957600080fd5b6101cc610f1f565b341561046c57600080fd5b610480600160a060020a0360043516610f8a565b6040516bffffffffffffffffffffffff19909416845267ffffffffffffffff909216602084015261ffff908116604080850191909152911660608301526080909101905180910390f35b34156104d557600080fd5b610265600160a060020a0360043516602435610fef565b34156104f757600080fd5b610335600160a060020a03600435166bffffffffffffffffffffffff196024351667ffffffffffffffff60443516611170565b341561053557600080fd5b610335600160a060020a036004351661119b565b341561055457600080fd5b6103926bffffffffffffffffffffffff1960043516611248565b341561057957600080fd5b610265600160a060020a0360043516602435611263565b341561059b57600080fd5b61028c600160a060020a0360043581169060243516611307565b34156105c057600080fd5b610335600160a060020a0360043516611332565b34156105df57600080fd5b610335600480356bffffffffffffffffffffffff1916906024803567ffffffffffffffff16919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506113cd95505050505050565b600954608060020a900461ffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106f05780601f106106c5576101008083540402835291602001916106f0565b820191906000526020600020905b8154815290600101906020018083116106d357829003601f168201915b505050505081565b600160a060020a033381166000818152600b6020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60085481565b60015481565b60095467ffffffffffffffff1681565b600160a060020a03821660009081526005602052604081205460e060020a900461ffff1615156107af57600080fd5b600160a060020a03841660009081526005602052604090205460a060020a900467ffffffffffffffff168211156107e557600080fd5b600160a060020a038085166000908152600b60209081526040808320339094168352929052205482111561081857600080fd5b600160a060020a03841660009081526005602052604090205461084c9060a060020a900467ffffffffffffffff168361146f565b600160a060020a0385811660009081526005602052604080822080546000805160206118148339815191521660a060020a67ffffffffffffffff96871681029190911790915592871682529020546108a8929190041683611491565b600160a060020a038085166000908152600560209081526040808320805467ffffffffffffffff9690961660a060020a02600080516020611814833981519152909616959095179094558783168252600b815283822033909316825291909152205461091a908363ffffffff6114b716565b600160a060020a038086166000818152600b6020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600a5433600160a060020a039081169116146109a257600080fd5b600160a060020a03821660009081526005602052604090205460e060020a900461ffff1615156109d157600080fd5b600160a060020a038216600090815260056020526040902054610a059060a060020a900467ffffffffffffffff1682611491565b600160a060020a038316600090815260056020526040902080546000805160206118148339815191521660a060020a67ffffffffffffffff93841602179055600154610a529183166114c6565b600155600160a060020a0382167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405167ffffffffffffffff909116815260200160405180910390a25050565b60045460ff1681565b60005433600160a060020a03908116911614610ac557600080fd5b600a805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b33600160a060020a031660009081526005602052604090205460e060020a900461ffff161515610b3257600080fd5b60095433600160a060020a0316600090815260056020526040902054608060020a90910461ffff90811660e060020a9092041610610b6f57600080fd5b60095433600160a060020a03166000818152600560205260409081902080547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16608060020a90940461ffff1660e060020a029390931790925560085490916108fc821502919051600060405180830381858888f193505050501515610bf457600080fd5b6001600960109054906101000a900461ffff160361ffff1633600160a060020a03167f3c2087c927c21c23a795035961330088c6b19c494bd629dc572ab937e026e37760085460405190815260200160405180910390a3565b6000805433600160a060020a03908116911614610c6957600080fd5b6007546224ea0001421015610c7d57600080fd5b5060095467ffffffffffffffff16801515610c9c576000600855610cc0565b8067ffffffffffffffff1630600160a060020a031631811515610cbb57fe5b046008555b600954610cec9067ffffffffffffffff808216916801000000000000000090041663ffffffff61149116565b6009805461ffff608060020a6fffffffffffffffff00000000000000001967ffffffffffffffff9590951667ffffffffffffffff199093169290921793841682900481166001018116820271ffffffffffffffffffff0000000000000000199094169390931791829055426007557f95b96e1160963f28ab46857fdae15e1954dc91f74bb165bd4acaace3da7e2282926000199190920490911601600160a060020a033016318360405161ffff9093168352602083019190915267ffffffffffffffff166040808301919091526060909101905180910390a150565b600160a060020a033381166000908152600b6020908152604080832093861683529290529081205480831115610e2557600160a060020a033381166000908152600b60209081526040808320938816835292905290812055610e5c565b610e35818463ffffffff6114b716565b600160a060020a033381166000908152600b60209081526040808320938916835292905220555b600160a060020a033381166000818152600b602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526005602052604090205460a060020a900467ffffffffffffffff1690565b60095468010000000000000000900467ffffffffffffffff1681565b600054600160a060020a031681565b60075481565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106f05780601f106106c5576101008083540402835291602001916106f0565b6005602052600090815260409020546c0100000000000000000000000081029067ffffffffffffffff60a060020a8204169061ffff60e060020a82048116917e0100000000000000000000000000000000000000000000000000000000000090041684565b600160a060020a03821660009081526005602052604081205460e060020a900461ffff16151561101e57600080fd5b33600160a060020a031660009081526005602052604090205460a060020a900467ffffffffffffffff1682111561105457600080fd5b33600160a060020a03166000908152600560205260409020546110889060a060020a900467ffffffffffffffff168361146f565b33600160a060020a0390811660009081526005602052604080822080546000805160206118148339815191521660a060020a67ffffffffffffffff96871681029190911790915592871682529020546110e5929190041683611491565b600160a060020a0380851660008181526005602052604090819020805467ffffffffffffffff9590951660a060020a02600080516020611814833981519152909516949094179093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600a5433600160a060020a0390811691161461118b57600080fd5b6111968383836114d8565b505050565b600a5433600160a060020a039081169116146111b657600080fd5b600160a060020a03811660009081526005602052604090205460e060020a900461ffff1615156111e557600080fd5b600954600160a060020a0390911660009081526005602052604090208054600161ffff608060020a90940484160190921660e060020a027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600660205260009081526040902054600160a060020a031681565b600160a060020a033381166000908152600b6020908152604080832093861683529290529081205461129b908363ffffffff6114c616565b600160a060020a033381166000818152600b602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a039182166000908152600b6020908152604080832093909416825291909152205490565b60005433600160a060020a0390811691161461134d57600080fd5b600160a060020a038116151561136257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316611451338585604051600160a060020a03939093166c010000000000000000000000000283526bffffffffffffffffffffffff1991909116601483015267ffffffffffffffff167801000000000000000000000000000000000000000000000000026028820152603001604051809103902083611733565b600160a060020a03161461146457600080fd5b6111963384846114d8565b600067ffffffffffffffff808416908316111561148b57600080fd5b50900390565b600082820167ffffffffffffffff80851690821610156114b057600080fd5b9392505050565b60008282111561148b57600080fd5b6000828201838110156114b057600080fd5b6bffffffffffffffffffffffff198216600090815260066020526040902054600160a060020a03161561150a57600080fd5b600160a060020a03831660009081526005602052604090205460e060020a900461ffff161561153857600080fd5b60098054600160a060020a038516600081815260056020908152604080832080547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e060020a608060020a9788900461ffff90811660019081018216929092029290921780845589547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091169890049091167e0100000000000000000000000000000000000000000000000000000000000002969096176000805160206118148339815191521660a060020a67ffffffffffffffff8a8116919091029190911773ffffffffffffffffffffffffffffffffffffffff199081166c010000000000000000000000008c04179092556bffffffffffffffffffffffff198a1685526006909352922080549092169092179055915461168392680100000000000000009091041690611491565b600980546fffffffffffffffff000000000000000019166801000000000000000067ffffffffffffffff938416021790556001546116c29183166114c6565b6001557f8baf1e44852ec7ae4920f997f370a6122c6c7cf1541ff15e697990b710f36779838383604051600160a060020a0390931683526bffffffffffffffffffffffff19909116602083015267ffffffffffffffff166040808301919091526060909101905180910390a1505050565b600080600080845160411461174b576000935061180a565b6020850151925060408501519150606085015160001a9050601b8160ff16101561177357601b015b8060ff16601b1415801561178b57508060ff16601c14155b15611799576000935061180a565b6001868285856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156117fe57600080fd5b50506020604051035193505b505050929150505600ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffa165627a7a72305820d9ac4a662ec9f905e589c6064b92ffb65ae9ec58de28cb350cd7dbe9a583afc50029000000000000000000000000000000000000000000000000000000005a497a00


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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a497a00


   Swarm Source:
bzzr://d9ac4a662ec9f905e589c6064b92ffb65ae9ec58de28cb350cd7dbe9a583afc5
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.