Contract 0x501c17b26029f3a129fd9adeb4b642bd35a35248

 

TxHash Block Age From To Value [TxFee]
0xb8e13dc600dc43f3709c1cbc7e83968094607c7a5e70f1e72aaf3bf7297d88a35287035334 days 12 hrs ago0x7383b7b34f993253b68898d831684c7b4525a066  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480.1 Ether0.00009018
0x3cfa447868c65483d738f080707d80c2165950470b619e324e3258d22458b0b05287034334 days 12 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.000340212
0xc8189921e75b9eb4c6c8737100e86ab95764930211229d206cfa84b66ae1d59b5287028334 days 12 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.000340724
0x2b5874b990facb35704e447d3e9275f47ffa42957fd04ca8ecfc3ba52d8790d55287020334 days 12 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.000340724
0x0582ccd57e14eecb40341afdcb37de231e10207d2175fcf7c6cccd7ed2f8b05c5287012334 days 12 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.000342004
0xf86a87976285ed102fcd6dc4f04ac806bb12fd154d5d2a72ae743a676183d7385287012334 days 12 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.000340724
0x879d7a9341503fd730135b1332975450e69f9254cfec143cec7bfe74086cf5ca5286974334 days 12 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.00034098
0x72230129e74f0079a838f863e9fe209fa932467828495dbc345199d2202402b05286829334 days 12 hrs ago0xdb6794aca55ce8b87caf3d626dd4a7c758924b4d  IN   0x501c17b26029f3a129fd9adeb4b642bd35a352480 Ether0.000434956
0x14f2473ec1b9b325d87e64d2be7aa17de02a6b0bf15f1e1c3d5b6d0e847f71635269015337 days 13 hrs ago0x8ac56196ec7e358e2d5b69e3b401dbb17c59c2df  IN   Contract Creation0 Ether0.0084088
[ Download CSV Export 

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

Parent TxHash Block Age From To Value
0x4502bb1a4c3bc33d054112ba003f359376b4bbf5bd5a917f342f83fb7ace2d965305160331 days 11 hrs ago0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a90x501c17b26029f3a129fd9adeb4b642bd35a352480.000815 Ether
0x53eeb90df7e9f5a13c748aa0ce8d6651d154babac9ad7ec95df0201f86afb5f35295901333 days 4 mins ago0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a90x501c17b26029f3a129fd9adeb4b642bd35a352480.00059 Ether
0x7c93d1a181473f5703a5980e5e8d89b8c775fb53c7981f63f361843035d032a25291863333 days 16 hrs ago0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a90x501c17b26029f3a129fd9adeb4b642bd35a352480.000535 Ether
0x29300d18087b7cda678b247193c7d67efc848a1d4ecc5ab5e8e7c5caa3c75c685291144333 days 19 hrs ago0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a90x501c17b26029f3a129fd9adeb4b642bd35a352480.000515 Ether
0xdfb1aa505dec1f6c8d82ee2df6cde079dcd9af219f289c196618054f0e98f5115290421333 days 22 hrs ago0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a90x501c17b26029f3a129fd9adeb4b642bd35a352480.00051 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: SolClub
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;
  }
}


