Contract 0xCBc9194894aE2975f30F94193E9C5A86b581D0fD 2

 
 
Txn Hash
Method
Block
From
To
Value
0x85043044e5767a4c992ecf6b5ff191042e851145286676b0b651fbcec35c3ba0Stake Lp Tokens152472742022-07-31 1:22:21124 days 21 hrs ago0xaa36013ec2ed5b77b9aac22b4920344f11b3f44f IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.000590663
0xbddd5c0189e9c41e3eab83b96569e3eefc52fa49c86d81e6cc301f409404051fAdd Pool Address...148165972022-05-21 9:59:22195 days 13 hrs ago0x145a500e1215bb27d6b909ba8809854ff3ba1d84 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.0005115710
0xdf34ba24a3d768b96ffc2ad573638270825bbe44bf8be6bc9cd0771dcb48c8baStake Lp Tokens143654982022-03-11 12:21:00266 days 10 hrs ago0x176840b49379577e5c63cb1bc77a3908fbeae2e6 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.0025595513
0x2b4c69792dc506e3be9787a29d2dc184209d99794b530334a1985a70f359ab0fUnstake Lp Token...142922432022-02-28 3:35:54277 days 19 hrs agoENS Name mruncled.eth IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00345918 61.56334675
0x9264baf9505c08da4bbb0ed38bb4ecb9d5f2259ecb28f95ab9b712c76f22a5deRe Stake Amount142798662022-02-26 5:39:36279 days 17 hrs ago0xd417b5accbba83ef2ff30798c47fdc814438d95e IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0x3228f92b5834fc95f6ee01463adfc97de774786517c9ee63157714525a355ccaRe Stake Amount142798652022-02-26 5:39:24279 days 17 hrs ago0x236f82cb2d8f685b54ed6796ffb074c568099b97 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0x69498dd157a87ed7090f7a3caa78a181acd0696daa1091eb3b181e15320309f1Re Stake Amount142798622022-02-26 5:39:10279 days 17 hrs ago0x88388368774bd5ff67416b342386734f538bc542 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00091268 20
0x4dbea3f982036a440a6b5c042a1b8d8d179bbade1d3316b48f9ea94a52f24542Re Stake Amount142798622022-02-26 5:39:10279 days 17 hrs ago0x836825316227cf167d70a90ebe0d15dd17a6675e IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0x6e0234d307ff2442048e7f98e15db6e80b8f47edd25bff8ee23835d9bde7ced2Re Stake Amount142798522022-02-26 5:37:03279 days 17 hrs ago0x44614faf82baf76c89bad66d25347e1d4248d13f IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0xd542d5a9b0bd88b1458b5bb2509442e714291c588e6c5cc5256dfa9e9203d6e6Re Stake Amount142798492022-02-26 5:36:39279 days 17 hrs ago0x4d53d67e865e909f918ec0a6ba73e7bc3040b3d7 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00051468 20
0x25a6cdfe69224b2b25772d728cf344ccf03d6cdf937b6e33c77dd28a763e2967Re Stake Amount142798492022-02-26 5:36:39279 days 17 hrs ago0x4cd38f306dd647276127ec104139f51860918252 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0x466308051f3e7a4ab3444cce554acb30bd1ad00d865af4da3c765cb4c4c4b6e4Re Stake Amount142798492022-02-26 5:36:39279 days 17 hrs agoENS Name mmo4me.eth IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0x92b5162cdb7e42374aa99ffb08a6b8c0cf74aee4f84ae47a71a3f041cd06901bRe Stake Amount142798492022-02-26 5:36:39279 days 17 hrs ago0x4d53d67e865e909f918ec0a6ba73e7bc3040b3d7 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00057068 20
0xbbf2ec09f34910ee71632ac2df92620fe54148beed3aafd0999ece8266503db6Unstake Lp Token...137769482021-12-10 10:49:19357 days 12 hrs ago0xf256e9c08067e03792c50873e8c6324a05e50830 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00279476 40
0xe01e6f76f92fec3d93b4ba8d2c3187d02a03372863f10722e744b9aebbb89c9fUnstake Lp Token...137740722021-12-09 23:59:29357 days 23 hrs ago0x05211b706bce6a569d556faa5821237464f33001 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00160659 67.58640783
0xbc48063d69a1451d028263ba5cd420ad279df716f96c7e18823711e962b47c95Unstake Lp Token...134720132021-10-23 5:44:00405 days 17 hrs ago0x8e4bada5fb8cba4591e6ff26ae06c6cec2ae55d4 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00224756 40
0x93ddcf8e76e5cebff5480bdc643ee71c08f86e4d73ac35c9b6ac4c71614c33fcUnstake Lp Token...134531942021-10-20 7:06:48408 days 15 hrs ago0x0f3e693761fa632c10ac9f7ee70c79b8d6dba064 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00224756 40
0xfa1cf05fcf3a5559e0d36efadc0f8eff385c4a6ed86b08c587f5d307d8ac2c57Unstake Lp Token...134451192021-10-19 0:57:40409 days 22 hrs ago0xf18114ba8a12e45ce74f98c87c1428dd827da2ba IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00095084 40
0xc5b747f85e70bd6d41eb6db131b10499ae3f8e4fac9c4db7ab2c465c687db348Unstake Lp Token...134451192021-10-19 0:57:40409 days 22 hrs ago0xf18114ba8a12e45ce74f98c87c1428dd827da2ba IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00224756 40
0x13a742f0d2e848a9aafb8a24a769d778b47775be0069b1d79e26f9a9b220e6aeUnstake Lp Token...133887082021-10-10 4:10:03418 days 18 hrs ago0x8e74431b1cc3fb0e04c2266a1ceac7ac4dac8ed9 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00224756 40
0x55fd197f0bd1aac3ceb91ee16375317fefb7ad50bcb81ccbd3c4b60743d41109Unstake Lp Token...133526652021-10-04 12:44:29424 days 10 hrs ago0x00ec8e6da672b5bfa3838e8e9353135199951e22 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00088 40
0x569033a5e0be185c6c4f62585fabd8cf8c71f6b4c8d050201046ae6a1837364eUnstake Lp Token...133374452021-10-02 3:24:15426 days 19 hrs ago0x281c1ccab6e3bb0eb7baab82ae54a401280a6b70 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00095084 40
0x64078a3582aa29d68af95351c261714b05e295dc7be52f98246149eb68b01ef2Unstake Lp Token...133140542021-09-28 11:46:23430 days 11 hrs ago0xf8d7edbf89f1b1d8932ec3d136e72bfda0fc0dea IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00224756 40
0x03f6e8b2664d67bdfb1c936cee96fe348e3b8f3d5ef1e1f4941071bdda905c64Unstake Lp Token...133138682021-09-28 11:02:22430 days 11 hrs ago0x8b21851af80d6d647a1464b9a5411316051c1edf IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00224756 40
0xa641cd0939db6573a1e1fb71b14f7d45e29fdcc4a1a1b62772d8cc2f4ea8cb72Re Stake Amount133074222021-09-27 11:05:47431 days 11 hrs ago0x7b8991865347b50c4a10d4c4df852426d9ba0e96 IN  0xcbc9194894ae2975f30f94193e9c5a86b581d0fd0 Ether0.00107809 37.78281784
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnrkeyGameLPStaking

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : AnrkeyGameLPStaking.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

