Contract 0xb440cF08BC2C78C33f3D29726d6c8ba5cBaA4B91

 
Txn Hash Method
Block
From
To
Value
0xe79f7186beb75fd0036f34e29c1c8f98b6e03692c3ca253230e13d65f7a6e231Withdraw73041362019-03-04 16:57:57937 days 8 hrs ago0xa51f89b4364151680c2a6bd7a697ac6de252a001 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.000194825
0x6eda69d43fdb64251e1570634c145a3dc9c5f332cb2f97ff83708f18c5e84f9bWithdraw73004062019-03-04 2:57:03937 days 22 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0003117128
0x0383790d22373b8dad106da25c3d26dfed366a481e614874a70d346dfe3c5ebdWithdraw73003822019-03-04 2:48:23937 days 22 hrs ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00035846889.2
0x95c23190052480755463d02a9d0efe1a58b0c34028335ca0eced692a6698e498Withdraw72909632019-03-02 15:25:27939 days 10 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0x1b876d9b2f320e02dcd858346050c989cc2767358e6b69d113947a3f320fa414Withdraw72780342019-02-28 8:44:12941 days 17 hrs ago0xa51f89b4364151680c2a6bd7a697ac6de252a001 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0x21bac731f831a5d2db136ba59691d9105db2c390816a616457625a64b21b084dWithdraw72710522019-02-26 17:25:44943 days 8 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0005844615
0xcc52f2727e4afa76db3235e25544f8f3c5282ea6e13da950e5d4ae7da1600f09Withdraw72250332019-02-15 21:11:03954 days 4 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0x8fa1f08484920dcf8a06e198433a72197ace2104c578d97557187c5f73561a00Withdraw72153512019-02-13 13:25:54956 days 12 hrs ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.000492894612.65
0x38773d6f21ced9f4337baf7b10ab2ee8336d8cb0c941c2f6957b608667c37f43Withdraw72117212019-02-12 16:44:26957 days 9 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0xf0e46682b6963aa0edec82d3531a17fdea9035d1859827007aa27e6e1f932e7dWithdraw71915912019-02-08 5:57:25961 days 19 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0003117128
0xf1842374211454bd2f5fc7fdbc6e9ba64aee34fece39375db4cf1d8c49079e2bWithdraw71770662019-02-05 6:32:34964 days 19 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0xee3d6f8af0d1bd98e050581377b4bc089a32c54a19d760154e681d78e5abdba5Withdraw71696502019-02-03 18:43:27966 days 7 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0003117128
0x04a1af4634af7196ae11deccab94828a91f9bafd96ff816aca846b3a0899d2b2Withdraw71592152019-02-01 15:14:47968 days 10 hrs ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00044808611.5
0x3614061400303ea35ca384effc2fdae7c7e1e0a6271c46b683d864c133169b02Withdraw71520272019-01-31 4:05:30969 days 21 hrs ago0xa51f89b4364151680c2a6bd7a697ac6de252a001 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0001168923
0xde9fc08d56db2c6d75aae4bf422cfe4afc10f559d52409daf9fb8241ebfa3526Withdraw71475192019-01-30 6:06:20970 days 19 hrs ago0xa51f89b4364151680c2a6bd7a697ac6de252a001 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0000779282
0xe6fb756f9b78757418e3c482d9e3a36d5aeea624774cfba9e82ec160efdfd3dfWithdraw71163552019-01-24 0:32:53977 days 1 hr ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0003117128
0x2324bbe7dd37b6dfe10bdb8ac25982def6d2865ac781a053896e62bdfbff4ccfWithdraw71074882019-01-22 6:09:23978 days 19 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0x007ca2fed6459cb4a1b6741d93dcb2ab99e90f5623ce6310020c1b8071afa6b9Withdraw71064452019-01-22 1:17:44979 days 26 mins ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00035846889.2
0x26fe02a884a3919dcea343e62a93b75cd3a3db018492c9b93bda7734370865a0Withdraw70970122019-01-20 6:32:37980 days 19 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0003117128
0xceb4adcd3e3b24f970430197134733707590db0d5206e5cfe0a66c6c031b34ffWithdraw70907412019-01-19 3:58:24981 days 21 hrs ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.000237485586.095
0x0aab5cba55b1edaf0a1a405d9ee009e47d142d99abb819caa56fb2aff63eed20Withdraw70800222019-01-17 6:06:56983 days 19 hrs ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00044808611.5
0x6e622fd95967568341a7d53e9d5355a4e485d2125c66bf6151e25d2d80074093Withdraw70633912019-01-14 6:35:54986 days 19 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0xfa250ddb8930c67da9bc51fbb5d2613b7ad07120798da512a9e60a1944ea42ffWithdraw70579202019-01-13 7:10:15987 days 18 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.0003117128
0xa448dc8c43be88311d7c0bbfcff5f961a0841079076be38d91a29c9550bff697Withdraw70526312019-01-12 8:33:21988 days 17 hrs ago0xe802ab704a8477c55d296ce13bd0939ff902ee54 IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00046756812
0xdbec37f92f703911f10c041cfb7b5fba1fc9f89c0e5ce25234431ef5e8afcee0Withdraw70521322019-01-12 6:16:46988 days 19 hrs ago0xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da IN  0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910 Ether0.00009351362.4
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe79f7186beb75fd0036f34e29c1c8f98b6e03692c3ca253230e13d65f7a6e23173041362019-03-04 16:57:57937 days 8 hrs ago 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910xa51f89b4364151680c2a6bd7a697ac6de252a0010.00156 Ether
0x6eda69d43fdb64251e1570634c145a3dc9c5f332cb2f97ff83708f18c5e84f9b73004062019-03-04 2:57:03937 days 22 hrs ago 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910xe802ab704a8477c55d296ce13bd0939ff902ee540.112019999999999996 Ether
0x0383790d22373b8dad106da25c3d26dfed366a481e614874a70d346dfe3c5ebd73003822019-03-04 2:48:23937 days 22 hrs ago 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910xb5a56be3cbd6519e27e254ee8b0070e7d72cf5da0.31887 Ether
0x0c33c1514f0ec81d2314857f4008bc73863d00ca1c27f60a0ef62537dc9eb0bf73001322019-03-04 1:50:08937 days 23 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.004319999999999999 Ether
0x193a9aef077f32bc39581bec2f9ee643a14f3cbe0b77290707ca394c7a71f91072998962019-03-04 1:01:29938 days 43 mins ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.006 Ether
0x4f3662cad84720673c5daff5720dfa44e5afa45ab93e371ec0d10119352b850f72998932019-03-04 1:00:10938 days 44 mins ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.004169999999999999 Ether
0x7a405ef3efebbf0d84895c1c0845d1eae69c8869388d1a287ecb482132c09b8c72998642019-03-04 0:53:12938 days 51 mins ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.012 Ether
0x3054945cd9547cdab7fcccf3a91e575e8b99167c4251b32c647a8747ba555be672998592019-03-04 0:52:22938 days 52 mins ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00189 Ether
0x53e4a08d5744a6c650e28c8a9bf1456fecf24e2f6d5669a1a14cbba319c50aef72998322019-03-04 0:46:16938 days 58 mins ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.015 Ether
0x40f5b295d997b280cc25c227a82e6341591db2ecf0e0035fd5ad4c4ab5786eec72998322019-03-04 0:46:16938 days 58 mins ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.009929999999999999 Ether
0xa0efef07398141cc75677af657d46c544ee7c50ca7692e2f3c8bef5fe39b0f2172992452019-03-03 22:30:19938 days 3 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00975 Ether
0xcc8fb7e48f07cf96e6dddfba4723fdca3e9d92b9c66249d6c0a530ec38f7e3d772992052019-03-03 22:20:09938 days 3 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00819 Ether
0xe4902d56cab5909a65872cda3a1de21ca3ca994862b80c2245dff923df23384c72985452019-03-03 19:53:53938 days 5 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00558 Ether
0x2d787cfaa4d334532fc2a28f52a847d4b34cf64dae92865ff9fba9af654ad61a72976152019-03-03 16:23:46938 days 9 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.006 Ether
0x772b4a7a08c2d8faec969f47f267eedb450d2da6797e12d2626c29503bfe936072948152019-03-03 6:03:51938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x26d92d01469412cddf91ca22b5f211c6b2e5fb010d3c24fdb23507e8b6c23b9f72948052019-03-03 6:00:51938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x609cf0cc99d323d9d00359f4738651f40e36045e226f8449fac98ef846b9417c72948052019-03-03 6:00:51938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x877e6426369b466ce67a115f73fe26709825478a36134b084d6349dd028d263372947932019-03-03 5:57:44938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0xe3457be6cfd709584a81d85c9ea97d13b2cf0c9c092831e1edee313fad2b51cd72947922019-03-03 5:57:05938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x6037288ab93a40857bbb53eaa18757d3fafe50a91c6558d9c739ce8750f45a8e72947862019-03-03 5:56:10938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x25a2cfd48bcdd2f5fcd62b34248506b087abf388f4836aee36dca629117cd4f572947802019-03-03 5:54:24938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x18c81bf00aac4b3bf25fd98cd8d8d5003d56c112741129548032aedd44eb9b4e72947682019-03-03 5:51:06938 days 19 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00015 Ether
0x1e35e598bd37c20ea84a297d6c1d5ba3c88d5ce138f545e7a63396040c064f0a72942952019-03-03 4:03:16938 days 21 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.009 Ether
0xbbb49be5ef2a89d2546abf7426221d0b4521626f70d38666fd4b0333ca44933172942862019-03-03 4:01:20938 days 21 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.006 Ether
0xa5567f577735ff407f8bc28ad675ecc19c52cac0620671a25485e21c3023ae0772942812019-03-03 4:00:34938 days 21 hrs ago 0x7a093232c5cda300d0db956baef268a523aa7c68 0xb440cf08bc2c78c33f3d29726d6c8ba5cbaa4b910.00141 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FSBook

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-10-09
*/

