Sponsored:   LH-CRYPTO - 200 instruments (BTC, EUR, GOLD, OIL, SHARES). Leverage up to 1:500. OPEN ACCOUNT
Contract Overview
Balance: 0.0005 Ether
Ether Value: $0.09 (@ $178.31/ETH)
Transactions: 4 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x540fc6c567cda49e9c1d485443d9c99f81727980at txn 0xd853ca6d49374f02f9c26d1b4233fb2b9ccfc0536e158ff60294334e1cf86091
 Latest 4 txns

TxHash Age From To Value [TxFee]
0xb3171fb58ae3453162180aeb3af6ee3724cb919baea700ebd96611dadbf7f63557 days 9 hrs ago0x8bd19c5d36ff25aec36f694da6077c715b178233  IN   0x56d1d986d253652e92494140a096af68f9a007230 Ether0.000477336
0xb1c9a3237b7ffae8fa0dc58f0f017e48f02a4af451abef51328a6bf48369162e57 days 10 hrs ago0x8bd19c5d36ff25aec36f694da6077c715b178233  IN   0x56d1d986d253652e92494140a096af68f9a007230.02 Ether0.00072764
0x0c5ff6766e6cc9cf8f22059951a0cd6cac23a43b6cb0faa9b9d086ad719cf42059 days 6 hrs ago0x03b4cc1321d9b42fe2e5677f84be92b163b7b382  IN   0x56d1d986d253652e92494140a096af68f9a007230.02 Ether0.001661152
0xd853ca6d49374f02f9c26d1b4233fb2b9ccfc0536e158ff60294334e1cf8609160 days 2 hrs ago0x540fc6c567cda49e9c1d485443d9c99f81727980  IN    Contract Creation0 Ether0.02827292
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 1 Internal Transaction

ParentTxHash Block Age From To Value
0xb3171fb58ae3453162180aeb3af6ee3724cb919baea700ebd96611dadbf7f635636362657 days 9 hrs ago0x56d1d986d253652e92494140a096af68f9a007230x8bd19c5d36ff25aec36f694da6077c715b1782330.0395 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: RPSCore
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;

contract AccessControl {
     /// @dev Emited when contract is upgraded - See README.md for updgrade plan
    event ContractUpgrade(address newContract);

    // The addresses of the accounts (or contracts) that can execute actions within each roles.
    address public ceoAddress;

    uint public totalTipForDeveloper = 0;

    // @dev Keeps track whether the contract is paused. When that is true, most actions are blocked
    bool public paused = false;

    /// @dev Access modifier for CEO-only functionality
    modifier onlyCEO() {
        require(msg.sender == ceoAddress, "You're not a CEO!");
        _;
    }

    /// @dev Wrong send eth! It's will tip for developer
    function () public payable{
        totalTipForDeveloper = totalTipForDeveloper + msg.value;
    }

    /// @dev Add tip for developer
    /// @param valueTip The value of tip
    function addTipForDeveloper(uint valueTip) internal {
        totalTipForDeveloper += valueTip;
    }

    /// @dev Developer can withdraw tip.
    function withdrawTipForDeveloper() external onlyCEO {
        require(totalTipForDeveloper > 0, "Need more tip to withdraw!");
        msg.sender.transfer(totalTipForDeveloper);
        totalTipForDeveloper = 0;
    }

    /// @dev Assigns a new address to act as the CEO. Only available to the current CEO.
    /// @param _newCEO The address of the new CEO
    function setCEO(address _newCEO) external onlyCEO {
        require(_newCEO != address(0), "Address to set CEO wrong!");

        ceoAddress = _newCEO;
    }

    /*Pausable functionality adapted from OpenZeppelin */

    /// @dev Modifier to allow actions only when the contract IS NOT paused
    modifier whenNotPaused() {
        require(!paused, "Paused!");
        _;
    }

    /// @dev Modifier to allow actions only when the contract IS paused
    modifier whenPaused {
        require(paused, "Not paused!");
        _;
    }

    /// @dev Called by any "C-level" role to pause the contract. Used only when
    ///  a bug or exploit is detected and we need to limit damage.
    function pause() external onlyCEO whenNotPaused {
        paused = true;
    }

    /// @dev Unpauses the smart contract. Can only be called by the CEO, since
    ///  one reason we may pause the contract is when CFO or COO accounts are
    ///  compromised.
    /// @notice This is public rather than external so it can be called by
    ///  derived contracts.
    function unpause() public onlyCEO whenPaused {
        // can't unpause if contract was upgraded
        paused = false;
    }
}

