APE Price: $0.18 (-3.03%)

Contract

0x97ad3e9B086C0D77e64A05F4aF5A7593a5c21530

Overview

APE Balance

Apechain LogoApechain LogoApechain Logo0 APE

APE Value

$0.00

More Info

Private Name Tags

Multichain Info

N/A
Transaction Hash
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UserInfo

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at apescan.io on 2025-07-16
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.28;


// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
    }
}

contract ApeOwnable {

    // Governance Manager
    IGovernanceManager public constant manager = IGovernanceManager(0x8632f22e5A921C751CFbBFF92F058A3b11E96b8a);

    modifier onlyOwner() {
        require(
            msg.sender == manager.owner(),
            'Only Owner'
        );
        _;
    }

    modifier onlyGame() {
        require(
            manager.isGame(msg.sender),
            'UnAuthorized'
        );
        _;
    }

    modifier onlyRNG() {
        require(
            msg.sender == manager.RNG(),
            'Only RNG Contract'
        );
        _;
    }

    modifier validatePlayer(address player) {
        if (player != msg.sender) {
            require(
                manager.canPlayForOthers(msg.sender),
                'UnAuthorized To Play For Others'
            );
        }
        _;
    }

    modifier notPaused() {
        require(
            manager.paused() == false,
            'All Games Paused'
        );
        _;
    }

    modifier onlyAdmin() {
        require(
            manager.isAdmin(msg.sender),
            'UnAuthorized'
        );
        _;
    }
}

interface IRNG {
    function requestRandom(bytes32 userRandomNumber, uint8 numWords) external payable returns (uint64);
    function getFee() external view returns (uint256);
}

interface IGovernanceManager {
    function RNG() external view returns (address);
    function owner() external view returns (address);
    function referralManager() external view returns (address);
    function feeReceiver() external view returns (address);
    function claimManager() external view returns (address);
    function house() external view returns (address);
    function isGame(address game) external view returns (bool);
    function userInfoTracker() external view returns (address);
    function canPlayForOthers(address addr) external view returns (bool);
    function paused() external view returns (bool);
    function isAdmin(address admin) external view returns (bool);
}

interface IUserInfoTracker {
    function wagered(address user, uint256 amount, uint256 GAME_ID) external;
}