pragma solidity 0.4.25;


interface FSForwarderInterface {
    function deposit() external payable returns(bool);
}


/// @title Contract for managing player names and affiliate payments.
/// @notice This contract manages player names and affiliate payments
/// from registered games. Players can buy multiple names and select
/// which name to be used. Players who buy affiliate memberships can
/// receive affiliate payments from registered games.
/// Players can withdraw affiliate payments at any time.
/// @dev The address of the forwarder is hardcoded. Check 'TODO' before
/// deploy.
contract FSBook {
    using NameFilter for string;
    using SafeMath for uint256;

    // TODO : CHECK THE ADDRESS!!!
    FSForwarderInterface constant private FSKingCorp = FSForwarderInterface(0x3a2321DDC991c50518969B93d2C6B76bf5309790);

    // data    
    uint256 public registrationFee_ = 10 finney;            // price to register a name
    uint256 public affiliateFee_ = 500 finney;              // price to become an affiliate
    uint256 public pID_;        // total number of players

    // (addr => pID) returns player id by address
    mapping (address => uint256) public pIDxAddr_;
    // (name => pID) returns player id by name
    mapping (bytes32 => uint256) public pIDxName_;
    // (pID => data) player data
    mapping (uint256 => Player) public plyr_;
    // (pID => name => bool) list of names a player owns.  (used so you can change your display name amoungst any name you own)
    mapping (uint256 => mapping (bytes32 => bool)) public plyrNames_;
    // (pID => nameNum => name) list of names a player owns
    mapping (uint256 => mapping (uint256 => bytes32)) public plyrNameList_;
    // registered games
    mapping (address => bool) public registeredGames_;


    struct Player {
        address addr;
        bytes32 name;
        bool hasAff;

        uint256 aff;
        uint256 withdrawnAff;

        uint256 laff;
        uint256 affT2;
        uint256 names;
    }


    // constructor
    constructor()
        public
    {
        // premine the dev names (sorry not sorry)
        // No keys are purchased with this method, it's simply locking our addresses,
        // PID's and names for referral codes.
        plyr_[1].addr = 0xe0b005384df8f4d80e9a69b6210ec1929a935d97;
        plyr_[1].name = "sportking";
        plyr_[1].hasAff = true;
        plyr_[1].names = 1;
        pIDxAddr_[0xe0b005384df8f4d80e9a69b6210ec1929a935d97] = 1;
        pIDxName_["sportking"] = 1;
        plyrNames_[1]["sportking"] = true;
        plyrNameList_[1][1] = "sportking";

        pID_ = 1;
    }

    // modifiers
    
    /// @dev prevents contracts from interacting with fsbook
    modifier isHuman() {
        address _addr = msg.sender;
        require (_addr == tx.origin, "Human only");

        uint256 _codeLength;
        assembly { _codeLength := extcodesize(_addr) }
        require(_codeLength == 0, "Human only");
        _;
    }
    

    // TODO: Check address!!!
    /// @dev Check if caller is one of the owner(s).
    modifier onlyDevs() 
    {
        // TODO : CHECK THE ADDRESS!!!
        require(msg.sender == 0xe0b005384df8f4d80e9a69b6210ec1929a935d97 ||
            msg.sender == 0xe3ff68fb79fee1989fb67eb04e196e361ecaec3e ||
            msg.sender == 0xb914843d2e56722a2c133eff956d1f99b820d468 ||
            msg.sender == 0xc52FA2C9411fCd4f58be2d6725094689C46242f2, "msg sender is not a dev");
        _;
    }


    /// @dev Check if caller is registered.
    modifier isRegisteredGame() {
        require(registeredGames_[msg.sender] == true, "sender is not registered");
        _;
    }
    
    // events

    event onNewName
    (
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        bool isNewPlayer,
        uint256 affiliateID,
        address affiliateAddress,
        bytes32 affiliateName,
        uint256 amountPaid,
        uint256 timestamp
    );

    event onNewAffiliate
    (
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        uint256 amountPaid,
        uint256 timestamp
    );

    event onUseOldName
    (
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        uint256 timestamp
    );

    event onGameRegistered
    (
        address indexed gameAddress,
        bool enabled,
        uint256 timestamp
    );

    event onWithdraw
    (
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        uint256 amount,
        uint256 timestamp  
    );

    // getters:
    function checkIfNameValid(string _nameStr)
        public
        view
        returns(bool)
    {
        bytes32 _name = _nameStr.nameFilter();
        if (pIDxName_[_name] == 0)
            return (true);
        else 
            return (false);
    }

    // public functions:
    /**
     * @dev registers a name.  UI will always display the last name you registered.
     * but you will still own all previously registered names to use as affiliate 
     * links.
     * - must pay a registration fee.
     * - name must be unique
     * - names will be converted to lowercase
     * - name cannot start or end with a space 
     * - cannot have more than 1 space in a row
     * - cannot be only numbers
     * - cannot start with 0x 
     * - name must be at least 1 char
     * - max length of 32 characters long
     * - allowed characters: a-z, 0-9, and space
     * -functionhash- 0x921dec21 (using ID for affiliate)
     * -functionhash- 0x3ddd4698 (using address for affiliate)
     * -functionhash- 0x685ffd83 (using name for affiliate)
     * @param _nameString players desired name
     * @param _affCode affiliate ID, address, or name of who refered you
     * (this might cost a lot of gas)
     */

    function registerNameXID(string _nameString, uint256 _affCode)
        external
        payable 
        isHuman()
    {
        // make sure name fees paid
        require (msg.value >= registrationFee_, "umm.....  you have to pay the name fee");
        
        // filter name + condition checks
        bytes32 _name = NameFilter.nameFilter(_nameString);
        
        // set up address 
        address _addr = msg.sender;
        
        // set up our tx event data and determine if player is new or not
        bool _isNewPlayer = determinePID(_addr);
        
        // fetch player id
        uint256 _pID = pIDxAddr_[_addr];
        
        // manage affiliate residuals
        // if no affiliate code was given, no new affiliate code was given, or the 
        // player tried to use their own pID as an affiliate code, lolz
        uint256 _affID = _affCode;
        if (_affCode != 0 && _affCode != plyr_[_pID].laff && _affCode != _pID) 
        {
            // update last affiliate 
            plyr_[_pID].laff = _affCode;
        } else if (_affCode == _pID) {
            _affID = 0;
        }
        
        // register name 
        registerNameCore(_pID, _addr, _affID, _name, _isNewPlayer);
    }
    

    function registerNameXaddr(string _nameString, address _affCode)
        external
        payable 
        isHuman()
    {
        // make sure name fees paid
        require (msg.value >= registrationFee_, "umm.....  you have to pay the name fee");
        
        // filter name + condition checks
        bytes32 _name = NameFilter.nameFilter(_nameString);
        
        // set up address 
        address _addr = msg.sender;
        
        // set up our tx event data and determine if player is new or not
        bool _isNewPlayer = determinePID(_addr);
        
        // fetch player id
        uint256 _pID = pIDxAddr_[_addr];
        
        // manage affiliate residuals
        // if no affiliate code was given or player tried to use their own, lolz
        uint256 _affID;
        if (_affCode != address(0) && _affCode != _addr)
        {
            // get affiliate ID from aff Code 
            _affID = pIDxAddr_[_affCode];
            
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        
        // register name 
        registerNameCore(_pID, _addr, _affID, _name, _isNewPlayer);
    }
    

    function registerNameXname(string _nameString, bytes32 _affCode)
        external
        payable 
        isHuman()
    {
        // make sure name fees paid
        require (msg.value >= registrationFee_, "umm.....  you have to pay the name fee");
        
        // filter name + condition checks
        bytes32 _name = NameFilter.nameFilter(_nameString);
        
        // set up address 
        address _addr = msg.sender;
        
        // set up our tx event data and determine if player is new or not
        bool _isNewPlayer = determinePID(_addr);
        
        // fetch player id
        uint256 _pID = pIDxAddr_[_addr];
        
        // manage affiliate residuals
        // if no affiliate code was given or player tried to use their own, lolz
        uint256 _affID;
        if (_affCode != "" && _affCode != _name)
        {
            // get affiliate ID from aff Code 
            _affID = pIDxName_[_affCode];
            
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        
        // register name 
        registerNameCore(_pID, _addr, _affID, _name, _isNewPlayer);
    }


    function registerAffiliate()
        external
        payable
        isHuman()
    {
        // make sure name fees paid
        require (msg.value >= affiliateFee_, "umm.....  you have to pay the name fee");

        // set up address 
        address _addr = msg.sender;
        uint256 _pID = pIDxAddr_[_addr];

        require (_pID > 0, "you need to be registered");
        require (plyr_[_pID].hasAff == false, "already registered as affiliate");

        FSKingCorp.deposit.value(msg.value)();
        plyr_[_pID].hasAff = true;

        bytes32 _name = plyr_[_pID].name;

        // fire event
        emit onNewAffiliate(_pID, _addr, _name, msg.value, now);
    }


    function registerGame(address _contract, bool _enable)
        external
        isHuman()
        onlyDevs()
    {
        registeredGames_[_contract] = _enable;

        emit onGameRegistered(_contract, _enable, now);
    }
    
    /**
     * @dev players use this to change back to one of your old names.  tip, you'll
     * still need to push that info to existing games.
     * -functionhash- 0xb9291296
     * @param _nameString the name you want to use 
     */
    function useMyOldName(string _nameString)
        external
        isHuman()
    {
        // filter name, and get pID
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _pID = pIDxAddr_[_addr];
        
        // make sure they own the name 
        require(plyrNames_[_pID][_name] == true, "umm... thats not a name you own");
        
        // update their current name 
        plyr_[_pID].name = _name;

        emit onUseOldName(_pID, _addr, _name, now);
    }

    // deposit affiliate to a code
    function depositAffiliate(uint256 _pID)
        external
        payable
        isRegisteredGame()
    {
        require(plyr_[_pID].hasAff == true, "Not registered as affiliate");

        uint256 value = msg.value;
        plyr_[_pID].aff = value.add(plyr_[_pID].aff);
    }

    // withdraw money
    function withdraw()
        external
        isHuman()
    {
        address _addr = msg.sender;
        uint256 _pID = pIDxAddr_[_addr];
        bytes32 _name = plyr_[_pID].name;
        require(_pID != 0, "need to be registered");

        uint256 _remainValue = (plyr_[_pID].aff).sub(plyr_[_pID].withdrawnAff);
        if (_remainValue > 0) {
            plyr_[_pID].withdrawnAff = plyr_[_pID].aff;
            address(msg.sender).transfer(_remainValue);
        }

        emit onWithdraw(_pID, _addr, _name, _remainValue, now);
    }
    
    // core logics:
    function registerNameCore(uint256 _pID, address _addr, uint256 _affID, bytes32 _name, bool _isNewPlayer)
        private
    {
        // if names already has been used, require that current msg sender owns the name
        if (pIDxName_[_name] != 0)
            require(plyrNames_[_pID][_name] == true, "sorry that names already taken");
        
        // add name to player profile, registry, and name book
        plyr_[_pID].name = _name;
        plyr_[_pID].affT2 = _affID;
        pIDxName_[_name] = _pID;
        if (plyrNames_[_pID][_name] == false)
        {
            plyrNames_[_pID][_name] = true;
            plyr_[_pID].names++;
            plyrNameList_[_pID][plyr_[_pID].names] = _name;
        }
        
        // TODO: MODIFY THIS
        // registration fee goes directly to community rewards
        //FSKingCorp.deposit.value(address(this).balance)();
        FSKingCorp.deposit.value(msg.value)();
        
        // fire event
        emit onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, msg.value, now);
    }

    function determinePID(address _addr)
        private
        returns (bool)
    {
        if (pIDxAddr_[_addr] == 0)
        {
            pID_++;
            pIDxAddr_[_addr] = pID_;
            plyr_[pID_].addr = _addr;
            
            // set the new player bool to true
            return (true);
        } else {
            return (false);
        }
    }

    // external calls:
    function getPlayerID(address _addr)
        external
        isRegisteredGame()
        returns (uint256)
    {
        determinePID(_addr);
        return (pIDxAddr_[_addr]);
    }

    function getPlayerName(uint256 _pID)
        external
        view
        returns (bytes32)
    {
        return (plyr_[_pID].name);
    }

    function getPlayerLAff(uint256 _pID)
        external
        view
        returns (uint256)
    {
        return (plyr_[_pID].laff);
    }

    function setPlayerLAff(uint256 _pID, uint256 _lAff)
        external
        isRegisteredGame()
    {
        if (_pID != _lAff && plyr_[_pID].laff != _lAff) {
            plyr_[_pID].laff = _lAff;
        }
    }

    function getPlayerAffT2(uint256 _pID)
        external
        view
        returns (uint256)
    {
        return (plyr_[_pID].affT2);
    }

    function getPlayerAddr(uint256 _pID)
        external
        view
        returns (address)
    {
        return (plyr_[_pID].addr);
    }

    function getPlayerHasAff(uint256 _pID)
        external
        view
        returns (bool)
    {
        return (plyr_[_pID].hasAff);
    }

    function getNameFee()
        external
        view
        returns (uint256)
    {
        return(registrationFee_);
    }

    function getAffiliateFee()
        external
        view
        returns (uint256)
    {
        return (affiliateFee_);
    }
    
    function setRegistrationFee(uint256 _fee)
        external
        onlyDevs()
    {
        registrationFee_ = _fee;
    }

    function setAffiliateFee(uint256 _fee)
        external
        onlyDevs()
    {
        affiliateFee_ = _fee;
    }

} 

library NameFilter {
    
    /**
     * @dev filters name strings
     * -converts uppercase to lower case.  
     * -makes sure it does not start/end with a space
     * -makes sure it does not contain multiple spaces in a row
     * -cannot be only numbers
     * -cannot start with 0x 
     * -restricts characters to A-Z, a-z, 0-9, and space.
     * @return reprocessed string in bytes32 format
     */
    function nameFilter(string _input)
        internal
        pure
        returns(bytes32)
    {
        bytes memory _temp = bytes(_input);
        uint256 _length = _temp.length;
        
        //sorry limited to 32 characters
        require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters");
        // make sure it doesnt start with or end with space
        require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space");
        // make sure first two characters are not 0x
        if (_temp[0] == 0x30)
        {
            require(_temp[1] != 0x78, "string cannot start with 0x");
            require(_temp[1] != 0x58, "string cannot start with 0X");
        }
        
        // create a bool to track if we have a non number character
        bool _hasNonNumber;
        
        // convert & check
        for (uint256 i = 0; i < _length; i++)
        {
            // if its uppercase A-Z
            if (_temp[i] > 0x40 && _temp[i] < 0x5b)
            {
                // convert to lower case a-z
                _temp[i] = byte(uint(_temp[i]) + 32);
                
                // we have a non number
                if (_hasNonNumber == false)
                    _hasNonNumber = true;
            } else {
                require
                (
                    // require character is a space
                    _temp[i] == 0x20 || 
                    // OR lowercase a-z
                    (_temp[i] > 0x60 && _temp[i] < 0x7b) ||
                    // or 0-9
                    (_temp[i] > 0x2f && _temp[i] < 0x3a),
                    "string contains invalid characters"
                );
                // make sure theres not 2x spaces in a row
                if (_temp[i] == 0x20)
                    require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces");
                
                // see if we have a character other than a number
                if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39))
                    _hasNonNumber = true;    
            }
        }
        
        require(_hasNonNumber == true, "string cannot be only numbers");
        
        bytes32 _ret;
        assembly {
            _ret := mload(add(_temp, 32))
        }
        return (_ret);
    }
}

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 * change notes:  original SafeMath library from OpenZeppelin modified by Inventor
 * - added sqrt
 * - added sq
 * - added pwr 
 * - changed asserts to requires with error log outputs
 * - removed div, its useless
 */