/** SolClub has the following properties:
  *
  * Member Creation:
  * - Self-registration
  *   - Owner signs hash(address, username, endowment), and sends to member
  *   - Member registers with username, endowment, and signature to create new account.
  * - Mod creates new member.
  * - Members are first eligible to withdraw dividends for the period after account creation.
  *
  * Karma/Token Rules:
  * - Karma is created by initial member 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 member can withdraw a dividend once per month.
  * - dividend is total contract value minus owner cut at end of the month, divided by total number of members at end of month.
  * - owner cut is determined at beginning of new period.
  * - member has 1 month to withdraw their dividend from the previous month.
  * - if member does not withdraw their dividend, their share will be given to owner.
  * - mod can place a member on a 1 month "timeout", whereby they won't be eligible for a dividend.

  * Eg: 10 eth is sent to the contract in January, owner cut is 30%. 
  * There are 70 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 SolClub is Ownable, DetailedERC20("SolClub", "SOL", 0) {
  // SafeMath libs are responsible for checking overflow.
  using SafeMath for uint256;
  using SafeMath64 for uint64;

  struct Member {
    bytes20 username;
    uint64 karma; 
    uint16 canWithdrawPeriod;
    uint16 birthPeriod;
  }

  // Manage members.
  mapping(address => Member) public members;
  mapping(bytes20 => address) public usernames;

  // Manage dividend payments.
  uint256 public epoch; // Timestamp at start of new period.
  uint256 dividendPool; // Total amount of dividends to pay out for last period.
  uint256 public dividend; // Per-member share of last period's dividend.
  uint256 public ownerCut; // Percentage, in basis points, of owner cut of this period's payments.
  uint64 public numMembers; // Number of members created before this period.
  uint64 public newMembers; // Number of members created during this period.
  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 members);
  event Payment(address indexed from, uint256 amount);
  event Withdrawal(address indexed to, uint16 indexed period, uint256 amount);
  event NewMember(address indexed addr, bytes20 username, uint64 endowment);
  event RemovedMember(address indexed addr, bytes20 username, uint64 karma, bytes32 reason);

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

  function SolClub() public {
    epoch = now;
    moderator = msg.sender;
  }

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

  /** 
   * Owner Functions 
   */

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

  // Owner should call this on twice a month.
  // _ownerCut is new owner cut for new period.
  function newPeriod(uint256 _ownerCut) public onlyOwner {
    require(now >= epoch + 15 days);
    require(_ownerCut <= 10000);

    uint256 unclaimedDividend = dividendPool;
    uint256 ownerRake = (address(this).balance-unclaimedDividend) * ownerCut / 10000;

    dividendPool = address(this).balance - unclaimedDividend - ownerRake;

    // Calculate dividend.
    uint64 existingMembers = numMembers;
    if (existingMembers == 0) {
      dividend = 0;
    } else {
      dividend = dividendPool / existingMembers;
    }

    numMembers = numMembers.add(newMembers);
    newMembers = 0;
    currentPeriod++;
    epoch = now;
    ownerCut = _ownerCut;

    msg.sender.transfer(ownerRake + unclaimedDividend);
    PeriodEnd(currentPeriod-1, this.balance, existingMembers);
  }

  // Places member is a "banished" state whereby they are no longer a member,
  // but their username remains active (preventing re-registration)
  function removeMember(address _addr, bytes32 _reason) public onlyOwner {
    require(members[_addr].birthPeriod != 0);
    Member memory m = members[_addr];

    totalSupply = totalSupply.sub(m.karma);
    if (m.birthPeriod == currentPeriod) {
      newMembers--;
    } else {
      numMembers--;
    }

    // "Burns" username, so user can't recreate.
    usernames[m.username] = address(0x1);

    delete members[_addr];
    RemovedMember(_addr, m.username, m.karma, _reason);
  }

  // Place a username back into circulation for re-registration.
  function deleteUsername(bytes20 _username) public onlyOwner {
    require(usernames[_username] == address(0x1));
    delete usernames[_username];
  }

  /**
    * Mod Functions
    */

  function createMember(address _addr, bytes20 _username, uint64 _amount) public onlyMod {
    newMember(_addr, _username, _amount);
  }

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

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

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

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

  /**
    * Member 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);
    newMember(msg.sender, _username, _endowment);
  }

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

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

  /**
    * ERC20 Functions
    */

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

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

    // Type assertion to uint64 is safe because we require that _value is < uint64 above.
    members[msg.sender].karma = members[msg.sender].karma.sub(uint64(_value));
    members[_to].karma = members[_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 member.
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(members[_to].canWithdrawPeriod != 0);
    require(_value <= members[_from].karma);
    require(_value <= allowed[_from][msg.sender]);

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

  /**
    * Private Functions
    */

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

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

    newMembers = newMembers.add(1);
    totalSupply = totalSupply.add(_endowment);
    NewMember(_addr, _username, _endowment);
  }

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

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":true,"inputs":[{"name":"","type":"address"}],"name":"members","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":"_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":false,"inputs":[{"name":"_ownerCut","type":"uint256"}],"name":"newPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_username","type":"bytes20"}],"name":"deleteUsername","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":true,"inputs":[],"name":"numMembers","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","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":"ownerCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"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":"newMembers","outputs":[{"name":"","type":"uint64"}],"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":"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":"_addr","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"removeMember","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_addr","type":"address"},{"name":"_username","type":"bytes20"},{"name":"_amount","type":"uint64"}],"name":"createMember","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":[],"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":"members","type":"uint64"}],"name":"PeriodEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Payment","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":true,"name":"addr","type":"address"},{"indexed":false,"name":"username","type":"bytes20"},{"indexed":false,"name":"endowment","type":"uint64"}],"name":"NewMember","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"username","type":"bytes20"},{"indexed":false,"name":"karma","type":"uint64"},{"indexed":false,"name":"reason","type":"bytes32"}],"name":"RemovedMember","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
6060604052600b8054608060020a61ffff02191670010000000000000000000000000000000017905534156200003457600080fd5b604080519081016040908152600782527f536f6c436c75620000000000000000000000000000000000000000000000000060208301528051908101604052600381527f534f4c0000000000000000000000000000000000000000000000000000000000602082015260008054600160a060020a03191633600160a060020a03161781556002838051620000cc9291602001906200011e565b506003828051620000e29291602001906200011e565b506004805460ff191660ff92909216919091179055505042600755600c8054600160a060020a03191633600160a060020a0316179055620001c3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016157805160ff191683800117855562000191565b8280016001018555821562000191579182015b828111156200019157825182559160200191906001019062000174565b506200019f929150620001a3565b5090565b620001c091905b808211156200019f5760008155600101620001aa565b90565b611be980620001d36000396000f3006060604052600436106101715763ffffffff60e060020a6000350416630604061881146101b057806306fdde03146101da57806308ae4b0c14610264578063095ea7b3146102c85780630ff8cf9b146102fe57806318160ddd1461032357806321d6cdb61461033657806323b872dd1461034e5780632893c5b0146103765780632eac5ca2146103a2578063313ce567146103c2578063376d567c146103eb578063387439041461040a5780633ccfd60b146104395780634698d1101461044c578063661884631461047c57806370a082311461049e57806383b5ff8b146104bd5780638da5cb5b146104d0578063900cf0cf146104e357806395d89b41146104f65780639ae3884414610509578063a9059cbb1461051c578063aedd18dc1461053e578063b6f085c71461055d578063ca7ca5b41461057d578063d73dd6231461059f578063dd62ed3e146105c1578063f2fde38b146105e6578063fbe413e414610605578063ffd9ca401461063e575b33600160a060020a03167fd4f43975feb89f48dd30cabbb32011045be187d1e11c8ea9faa43efc352825193460405190815260200160405180910390a2005b34156101bb57600080fd5b6101c36106ae565b60405161ffff909116815260200160405180910390f35b34156101e557600080fd5b6101ed6106bf565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610229578082015183820152602001610211565b50505050905090810190601f1680156102565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026f57600080fd5b610283600160a060020a036004351661075d565b6040516001606060020a0319909416845267ffffffffffffffff909216602084015261ffff908116604080850191909152911660608301526080909101905180910390f35b34156102d357600080fd5b6102ea600160a060020a03600435166024356107a7565b604051901515815260200160405180910390f35b341561030957600080fd5b610311610813565b60405190815260200160405180910390f35b341561032e57600080fd5b610311610819565b341561034157600080fd5b61034c60043561081f565b005b341561035957600080fd5b6102ea600160a060020a0360043581169060243516604435610a20565b341561038157600080fd5b61034c600160a060020a036004351667ffffffffffffffff60243516610c27565b34156103ad57600080fd5b61034c6001606060020a031960043516610d41565b34156103cd57600080fd5b6103d5610dc0565b60405160ff909116815260200160405180910390f35b34156103f657600080fd5b61034c600160a060020a0360043516610dc9565b341561041557600080fd5b61041d610e13565b604051600160a060020a03909116815260200160405180910390f35b341561044457600080fd5b61034c610e22565b341561045757600080fd5b61045f610f75565b60405167ffffffffffffffff909116815260200160405180910390f35b341561048757600080fd5b6102ea600160a060020a0360043516602435610f85565b34156104a957600080fd5b610311600160a060020a036004351661107f565b34156104c857600080fd5b6103116110ab565b34156104db57600080fd5b61041d6110b1565b34156104ee57600080fd5b6103116110c0565b341561050157600080fd5b6101ed6110c6565b341561051457600080fd5b61045f611131565b341561052757600080fd5b6102ea600160a060020a036004351660243561114d565b341561054957600080fd5b61034c600160a060020a03600435166112ce565b341561056857600080fd5b61041d6001606060020a03196004351661137b565b341561058857600080fd5b61034c600160a060020a0360043516602435611396565b34156105aa57600080fd5b6102ea600160a060020a03600435166024356115d5565b34156105cc57600080fd5b610311600160a060020a0360043581169060243516611679565b34156105f157600080fd5b61034c600160a060020a03600435166116a4565b341561061057600080fd5b61034c600160a060020a03600435166001606060020a03196024351667ffffffffffffffff6044351661173f565b341561064957600080fd5b61034c600480356001606060020a031916906024803567ffffffffffffffff16919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061176a95505050505050565b600b54608060020a900461ffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107555780601f1061072a57610100808354040283529160200191610755565b820191906000526020600020905b81548152906001019060200180831161073857829003601f168201915b505050505081565b6005602052600090815260409020546c0100000000000000000000000081029067ffffffffffffffff60a060020a8204169061ffff60e060020a820481169160f060020a90041684565b600160a060020a033381166000818152600d6020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60095481565b60015481565b600080548190819033600160a060020a0390811691161461083f57600080fd5b6007546213c6800142101561085357600080fd5b61271084111561086257600080fd5b6008549250612710600a548430600160a060020a031631030281151561088457fe5b04600160a060020a03301631849003819003600855600b5490925067ffffffffffffffff1690508015156108bc5760006009556108d8565b8067ffffffffffffffff166008548115156108d357fe5b046009555b600b546109049067ffffffffffffffff808216916801000000000000000090041663ffffffff61180716565b600b805461ffff608060020a6fffffffffffffffff00000000000000001967ffffffffffffffff9590951667ffffffffffffffff19909316929092179384168290048116600101160271ffffffffffffffffffff00000000000000001990921691909117905542600755600a849055600160a060020a03331682840180156108fc0290604051600060405180830381858888f1935050505015156109a757600080fd5b7f95b96e1160963f28ab46857fdae15e1954dc91f74bb165bd4acaace3da7e22826001600b60109054906101000a900461ffff160330600160a060020a0316318360405161ffff9093168352602083019190915267ffffffffffffffff166040808301919091526060909101905180910390a150505050565b600160a060020a03821660009081526005602052604081205460e060020a900461ffff161515610a4f57600080fd5b600160a060020a03841660009081526005602052604090205460a060020a900467ffffffffffffffff16821115610a8557600080fd5b600160a060020a038085166000908152600d602090815260408083203390941683529290522054821115610ab857600080fd5b600160a060020a038416600090815260056020526040902054610aec9060a060020a900467ffffffffffffffff168361182d565b600160a060020a038581166000908152600560205260408082208054600080516020611b9e8339815191521660a060020a67ffffffffffffffff9687168102919091179091559287168252902054610b48929190041683611807565b600160a060020a038085166000908152600560209081526040808320805467ffffffffffffffff9690961660a060020a02600080516020611b9e833981519152909616959095179094558783168252600d8152838220339093168252919091522054610bba908363ffffffff61184f16565b600160a060020a038086166000818152600d6020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600c5433600160a060020a03908116911614610c4257600080fd5b600160a060020a03821660009081526005602052604090205460e060020a900461ffff161515610c7157600080fd5b600160a060020a038216600090815260056020526040902054610ca59060a060020a900467ffffffffffffffff1682611807565b600160a060020a03831660009081526005602052604090208054600080516020611b9e8339815191521660a060020a67ffffffffffffffff93841602179055600154610cf291831661185e565b600155600160a060020a0382167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405167ffffffffffffffff909116815260200160405180910390a25050565b60005433600160a060020a03908116911614610d5c57600080fd5b6001606060020a03198116600090815260066020526040902054600160a060020a0316600114610d8b57600080fd5b6001606060020a0319166000908152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055565b60045460ff1681565b60005433600160a060020a03908116911614610de457600080fd5b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600c54600160a060020a031681565b33600160a060020a031660009081526005602052604090205460e060020a900461ffff161515610e5157600080fd5b600b5433600160a060020a0316600090815260056020526040902054608060020a90910461ffff90811660e060020a9092041610610e8e57600080fd5b600b5433600160a060020a03166000818152600560205260409081902080547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16608060020a90940461ffff1660e060020a029390931790925560095460088054829003905590916108fc821502919051600060405180830381858888f193505050501515610f1c57600080fd5b6001600b60109054906101000a900461ffff160361ffff1633600160a060020a03167f3c2087c927c21c23a795035961330088c6b19c494bd629dc572ab937e026e37760095460405190815260200160405180910390a3565b600b5467ffffffffffffffff1681565b600160a060020a033381166000908152600d6020908152604080832093861683529290529081205480831115610fe257600160a060020a033381166000908152600d60209081526040808320938816835292905290812055611019565b610ff2818463ffffffff61184f16565b600160a060020a033381166000908152600d60209081526040808320938916835292905220555b600160a060020a033381166000818152600d602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526005602052604090205460a060020a900467ffffffffffffffff1690565b600a5481565b600054600160a060020a031681565b60075481565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107555780601f1061072a57610100808354040283529160200191610755565b600b5468010000000000000000900467ffffffffffffffff1681565b600160a060020a03821660009081526005602052604081205460e060020a900461ffff16151561117c57600080fd5b33600160a060020a031660009081526005602052604090205460a060020a900467ffffffffffffffff168211156111b257600080fd5b33600160a060020a03166000908152600560205260409020546111e69060a060020a900467ffffffffffffffff168361182d565b33600160a060020a039081166000908152600560205260408082208054600080516020611b9e8339815191521660a060020a67ffffffffffffffff9687168102919091179091559287168252902054611243929190041683611807565b600160a060020a0380851660008181526005602052604090819020805467ffffffffffffffff9590951660a060020a02600080516020611b9e833981519152909516949094179093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600c5433600160a060020a039081169116146112e957600080fd5b600160a060020a03811660009081526005602052604090205460e060020a900461ffff16151561131857600080fd5b600b54600160a060020a0390911660009081526005602052604090208054600161ffff608060020a90940484160190921660e060020a027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600660205260009081526040902054600160a060020a031681565b61139e611b76565b60005433600160a060020a039081169116146113b957600080fd5b600160a060020a03831660009081526005602052604090205460f060020a900461ffff1615156113e857600080fd5b600160a060020a038316600090815260056020526040908190209060809051908101604090815291546001606060020a03196c01000000000000000000000000820216825267ffffffffffffffff60a060020a8204166020830190815261ffff60e060020a830481169484019490945260f060020a9091049092166060820152915061148890516001549067ffffffffffffffff1663ffffffff61184f16565b600155600b54608060020a900461ffff16606082015161ffff1614156114ea57600b805460001967ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff000000000000000019909116179055611511565b600b805467ffffffffffffffff19811667ffffffffffffffff918216600019019091161790555b60016006600083516001606060020a031916815260208082019290925260409081016000908120805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0395861617905592861680845260059092528220919091557fceb569181f35f4971bb3fbc5ba013370ce4aa30f973f44253b407a1369aa8abe82518360200151856040516001606060020a0319909316835267ffffffffffffffff90911660208301526040808301919091526060909101905180910390a2505050565b600160a060020a033381166000908152600d6020908152604080832093861683529290529081205461160d908363ffffffff61185e16565b600160a060020a033381166000818152600d602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a039182166000908152600d6020908152604080832093909416825291909152205490565b60005433600160a060020a039081169116146116bf57600080fd5b600160a060020a03811615156116d457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600c5433600160a060020a0390811691161461175a57600080fd5b611765838383611870565b505050565b600054600160a060020a03166117e9338585604051600160a060020a03939093166c010000000000000000000000000283526001606060020a031991909116601483015267ffffffffffffffff167801000000000000000000000000000000000000000000000000026028820152603001604051809103902083611a96565b600160a060020a0316146117fc57600080fd5b611765338484611870565b600082820167ffffffffffffffff808516908216101561182657600080fd5b9392505050565b600067ffffffffffffffff808416908316111561184957600080fd5b50900390565b60008282111561184957600080fd5b60008282018381101561182657600080fd5b6001606060020a03198216600090815260066020526040902054600160a060020a03161561189d57600080fd5b600160a060020a03831660009081526005602052604090205460e060020a900461ffff16156118cb57600080fd5b600b8054600160a060020a038516600081815260056020908152604080832080547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e060020a608060020a9788900461ffff90811660019081018216929092029290921780845589547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911698900490911660f060020a0296909617600080516020611b9e8339815191521660a060020a67ffffffffffffffff8a8116919091029190911773ffffffffffffffffffffffffffffffffffffffff199081166c010000000000000000000000008c04179092556001606060020a03198a168552600690935292208054909216909217905591546119f692680100000000000000009091041690611807565b600b80546fffffffffffffffff000000000000000019166801000000000000000067ffffffffffffffff93841602179055600154611a3591831661185e565b600155600160a060020a0383167fa35b4c187b9e49379901f1ee81fc3deb30145c20c65b7c396aead0cf9da9d51e83836040516001606060020a0319909216825267ffffffffffffffff1660208201526040908101905180910390a2505050565b6000806000808451604114611aae5760009350611b6d565b6020850151925060408501519150606085015160001a9050601b8160ff161015611ad657601b015b8060ff16601b14158015611aee57508060ff16601c14155b15611afc5760009350611b6d565b6001868285856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611b6157600080fd5b50506020604051035193505b50505092915050565b608060405190810160409081526000808352602083018190529082018190526060820152905600ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffa165627a7a723058201a75c266d935067724fa53718d2b2860e61653ff092dc00f096dc40c5868ca000029


   Swarm Source:
bzzr://1a75c266d935067724fa53718d2b2860e61653ff092dc00f096dc40c5868ca00
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.