contract UserInfo is IUserInfoTracker, ApeOwnable {

    // Name + Symbol for wallet support
    string public constant name = "APE Wagered";
    string public constant symbol = "wAPE";

    // Game Data Structure
    struct GameData {
        uint256 totalWagered;
        uint256 numGamesPlayed;
    }

    // User Info Structure
    struct UserInfoStruct {
        uint256 totalWagered;
        mapping ( uint256 => GameData ) gameData;
    }

    // Mapping From User To Total WETH Wagered
    mapping ( address => UserInfoStruct ) private userInfo;

    // List Of All Unique Users
    address[] public allUsers;

    // Total Wagered
    uint256 public totalWagered;

    // Transfer Event
    event Transfer(address indexed from, address indexed to, uint256 value);

    function balanceOf(address user) external view returns (uint256) {
        return userInfo[user].totalWagered;
    }

    function totalSupply() external view returns (uint256) {
        return totalWagered;
    }

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function wagered(address user, uint256 amount, uint256 GAME_ID) external override onlyGame {

        // add to list if new user
        if (userInfo[user].totalWagered == 0 && amount > 0) {
            allUsers.push(user);
        }
         
        // increment total native Spent
        unchecked {
            
            // increment values by the amount of native spent
            totalWagered += amount;
            userInfo[user].totalWagered += amount;
            userInfo[user].gameData[GAME_ID].totalWagered += amount;

            // increment total wagers placed
            ++userInfo[user].gameData[GAME_ID].numGamesPlayed;
        }

        // emit events for tracking
        emit Transfer(address(0), user, amount);
    }

    function listAllUsers() external view returns (address[] memory) {
        return allUsers;
    }

    function numUsers() external view returns (uint256) {
        return allUsers.length;
    }

    function getTotalWagered(address user) external view returns (uint256) {
        return userInfo[user].totalWagered;
    }

    function getGameData(address user, uint256 GAME_ID) external view returns (uint256 _totalWagered, uint256 numGamesPlayed) {
        return (userInfo[user].gameData[GAME_ID].totalWagered, userInfo[user].gameData[GAME_ID].numGamesPlayed);
    }

    function batchGameData(address user, uint256[] calldata GAME_IDs) external view returns (uint256[] memory _totalWagered, uint256[] memory numGamesPlayed) {
        uint256 len = GAME_IDs.length;
        _totalWagered = new uint256[](len);
        numGamesPlayed = new uint256[](len);
        for (uint i = 0; i < len;) {
            _totalWagered[i] = userInfo[user].gameData[GAME_IDs[i]].totalWagered;
            numGamesPlayed[i] = userInfo[user].gameData[GAME_IDs[i]].numGamesPlayed;
            unchecked { ++i; }
        }
    }

    function getListOfTotalWagered(address[] calldata users) external view returns (uint256[] memory) {
        uint256 len = users.length;
        uint256[] memory list = new uint256[](len);
        for (uint i = 0; i < len;) {
            list[i] = userInfo[users[i]].totalWagered;
            unchecked { ++i; }
        }
        return list;
    }

    function getListOfTotalWageredPaginated(uint256 startIndex, uint256 endIndex) external view returns (uint256[] memory) {
        if (endIndex > allUsers.length) {
            endIndex = allUsers.length;
        }
        uint256[] memory list = new uint256[](endIndex - startIndex);
        uint256 count;
        for (uint256 i = startIndex; i < endIndex;) {
            list[count] = userInfo[allUsers[i]].totalWagered;
            unchecked { ++i; ++count; }
        }
        return list;
    }

    function paginateAllUsers(uint256 startIndex, uint256 endIndex) public view returns (address[] memory) {
        if (endIndex > allUsers.length) {
            endIndex = allUsers.length;
        }
        address[] memory list = new address[](endIndex - startIndex);
        uint256 count;
        for (uint256 i = startIndex; i < endIndex;) {
            list[count] = allUsers[i];
            unchecked { ++i; ++count; }
        }
        return list;
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256[]","name":"GAME_IDs","type":"uint256[]"}],"name":"batchGameData","outputs":[{"internalType":"uint256[]","name":"_totalWagered","type":"uint256[]"},{"internalType":"uint256[]","name":"numGamesPlayed","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"GAME_ID","type":"uint256"}],"name":"getGameData","outputs":[{"internalType":"uint256","name":"_totalWagered","type":"uint256"},{"internalType":"uint256","name":"numGamesPlayed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"}],"name":"getListOfTotalWagered","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getListOfTotalWageredPaginated","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getTotalWagered","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"listAllUsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"contract IGovernanceManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"paginateAllUsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWagered","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"GAME_ID","type":"uint256"}],"name":"wagered","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052348015600f57600080fd5b50610ca18061001f6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806394ca5c9c1161007157806394ca5c9c1461025c57806395d89b411461026f578063a2bdedf414610292578063b5ee937b146102a5578063eb3d9bea146102b857600080fd5b806370a08231146101e957806380538e2714610212578063832c205d146102335780638a14f12c1461025357600080fd5b8063313ce567116100de578063313ce5671461017f578063328343ec1461018e578063481c6a75146101b65780635ad1df6a146101e957600080fd5b806306fdde03146101105780630d7087e91461015057806318160ddd1461016557806319a50f4914610177575b600080fd5b61013a6040518060400160405280600b81526020016a1054114815d859d95c995960aa1b81525081565b6040516101479190610935565b60405180910390f35b6101586102cd565b6040516101479190610983565b6002545b604051908152602001610147565b600154610169565b60405160128152602001610147565b6101a161019c3660046109eb565b61032f565b60408051928352602083019190915201610147565b6101d1738632f22e5a921c751cfbbff92f058a3b11e96b8a81565b6040516001600160a01b039091168152602001610147565b6101696101f7366004610a15565b6001600160a01b031660009081526020819052604090205490565b610225610220366004610a7c565b610363565b604051610147929190610b0b565b610246610241366004610b39565b6104e4565b6040516101479190610b5b565b61016960025481565b61024661026a366004610b6e565b6105c5565b61013a604051806040016040528060048152602001637741504560e01b81525081565b6101d16102a0366004610bb0565b610696565b6101586102b3366004610b39565b6106c0565b6102cb6102c6366004610bc9565b610796565b005b6060600180548060200260200160405190810160405280929190818152602001828054801561032557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610307575b5050505050905090565b6001600160a01b038216600090815260208181526040808320848452600190810190925290912080549101545b9250929050565b606080828067ffffffffffffffff81111561038057610380610bfc565b6040519080825280602002602001820160405280156103a9578160200160208202803683370190505b5092508067ffffffffffffffff8111156103c5576103c5610bfc565b6040519080825280602002602001820160405280156103ee578160200160208202803683370190505b50915060005b818110156104da576001600160a01b03871660009081526020819052604081206001019087878481811061042a5761042a610c12565b9050602002013581526020019081526020016000206000015484828151811061045557610455610c12565b602002602001018181525050600080886001600160a01b03166001600160a01b03168152602001908152602001600020600101600087878481811061049c5761049c610c12565b905060200201358152602001908152602001600020600101548382815181106104c7576104c7610c12565b60209081029190910101526001016103f4565b5050935093915050565b6001546060908211156104f75760015491505b60006105038484610c28565b67ffffffffffffffff81111561051b5761051b610bfc565b604051908082528060200260200182016040528015610544578160200160208202803683370190505b5090506000845b848110156105b9576000806001838154811061056957610569610c12565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483518490849081106105a2576105a2610c12565b60209081029190910101526001918201910161054b565b50909150505b92915050565b60608160008167ffffffffffffffff8111156105e3576105e3610bfc565b60405190808252806020026020018201604052801561060c578160200160208202803683370190505b50905060005b8281101561068d5760008087878481811061062f5761062f610c12565b90506020020160208101906106449190610a15565b6001600160a01b03166001600160a01b031681526020019081526020016000206000015482828151811061067a5761067a610c12565b6020908102919091010152600101610612565b50949350505050565b600181815481106106a657600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546060908211156106d35760015491505b60006106df8484610c28565b67ffffffffffffffff8111156106f7576106f7610bfc565b604051908082528060200260200182016040528015610720578160200160208202803683370190505b5090506000845b848110156105b9576001818154811061074257610742610c12565b9060005260206000200160009054906101000a90046001600160a01b031683838151811061077257610772610c12565b6001600160a01b039092166020928302919091019091015260019182019101610727565b604051636313629760e11b8152336004820152738632f22e5a921c751cfbbff92f058a3b11e96b8a9063c626c52e90602401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610c49565b6108485760405162461bcd60e51b815260206004820152600c60248201526b155b905d5d1a1bdc9a5e995960a21b604482015260640160405180910390fd5b6001600160a01b03831660009081526020819052604090205415801561086e5750600082115b156108be576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0385161790555b60028054830190556001600160a01b03831660008181526020818152604080832080548701815585845260019081018352818420805488018155810180549091019055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b602081526000825180602084015260005b818110156109635760208186018101516040868401015201610946565b506000604082850101526040601f19601f83011684010191505092915050565b602080825282518282018190526000918401906040840190835b818110156109c45783516001600160a01b031683526020938401939092019160010161099d565b509095945050505050565b80356001600160a01b03811681146109e657600080fd5b919050565b600080604083850312156109fe57600080fd5b610a07836109cf565b946020939093013593505050565b600060208284031215610a2757600080fd5b610a30826109cf565b9392505050565b60008083601f840112610a4957600080fd5b50813567ffffffffffffffff811115610a6157600080fd5b6020830191508360208260051b850101111561035c57600080fd5b600080600060408486031215610a9157600080fd5b610a9a846109cf565b9250602084013567ffffffffffffffff811115610ab657600080fd5b610ac286828701610a37565b9497909650939450505050565b600081518084526020840193506020830160005b82811015610b01578151865260209586019590910190600101610ae3565b5093949350505050565b604081526000610b1e6040830185610acf565b8281036020840152610b308185610acf565b95945050505050565b60008060408385031215610b4c57600080fd5b50508035926020909101359150565b602081526000610a306020830184610acf565b60008060208385031215610b8157600080fd5b823567ffffffffffffffff811115610b9857600080fd5b610ba485828601610a37565b90969095509350505050565b600060208284031215610bc257600080fd5b5035919050565b600080600060608486031215610bde57600080fd5b610be7846109cf565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b818103818111156105bf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610c5b57600080fd5b81518015158114610a3057600080fdfea264697066735822122076798a2ba8fe1bbcf2ec0a6a22c638a521c75c61a467dfefa0abdd748785d9ac64736f6c634300081c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806394ca5c9c1161007157806394ca5c9c1461025c57806395d89b411461026f578063a2bdedf414610292578063b5ee937b146102a5578063eb3d9bea146102b857600080fd5b806370a08231146101e957806380538e2714610212578063832c205d146102335780638a14f12c1461025357600080fd5b8063313ce567116100de578063313ce5671461017f578063328343ec1461018e578063481c6a75146101b65780635ad1df6a146101e957600080fd5b806306fdde03146101105780630d7087e91461015057806318160ddd1461016557806319a50f4914610177575b600080fd5b61013a6040518060400160405280600b81526020016a1054114815d859d95c995960aa1b81525081565b6040516101479190610935565b60405180910390f35b6101586102cd565b6040516101479190610983565b6002545b604051908152602001610147565b600154610169565b60405160128152602001610147565b6101a161019c3660046109eb565b61032f565b60408051928352602083019190915201610147565b6101d1738632f22e5a921c751cfbbff92f058a3b11e96b8a81565b6040516001600160a01b039091168152602001610147565b6101696101f7366004610a15565b6001600160a01b031660009081526020819052604090205490565b610225610220366004610a7c565b610363565b604051610147929190610b0b565b610246610241366004610b39565b6104e4565b6040516101479190610b5b565b61016960025481565b61024661026a366004610b6e565b6105c5565b61013a604051806040016040528060048152602001637741504560e01b81525081565b6101d16102a0366004610bb0565b610696565b6101586102b3366004610b39565b6106c0565b6102cb6102c6366004610bc9565b610796565b005b6060600180548060200260200160405190810160405280929190818152602001828054801561032557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610307575b5050505050905090565b6001600160a01b038216600090815260208181526040808320848452600190810190925290912080549101545b9250929050565b606080828067ffffffffffffffff81111561038057610380610bfc565b6040519080825280602002602001820160405280156103a9578160200160208202803683370190505b5092508067ffffffffffffffff8111156103c5576103c5610bfc565b6040519080825280602002602001820160405280156103ee578160200160208202803683370190505b50915060005b818110156104da576001600160a01b03871660009081526020819052604081206001019087878481811061042a5761042a610c12565b9050602002013581526020019081526020016000206000015484828151811061045557610455610c12565b602002602001018181525050600080886001600160a01b03166001600160a01b03168152602001908152602001600020600101600087878481811061049c5761049c610c12565b905060200201358152602001908152602001600020600101548382815181106104c7576104c7610c12565b60209081029190910101526001016103f4565b5050935093915050565b6001546060908211156104f75760015491505b60006105038484610c28565b67ffffffffffffffff81111561051b5761051b610bfc565b604051908082528060200260200182016040528015610544578160200160208202803683370190505b5090506000845b848110156105b9576000806001838154811061056957610569610c12565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483518490849081106105a2576105a2610c12565b60209081029190910101526001918201910161054b565b50909150505b92915050565b60608160008167ffffffffffffffff8111156105e3576105e3610bfc565b60405190808252806020026020018201604052801561060c578160200160208202803683370190505b50905060005b8281101561068d5760008087878481811061062f5761062f610c12565b90506020020160208101906106449190610a15565b6001600160a01b03166001600160a01b031681526020019081526020016000206000015482828151811061067a5761067a610c12565b6020908102919091010152600101610612565b50949350505050565b600181815481106106a657600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546060908211156106d35760015491505b60006106df8484610c28565b67ffffffffffffffff8111156106f7576106f7610bfc565b604051908082528060200260200182016040528015610720578160200160208202803683370190505b5090506000845b848110156105b9576001818154811061074257610742610c12565b9060005260206000200160009054906101000a90046001600160a01b031683838151811061077257610772610c12565b6001600160a01b039092166020928302919091019091015260019182019101610727565b604051636313629760e11b8152336004820152738632f22e5a921c751cfbbff92f058a3b11e96b8a9063c626c52e90602401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610c49565b6108485760405162461bcd60e51b815260206004820152600c60248201526b155b905d5d1a1bdc9a5e995960a21b604482015260640160405180910390fd5b6001600160a01b03831660009081526020819052604090205415801561086e5750600082115b156108be576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0385161790555b60028054830190556001600160a01b03831660008181526020818152604080832080548701815585845260019081018352818420805488018155810180549091019055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b602081526000825180602084015260005b818110156109635760208186018101516040868401015201610946565b506000604082850101526040601f19601f83011684010191505092915050565b602080825282518282018190526000918401906040840190835b818110156109c45783516001600160a01b031683526020938401939092019160010161099d565b509095945050505050565b80356001600160a01b03811681146109e657600080fd5b919050565b600080604083850312156109fe57600080fd5b610a07836109cf565b946020939093013593505050565b600060208284031215610a2757600080fd5b610a30826109cf565b9392505050565b60008083601f840112610a4957600080fd5b50813567ffffffffffffffff811115610a6157600080fd5b6020830191508360208260051b850101111561035c57600080fd5b600080600060408486031215610a9157600080fd5b610a9a846109cf565b9250602084013567ffffffffffffffff811115610ab657600080fd5b610ac286828701610a37565b9497909650939450505050565b600081518084526020840193506020830160005b82811015610b01578151865260209586019590910190600101610ae3565b5093949350505050565b604081526000610b1e6040830185610acf565b8281036020840152610b308185610acf565b95945050505050565b60008060408385031215610b4c57600080fd5b50508035926020909101359150565b602081526000610a306020830184610acf565b60008060208385031215610b8157600080fd5b823567ffffffffffffffff811115610b9857600080fd5b610ba485828601610a37565b90969095509350505050565b600060208284031215610bc257600080fd5b5035919050565b600080600060608486031215610bde57600080fd5b610be7846109cf565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b818103818111156105bf57634e487b7160e01b600052601160045260246000fd5b600060208284031215610c5b57600080fd5b81518015158114610a3057600080fdfea264697066735822122076798a2ba8fe1bbcf2ec0a6a22c638a521c75c61a467dfefa0abdd748785d9ac64736f6c634300081c0033