library SafeMath {
    
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        return c;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
    
    /**
     * @dev gives square root of given x.
     */
    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y) 
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) 
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }
    
    /**
     * @dev gives square. multiplies x by x
     */
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }
    
    /**
     * @dev x to the power of y 
     */
    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"bytes32"}],"name":"registerNameXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"registrationFee_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNameFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"name":"plyrNames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"address"}],"name":"registerNameXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerAffT2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"pIDxName_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_enable","type":"bool"}],"name":"registerGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_lAff","type":"uint256"}],"name":"setPlayerLAff","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_nameStr","type":"string"}],"name":"checkIfNameValid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"affiliateFee_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setAffiliateFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerHasAff","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyrNameList_","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"}],"name":"useMyOldName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"}],"name":"depositAffiliate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"registerAffiliate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setRegistrationFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAffiliateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"registeredGames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"hasAff","type":"bool"},{"name":"aff","type":"uint256"},{"name":"withdrawnAff","type":"uint256"},{"name":"laff","type":"uint256"},{"name":"affT2","type":"uint256"},{"name":"names","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerLAff","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerID","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"uint256"}],"name":"registerNameXID","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"isNewPlayer","type":"bool"},{"indexed":false,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onNewAffiliate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onUseOldName","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameAddress","type":"address"},{"indexed":false,"name":"enabled","type":"bool"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onGameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onWithdraw","type":"event"}]