// import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol";
// import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol";
// import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol";

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";

contract AnrkeyGameLPStaking is Ownable {
    
    using SafeERC20 for IERC20;
    address[] private poolAddresses;
    bool public isGameStopped;
    
    struct Lpstake {
        address teamAddress;
        uint256 stakeAmount;
        uint256 createStakeTime;
        uint256 gameEndTime;
        bool staked;
    }
    
    address private immutable adminWallet;
    address[] private stakedAddress;
    mapping(address => uint256) private poolTotalStakeAmount;
    mapping(address => Lpstake) private userStakeInfo;
    
    event StakeLPTokens(address indexed poolAddress, address indexed player, uint amount, uint indexed gameTime);
    event UnstakeLPTokens(address indexed poolAddress, address indexed player, uint indexed gameTime);
    event Restake(address indexed player, uint indexed newGameTime);
    event ClaimLPTokens(address indexed player, address indexed poolAddress, uint amount);

    constructor(address admin) {
        require(admin != address(0), "anrkeyGameLPStaking: admin cannot be zero address");
        adminWallet = admin;
    }

    function addPoolAddresses(address[] calldata pools) external onlyOwner returns(bool) {
        poolAddresses = pools;
        return true;
    }

    function changeGameStatus(bool status) external onlyOwner returns(bool) {
        isGameStopped = status;
        return true;
    }

    function doesPoolExist(address poolAddr) internal view returns(bool) {
        uint256 i;
        uint poolAddrLength = poolAddresses.length;
        while (i < poolAddrLength) {
            if(poolAddr == poolAddresses[i]) return true;
            i += 1;
        }
        return false;
    }
    
    //stake lp tokens
    function stakeLpTokens(address _uniswapTokenAddress, uint256 amount, uint256 gameEndTime)external returns(bool) {
        require(doesPoolExist(_uniswapTokenAddress), "Pool address not in accepted pools");
        IERC20 uniswaptoken;
        if(userStakeInfo[msg.sender].staked){
            require(userStakeInfo[msg.sender].teamAddress == _uniswapTokenAddress, "stakeLpTokens: Trying to stake to different pool");
            uniswaptoken = IERC20(_uniswapTokenAddress);
            uniswaptoken.safeTransferFrom(msg.sender, address(this), amount);
            userStakeInfo[msg.sender].stakeAmount = userStakeInfo[msg.sender].stakeAmount + amount;
            poolTotalStakeAmount[_uniswapTokenAddress] = poolTotalStakeAmount[_uniswapTokenAddress] + amount;
            return true;
        }
        stakedAddress.push(msg.sender);
        uniswaptoken = IERC20(_uniswapTokenAddress);
        uniswaptoken.safeTransferFrom(msg.sender, address(this), amount);
        
        Lpstake memory newStake = Lpstake({
            teamAddress: _uniswapTokenAddress,
            stakeAmount: amount,
            createStakeTime: block.timestamp,
            gameEndTime: gameEndTime,
            staked: true
        });
        userStakeInfo[msg.sender] = newStake;
        poolTotalStakeAmount[_uniswapTokenAddress] = poolTotalStakeAmount[_uniswapTokenAddress] + amount;
        emit StakeLPTokens(_uniswapTokenAddress, msg.sender, amount, gameEndTime);
        return true;
    }
    
    //unstaking tokens
    function unstakeLpTokens() external returns(bool) {
        require(userStakeInfo[msg.sender].staked, "Error: No token staked found");
        IERC20 uniswaptoken;
        uint256 gameEndTime = userStakeInfo[msg.sender].gameEndTime;
        address poolAddress = userStakeInfo[msg.sender].teamAddress;
        uniswaptoken = IERC20(poolAddress);
        uint256 amount = userStakeInfo[msg.sender].stakeAmount;
        poolTotalStakeAmount[poolAddress] = poolTotalStakeAmount[poolAddress] - amount;
        if(block.timestamp > gameEndTime){
            uniswaptoken.safeTransfer(msg.sender, amount);
            delete userStakeInfo[msg.sender];
            return true;
        }
        uint256 fees = amount / 100;
        uint256 refundAmount = amount - fees;
        uniswaptoken.safeTransfer(adminWallet, fees);
        uniswaptoken.safeTransfer(msg.sender, refundAmount);
        delete userStakeInfo[msg.sender];
        emit UnstakeLPTokens(poolAddress, msg.sender, gameEndTime);
        return true;
    }
    
    
    function getUserStakeInfo() public view returns(Lpstake memory) {
        return userStakeInfo[msg.sender];
    }
    

    function claimLpTokens() external returns(bool) {
        require(isGameStopped, "Cannot call this function, game is still running");
        IERC20 uniswaptoken;
        uint256 amount = userStakeInfo[msg.sender].stakeAmount;
        address poolAddress = userStakeInfo[msg.sender].teamAddress;
        uniswaptoken = IERC20(poolAddress);
        uniswaptoken.safeTransfer(msg.sender, amount);
        poolTotalStakeAmount[poolAddress] -= amount;
        delete userStakeInfo[msg.sender];
        emit ClaimLPTokens(msg.sender, poolAddress, amount);
        return true;
    }
    
    // fetch total stake in poolAddress
    function fetchTotalPoolStakeAmount(address poolAddress)external view returns(uint256) {
        return poolTotalStakeAmount[poolAddress];
    }
    
    function reStakeAmount(uint256 newGameTime) external returns(uint256) {
        userStakeInfo[msg.sender].gameEndTime = newGameTime;
        emit Restake(msg.sender, newGameTime);
        return newGameTime;
    }
}