Deployed Bytecode Sourcemap

4033:4391:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4133:43;;;;;;;;;;;;;;;-1:-1:-1;;;4133:43:0;;;;;;;;;;;;:::i;:::-;;;;;;;;5928:99;;;:::i;:::-;;;;;;;:::i;4967:93::-;5040:12;;4967:93;;;1334:25:1;;;1322:2;1307:18;4967:93:0;1188:177:1;6035:93:0;6105:8;:15;6035:93;;5068:78;;;5136:2;1512:36:1;;1500:2;1485:18;5068:78:0;1370:184:1;6268:244:0;;;;;;:::i;:::-;;:::i;:::-;;;;2216:25:1;;;2272:2;2257:18;;2250:34;;;;2189:18;6268:244:0;2042:248:1;1899:107:0;;1963:42;1899:107;;;;;-1:-1:-1;;;;;2485:32:1;;;2467:51;;2455:2;2440:18;1899:107:0;2295:229:1;6136:124:0;;;;;;:::i;:::-;-1:-1:-1;;;;;6225:14:0;6198:7;6225:14;;;;;;;;;;:27;;6136:124;6520:543;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7434:509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4702:27::-;;;;;;7071:355;;;;;;:::i;:::-;;:::i;4183:38::-;;;;;;;;;;;;;;;-1:-1:-1;;;4183:38:0;;;;;4646:25;;;;;;:::i;:::-;;:::i;7951:470::-;;;;;;:::i;:::-;;:::i;5154:766::-;;;;;;:::i;:::-;;:::i;:::-;;5928:99;5975:16;6011:8;6004:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6004:15:0;;;;;;;;;;;;;;;;;;;;;;;5928:99;:::o;6268:244::-;-1:-1:-1;;;;;6409:14:0;;6343:21;6409:14;;;;;;;;;;;:32;;;:23;;;;:32;;;;;;:45;;6456:47;;;6268:244;;;;;;:::o;6520:543::-;6609:30;;6699:8;;6741:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6741:18:0;;6725:34;;6801:3;6787:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6787:18:0;;6770:35;;6821:6;6816:240;6837:3;6833:1;:7;6816:240;;;-1:-1:-1;;;;;6877:14:0;;:8;:14;;;;;;;;;;:23;;;6901:8;;6910:1;6901:11;;;;;;;:::i;:::-;;;;;;;6877:36;;;;;;;;;;;:49;;;6858:13;6872:1;6858:16;;;;;;;;:::i;:::-;;;;;;:68;;;;;6961:8;:14;6970:4;-1:-1:-1;;;;;6961:14:0;-1:-1:-1;;;;;6961:14:0;;;;;;;;;;;;:23;;:36;6985:8;;6994:1;6985:11;;;;;;;:::i;:::-;;;;;;;6961:36;;;;;;;;;;;:51;;;6941:14;6956:1;6941:17;;;;;;;;:::i;:::-;;;;;;;;;;:71;7039:3;;6816:240;;;;6674:389;6520:543;;;;;;:::o;7434:509::-;7579:8;:15;7535:16;;7568:26;;7564:85;;;7622:8;:15;;-1:-1:-1;7564:85:0;7659:21;7697;7708:10;7697:8;:21;:::i;:::-;7683:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7683:36:0;-1:-1:-1;7659:60:0;-1:-1:-1;7730:13:0;7771:10;7754:160;7787:8;7783:1;:12;7754:160;;;7827:8;:21;7836:8;7845:1;7836:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;7836:11:0;7827:21;;;;;;;;;;;;:34;7813:11;;:4;;7818:5;;7813:11;;;;;;:::i;:::-;;;;;;;;;;:48;7888:3;7893:7;;;;7888:3;7754:160;;;-1:-1:-1;7931:4:0;;-1:-1:-1;;7434:509:0;;;;;:::o;7071:355::-;7151:16;7194:5;7180:11;7194:5;7241:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7241:18:0;;7217:42;;7275:6;7270:127;7291:3;7287:1;:7;7270:127;;;7322:8;:18;7331:5;;7337:1;7331:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7322:18:0;-1:-1:-1;;;;;7322:18:0;;;;;;;;;;;;:31;;;7312:4;7317:1;7312:7;;;;;;;;:::i;:::-;;;;;;;;;;:41;7380:3;;7270:127;;;-1:-1:-1;7414:4:0;7071:355;-1:-1:-1;;;;7071:355:0:o;4646:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4646:25:0;;-1:-1:-1;4646:25:0;:::o;7951:470::-;8080:8;:15;8036:16;;8069:26;;8065:85;;;8123:8;:15;;-1:-1:-1;8065:85:0;8160:21;8198;8209:10;8198:8;:21;:::i;:::-;8184:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8184:36:0;-1:-1:-1;8160:60:0;-1:-1:-1;8231:13:0;8272:10;8255:137;8288:8;8284:1;:12;8255:137;;;8328:8;8337:1;8328:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8328:11:0;8314:4;8319:5;8314:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8314:25:0;;;:11;;;;;;;;;;;:25;8366:3;8371:7;;;;8366:3;8255:137;;5154:766;2217:26;;-1:-1:-1;;;2217:26:0;;2232:10;2217:26;;;2467:51:1;1963:42:0;;2217:14;;2440:18:1;;2217:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2195:88;;;;-1:-1:-1;;;2195:88:0;;7404:2:1;2195:88:0;;;7386:21:1;7443:2;7423:18;;;7416:30;-1:-1:-1;;;7462:18:1;;;7455:42;7514:18;;2195:88:0;;;;;;;;-1:-1:-1;;;;;5298:14:0;::::1;:8;:14:::0;;;::::1;::::0;;;;;;:27;:32;:46;::::1;;;;5343:1;5334:6;:10;5298:46;5294:98;;;5361:8;:19:::0;;;;::::1;::::0;;-1:-1:-1;5361:19:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;5361:19:0::1;-1:-1:-1::0;;;;;5361:19:0;::::1;;::::0;;5294:98:::1;5556:12;:22:::0;;;::::1;::::0;;-1:-1:-1;;;;;5593:14:0;::::1;-1:-1:-1::0;5593:14:0;;;::::1;::::0;;;;;;;:37;;;::::1;::::0;;5645:32;;;-1:-1:-1;5645:23:0;;::::1;:32:::0;;;;;:55;;;::::1;::::0;;5765:47;::::1;5763:49:::0;;;;::::1;::::0;;5878:34;1334:25:1;;;5878:34:0::1;::::0;1307:18:1;5878:34:0::1;;;;;;;5154:766:::0;;;:::o;14:527:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:637::-;736:2;748:21;;;818:13;;721:18;;;840:22;;;688:4;;919:15;;;893:2;878:18;;;688:4;962:195;976:6;973:1;970:13;962:195;;;1041:13;;-1:-1:-1;;;;;1037:39:1;1025:52;;1106:2;1132:15;;;;1097:12;;;;1073:1;991:9;962:195;;;-1:-1:-1;1174:3:1;;546:637;-1:-1:-1;;;;;546:637:1:o;1559:173::-;1627:20;;-1:-1:-1;;;;;1676:31:1;;1666:42;;1656:70;;1722:1;1719;1712:12;1656:70;1559:173;;;:::o;1737:300::-;1805:6;1813;1866:2;1854:9;1845:7;1841:23;1837:32;1834:52;;;1882:1;1879;1872:12;1834:52;1905:29;1924:9;1905:29;:::i;:::-;1895:39;2003:2;1988:18;;;;1975:32;;-1:-1:-1;;;1737:300:1:o;2529:186::-;2588:6;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2680:29;2699:9;2680:29;:::i;:::-;2670:39;2529:186;-1:-1:-1;;;2529:186:1:o;2720:367::-;2783:8;2793:6;2847:3;2840:4;2832:6;2828:17;2824:27;2814:55;;2865:1;2862;2855:12;2814:55;-1:-1:-1;2888:20:1;;2931:18;2920:30;;2917:50;;;2963:1;2960;2953:12;2917:50;3000:4;2992:6;2988:17;2976:29;;3060:3;3053:4;3043:6;3040:1;3036:14;3028:6;3024:27;3020:38;3017:47;3014:67;;;3077:1;3074;3067:12;3092:511;3187:6;3195;3203;3256:2;3244:9;3235:7;3231:23;3227:32;3224:52;;;3272:1;3269;3262:12;3224:52;3295:29;3314:9;3295:29;:::i;:::-;3285:39;;3375:2;3364:9;3360:18;3347:32;3402:18;3394:6;3391:30;3388:50;;;3434:1;3431;3424:12;3388:50;3473:70;3535:7;3526:6;3515:9;3511:22;3473:70;:::i;:::-;3092:511;;3562:8;;-1:-1:-1;3447:96:1;;-1:-1:-1;;;;3092:511:1:o;3608:420::-;3661:3;3699:5;3693:12;3726:6;3721:3;3714:19;3758:4;3753:3;3749:14;3742:21;;3797:4;3790:5;3786:16;3820:1;3830:173;3844:6;3841:1;3838:13;3830:173;;;3905:13;;3893:26;;3948:4;3939:14;;;;3976:17;;;;3866:1;3859:9;3830:173;;;-1:-1:-1;4019:3:1;;3608:420;-1:-1:-1;;;;3608:420:1:o;4033:465::-;4290:2;4279:9;4272:21;4253:4;4316:56;4368:2;4357:9;4353:18;4345:6;4316:56;:::i;:::-;4420:9;4412:6;4408:22;4403:2;4392:9;4388:18;4381:50;4448:44;4485:6;4477;4448:44;:::i;:::-;4440:52;4033:465;-1:-1:-1;;;;;4033:465:1:o;4503:346::-;4571:6;4579;4632:2;4620:9;4611:7;4607:23;4603:32;4600:52;;;4648:1;4645;4638:12;4600:52;-1:-1:-1;;4693:23:1;;;4813:2;4798:18;;;4785:32;;-1:-1:-1;4503:346:1:o;4854:261::-;5033:2;5022:9;5015:21;4996:4;5053:56;5105:2;5094:9;5090:18;5082:6;5053:56;:::i;5120:437::-;5206:6;5214;5267:2;5255:9;5246:7;5242:23;5238:32;5235:52;;;5283:1;5280;5273:12;5235:52;5323:9;5310:23;5356:18;5348:6;5345:30;5342:50;;;5388:1;5385;5378:12;5342:50;5427:70;5489:7;5480:6;5469:9;5465:22;5427:70;:::i;:::-;5516:8;;5401:96;;-1:-1:-1;5120:437:1;-1:-1:-1;;;;5120:437:1:o;5562:226::-;5621:6;5674:2;5662:9;5653:7;5649:23;5645:32;5642:52;;;5690:1;5687;5680:12;5642:52;-1:-1:-1;5735:23:1;;5562:226;-1:-1:-1;5562:226:1:o;6001:420::-;6078:6;6086;6094;6147:2;6135:9;6126:7;6122:23;6118:32;6115:52;;;6163:1;6160;6153:12;6115:52;6186:29;6205:9;6186:29;:::i;:::-;6176:39;6284:2;6269:18;;6256:32;;-1:-1:-1;6385:2:1;6370:18;;;6357:32;;6001:420;-1:-1:-1;;;6001:420:1:o;6426:127::-;6487:10;6482:3;6478:20;6475:1;6468:31;6518:4;6515:1;6508:15;6542:4;6539:1;6532:15;6558:127;6619:10;6614:3;6610:20;6607:1;6600:31;6650:4;6647:1;6640:15;6674:4;6671:1;6664:15;6690:225;6757:9;;;6778:11;;;6775:134;;;6831:10;6826:3;6822:20;6819:1;6812:31;6866:4;6863:1;6856:15;6894:4;6891:1;6884:15;6920:277;6987:6;7040:2;7028:9;7019:7;7015:23;7011:32;7008:52;;;7056:1;7053;7046:12;7008:52;7088:9;7082:16;7141:5;7134:13;7127:21;7120:5;7117:32;7107:60;;7163:1;7160;7153:12

Swarm Source

ipfs://76798a2ba8fe1bbcf2ec0a6a22c638a521c75c61a467dfefa0abdd748785d9ac

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
0x97ad3e9B086C0D77e64A05F4aF5A7593a5c21530
Loading...
Loading
Loading...
Loading
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.