6080604052662386f26fc100006000556706f05b59d3b2000060015534801561002757600080fd5b507f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b8054600160a060020a03191673e0b005384df8f4d80e9a69b6210ec1929a935d971790557f73706f72746b696e6700000000000000000000000000000000000000000000007f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017c8190557f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017d805460ff1990811660019081179092557f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd8101828290557f7b25f55972e6159cdc89362f4e8f0401fd0274b01d273e1af8da348be7f576e88290557f5e4bbf1981c33bdb2d7610d32433efedaf07a33155db50cfd37ab5bd74fda3ad8290557f0f0afa23ac1991e401055c2352cac9b4db6422e8e7e25b1408b66a97d422b79080549091168217905560008190527fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8286020527f7e3f8087768dd46afafd904b64320d27e506312b937487e59f767c7732ae8f6e919091556002556123e0806101d96000396000f30060806040526004361061015b5763ffffffff60e060020a6000350416630e07ef81811461016057806310f01eba14610179578063180603eb146101ac5780632614195f146101c15780632660316e146101d657806327d87924146102055780632aa1e848146102265780632e19ebdc1461023e57806339927ebe146102565780633ccfd60b1461027c5780634a9cdfad146102915780634b227176146102ac5780634d0d35ff146102c15780636c52660d146102f55780636c63692c1461034e57806380fc16c81461036357806382e37b2c1461037b5780638febb1e514610393578063a448ed4b146103ab578063b9291296146103c6578063bdf944b3146103e6578063becf0426146103f1578063c320c727146103f9578063d562deef14610411578063dbf8e63414610426578063de7874f314610447578063e3c08adf146104aa578063e56556a9146104c2578063f32306d2146104e3575b600080fd5b6101776024600480358281019291013590356104fa565b005b34801561018557600080fd5b5061019a600160a060020a03600435166106ba565b60408051918252519081900360200190f35b3480156101b857600080fd5b5061019a6106cc565b3480156101cd57600080fd5b5061019a6106d2565b3480156101e257600080fd5b506101f16004356024356106d8565b604080519115158252519081900360200190f35b6101776024600480358281019291013590600160a060020a039035166106f8565b34801561023257600080fd5b5061019a6004356108ca565b34801561024a57600080fd5b5061019a6004356108e2565b34801561026257600080fd5b50610177600160a060020a036004351660243515156108f4565b34801561028857600080fd5b50610177610ab5565b34801561029d57600080fd5b50610177600435602435610c91565b3480156102b857600080fd5b5061019a610d3e565b3480156102cd57600080fd5b506102d9600435610d44565b60408051600160a060020a039092168252519081900360200190f35b34801561030157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101f1943694929360249392840191908190840183828082843750949750610d5f9650505050505050565b34801561035a57600080fd5b5061019a610d97565b34801561036f57600080fd5b50610177600435610d9d565b34801561038757600080fd5b5061019a600435610e69565b34801561039f57600080fd5b506101f1600435610e7e565b3480156103b757600080fd5b5061019a600435602435610e96565b3480156103d257600080fd5b506101776004803560248101910135610eb3565b61017760043561106a565b610177611183565b34801561040557600080fd5b5061017760043561143f565b34801561041d57600080fd5b5061019a61150b565b34801561043257600080fd5b506101f1600160a060020a0360043516611511565b34801561045357600080fd5b5061045f600435611526565b60408051600160a060020a0390991689526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156104b657600080fd5b5061019a600435611578565b3480156104ce57600080fd5b5061019a600160a060020a036004351661158e565b610177602460048035828101929101359035611620565b6000808080803381328214610547576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b801561058e576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b6000543410156105ea576040805160e560020a62461bcd02815260206004820152602660248201526000805160206123558339815191526044820152600080516020612395833981519152606482015290519081900360840190fd5b6106238a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437506117dd945050505050565b965033955061063186611ff0565b600160a060020a0387166000908152600360205260409020549095509350871580159061065e5750878714155b156106a1576000888152600460209081526040808320548784526005928390529220015490935083146106a1576000848152600560208190526040909120018390555b6106ae8487858a89612072565b50505050505050505050565b60036020526000908152604090205481565b60005481565b60005490565b600660209081526000928352604080842090915290825290205460ff1681565b6000808080803381328214610745576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b801561078c576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b6000543410156107e8576040805160e560020a62461bcd02815260206004820152602660248201526000805160206123558339815191526044820152600080516020612395833981519152606482015290519081900360840190fd5b6108218a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437506117dd945050505050565b965033955061082f86611ff0565b600160a060020a03808816600090815260036020526040902054919650909450881615801590610871575085600160a060020a031688600160a060020a031614155b156106a157600160a060020a0388166000908152600360209081526040808320548784526005928390529220015490935083146106a1576000848152600560208190526040909120018390556106ae8487858a89612072565b6000818152600560205260409020600601545b919050565b60046020526000908152604090205481565b33600032821461093c576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b8015610983576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b73e0b005384df8f4d80e9a69b6210ec1929a935d973314806109b8575073e3ff68fb79fee1989fb67eb04e196e361ecaec3e33145b806109d6575073b914843d2e56722a2c133eff956d1f99b820d46833145b806109f4575073c52fa2c9411fcd4f58be2d6725094689c46242f233145b1515610a4a576040805160e560020a62461bcd02815260206004820152601760248201527f6d73672073656e646572206973206e6f74206120646576000000000000000000604482015290519081900360640190fd5b600160a060020a038416600081815260086020908152604091829020805460ff19168715159081179091558251908152429181019190915281517fa539bfd05ebef664afd7dff57e0e25afea48a84057503b27fa153d2b612282d3929181900390910190a250505050565b60008080803381328214610b01576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b8015610b48576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b3360008181526003602090815260408083205480845260059092529091206001015491975095509350841515610bc8576040805160e560020a62461bcd02815260206004820152601560248201527f6e65656420746f20626520726567697374657265640000000000000000000000604482015290519081900360640190fd5b60008581526005602052604090206004810154600390910154610bf09163ffffffff61229316565b92506000831115610c4057600085815260056020526040808220600381015460049091015551339185156108fc02918691818181858888f19350505050158015610c3e573d6000803e3d6000fd5b505b6040805184815242602082015281518692600160a060020a038a169289927f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a929181900390910190a4505050505050565b3360009081526008602052604090205460ff161515600114610cfd576040805160e560020a62461bcd02815260206004820152601860248201527f73656e646572206973206e6f7420726567697374657265640000000000000000604482015290519081900360640190fd5b808214158015610d1f5750600082815260056020819052604090912001548114155b15610d3a576000828152600560208190526040909120018190555b5050565b60025481565b600090815260056020526040902054600160a060020a031690565b600080610d6b836117dd565b6000818152600460205260409020549091501515610d8c5760019150610d91565b600091505b50919050565b60015481565b73e0b005384df8f4d80e9a69b6210ec1929a935d97331480610dd2575073e3ff68fb79fee1989fb67eb04e196e361ecaec3e33145b80610df0575073b914843d2e56722a2c133eff956d1f99b820d46833145b80610e0e575073c52fa2c9411fcd4f58be2d6725094689c46242f233145b1515610e64576040805160e560020a62461bcd02815260206004820152601760248201527f6d73672073656e646572206973206e6f74206120646576000000000000000000604482015290519081900360640190fd5b600155565b60009081526005602052604090206001015490565b60009081526005602052604090206002015460ff1690565b600760209081526000928352604080842090915290825290205481565b600080803381328214610efe576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b8015610f45576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b610f7e87878080601f016020809104026020016040519081016040528093929190818152602001838380828437506117dd945050505050565b336000818152600360209081526040808320548084526006835281842086855290925290912054929750909550935060ff161515600114611009576040805160e560020a62461bcd02815260206004820152601f60248201527f756d6d2e2e2e207468617473206e6f742061206e616d6520796f75206f776e00604482015290519081900360640190fd5b600083815260056020908152604091829020600101879055815142815291518792600160a060020a0388169287927f6c1e3a2cde73f23d08c81c0e104397d66eec13ad8b341b9d72b14210a70120f69281900390910190a450505050505050565b3360009081526008602052604081205460ff1615156001146110d6576040805160e560020a62461bcd02815260206004820152601860248201527f73656e646572206973206e6f7420726567697374657265640000000000000000604482015290519081900360640190fd5b60008281526005602052604090206002015460ff161515600114611144576040805160e560020a62461bcd02815260206004820152601b60248201527f4e6f74207265676973746572656420617320616666696c696174650000000000604482015290519081900360640190fd5b50600081815260056020526040902060030154349061116a90829063ffffffff6122f316565b6000928352600560205260409092206003019190915550565b6000808033813282146111ce576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b8015611215576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b600154341015611271576040805160e560020a62461bcd02815260206004820152602660248201526000805160206123558339815191526044820152600080516020612395833981519152606482015290519081900360840190fd5b3360008181526003602052604081205491965090945084116112dd576040805160e560020a62461bcd02815260206004820152601960248201527f796f75206e65656420746f206265207265676973746572656400000000000000604482015290519081900360640190fd5b60008481526005602052604090206002015460ff1615611347576040805160e560020a62461bcd02815260206004820152601f60248201527f616c7265616479207265676973746572656420617320616666696c6961746500604482015290519081900360640190fd5b733a2321ddc991c50518969b93d2c6b76bf5309790600160a060020a031663d0e30db0346040518263ffffffff1660e060020a0281526004016020604051808303818588803b15801561139957600080fd5b505af11580156113ad573d6000803e3d6000fd5b50505050506040513d60208110156113c457600080fd5b505060008481526005602090815260409182902060028101805460ff1916600190811790915501548251348152429281019290925282519095508592600160a060020a0389169288927f88f2bd56023518909e36e5c66aa90ccfed797d9a2b24e84f1eb7a75324e3c3c7929181900390910190a45050505050565b73e0b005384df8f4d80e9a69b6210ec1929a935d97331480611474575073e3ff68fb79fee1989fb67eb04e196e361ecaec3e33145b80611492575073b914843d2e56722a2c133eff956d1f99b820d46833145b806114b0575073c52fa2c9411fcd4f58be2d6725094689c46242f233145b1515611506576040805160e560020a62461bcd02815260206004820152601760248201527f6d73672073656e646572206973206e6f74206120646576000000000000000000604482015290519081900360640190fd5b600055565b60015490565b60086020526000908152604090205460ff1681565b600560208190526000918252604090912080546001820154600283015460038401546004850154958501546006860154600790960154600160a060020a0390951696939560ff90931694919392909188565b6000908152600560208190526040909120015490565b3360009081526008602052604081205460ff1615156001146115fa576040805160e560020a62461bcd02815260206004820152601860248201527f73656e646572206973206e6f7420726567697374657265640000000000000000604482015290519081900360640190fd5b61160382611ff0565b5050600160a060020a031660009081526003602052604090205490565b600080808080338132821461166d576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b50803b80156116b4576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020612375833981519152604482015290519081900360640190fd5b600054341015611710576040805160e560020a62461bcd02815260206004820152602660248201526000805160206123558339815191526044820152600080516020612395833981519152606482015290519081900360840190fd5b6117498a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437506117dd945050505050565b965033955061175786611ff0565b600160a060020a038716600090815260036020526040902054909550935087925082158015906117995750600084815260056020819052604090912001548814155b80156117a55750838814155b156117c4576000848152600560208190526040909120018890556106a1565b838814156106a157600092506106ae8487858a89612072565b80516000908290828080602084118015906117f85750600084115b1515611874576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b84600081518110151561188357fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141580156118ea575084600185038151811015156118c257fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515611966576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84600081518110151561197557fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415611ab8578460018151811015156119af57fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515611a2c576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515611a3b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515611ab8576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015611f885784517f400000000000000000000000000000000000000000000000000000000000000090869084908110611af557fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015611b69575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110611b4a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15611bd6578482815181101515611b7c57fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515611bad57fe5b906020010190600160f860020a031916908160001a905350821515611bd157600192505b611f7d565b8482815181101515611be457fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480611cb4575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110611c4057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015611cb4575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110611c9557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80611d5e575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110611cea57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015611d5e575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110611d3f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515611dda576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515611de857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415611ec7578482600101815181101515611e2457fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515611ec7576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015611f73575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110611f0057fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080611f73575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110611f5457fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15611f7d57600192505b600190910190611abd565b600183151514611fe2576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b600160a060020a038116600090815260036020526040812054151561206a575060028054600190810191829055600160a060020a03831660008181526003602090815260408083208690559482526005905292909220805473ffffffffffffffffffffffffffffffffffffffff19169092179091556108dd565b5060006108dd565b600082815260046020526040902054156120fc57600085815260066020908152604080832085845290915290205460ff1615156001146120fc576040805160e560020a62461bcd02815260206004820152601e60248201527f736f7272792074686174206e616d657320616c72656164792074616b656e0000604482015290519081900360640190fd5b600085815260056020908152604080832060018101869055600690810187905585845260048352818420899055888452825280832085845290915290205460ff1615156121935760008581526006602090815260408083208584528252808320805460ff19166001908117909155888452600583528184206007908101805490920191829055835281842090845290915290208290555b733a2321ddc991c50518969b93d2c6b76bf5309790600160a060020a031663d0e30db0346040518263ffffffff1660e060020a0281526004016020604051808303818588803b1580156121e557600080fd5b505af11580156121f9573d6000803e3d6000fd5b50505050506040513d602081101561221057600080fd5b5050600083815260056020908152604091829020805460019091015483518515158152928301879052600160a060020a039182168385015260608301523460808301524260a08301529151849287169188917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e644429181900360c00190a45050505050565b6000828211156122ed576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b8181018281101561234e576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b929150505600756d6d2e2e2e2e2e2020796f75206861766520746f2070617920746865206e6148756d616e206f6e6c79000000000000000000000000000000000000000000006d65206665650000000000000000000000000000000000000000000000000000a165627a7a723058205fa782d8939f14f4ec5801235ee84c2b07fc47a97fd5e896117b81bf9fe328070029

Swarm Source

bzzr://5fa782d8939f14f4ec5801235ee84c2b07fc47a97fd5e896117b81bf9fe32807
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.