contract RPSCore is AccessControl {
    uint constant ROCK = 1000;
    uint constant PAPER = 2000;
    uint constant SCISSOR = 3000;

    uint constant GAME_RESULT_DRAW = 1;
    uint constant GAME_RESULT_HOST_WIN = 2;
    uint constant GAME_RESULT_GUEST_WIN = 3;

    uint constant GAME_STATE_AVAILABLE_TO_JOIN = 1;
    uint constant GAME_STATE_WAITING_HOST_REVEAL = 2;

    uint constant DEVELOPER_TIP_PERCENT = 1;
    uint constant DEVELOPER_TIP_MIN = 0.0005 ether;

    uint constant VALUE_BET_MIN = 0.02 ether;
    uint constant VALUE_BET_MAX = 2 ether;

    uint constant TIME_GAME_EXPIRE = 1 hours;

    struct Game {
        uint id;
        uint state;
        uint timeExpire;
        uint valueBet;
        uint gestureGuest;
        address addressHost;
        address addressGuest;
        bytes32 hashGestureHost;
    }

    event LogCloseGameSuccessed(uint _id, uint _valueReturn);
    event LogCreateGameSuccessed(uint _id, uint _valuePlayerHostBid);
    event LogJoinGameSuccessed(uint _id);
    event LogRevealGameSuccessed(uint _id,
                                    uint _result,
                                    address indexed _addressPlayerWin,
                                    address indexed _addressPlayerLose,
                                    uint _valuePlayerWin,
                                    uint _valuePlayerLose,
                                    uint _gesturePlayerWin,
                                    uint _gesturePlayerLose);
 
    uint public totalCreatedGame;
    uint public totalAvailableGames;
    Game[] public arrAvailableGames;

    mapping(uint => uint) idToIndexAvailableGames;


    constructor() public {
        ceoAddress = msg.sender;

        totalCreatedGame = 0;
        totalAvailableGames = 0;
    }

    function createGame(bytes32 _hashGestureHost)
        external
        payable
        verifiedValueBetWithRule(msg.value)
    {
        Game memory game = Game({
            id: totalCreatedGame + 1,
            state: GAME_STATE_AVAILABLE_TO_JOIN,
            timeExpire: 0,
            valueBet: msg.value,
            addressHost: msg.sender,
            hashGestureHost: _hashGestureHost,
            addressGuest: 0,
            gestureGuest: 0
        });

        arrAvailableGames.push(game);
        idToIndexAvailableGames[game.id] = arrAvailableGames.length - 1;

        totalCreatedGame++;
        totalAvailableGames++;

        emit LogCreateGameSuccessed(game.id, game.valueBet);
    }

    function joinGame(uint _id, uint _gestureGuest)
        external
        payable
        verifiedValueBetWithRule(msg.value)
        verifiedGameAvailable(_id)
        verifiedGameExist(_id)
    {
        Game storage game = arrAvailableGames[idToIndexAvailableGames[_id]];

        require(msg.sender != game.addressHost, "Can't join game cretead by host");
        require(msg.value == game.valueBet, "Value bet to battle not extractly with value bet of host");
       
        game.addressGuest = msg.sender;
        game.gestureGuest = _gestureGuest;
        game.state = GAME_STATE_WAITING_HOST_REVEAL;
        game.timeExpire = now + TIME_GAME_EXPIRE;

        emit LogJoinGameSuccessed(_id);
    }

    function revealGameByHost(uint _id, uint _gestureHost, bytes32 _secretKey) external payable verifiedGameExist(_id) {
        bytes32 proofHashGesture = getProofGesture(_gestureHost, _secretKey);
        Game storage game = arrAvailableGames[idToIndexAvailableGames[_id]];
        Game memory gameCached = arrAvailableGames[idToIndexAvailableGames[_id]];

        require(gameCached.state == GAME_STATE_WAITING_HOST_REVEAL, "Game not in state waiting reveal");
        require(now <= gameCached.timeExpire, "Host time reveal ended");
        require(gameCached.addressHost == msg.sender, "You're not host this game");
        require(gameCached.hashGestureHost == proofHashGesture, "Can't verify gesture and secret key of host");
        require(verifyGesture(_gestureHost) && verifyGesture(gameCached.gestureGuest), "Can't verify gesture of host or guest");

        uint result = GAME_RESULT_DRAW;

        //Result: [Draw] => Return money to host and guest players (No fee)
        if(_gestureHost == gameCached.gestureGuest) {
            result = GAME_RESULT_DRAW;
            sendPayment(gameCached.addressHost, gameCached.valueBet);
            sendPayment(gameCached.addressGuest, gameCached.valueBet);
            game.valueBet = 0;
            destroyGame(_id);
            emit LogRevealGameSuccessed(_id,
                                        GAME_RESULT_DRAW,
                                        gameCached.addressHost,
                                        gameCached.addressGuest,
                                        0,
                                        0,
                                        _gestureHost, 
                                        gameCached.gestureGuest);
        }
        else {
            if(_gestureHost == ROCK) 
                result = gameCached.gestureGuest == SCISSOR ? GAME_RESULT_HOST_WIN : GAME_RESULT_GUEST_WIN;
            else
                if(_gestureHost == PAPER) 
                    result = (gameCached.gestureGuest == ROCK ? GAME_RESULT_HOST_WIN : GAME_RESULT_GUEST_WIN);
                else
                    if(_gestureHost == SCISSOR) 
                        result = (gameCached.gestureGuest == PAPER ? GAME_RESULT_HOST_WIN : GAME_RESULT_GUEST_WIN);

            //Result: [Win] => Return money to winner (Winner will pay 1% fee)
            uint valueTip = getValueTip(gameCached.valueBet);
            addTipForDeveloper(valueTip);
            
            if(result == GAME_RESULT_HOST_WIN) {
                sendPayment(gameCached.addressHost, gameCached.valueBet * 2 - valueTip);
                game.valueBet = 0;
                destroyGame(_id);    
                emit LogRevealGameSuccessed(_id,
                                            GAME_RESULT_HOST_WIN,
                                            gameCached.addressHost,
                                            gameCached.addressGuest,
                                            gameCached.valueBet - valueTip,
                                            gameCached.valueBet,
                                            _gestureHost, 
                                            gameCached.gestureGuest);
            }
            else {
                sendPayment(gameCached.addressGuest, gameCached.valueBet * 2 - valueTip);
                game.valueBet = 0;
                destroyGame(_id);
                emit LogRevealGameSuccessed(_id,
                                            GAME_RESULT_GUEST_WIN,
                                            gameCached.addressGuest,
                                            gameCached.addressHost,
                                            gameCached.valueBet - valueTip,
                                            gameCached.valueBet,
                                            gameCached.gestureGuest, 
                                            _gestureHost);
            }          
        }
    }

    function revealGameByGuest(uint _id) external payable verifiedGameExist(_id) {
        Game storage game = arrAvailableGames[idToIndexAvailableGames[_id]];
        Game memory gameCached = arrAvailableGames[idToIndexAvailableGames[_id]];

        require(gameCached.state == GAME_STATE_WAITING_HOST_REVEAL, "Game not in state waiting reveal");
        require(now > gameCached.timeExpire, "Host time reveal not ended");
        require(gameCached.addressGuest == msg.sender, "You're not guest this game");

        uint valueTip = getValueTip(gameCached.valueBet);
        addTipForDeveloper(valueTip);

        sendPayment(gameCached.addressGuest, gameCached.valueBet * 2 - valueTip);
        game.valueBet = 0;
        destroyGame(_id);
        emit LogRevealGameSuccessed(_id,
                                    GAME_RESULT_GUEST_WIN,
                                    gameCached.addressGuest,
                                    gameCached.addressHost,
                                    gameCached.valueBet - valueTip,
                                    gameCached.valueBet,
                                    gameCached.gestureGuest, 
                                    0);
    }

    function closeMyGame(uint _id) external payable verifiedHostOfGame(_id) verifiedGameAvailable(_id) {
        Game storage game = arrAvailableGames[idToIndexAvailableGames[_id]];

        require(game.state == GAME_STATE_AVAILABLE_TO_JOIN, "Battle already! Waiting your reveal! Refesh page");

        uint valueBetCached = game.valueBet;
        sendPayment(game.addressHost, valueBetCached);
        game.valueBet = 0;
        destroyGame(_id);
        emit LogCloseGameSuccessed(_id, valueBetCached);
    }

    function getAvailableGameWithID(uint _id) 
        public
        view
        verifiedGameExist(_id) 
        returns (uint id, uint state, uint valueBest, uint timeExpireRemaining, address addressHost, address addressGuest) 
    {
        Game storage game = arrAvailableGames[idToIndexAvailableGames[_id]];
        timeExpireRemaining = game.timeExpire - now;
        timeExpireRemaining = (timeExpireRemaining < 0 ? 0 : timeExpireRemaining);

        return(game.id, game.state, game.valueBet, game.timeExpire, game.addressHost, game.addressGuest);
    }

    function destroyGame(uint _id) private {
        removeGameInfoFromArray(idToIndexAvailableGames[_id]);
        delete idToIndexAvailableGames[_id];
        totalAvailableGames--;
    }

    function removeGameInfoFromArray(uint _index) private {
        if(_index >= 0 && arrAvailableGames.length > 0) {
            if(_index == arrAvailableGames.length - 1)
            arrAvailableGames.length--;
            else {
                arrAvailableGames[_index] = arrAvailableGames[arrAvailableGames.length - 1];
                idToIndexAvailableGames[arrAvailableGames[_index].id] = _index;
                arrAvailableGames.length--;
            }
        }
    }

    function getValueTip(uint _valueWin) private pure returns(uint) {
        uint valueTip = _valueWin * DEVELOPER_TIP_PERCENT / 100;

        if(valueTip < DEVELOPER_TIP_MIN)
            valueTip = DEVELOPER_TIP_MIN;

        return valueTip;
    }

    function sendPayment(address _receiver, uint _amount) private {
        _receiver.transfer(_amount);
    }

    function getProofGesture(uint _gesture, bytes32 _secretKey) private pure returns (bytes32) {
        return keccak256(abi.encodePacked(_gesture, _secretKey));
    }

    function verifyGesture(uint _gesture) private pure returns (bool) {
        return (_gesture == ROCK || _gesture == PAPER || _gesture == SCISSOR);
    }

    modifier verifiedGameAvailable(uint _id) {
        require(arrAvailableGames[idToIndexAvailableGames[_id]].addressGuest == 0, "Have guest already");
        _;
    }

    modifier verifiedGameExist(uint _id) {
        require(idToIndexAvailableGames[_id] >= 0, "Game ID not exist!");
        _;
    }

    modifier verifiedHostOfGame(uint _id) {
        require(msg.sender == arrAvailableGames[idToIndexAvailableGames[_id]].addressHost, "Verify host of game failed");
        _;
    }

    modifier verifiedValueBetWithRule(uint _valueBet) {
        require(_valueBet >= VALUE_BET_MIN && _valueBet <= VALUE_BET_MAX, "Your value bet out of rule");
        _;
    }

}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"withdrawTipForDeveloper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"closeMyGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalAvailableGames","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_hashGestureHost","type":"bytes32"}],"name":"createGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"revealGameByGuest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalCreatedGame","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTipForDeveloper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_gestureHost","type":"uint256"},{"name":"_secretKey","type":"bytes32"}],"name":"revealGameByHost","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_gestureGuest","type":"uint256"}],"name":"joinGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"arrAvailableGames","outputs":[{"name":"id","type":"uint256"},{"name":"state","type":"uint256"},{"name":"timeExpire","type":"uint256"},{"name":"valueBet","type":"uint256"},{"name":"gestureGuest","type":"uint256"},{"name":"addressHost","type":"address"},{"name":"addressGuest","type":"address"},{"name":"hashGestureHost","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getAvailableGameWithID","outputs":[{"name":"id","type":"uint256"},{"name":"state","type":"uint256"},{"name":"valueBest","type":"uint256"},{"name":"timeExpireRemaining","type":"uint256"},{"name":"addressHost","type":"address"},{"name":"addressGuest","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_valueReturn","type":"uint256"}],"name":"LogCloseGameSuccessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_valuePlayerHostBid","type":"uint256"}],"name":"LogCreateGameSuccessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"}],"name":"LogJoinGameSuccessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_result","type":"uint256"},{"indexed":true,"name":"_addressPlayerWin","type":"address"},{"indexed":true,"name":"_addressPlayerLose","type":"address"},{"indexed":false,"name":"_valuePlayerWin","type":"uint256"},{"indexed":false,"name":"_valuePlayerLose","type":"uint256"},{"indexed":false,"name":"_gesturePlayerWin","type":"uint256"},{"indexed":false,"name":"_gesturePlayerLose","type":"uint256"}],"name":"LogRevealGameSuccessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405260006001556000600260006101000a81548160ff02191690831515021790555034801561003057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060038190555060006004819055506128fe806100906000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063034d3b0d146100f35780630a0f81681461010a5780630fa87b15146101615780630fff6e061461018157806327d7874c146101ac5780633f4ba83a146101ef578063457391e5146102065780635c975abb1461022a578063808754ab146102595780638456cb591461027957806388afdeba1461029057806396c2d4c9146102bb578063a77db944146102e6578063b60b9fcb1461031e578063c74ab7ac14610348578063e874a4111461041a575b3460015401600181905550005b3480156100ff57600080fd5b506101086104d6565b005b34801561011657600080fd5b5061011f610667565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017f6004803603810190808035906020019092919050505061068c565b005b34801561018d57600080fd5b506101966109ca565b6040518082815260200191505060405180910390f35b3480156101b857600080fd5b506101ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d0565b005b3480156101fb57600080fd5b50610204610b7c565b005b6102286004803603810190808035600019169060200190929190505050610ce1565b005b34801561023657600080fd5b5061023f610f88565b604051808215151515815260200191505060405180910390f35b61027760048036038101908080359060200190929190505050610f9b565b005b34801561028557600080fd5b5061028e611421565b005b34801561029c57600080fd5b506102a5611587565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102d061158d565b6040518082815260200191505060405180910390f35b61031c60048036038101908080359060200190929190803590602001909291908035600019169060200190929190505050611593565b005b6103466004803603810190808035906020019092919080359060200190929190505050611dcb565b005b34801561035457600080fd5b506103736004803603810190808035906020019092919050505061220d565b604051808981526020018881526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019850505050505050505060405180910390f35b34801561042657600080fd5b50610445600480360381019080803590602001909291905050506122a4565b604051808781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561059a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f75277265206e6f7420612043454f2100000000000000000000000000000081525060200191505060405180910390fd5b6000600154111515610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4e656564206d6f72652074697020746f2077697468647261772100000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6001549081150290604051600060405180830381858888f1935050505015801561065c573d6000803e3d6000fd5b506000600181905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008082600560066000838152602001908152602001600020548154811015156106b257fe5b906000526020600020906008020160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56657269667920686f7374206f662067616d65206661696c656400000000000081525060200191505060405180910390fd5b836000600560066000848152602001908152602001600020548154811015156107ab57fe5b906000526020600020906008020160060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4861766520677565737420616c7265616479000000000000000000000000000081525060200191505060405180910390fd5b6005600660008781526020019081526020016000205481548110151561088a57fe5b906000526020600020906008020193506001846001015414151561093c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f426174746c6520616c7265616479212057616974696e6720796f75722072657681526020017f65616c212052656665736820706167650000000000000000000000000000000081525060400191505060405180910390fd5b836003015492506109718460050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ff565b600084600301819055506109848561244a565b7fe833c6604789518a0487fbe677ed55e24341ded21a1c9f8dc5c5530e907745d18584604051808381526020018281526020019250505060405180910390a15050505050565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f75277265206e6f7420612043454f2100000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4164647265737320746f207365742043454f2077726f6e67210000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f75277265206e6f7420612043454f2100000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900460ff161515610cc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f74207061757365642100000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260006101000a81548160ff021916908315150217905550565b610ce961278e565b3466470de4df8200008110158015610d095750671bc16d674ec800008111155b1515610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f75722076616c756520626574206f7574206f662072756c6500000000000081525060200191505060405180910390fd5b6101006040519081016040528060016003540181526020016001815260200160008152602001348152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020018460001916815250915060058290806001815401808255809150509060018203906000526020600020906008020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e082015181600701906000191690555050506001600580549050036006600084600001518152602001908152602001600020819055506003600081548092919060010191905055506004600081548092919060010191905055507f152936c23c2f2ea54fa0621012441fd00dc15e7b8d299838900c7a3467f6097c82600001518360600151604051808381526020018281526020019250505060405180910390a1505050565b600260009054906101000a900460ff1681565b6000610fa561278e565b6000836000600660008381526020019081526020016000205410151515611034576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f47616d65204944206e6f7420657869737421000000000000000000000000000081525060200191505060405180910390fd5b6005600660008781526020019081526020016000205481548110151561105657fe5b906000526020600020906008020193506005600660008781526020019081526020016000205481548110151561108857fe5b9060005260206000209060080201610100604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681525050925060028360200151141515611211576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f47616d65206e6f7420696e2073746174652077616974696e672072657665616c81525060200191505060405180910390fd5b82604001514211151561128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f486f73742074696d652072657665616c206e6f7420656e64656400000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168360c0015173ffffffffffffffffffffffffffffffffffffffff16141515611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f75277265206e6f7420677565737420746869732067616d6500000000000081525060200191505060405180910390fd5b6113408360600151612493565b915061134b826124cb565b6113628360c00151836002866060015102036123ff565b600084600301819055506113758561244a565b8260a0015173ffffffffffffffffffffffffffffffffffffffff168360c0015173ffffffffffffffffffffffffffffffffffffffff167f7ed7b2d5055d2a825224e16694f1eb131365afa06c7428e64cf10d3562bfe0218760038688606001510388606001518960800151600060405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a35050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f75277265206e6f7420612043454f2100000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900460ff1615151561156a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f506175736564210000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff021916908315150217905550565b60035481565b60015481565b60008061159e61278e565b60008087600060066000838152602001908152602001600020541015151561162e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f47616d65204944206e6f7420657869737421000000000000000000000000000081525060200191505060405180910390fd5b61163888886124de565b95506005600660008b81526020019081526020016000205481548110151561165c57fe5b906000526020600020906008020194506005600660008b81526020019081526020016000205481548110151561168e57fe5b9060005260206000209060080201610100604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681525050935060028460200151141515611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f47616d65206e6f7420696e2073746174652077616974696e672072657665616c81525060200191505060405180910390fd5b83604001514211151515611893576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f486f73742074696d652072657665616c20656e6465640000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168460a0015173ffffffffffffffffffffffffffffffffffffffff1614151561193a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f596f75277265206e6f7420686f737420746869732067616d650000000000000081525060200191505060405180910390fd5b85600019168460e00151600019161415156119e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f43616e277420766572696679206765737475726520616e64207365637265742081526020017f6b6579206f6620686f737400000000000000000000000000000000000000000081525060400191505060405180910390fd5b6119ec8861257a565b8015611a015750611a00846080015161257a565b5b1515611a9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f43616e2774207665726966792067657374757265206f6620686f7374206f722081526020017f677565737400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600192508360800151881415611b865760019250611ac18460a0015185606001516123ff565b611ad38460c0015185606001516123ff565b60008560030181905550611ae68961244a565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168460a0015173ffffffffffffffffffffffffffffffffffffffff167f7ed7b2d5055d2a825224e16694f1eb131365afa06c7428e64cf10d3562bfe0218b60016000808e8b6080015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a3611dc0565b6103e8881415611bae57610bb8846080015114611ba4576003611ba7565b60025b9250611bfc565b6107d0881415611bd6576103e8846080015114611bcc576003611bcf565b60025b9250611bfb565b610bb8881415611bfa576107d0846080015114611bf4576003611bf7565b60025b92505b5b5b611c098460600151612493565b9150611c14826124cb565b6002831415611cf057611c348460a00151836002876060015102036123ff565b60008560030181905550611c478961244a565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168460a0015173ffffffffffffffffffffffffffffffffffffffff167f7ed7b2d5055d2a825224e16694f1eb131365afa06c7428e64cf10d3562bfe0218b60028689606001510389606001518e8b6080015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a3611dbf565b611d078460c00151836002876060015102036123ff565b60008560030181905550611d1a8961244a565b8360a0015173ffffffffffffffffffffffffffffffffffffffff168460c0015173ffffffffffffffffffffffffffffffffffffffff167f7ed7b2d5055d2a825224e16694f1eb131365afa06c7428e64cf10d3562bfe0218b60038689606001510389606001518a608001518f60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a35b5b505050505050505050565b60003466470de4df8200008110158015611ded5750671bc16d674ec800008111155b1515611e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f75722076616c756520626574206f7574206f662072756c6500000000000081525060200191505060405180910390fd5b83600060056006600084815260200190815260200160002054815481101515611e8657fe5b906000526020600020906008020160060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4861766520677565737420616c7265616479000000000000000000000000000081525060200191505060405180910390fd5b846000600660008381526020019081526020016000205410151515611fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f47616d65204944206e6f7420657869737421000000000000000000000000000081525060200191505060405180910390fd5b60056006600088815260200190815260200160002054815481101515611ff257fe5b906000526020600020906008020193508360050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156120ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e2774206a6f696e2067616d65206372657465616420627920686f73740081525060200191505060405180910390fd5b83600301543414151561216b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f56616c75652062657420746f20626174746c65206e6f7420657874726163746c81526020017f7920776974682076616c756520626574206f6620686f7374000000000000000081525060400191505060405180910390fd5b338460060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846004018190555060028460010181905550610e10420184600201819055507f426033b08db4a775a13b6553c1eab4f74d71ad0b023a3fe65041dbf1148a5c96866040518082815260200191505060405180910390a1505050505050565b60058181548110151561221c57fe5b90600052602060002090600802016000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060070154905088565b600080600080600080600087600060066000838152602001908152602001600020541015151561233c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f47616d65204944206e6f7420657869737421000000000000000000000000000081525060200191505060405180910390fd5b6005600660008b81526020019081526020016000205481548110151561235e57fe5b90600052602060002090600802019150428260020154039450600085106123855784612388565b60005b945081600001548260010154836003015484600201548560050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16975097509750975097509750505091939550919395565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612445573d6000803e3d6000fd5b505050565b61246660066000838152602001908152602001600020546125a0565b60066000828152602001908152602001600020600090556004600081548092919060019003919050555050565b6000806064600184028115156124a557fe5b0490506601c6bf526340008110156124c2576601c6bf5263400090505b80915050919050565b8060016000828254019250508190555050565b60008282604051602001808381526020018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156125455780518252602082019150602081019050602083039250612520565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905092915050565b60006103e882148061258d57506107d082145b806125995750610bb882145b9050919050565b600081101580156125b657506000600580549050115b1561278b576001600580549050038114156125e65760058054809190600190036125e09190612803565b5061278a565b60056001600580549050038154811015156125fd57fe5b906000526020600020906008020160058281548110151561261a57fe5b906000526020600020906008020160008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060078201548160070190600019169055905050806006600060058481548110151561274f57fe5b90600052602060002090600802016000015481526020019081526020016000208190555060058054809190600190036127889190612803565b505b5b50565b610100604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681525090565b8154818355818111156128305760080281600802836000526020600020918201910161282f9190612835565b5b505050565b6128cf91905b808211156128cb5760008082016000905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090555060080161283b565b5090565b905600a165627a7a7230582036e9c5ef9b04ff7211ff142984a6374ba316ba2df39d808d500a0851734ee6a70029

   Swarm Source:
bzzr://36e9c5ef9b04ff7211ff142984a6374ba316ba2df39d808d500a0851734ee6a7

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.