File 2 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 3 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 4 of 6 : SafeERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../IERC20.sol";
import "../../../utils/Address.sol";

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

File 5 of 6 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimLPTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":true,"internalType":"uint256","name":"newGameTime","type":"uint256"}],"name":"Restake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"gameTime","type":"uint256"}],"name":"StakeLPTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":true,"internalType":"uint256","name":"gameTime","type":"uint256"}],"name":"UnstakeLPTokens","type":"event"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"addPoolAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeGameStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLpTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"}],"name":"fetchTotalPoolStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserStakeInfo","outputs":[{"components":[{"internalType":"address","name":"teamAddress","type":"address"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"createStakeTime","type":"uint256"},{"internalType":"uint256","name":"gameEndTime","type":"uint256"},{"internalType":"bool","name":"staked","type":"bool"}],"internalType":"struct AnrkeyGameLPStaking.Lpstake","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGameStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGameTime","type":"uint256"}],"name":"reStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapTokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"gameEndTime","type":"uint256"}],"name":"stakeLpTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakeLpTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b506040516200285e3803806200285e8339818101604052810190620000379190620001b7565b6000620000496200019860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200015a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000151906200020a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050620002da565b600033905090565b600081519050620001b181620002c0565b92915050565b600060208284031215620001ca57600080fd5b6000620001da84828501620001a0565b91505092915050565b6000620001f26031836200022c565b9150620001ff8262000271565b604082019050919050565b600060208201905081810360008301526200022581620001e3565b9050919050565b600082825260208201905092915050565b60006200024a8262000251565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f616e726b657947616d654c505374616b696e673a2061646d696e2063616e6e6f60008201527f74206265207a65726f2061646472657373000000000000000000000000000000602082015250565b620002cb816200023d565b8114620002d757600080fd5b50565b60805160601c612565620002f96000396000610ae601526125656000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461018f578063c896c18c146101ad578063ca4476b3146101cb578063ec1ff3fb146101e9578063f2fde38b14610219578063faf79d3014610235576100b4565b8063055c6262146100b9578063399cd75f146100e95780634bbfda8114610107578063715018a6146101375780637a796db41461014157806385f02e3e14610171575b600080fd5b6100d360048036038101906100ce9190611b23565b610265565b6040516100e09190611f2b565b60405180910390f35b6100f16107d3565b6040516100fe9190611f2b565b60405180910390f35b610121600480360381019061011c9190611c09565b610c55565b60405161012e91906120a3565b60405180910390f35b61013f610cea565b005b61015b60048036038101906101569190611b72565b610e24565b6040516101689190611f2b565b60405180910390f35b610179610ebe565b6040516101869190611f2b565b60405180910390f35b610197610ed1565b6040516101a49190611eb0565b60405180910390f35b6101b5610efa565b6040516101c29190611f2b565b60405180910390f35b6101d3611182565b6040516101e09190612088565b60405180910390f35b61020360048036038101906101fe9190611bb7565b611268565b6040516102109190611f2b565b60405180910390f35b610233600480360381019061022e9190611afa565b611309565b005b61024f600480360381019061024a9190611afa565b6114b2565b60405161025c91906120a3565b60405180910390f35b6000610270846114fb565b6102af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a690612008565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff1615610532578473ffffffffffffffffffffffffffffffffffffffff16600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cd90611fa8565b60405180910390fd5b8490506104063330868473ffffffffffffffffffffffffffffffffffffffff166115d4909392919063ffffffff16565b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461045491906120f0565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104e591906120f0565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150506107cc565b6003339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508490506105c53330868473ffffffffffffffffffffffffffffffffffffffff166115d4909392919063ffffffff16565b60006040518060a001604052808773ffffffffffffffffffffffffffffffffffffffff16815260200186815260200142815260200185815260200160011515815250905080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555090505084600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071c91906120f0565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550833373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fc29710f714d7f2823377a366cd4e07914b3ccda79bd7cb4802510a26f622c2e5886040516107bd91906120a3565b60405180910390a46001925050505b9392505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90611fe8565b60405180910390fd5b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015490506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508092506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109a89190612177565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082421115610ac057610a1e33828673ffffffffffffffffffffffffffffffffffffffff1661165d9092919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090556004820160006101000a81549060ff021916905550506001945050505050610c52565b6000606482610acf9190612146565b905060008183610adf9190612177565b9050610b2c7f0000000000000000000000000000000000000000000000000000000000000000838873ffffffffffffffffffffffffffffffffffffffff1661165d9092919063ffffffff16565b610b5733828873ffffffffffffffffffffffffffffffffffffffff1661165d9092919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090556004820160006101000a81549060ff02191690555050843373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fca1ce5e7e79b446da6a6fd5573ba173ec6646c53acc1241987d0a38944d128b660405160405180910390a4600196505050505050505b90565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550813373ffffffffffffffffffffffffffffffffffffffff167f4fe526a50bbc264f1931b4baa4bc8f2bb80e72c36bb8c57802d4a7c1bfd09e2b60405160405180910390a3819050919050565b610cf26116e3565b73ffffffffffffffffffffffffffffffffffffffff16610d10610ed1565b73ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90611fc8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610e2e6116e3565b73ffffffffffffffffffffffffffffffffffffffff16610e4c610ed1565b73ffffffffffffffffffffffffffffffffffffffff1614610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990611fc8565b60405180910390fd5b828260019190610eb3929190611958565b506001905092915050565b600260009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260009054906101000a900460ff16610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290612068565b60405180910390fd5b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080925061102833838573ffffffffffffffffffffffffffffffffffffffff1661165d9092919063ffffffff16565b81600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110779190612177565b92505081905550600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090556004820160006101000a81549060ff021916905550508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fba02e16e45d058a74b2a325f980a303ff740a9bfb94dd2bec6f487668f8f01018460405161117091906120a3565b60405180910390a36001935050505090565b61118a6119f8565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581525050905090565b60006112726116e3565b73ffffffffffffffffffffffffffffffffffffffff16611290610ed1565b73ffffffffffffffffffffffffffffffffffffffff16146112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd90611fc8565b60405180910390fd5b81600260006101000a81548160ff02191690831515021790555060019050919050565b6113116116e3565b73ffffffffffffffffffffffffffffffffffffffff1661132f610ed1565b73ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90611fc8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90611f68565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600060018054905090505b808210156115c8576001828154811061154b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156115b4576001925050506115cf565b6001826115c191906120f0565b9150611509565b6000925050505b919050565b611657846323b872dd60e01b8585856040516024016115f593929190611ecb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506116eb565b50505050565b6116de8363a9059cbb60e01b848460405160240161167c929190611f02565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506116eb565b505050565b600033905090565b600061174d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166117b29092919063ffffffff16565b90506000815111156117ad578080602001905181019061176d9190611be0565b6117ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a390612048565b60405180910390fd5b5b505050565b60606117c184846000856117ca565b90509392505050565b60608247101561180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690611f88565b60405180910390fd5b611818856118de565b611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612028565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516118809190611e99565b60006040518083038185875af1925050503d80600081146118bd576040519150601f19603f3d011682016040523d82523d6000602084013e6118c2565b606091505b50915091506118d28282866118f1565b92505050949350505050565b600080823b905060008111915050919050565b6060831561190157829050611951565b6000835111156119145782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119489190611f46565b60405180910390fd5b9392505050565b8280548282559060005260206000209081019282156119e7579160200282015b828111156119e657823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611978565b5b5090506119f49190611a3f565b5090565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000151581525090565b5b80821115611a58576000816000905550600101611a40565b5090565b600081359050611a6b816124ea565b92915050565b60008083601f840112611a8357600080fd5b8235905067ffffffffffffffff811115611a9c57600080fd5b602083019150836020820283011115611ab457600080fd5b9250929050565b600081359050611aca81612501565b92915050565b600081519050611adf81612501565b92915050565b600081359050611af481612518565b92915050565b600060208284031215611b0c57600080fd5b6000611b1a84828501611a5c565b91505092915050565b600080600060608486031215611b3857600080fd5b6000611b4686828701611a5c565b9350506020611b5786828701611ae5565b9250506040611b6886828701611ae5565b9150509250925092565b60008060208385031215611b8557600080fd5b600083013567ffffffffffffffff811115611b9f57600080fd5b611bab85828601611a71565b92509250509250929050565b600060208284031215611bc957600080fd5b6000611bd784828501611abb565b91505092915050565b600060208284031215611bf257600080fd5b6000611c0084828501611ad0565b91505092915050565b600060208284031215611c1b57600080fd5b6000611c2984828501611ae5565b91505092915050565b611c3b816121ab565b82525050565b611c4a816121ab565b82525050565b611c59816121bd565b82525050565b611c68816121bd565b82525050565b6000611c79826120be565b611c8381856120d4565b9350611c938185602086016121f3565b80840191505092915050565b6000611caa826120c9565b611cb481856120df565b9350611cc48185602086016121f3565b611ccd81612284565b840191505092915050565b6000611ce56026836120df565b9150611cf082612295565b604082019050919050565b6000611d086026836120df565b9150611d13826122e4565b604082019050919050565b6000611d2b6030836120df565b9150611d3682612333565b604082019050919050565b6000611d4e6020836120df565b9150611d5982612382565b602082019050919050565b6000611d71601c836120df565b9150611d7c826123ab565b602082019050919050565b6000611d946022836120df565b9150611d9f826123d4565b604082019050919050565b6000611db7601d836120df565b9150611dc282612423565b602082019050919050565b6000611dda602a836120df565b9150611de58261244c565b604082019050919050565b6000611dfd6030836120df565b9150611e088261249b565b604082019050919050565b60a082016000820151611e296000850182611c32565b506020820151611e3c6020850182611e7b565b506040820151611e4f6040850182611e7b565b506060820151611e626060850182611e7b565b506080820151611e756080850182611c50565b50505050565b611e84816121e9565b82525050565b611e93816121e9565b82525050565b6000611ea58284611c6e565b915081905092915050565b6000602082019050611ec56000830184611c41565b92915050565b6000606082019050611ee06000830186611c41565b611eed6020830185611c41565b611efa6040830184611e8a565b949350505050565b6000604082019050611f176000830185611c41565b611f246020830184611e8a565b9392505050565b6000602082019050611f406000830184611c5f565b92915050565b60006020820190508181036000830152611f608184611c9f565b905092915050565b60006020820190508181036000830152611f8181611cd8565b9050919050565b60006020820190508181036000830152611fa181611cfb565b9050919050565b60006020820190508181036000830152611fc181611d1e565b9050919050565b60006020820190508181036000830152611fe181611d41565b9050919050565b6000602082019050818103600083015261200181611d64565b9050919050565b6000602082019050818103600083015261202181611d87565b9050919050565b6000602082019050818103600083015261204181611daa565b9050919050565b6000602082019050818103600083015261206181611dcd565b9050919050565b6000602082019050818103600083015261208181611df0565b9050919050565b600060a08201905061209d6000830184611e13565b92915050565b60006020820190506120b86000830184611e8a565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006120fb826121e9565b9150612106836121e9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561213b5761213a612226565b5b828201905092915050565b6000612151826121e9565b915061215c836121e9565b92508261216c5761216b612255565b5b828204905092915050565b6000612182826121e9565b915061218d836121e9565b9250828210156121a05761219f612226565b5b828203905092915050565b60006121b6826121c9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156122115780820151818401526020810190506121f6565b83811115612220576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7374616b654c70546f6b656e733a20547279696e6720746f207374616b65207460008201527f6f20646966666572656e7420706f6f6c00000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4572726f723a204e6f20746f6b656e207374616b656420666f756e6400000000600082015250565b7f506f6f6c2061646472657373206e6f7420696e20616363657074656420706f6f60008201527f6c73000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f43616e6e6f742063616c6c20746869732066756e6374696f6e2c2067616d652060008201527f6973207374696c6c2072756e6e696e6700000000000000000000000000000000602082015250565b6124f3816121ab565b81146124fe57600080fd5b50565b61250a816121bd565b811461251557600080fd5b50565b612521816121e9565b811461252c57600080fd5b5056fea2646970667358221220e4059b347f19b83d482b8fd6f729f57e9dc46d1ac9995d8c900be24e4e6b091164736f6c634300080400330000000000000000000000006e35e11841d159005501e45893ab928e17c980dc

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006e35e11841d159005501e45893ab928e17c980dc

-----Decoded View---------------
Arg [0] : admin (address): 0x6E35e11841D159005501E45893aB928e17c980dc

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006e35e11841d159005501e45893ab928e17c980dc


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.

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.