Contract Overview
Transactions:
8 txns
TokenTracker:
[ Download CSV Export ]
Latest 5 Internal Transactions Internal Transactions as a result of Contract Execution
Parent TxHash | Block | Age | From | To | Value | |
---|---|---|---|---|---|---|
0x4502bb1a4c3bc33d054112ba003f359376b4bbf5bd5a917f342f83fb7ace2d96 | 5305160 | 331 days 11 hrs ago | 0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a9 | 0x501c17b26029f3a129fd9adeb4b642bd35a35248 | 0.000815 Ether | |
0x53eeb90df7e9f5a13c748aa0ce8d6651d154babac9ad7ec95df0201f86afb5f3 | 5295901 | 333 days 4 mins ago | 0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a9 | 0x501c17b26029f3a129fd9adeb4b642bd35a35248 | 0.00059 Ether | |
0x7c93d1a181473f5703a5980e5e8d89b8c775fb53c7981f63f361843035d032a2 | 5291863 | 333 days 16 hrs ago | 0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a9 | 0x501c17b26029f3a129fd9adeb4b642bd35a35248 | 0.000535 Ether | |
0x29300d18087b7cda678b247193c7d67efc848a1d4ecc5ab5e8e7c5caa3c75c68 | 5291144 | 333 days 19 hrs ago | 0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a9 | 0x501c17b26029f3a129fd9adeb4b642bd35a35248 | 0.000515 Ether | |
0xdfb1aa505dec1f6c8d82ee2df6cde079dcd9af219f289c196618054f0e98f511 | 5290421 | 333 days 22 hrs ago | 0xf7f6b7164fb3ab456715d2e8b84e8baac8bd09a9 | 0x501c17b26029f3a129fd9adeb4b642bd35a35248 | 0.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 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.