ETH Price: $1,929.38 (+4.68%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exit Farm166332442023-02-15 9:27:111105 days ago1676453231IN
0x8295e4b8...ADbF88B01
0 ETH0.0021574223.27397978
Exit Farm165841212023-02-08 12:40:351112 days ago1675860035IN
0x8295e4b8...ADbF88B01
0 ETH0.0025959428.00464652
Exit Farm165833192023-02-08 9:59:111112 days ago1675850351IN
0x8295e4b8...ADbF88B01
0 ETH0.0019718822.11355222
Exit Farm165829042023-02-08 8:35:231112 days ago1675845323IN
0x8295e4b8...ADbF88B01
0 ETH0.0023174225
Exit Farm165761782023-02-07 10:02:111113 days ago1675764131IN
0x8295e4b8...ADbF88B01
0 ETH0.0022553824.33069243
Exit Farm165761062023-02-07 9:47:471113 days ago1675763267IN
0x8295e4b8...ADbF88B01
0 ETH0.0020407121
Exit Farm165750812023-02-07 6:20:471113 days ago1675750847IN
0x8295e4b8...ADbF88B01
0 ETH0.0021193721.91359586
Claim Reward165750702023-02-07 6:18:351113 days ago1675750715IN
0x8295e4b8...ADbF88B01
0 ETH0.0015909522.1615384
Exit Farm165687062023-02-06 8:59:351114 days ago1675673975IN
0x8295e4b8...ADbF88B01
0 ETH0.001365114.11468525
Exit Farm165686582023-02-06 8:49:591114 days ago1675673399IN
0x8295e4b8...ADbF88B01
0 ETH0.0014968315.47676194
Farm Deposit165669282023-02-06 3:01:591114 days ago1675652519IN
0x8295e4b8...ADbF88B01
0 ETH0.0021432822.25722183
Exit Farm165668952023-02-06 2:55:231114 days ago1675652123IN
0x8295e4b8...ADbF88B01
0 ETH0.0018142118.75835351
Exit Farm165665522023-02-06 1:46:351115 days ago1675647995IN
0x8295e4b8...ADbF88B01
0 ETH0.0016666417.23257609
Farm Deposit165632602023-02-05 14:44:111115 days ago1675608251IN
0x8295e4b8...ADbF88B01
0 ETH0.0016031120.24234581
Farm Deposit165632542023-02-05 14:42:591115 days ago1675608179IN
0x8295e4b8...ADbF88B01
0 ETH0.0021049321.87264248
Exit Farm165629032023-02-05 13:32:351115 days ago1675603955IN
0x8295e4b8...ADbF88B01
0 ETH0.0021277322
Exit Farm165556342023-02-04 13:11:471116 days ago1675516307IN
0x8295e4b8...ADbF88B01
0 ETH0.002448125.31252978
Exit Farm165541072023-02-04 8:03:351116 days ago1675497815IN
0x8295e4b8...ADbF88B01
0 ETH0.0024944925.79221585
Exit Farm165527522023-02-04 3:30:471116 days ago1675481447IN
0x8295e4b8...ADbF88B01
0 ETH0.0019880720.5560349
Exit Farm165526322023-02-04 3:06:471116 days ago1675480007IN
0x8295e4b8...ADbF88B01
0 ETH0.0019771220.990141
Exit Farm165525652023-02-04 2:53:111116 days ago1675479191IN
0x8295e4b8...ADbF88B01
0 ETH0.0021704522.44178655
Exit Farm165493482023-02-03 16:07:471117 days ago1675440467IN
0x8295e4b8...ADbF88B01
0 ETH0.0047631249.24903658
Exit Farm165488172023-02-03 14:21:231117 days ago1675434083IN
0x8295e4b8...ADbF88B01
0 ETH0.003174332.82118201
Exit Farm165486972023-02-03 13:57:231117 days ago1675432643IN
0x8295e4b8...ADbF88B01
0 ETH0.0029569530.57391157
Exit Farm165486602023-02-03 13:49:591117 days ago1675432199IN
0x8295e4b8...ADbF88B01
0 ETH0.0035458236.66264284
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
SimpleFarm

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: SimpleFarm.sol
// SPDX-License-Identifier: -- BCOM --

pragma solidity =0.8.17;

import "./TokenWrapper.sol";

contract SimpleFarm is TokenWrapper {

    IERC20 public immutable stakeToken;
    IERC20 public immutable rewardToken;

    uint256 public rewardRate;
    uint256 public periodFinished;
    uint256 public rewardDuration;
    uint256 public lastUpdateTime;
    uint256 public perTokenStored;

    uint256 constant PRECISION = 1E18;
    address constant ZERO_ADDRESS = address(0x0);

    mapping(address => uint256) public userRewards;
    mapping(address => uint256) public perTokenPaid;

    address public ownerAddress;
    address public proposedOwner;
    address public managerAddress;

    modifier onlyOwner() {
        require(
            msg.sender == ownerAddress,
            "SimpleFarm: INVALID_OWNER"
        );
        _;
    }

    modifier onlyManager() {
        require(
            msg.sender == managerAddress,
            "SimpleFarm: INVALID_MANAGER"
        );
        _;
    }

    modifier updateFarm() {
        perTokenStored = rewardPerToken();
        lastUpdateTime = lastTimeRewardApplicable();
        _;
    }

    modifier updateUser() {
        userRewards[msg.sender] = earned(msg.sender);
        perTokenPaid[msg.sender] = perTokenStored;
        _;
    }

    event Staked(
        address indexed user,
        uint256 tokenAmount
    );

    event Withdrawn(
        address indexed user,
        uint256 tokenAmount
    );

    event RewardAdded(
        uint256 rewardRate,
        uint256 tokenAmount
    );

    event RewardPaid(
        address indexed user,
        uint256 tokenAmount
    );

    event Recovered(
        IERC20 indexed token,
        uint256 tokenAmount
    );

    event RewardsDurationUpdated(
        uint256 newRewardDuration
    );

    event OwnerProposed(
        address proposedOwner
    );

    event OwnerChanged(
        address newOwner
    );

    event ManagerChanged(
        address newManager
    );

    constructor(
        IERC20 _stakeToken,
        IERC20 _rewardToken,
        uint256 _defaultDuration
    ) {
        require(
            _defaultDuration > 0,
            "SimpleFarm: INVALID_DURATION"
        );

        stakeToken = _stakeToken;
        rewardToken = _rewardToken;

        ownerAddress = msg.sender;
        managerAddress = msg.sender;

        rewardDuration = _defaultDuration;
    }

    /**
     * @dev Tracks timestamp for when reward was applied last time
     */
    function lastTimeRewardApplicable()
        public
        view
        returns (uint256 res)
    {
        res = block.timestamp < periodFinished
            ? block.timestamp
            : periodFinished;
    }

    /**
     * @dev Relative value on reward for single staked token
     */
    function rewardPerToken()
        public
        view
        returns (uint256)
    {
        if (_totalStaked == 0) {
            return perTokenStored;
        }

        uint256 timeFrame = lastTimeRewardApplicable()
            - lastUpdateTime;

        uint256 extraFund = timeFrame
            * rewardRate
            * PRECISION
            / _totalStaked;

        return perTokenStored
            + extraFund;
    }

    /**
     * @dev Reports earned amount by wallet address not yet collected
     */
    function earned(
        address _walletAddress
    )
        public
        view
        returns (uint256)
    {
        uint256 difference = rewardPerToken()
            - perTokenPaid[_walletAddress];

        return _balances[_walletAddress]
            * difference
            / PRECISION
            + userRewards[_walletAddress];
    }

    /**
     * @dev Performs deposit of staked token into the farm
     */
    function farmDeposit(
        uint256 _stakeAmount
    )
        external
        updateFarm()
        updateUser()
    {
        address senderAddress = msg.sender;

        _stake(
            _stakeAmount,
            senderAddress
        );

        safeTransferFrom(
            stakeToken,
            senderAddress,
            address(this),
            _stakeAmount
        );

        emit Staked(
            senderAddress,
            _stakeAmount
        );
    }

    /**
     * @dev Performs withdrawal of staked token from the farm
     */
    function farmWithdraw(
        uint256 _withdrawAmount
    )
        public
        updateFarm()
        updateUser()
    {
        if (block.timestamp < periodFinished) {
            require(
                _totalStaked > _withdrawAmount,
                "SimpleFarm: STILL_EARNING"
            );
        }

        address senderAddress = msg.sender;

        _withdraw(
            _withdrawAmount,
            senderAddress
        );

        safeTransfer(
            stakeToken,
            senderAddress,
            _withdrawAmount
        );

        emit Withdrawn(
            senderAddress,
            _withdrawAmount
        );
    }

    /**
     * @dev Allows to withdraw staked tokens and claim rewards
     */
    function exitFarm()
        external
    {
        uint256 withdrawAmount = _balances[
            msg.sender
        ];

        farmWithdraw(
            withdrawAmount
        );

        claimReward();
    }

    /**
     * @dev Allows to claim accumulated rewards up to date
     */
    function claimReward()
        public
        updateFarm()
        updateUser()
        returns (uint256 rewardAmount)
    {
        address senderAddress = msg.sender;

        rewardAmount = earned(
            senderAddress
        );

        require(
            rewardAmount > 0,
            "SimpleFarm: NOTHING_TO_CLAIM"
        );

        userRewards[senderAddress] = 0;

        safeTransfer(
            rewardToken,
            senderAddress,
            rewardAmount
        );

        emit RewardPaid(
            senderAddress,
            rewardAmount
        );
    }

    /**
     * @dev Allows to invoke owner-change procedure
     */
    function proposeNewOwner(
        address _newOwner
    )
        external
        onlyOwner
    {
        if (_newOwner == ZERO_ADDRESS) {
            revert("SimpleFarm: WRONG_ADDRESS");
        }

        proposedOwner = _newOwner;

        emit OwnerProposed(
            _newOwner
        );
    }

    /**
     * @dev Finalizes owner-change 2-step procedure
     */
    function claimOwnership()
        external
    {
        require(
            msg.sender == proposedOwner,
            "SimpleFarm: INVALID_CANDIDATE"
        );

        ownerAddress = proposedOwner;

        emit OwnerChanged(
            ownerAddress
        );
    }

    /**
     * @dev Allows to change manager of the farm
     */
    function changeManager(
        address _newManager
    )
        external
        onlyOwner
    {
        if (_newManager == ZERO_ADDRESS) {
            revert("SimpleFarm: WRONG_ADDRESS");
        }

        managerAddress = _newManager;

        emit ManagerChanged(
            _newManager
        );
    }

    /**
     * @dev Allows to recover accidentally sent tokens
     * into the farm except stake and reward tokens
     */
    function recoverToken(
        IERC20 tokenAddress,
        uint256 tokenAmount
    )
        external
    {
        if (tokenAddress == stakeToken) {
            revert("SimpleFarm: INVALID_TOKEN");
        }

        if (tokenAddress == rewardToken) {
            revert("SimpleFarm: INVALID_TOKEN");
        }

        safeTransfer(
            tokenAddress,
            ownerAddress,
            tokenAmount
        );

        emit Recovered(
            tokenAddress,
            tokenAmount
        );
    }

    /**
     * @dev Manager sets the cycle duration for distribution
     * in seconds and can't be changed during active cycle
     */
    function setRewardDuration(
        uint256 _rewardDuration
    )
        external
        onlyManager
    {
        require(
            _rewardDuration > 0,
            "SimpleFarm: INVALID_DURATION"
        );

        require(
            block.timestamp > periodFinished,
            "SimpleFarm: ONGOING_DISTRIBUTION"
        );

        rewardDuration = _rewardDuration;

        emit RewardsDurationUpdated(
            _rewardDuration
        );
    }

    /**
     * @dev Manager sets reward per second to be distributed
     * and invokes initial distribution to be started right away,
     * must have some tokens already staked before executing.
     */
    function setRewardRate(
        uint256 _newRewardRate
    )
        external
        onlyManager
        updateFarm()
    {
        require(
            _totalStaked > 0,
            "SimpleFarm: NO_STAKERS"
        );

        require(
            _newRewardRate > 0,
            "SimpleFarm: INVALID_RATE"
        );

        uint256 currentPeriodFinish = periodFinished;

        lastUpdateTime = block.timestamp;
        periodFinished = block.timestamp
            + rewardDuration;

        if (block.timestamp < currentPeriodFinish) {

            require(
                _newRewardRate >= rewardRate,
                "SimpleFarm: RATE_CANT_DECREASE"
            );

            uint256 remainingTime = currentPeriodFinish
                - block.timestamp;

            uint256 rewardRemains = remainingTime
                * rewardRate;

            safeTransfer(
                rewardToken,
                managerAddress,
                rewardRemains
            );
        }

        rewardRate = _newRewardRate;

        uint256 newRewardAmount = rewardDuration
            * _newRewardRate;

        safeTransferFrom(
            rewardToken,
            managerAddress,
            address(this),
            newRewardAmount
        );

        emit RewardAdded(
            _newRewardRate,
            newRewardAmount
        );
    }
}

File 2 of 4: IERC20.sol
// SPDX-License-Identifier: -- BCOM --

pragma solidity =0.8.17;

interface IERC20 {

    /**
     * @dev Interface fo transfer function
     */
    function transfer(
        address recipient,
        uint256 amount
    )
        external
        returns (bool);

    /**
     * @dev Interface for transferFrom function
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    )
        external
        returns (bool);
}

File 3 of 4: SafeERC20.sol
// SPDX-License-Identifier: -- BCOM --

pragma solidity =0.8.17;

import "./IERC20.sol";

contract SafeERC20 {

    /**
     * @dev Allows to execute transfer for a token
     */
    function safeTransfer(
        IERC20 _token,
        address _to,
        uint256 _value
    )
        internal
    {
        callOptionalReturn(
            _token,
            abi.encodeWithSelector(
                _token.transfer.selector,
                _to,
                _value
            )
        );
    }

    /**
     * @dev Allows to execute transferFrom for a token
     */
    function safeTransferFrom(
        IERC20 _token,
        address _from,
        address _to,
        uint256 _value
    )
        internal
    {
        callOptionalReturn(
            _token,
            abi.encodeWithSelector(
                _token.transferFrom.selector,
                _from,
                _to,
                _value
            )
        );
    }

    function callOptionalReturn(
        IERC20 _token,
        bytes memory _data
    )
        private
    {
        (
            bool success,
            bytes memory returndata
        ) = address(_token).call(_data);

        require(
            success,
            "SafeERC20: CALL_FAILED"
        );

        if (returndata.length > 0) {
            require(
                abi.decode(
                    returndata,
                    (bool)
                ),
                "SafeERC20: OPERATION_FAILED"
            );
        }
    }
}

File 4 of 4: TokenWrapper.sol
// SPDX-License-Identifier: -- BCOM --

pragma solidity =0.8.17;

import "./SafeERC20.sol";

contract TokenWrapper is SafeERC20 {

    string public constant name = "VerseFarm";
    string public constant symbol = "VFARM";

    uint8 public constant decimals = 18;

    uint256 _totalStaked;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

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

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns total amount of staked tokens
     */
    function totalSupply()
        external
        view
        returns (uint256)
    {
        return _totalStaked;
    }

    /**
     * @dev Returns staked amount by wallet address
     */
    function balanceOf(
        address _walletAddress
    )
        external
        view
        returns (uint256)
    {
        return _balances[_walletAddress];
    }

    /**
     * @dev Increases staked amount by wallet address
     */
    function _stake(
        uint256 _amount,
        address _address
    )
        internal
    {
        _totalStaked =
        _totalStaked + _amount;

        unchecked {
            _balances[_address] =
            _balances[_address] + _amount;
        }
    }

    /**
     * @dev Decreases total staked amount
     */
    function _withdraw(
        uint256 _amount,
        address _address
    )
        internal
    {
        unchecked {
            _totalStaked =
            _totalStaked - _amount;
        }

        _balances[_address] =
        _balances[_address] - _amount;
    }

    /**
     * @dev Allows to transfer receipt tokens
     */
    function transfer(
        address _recipient,
        uint256 _amount
    )
        external
        returns (bool)
    {
        _transfer(
            msg.sender,
            _recipient,
            _amount
        );

        return true;
    }

    /**
     * @dev Updates balances during transfer
     */
    function _transfer(
        address _sender,
        address _recipient,
        uint256 _amount
    )
        internal
    {
        _balances[_sender] =
        _balances[_sender] - _amount;

        unchecked {
            _balances[_recipient] =
            _balances[_recipient] + _amount;
        }

        emit Transfer(
            _sender,
            _recipient,
            _amount
        );
    }

    /**
     * @dev Allows to transfer receipt tokens on owner's behalf
     */
    function transferFrom(
        address _sender,
        address _recipient,
        uint256 _amount
    )
        external
        returns (bool)
    {
        if (_allowances[_sender][msg.sender] != type(uint256).max) {
            _allowances[_sender][msg.sender] -= _amount;
        }

        _transfer(
            _sender,
            _recipient,
            _amount
        );

        return true;
    }

    /**
     * @dev Grants permission for receipt tokens transfer on owner's behalf
     */
    function approve(
        address _spender,
        uint256 _amount
    )
        external
        returns (bool)
    {
        _approve(
            msg.sender,
            _spender,
            _amount
        );

        return true;
    }

    /**
     * @dev Checks value for receipt tokens transfer on owner's behalf
     */
    function allowance(
        address _owner,
        address _spender
    )
        external
        view
        returns (uint256)
    {
        return _allowances[_owner][_spender];
    }

    /**
     * @dev Allowance update for receipt tokens transfer on owner's behalf
     */
    function _approve(
        address _owner,
        address _spender,
        uint256 _amount
    )
        internal
    {
        _allowances[_owner][_spender] = _amount;

        emit Approval(
            _owner,
            _spender,
            _amount
        );
    }

    /**
     * @dev Increases value for receipt tokens transfer on owner's behalf
     */
    function increaseAllowance(
        address _spender,
        uint256 _addedValue
    )
        external
        returns (bool)
    {
        _approve(
            msg.sender,
            _spender,
            _allowances[msg.sender][_spender] + _addedValue
        );

        return true;
    }

    /**
     * @dev Decreases value for receipt tokens transfer on owner's behalf
     */
    function decreaseAllowance(
        address _spender,
        uint256 _subtractedValue
    )
        external
        returns (bool)
    {
        _approve(
            msg.sender,
            _spender,
            _allowances[msg.sender][_spender] - _subtractedValue
        );

        return true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IERC20","name":"_stakeToken","type":"address"},{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"uint256","name":"_defaultDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"proposedOwner","type":"address"}],"name":"OwnerProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"Recovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRewardDuration","type":"uint256"}],"name":"RewardsDurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"Staked","type":"event"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_walletAddress","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newManager","type":"address"}],"name":"changeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_walletAddress","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exitFarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakeAmount","type":"uint256"}],"name":"farmDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawAmount","type":"uint256"}],"name":"farmWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"res","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"perTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinished","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"proposeNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardDuration","type":"uint256"}],"name":"setRewardDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRewardRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeToken","outputs":[{"internalType":"contract IERC20","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":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c06040523480156200001157600080fd5b50604051620018d9380380620018d98339810160408190526200003491620000e4565b60008111620000895760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a20494e56414c49445f4455524154494f4e00000000604482015260640160405180910390fd5b6001600160a01b03928316608052911660a052600a8054336001600160a01b03199182168117909255600c8054909116909117905560055562000125565b80516001600160a01b0381168114620000df57600080fd5b919050565b600080600060608486031215620000fa57600080fd5b6200010584620000c7565b92506200011560208501620000c7565b9150604084015190509250925092565b60805160a05161175d6200017c6000396000818161052b01528181610ade01528181610b3201528181610e560152610fe301526000818161033101528181610715015281816108d80152610dd9015261175d6000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80639e447fc611610125578063c8f33c91116100ad578063d153b60c1161007c578063d153b60c146104c8578063dd62ed3e146104db578063ee6c0d5714610514578063f520e7e51461051d578063f7c618c11461052657600080fd5b8063c8f33c911461049c578063cd3daf9d146104a5578063cddaf358146104ad578063cf73a1bc146104b557600080fd5b8063a9059cbb116100f4578063a9059cbb14610448578063b1f8100d1461045b578063b29a81401461046e578063b88a802f14610481578063c0ed00c91461048957600080fd5b80639e447fc6146103ef578063a3fbbaae14610402578063a457c2d714610415578063a4c0ae6f1461042857600080fd5b806339509351116101a85780637b0a47ee116101775780637b0a47ee1461039457806380faa57d1461039d5780638f84aa09146103a557806390717dd3146103b857806395d89b41146103cb57600080fd5b806339509351146103115780634e71e0c81461032457806351ed6a301461032c57806370a082311461036b57600080fd5b80630962c4f9116101ef5780630962c4f9146102be57806318160ddd146102c757806323b872dd146102cf5780632b8c8a64146102e2578063313ce567146102f757600080fd5b80628cc262146102205780630660f1e81461024657806306fdde0314610266578063095ea7b31461029b575b600080fd5b61023361022e366004611541565b61054d565b6040519081526020015b60405180910390f35b610233610254366004611541565b60086020526000908152604090205481565b61028e6040518060400160405280600981526020016856657273654661726d60b81b81525081565b60405161023d9190611582565b6102ae6102a93660046115b5565b6105d3565b604051901515815260200161023d565b61023360045481565b600054610233565b6102ae6102dd3660046115e1565b6105ea565b6102f56102f0366004611622565b610664565b005b6102ff601281565b60405160ff909116815260200161023d565b6102ae61031f3660046115b5565b610782565b6102f56107be565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161023d565b610233610379366004611541565b6001600160a01b031660009081526001602052604090205490565b61023360035481565b61023361086e565b600a54610353906001600160a01b031681565b6102f56103c6366004611622565b610885565b61028e60405180604001604052806005815260200164564641524d60d81b81525081565b6102f56103fd366004611622565b61093a565b6102f5610410366004611541565b610ba0565b6102ae6104233660046115b5565b610c9d565b610233610436366004611541565b60096020526000908152604090205481565b6102ae6104563660046115b5565b610cd4565b6102f5610469366004611541565b610ce1565b6102f561047c3660046115b5565b610dd7565b610233610f24565b6102f5610497366004611622565b611050565b61023360065481565b610233611180565b6102f56111f1565b600c54610353906001600160a01b031681565b600b54610353906001600160a01b031681565b6102336104e936600461163b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023360075481565b61023360055481565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600960205260408120548190610570611180565b61057a919061168a565b6001600160a01b03841660009081526008602090815260408083205460019092529091205491925090670de0b6b3a7640000906105b890849061169d565b6105c291906116b4565b6105cc91906116d6565b9392505050565b60006105e0338484611216565b5060015b92915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000191461064f576001600160a01b03841660009081526002602090815260408083203384529091528120805484929061064990849061168a565b90915550505b61065a848484611278565b5060019392505050565b61066c611180565b60075561067761086e565b6006556106833361054d565b336000908152600860209081526040808320939093556007546009909152919020556004544210156107055780600054116107055760405162461bcd60e51b815260206004820152601960248201527f53696d706c654661726d3a205354494c4c5f4541524e494e470000000000000060448201526064015b60405180910390fd5b3361071082826112fb565b61073b7f00000000000000000000000000000000000000000000000000000000000000008284611342565b806001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58360405161077691815260200190565b60405180910390a25050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105e09185906107b99086906116d6565b611216565b600b546001600160a01b031633146108185760405162461bcd60e51b815260206004820152601d60248201527f53696d706c654661726d3a20494e56414c49445f43414e44494441544500000060448201526064016106fc565b600b54600a80546001600160a01b0319166001600160a01b0390921691821790556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369060200160405180910390a1565b60006004544210610880575060045490565b504290565b61088d611180565b60075561089861086e565b6006556108a43361054d565b336000818152600860209081526040808320949094556007546009909152929020919091556108d382826113aa565b6108ff7f00000000000000000000000000000000000000000000000000000000000000008230856113dc565b806001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8360405161077691815260200190565b600c546001600160a01b031633146109945760405162461bcd60e51b815260206004820152601b60248201527f53696d706c654661726d3a20494e56414c49445f4d414e41474552000000000060448201526064016106fc565b61099c611180565b6007556109a761086e565b6006556000546109f25760405162461bcd60e51b815260206004820152601660248201527553696d706c654661726d3a204e4f5f5354414b45525360501b60448201526064016106fc565b60008111610a425760405162461bcd60e51b815260206004820152601860248201527f53696d706c654661726d3a20494e56414c49445f52415445000000000000000060448201526064016106fc565b600454426006819055600554610a57916116d6565b60045542811115610b1057600354821015610ab45760405162461bcd60e51b815260206004820152601e60248201527f53696d706c654661726d3a20524154455f43414e545f4445435245415345000060448201526064016106fc565b6000610ac0428361168a565b9050600060035482610ad2919061169d565b600c54909150610b0d907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683611342565b50505b6003829055600554600090610b2690849061169d565b600c54909150610b62907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031630846113dc565b60408051848152602081018390527f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f55910160405180910390a1505050565b600a546001600160a01b03163314610bf65760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22fa7aba722a960391b60448201526064016106fc565b6001600160a01b038116610c485760405162461bcd60e51b815260206004820152601960248201527853696d706c654661726d3a2057524f4e475f4144445245535360381b60448201526064016106fc565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b906020015b60405180910390a150565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105e09185906107b990869061168a565b60006105e0338484611278565b600a546001600160a01b03163314610d375760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22fa7aba722a960391b60448201526064016106fc565b6001600160a01b038116610d895760405162461bcd60e51b815260206004820152601960248201527853696d706c654661726d3a2057524f4e475f4144445245535360381b60448201526064016106fc565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f35b5da26a401fdbef2e1cfabeec2c10a6121d56f136be501a393c284cdd1af5890602001610c92565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e545760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22faa27a5a2a760391b60448201526064016106fc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ed15760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22faa27a5a2a760391b60448201526064016106fc565b600a54610ee99083906001600160a01b031683611342565b816001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288260405161077691815260200190565b6000610f2e611180565b600755610f3961086e565b600655610f453361054d565b33600081815260086020908152604080832094909455600754600990915292902091909155610f738161054d565b915060008211610fc55760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a204e4f5448494e475f544f5f434c41494d0000000060448201526064016106fc565b6001600160a01b0381166000908152600860205260408120556110097f00000000000000000000000000000000000000000000000000000000000000008284611342565b806001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04868360405161104491815260200190565b60405180910390a25090565b600c546001600160a01b031633146110aa5760405162461bcd60e51b815260206004820152601b60248201527f53696d706c654661726d3a20494e56414c49445f4d414e41474552000000000060448201526064016106fc565b600081116110fa5760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a20494e56414c49445f4455524154494f4e0000000060448201526064016106fc565b600454421161114b5760405162461bcd60e51b815260206004820181905260248201527f53696d706c654661726d3a204f4e474f494e475f444953545249425554494f4e60448201526064016106fc565b60058190556040518181527ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390602001610c92565b60008054600003611192575060075490565b600060065461119f61086e565b6111a9919061168a565b905060008054670de0b6b3a7640000600354846111c6919061169d565b6111d0919061169d565b6111da91906116b4565b9050806007546111ea91906116d6565b9250505090565b3360009081526001602052604090205461120a81610664565b611212610f24565b5050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526001602052604090205461129c90829061168a565b6001600160a01b0384811660008181526001602090815260408083209590955592861680825290849020805486019055925184815290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161126b565b6000805483900381556001600160a01b03821681526001602052604090205461132590839061168a565b6001600160a01b0390911660009081526001602052604090205550565b6040516001600160a01b0383166024820152604481018290526113a590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261141a565b505050565b816000546113b891906116d6565b60009081556001600160a01b03909116815260016020526040902080549091019055565b6040516001600160a01b03808516602483015283166044820152606481018290526114149085906323b872dd60e01b9060840161136e565b50505050565b600080836001600160a01b03168360405161143591906116e9565b6000604051808303816000865af19150503d8060008114611472576040519150601f19603f3d011682016040523d82523d6000602084013e611477565b606091505b5091509150816114c25760405162461bcd60e51b815260206004820152601660248201527514d85999515490cc8c0e8810d0531317d1905253115160521b60448201526064016106fc565b80511561141457808060200190518101906114dd9190611705565b6114145760405162461bcd60e51b815260206004820152601b60248201527f5361666545524332303a204f5045524154494f4e5f4641494c4544000000000060448201526064016106fc565b6001600160a01b038116811461153e57600080fd5b50565b60006020828403121561155357600080fd5b81356105cc81611529565b60005b83811015611579578181015183820152602001611561565b50506000910152565b60208152600082518060208401526115a181604085016020870161155e565b601f01601f19169190910160400192915050565b600080604083850312156115c857600080fd5b82356115d381611529565b946020939093013593505050565b6000806000606084860312156115f657600080fd5b833561160181611529565b9250602084013561161181611529565b929592945050506040919091013590565b60006020828403121561163457600080fd5b5035919050565b6000806040838503121561164e57600080fd5b823561165981611529565b9150602083013561166981611529565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e4576105e4611674565b80820281158282048414176105e4576105e4611674565b6000826116d157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105e4576105e4611674565b600082516116fb81846020870161155e565b9190910192915050565b60006020828403121561171757600080fd5b815180151581146105cc57600080fdfea26469706673582212200c76f9ef49e6932b7fec81f35fcce7964e841b049a150c8122a2d50f18ca00a364736f6c63430008110033000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a180000000000000000000000000000000000000000000000000000000000093a80

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061021b5760003560e01c80639e447fc611610125578063c8f33c91116100ad578063d153b60c1161007c578063d153b60c146104c8578063dd62ed3e146104db578063ee6c0d5714610514578063f520e7e51461051d578063f7c618c11461052657600080fd5b8063c8f33c911461049c578063cd3daf9d146104a5578063cddaf358146104ad578063cf73a1bc146104b557600080fd5b8063a9059cbb116100f4578063a9059cbb14610448578063b1f8100d1461045b578063b29a81401461046e578063b88a802f14610481578063c0ed00c91461048957600080fd5b80639e447fc6146103ef578063a3fbbaae14610402578063a457c2d714610415578063a4c0ae6f1461042857600080fd5b806339509351116101a85780637b0a47ee116101775780637b0a47ee1461039457806380faa57d1461039d5780638f84aa09146103a557806390717dd3146103b857806395d89b41146103cb57600080fd5b806339509351146103115780634e71e0c81461032457806351ed6a301461032c57806370a082311461036b57600080fd5b80630962c4f9116101ef5780630962c4f9146102be57806318160ddd146102c757806323b872dd146102cf5780632b8c8a64146102e2578063313ce567146102f757600080fd5b80628cc262146102205780630660f1e81461024657806306fdde0314610266578063095ea7b31461029b575b600080fd5b61023361022e366004611541565b61054d565b6040519081526020015b60405180910390f35b610233610254366004611541565b60086020526000908152604090205481565b61028e6040518060400160405280600981526020016856657273654661726d60b81b81525081565b60405161023d9190611582565b6102ae6102a93660046115b5565b6105d3565b604051901515815260200161023d565b61023360045481565b600054610233565b6102ae6102dd3660046115e1565b6105ea565b6102f56102f0366004611622565b610664565b005b6102ff601281565b60405160ff909116815260200161023d565b6102ae61031f3660046115b5565b610782565b6102f56107be565b6103537f000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e81565b6040516001600160a01b03909116815260200161023d565b610233610379366004611541565b6001600160a01b031660009081526001602052604090205490565b61023360035481565b61023361086e565b600a54610353906001600160a01b031681565b6102f56103c6366004611622565b610885565b61028e60405180604001604052806005815260200164564641524d60d81b81525081565b6102f56103fd366004611622565b61093a565b6102f5610410366004611541565b610ba0565b6102ae6104233660046115b5565b610c9d565b610233610436366004611541565b60096020526000908152604090205481565b6102ae6104563660046115b5565b610cd4565b6102f5610469366004611541565b610ce1565b6102f561047c3660046115b5565b610dd7565b610233610f24565b6102f5610497366004611622565b611050565b61023360065481565b610233611180565b6102f56111f1565b600c54610353906001600160a01b031681565b600b54610353906001600160a01b031681565b6102336104e936600461163b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023360075481565b61023360055481565b6103537f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a1881565b6001600160a01b0381166000908152600960205260408120548190610570611180565b61057a919061168a565b6001600160a01b03841660009081526008602090815260408083205460019092529091205491925090670de0b6b3a7640000906105b890849061169d565b6105c291906116b4565b6105cc91906116d6565b9392505050565b60006105e0338484611216565b5060015b92915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000191461064f576001600160a01b03841660009081526002602090815260408083203384529091528120805484929061064990849061168a565b90915550505b61065a848484611278565b5060019392505050565b61066c611180565b60075561067761086e565b6006556106833361054d565b336000908152600860209081526040808320939093556007546009909152919020556004544210156107055780600054116107055760405162461bcd60e51b815260206004820152601960248201527f53696d706c654661726d3a205354494c4c5f4541524e494e470000000000000060448201526064015b60405180910390fd5b3361071082826112fb565b61073b7f000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e8284611342565b806001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58360405161077691815260200190565b60405180910390a25050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105e09185906107b99086906116d6565b611216565b600b546001600160a01b031633146108185760405162461bcd60e51b815260206004820152601d60248201527f53696d706c654661726d3a20494e56414c49445f43414e44494441544500000060448201526064016106fc565b600b54600a80546001600160a01b0319166001600160a01b0390921691821790556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369060200160405180910390a1565b60006004544210610880575060045490565b504290565b61088d611180565b60075561089861086e565b6006556108a43361054d565b336000818152600860209081526040808320949094556007546009909152929020919091556108d382826113aa565b6108ff7f000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e8230856113dc565b806001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8360405161077691815260200190565b600c546001600160a01b031633146109945760405162461bcd60e51b815260206004820152601b60248201527f53696d706c654661726d3a20494e56414c49445f4d414e41474552000000000060448201526064016106fc565b61099c611180565b6007556109a761086e565b6006556000546109f25760405162461bcd60e51b815260206004820152601660248201527553696d706c654661726d3a204e4f5f5354414b45525360501b60448201526064016106fc565b60008111610a425760405162461bcd60e51b815260206004820152601860248201527f53696d706c654661726d3a20494e56414c49445f52415445000000000000000060448201526064016106fc565b600454426006819055600554610a57916116d6565b60045542811115610b1057600354821015610ab45760405162461bcd60e51b815260206004820152601e60248201527f53696d706c654661726d3a20524154455f43414e545f4445435245415345000060448201526064016106fc565b6000610ac0428361168a565b9050600060035482610ad2919061169d565b600c54909150610b0d907f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a18906001600160a01b031683611342565b50505b6003829055600554600090610b2690849061169d565b600c54909150610b62907f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a18906001600160a01b031630846113dc565b60408051848152602081018390527f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f55910160405180910390a1505050565b600a546001600160a01b03163314610bf65760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22fa7aba722a960391b60448201526064016106fc565b6001600160a01b038116610c485760405162461bcd60e51b815260206004820152601960248201527853696d706c654661726d3a2057524f4e475f4144445245535360381b60448201526064016106fc565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b906020015b60405180910390a150565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105e09185906107b990869061168a565b60006105e0338484611278565b600a546001600160a01b03163314610d375760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22fa7aba722a960391b60448201526064016106fc565b6001600160a01b038116610d895760405162461bcd60e51b815260206004820152601960248201527853696d706c654661726d3a2057524f4e475f4144445245535360381b60448201526064016106fc565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f35b5da26a401fdbef2e1cfabeec2c10a6121d56f136be501a393c284cdd1af5890602001610c92565b7f000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e6001600160a01b0316826001600160a01b031603610e545760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22faa27a5a2a760391b60448201526064016106fc565b7f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a186001600160a01b0316826001600160a01b031603610ed15760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22faa27a5a2a760391b60448201526064016106fc565b600a54610ee99083906001600160a01b031683611342565b816001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288260405161077691815260200190565b6000610f2e611180565b600755610f3961086e565b600655610f453361054d565b33600081815260086020908152604080832094909455600754600990915292902091909155610f738161054d565b915060008211610fc55760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a204e4f5448494e475f544f5f434c41494d0000000060448201526064016106fc565b6001600160a01b0381166000908152600860205260408120556110097f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a188284611342565b806001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04868360405161104491815260200190565b60405180910390a25090565b600c546001600160a01b031633146110aa5760405162461bcd60e51b815260206004820152601b60248201527f53696d706c654661726d3a20494e56414c49445f4d414e41474552000000000060448201526064016106fc565b600081116110fa5760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a20494e56414c49445f4455524154494f4e0000000060448201526064016106fc565b600454421161114b5760405162461bcd60e51b815260206004820181905260248201527f53696d706c654661726d3a204f4e474f494e475f444953545249425554494f4e60448201526064016106fc565b60058190556040518181527ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390602001610c92565b60008054600003611192575060075490565b600060065461119f61086e565b6111a9919061168a565b905060008054670de0b6b3a7640000600354846111c6919061169d565b6111d0919061169d565b6111da91906116b4565b9050806007546111ea91906116d6565b9250505090565b3360009081526001602052604090205461120a81610664565b611212610f24565b5050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526001602052604090205461129c90829061168a565b6001600160a01b0384811660008181526001602090815260408083209590955592861680825290849020805486019055925184815290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161126b565b6000805483900381556001600160a01b03821681526001602052604090205461132590839061168a565b6001600160a01b0390911660009081526001602052604090205550565b6040516001600160a01b0383166024820152604481018290526113a590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261141a565b505050565b816000546113b891906116d6565b60009081556001600160a01b03909116815260016020526040902080549091019055565b6040516001600160a01b03808516602483015283166044820152606481018290526114149085906323b872dd60e01b9060840161136e565b50505050565b600080836001600160a01b03168360405161143591906116e9565b6000604051808303816000865af19150503d8060008114611472576040519150601f19603f3d011682016040523d82523d6000602084013e611477565b606091505b5091509150816114c25760405162461bcd60e51b815260206004820152601660248201527514d85999515490cc8c0e8810d0531317d1905253115160521b60448201526064016106fc565b80511561141457808060200190518101906114dd9190611705565b6114145760405162461bcd60e51b815260206004820152601b60248201527f5361666545524332303a204f5045524154494f4e5f4641494c4544000000000060448201526064016106fc565b6001600160a01b038116811461153e57600080fd5b50565b60006020828403121561155357600080fd5b81356105cc81611529565b60005b83811015611579578181015183820152602001611561565b50506000910152565b60208152600082518060208401526115a181604085016020870161155e565b601f01601f19169190910160400192915050565b600080604083850312156115c857600080fd5b82356115d381611529565b946020939093013593505050565b6000806000606084860312156115f657600080fd5b833561160181611529565b9250602084013561161181611529565b929592945050506040919091013590565b60006020828403121561163457600080fd5b5035919050565b6000806040838503121561164e57600080fd5b823561165981611529565b9150602083013561166981611529565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e4576105e4611674565b80820281158282048414176105e4576105e4611674565b6000826116d157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105e4576105e4611674565b600082516116fb81846020870161155e565b9190910192915050565b60006020828403121561171757600080fd5b815180151581146105cc57600080fdfea26469706673582212200c76f9ef49e6932b7fec81f35fcce7964e841b049a150c8122a2d50f18ca00a364736f6c63430008110033

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

000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a180000000000000000000000000000000000000000000000000000000000093a80

-----Decoded View---------------
Arg [0] : _stakeToken (address): 0x845C0179060362f071FF5C7f1D2703617a480F3e
Arg [1] : _rewardToken (address): 0x249cA82617eC3DfB2589c4c17ab7EC9765350a18
Arg [2] : _defaultDuration (uint256): 604800

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000845c0179060362f071ff5c7f1d2703617a480f3e
Arg [1] : 000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a18
Arg [2] : 0000000000000000000000000000000000000000000000000000000000093a80


Deployed Bytecode Sourcemap

96:9714:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3299:343;;;;;;:::i;:::-;;:::i;:::-;;;548:25:4;;;536:2;521:18;3299:343:2;;;;;;;;483:46;;;;;;:::i;:::-;;;;;;;;;;;;;;135:41:3;;;;;;;;;;;;;;;-1:-1:-1;;;135:41:3;;;;;;;;;;;;:::i;3119:242::-;;;;;;:::i;:::-;;:::i;:::-;;;1725:14:4;;1718:22;1700:41;;1688:2;1673:18;3119:242:3;1560:187:4;252:29:2;;;;;;701:119:3;771:7;801:12;701:119;;2610:411;;;;;;:::i;:::-;;:::i;4284:650:2:-;;;;;;:::i;:::-;;:::i;:::-;;228:35:3;;261:2;228:35;;;;;2570:4:4;2558:17;;;2540:36;;2528:2;2513:18;228:35:3;2398:184:4;4108:296:3;;;;;;:::i;:::-;;:::i;6347:270:2:-;;;:::i;139:34::-;;;;;;;;-1:-1:-1;;;;;2764:32:4;;;2746:51;;2734:2;2719:18;139:34:2;2587:216:4;894:166:3;;;;;;:::i;:::-;-1:-1:-1;;;;;1028:25:3;998:7;1028:25;;;:9;:25;;;;;;;894:166;221:25:2;;;;;;2485:212;;;:::i;589:27::-;;;;;-1:-1:-1;;;;;589:27:2;;;3723:477;;;;;;:::i;:::-;;:::i;182:39:3:-;;;;;;;;;;;;;;;-1:-1:-1;;;182:39:3;;;;;8454:1354:2;;;;;;:::i;:::-;;:::i;6688:310::-;;;;;;:::i;:::-;;:::i;4500:306:3:-;;;;;;:::i;:::-;;:::i;535:47:2:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1799:248:3;;;;;;:::i;:::-;;:::i;5971:302:2:-;;;;;;:::i;:::-;;:::i;7127:514::-;;;;;;:::i;:::-;;:::i;5311:586::-;;;:::i;7783:460::-;;;;;;:::i;:::-;;:::i;322:29::-;;;;;;2780:427;;;:::i;5019:211::-;;;:::i;656:29::-;;;;;-1:-1:-1;;;;;656:29:2;;;622:28;;;;;-1:-1:-1;;;;;622:28:2;;;3454:188:3;;;;;;:::i;:::-;-1:-1:-1;;;;;3606:19:3;;;3576:7;3606:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;3454:188;357:29:2;;;;;;287;;;;;;179:35;;;;;3299:343;-1:-1:-1;;;;;3473:28:2;;3398:7;3473:28;;;:12;:28;;;;;;3398:7;;3442:16;:14;:16::i;:::-;:59;;;;:::i;:::-;-1:-1:-1;;;;;3608:27:2;;;;;;:11;:27;;;;;;;;;3519:9;:25;;;;;;;3421:80;;-1:-1:-1;3608:27:2;422:4;;3519:50;;3421:80;;3519:50;:::i;:::-;:74;;;;:::i;:::-;:116;;;;:::i;:::-;3512:123;3299:343;-1:-1:-1;;;3299:343:2:o;3119:242:3:-;3227:4;3247:85;3269:10;3293:8;3315:7;3247:8;:85::i;:::-;-1:-1:-1;3350:4:3;3119:242;;;;;:::o;2610:411::-;-1:-1:-1;;;;;2774:20:3;;2750:4;2774:20;;;:11;:20;;;;;;;;2795:10;2774:32;;;;;;;;-1:-1:-1;;2774:53:3;2770:127;;-1:-1:-1;;;;;2843:20:3;;;;;;:11;:20;;;;;;;;2864:10;2843:32;;;;;;;:43;;2879:7;;2843:20;:43;;2879:7;;2843:43;:::i;:::-;;;;-1:-1:-1;;2770:127:3;2907:85;2930:7;2951:10;2975:7;2907:9;:85::i;:::-;-1:-1:-1;3010:4:3;2610:411;;;;;:::o;4284:650:2:-;1053:16;:14;:16::i;:::-;1036:14;:33;1096:26;:24;:26::i;:::-;1079:14;:43;1204:18:::1;1211:10;1204:6;:18::i;:::-;1190:10;1178:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1259:14:::1;::::0;1232:12:::1;:24:::0;;;;;;:41;4438:14:::2;::::0;4420:15:::2;:32;4416:177;;;4508:15;4493:12;;:30;4468:114;;;::::0;-1:-1:-1;;;4468:114:2;;4734:2:4;4468:114:2::2;::::0;::::2;4716:21:4::0;4773:2;4753:18;;;4746:30;4812:27;4792:18;;;4785:55;4857:18;;4468:114:2::2;;;;;;;;;4627:10;4648:75;4671:15:::0;4627:10;4648:9:::2;:75::i;:::-;4734:102;4760:10;4784:13;4811:15;4734:12;:102::i;:::-;4875:13;-1:-1:-1::0;;;;;4852:75:2::2;;4902:15;4852:75;;;;548:25:4::0;;536:2;521:18;;402:177;4852:75:2::2;;;;;;;;4406:528;4284:650:::0;:::o;4108:296:3:-;4272:10;4230:4;4318:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4318:33:3;;;;;;;;;;4230:4;;4250:125;;4296:8;;4318:47;;4354:11;;4318:47;:::i;:::-;4250:8;:125::i;6347:270:2:-;6439:13;;-1:-1:-1;;;;;6439:13:2;6425:10;:27;6404:103;;;;-1:-1:-1;;;6404:103:2;;5088:2:4;6404:103:2;;;5070:21:4;5127:2;5107:18;;;5100:30;5166:31;5146:18;;;5139:59;5215:18;;6404:103:2;4886:353:4;6404:103:2;6533:13;;6518:12;:28;;-1:-1:-1;;;;;;6518:28:2;-1:-1:-1;;;;;6533:13:2;;;6518:28;;;;;6562:48;;2746:51:4;;;6562:48:2;;2734:2:4;2719:18;6562:48:2;;;;;;;6347:270::o;2485:212::-;2566:11;2617:14;;2599:15;:32;:91;;-1:-1:-1;2676:14:2;;;2485:212::o;2599:91::-;-1:-1:-1;2646:15:2;;2485:212::o;3723:477::-;1053:16;:14;:16::i;:::-;1036:14;:33;1096:26;:24;:26::i;:::-;1079:14;:43;1204:18:::1;1211:10;1204:6;:18::i;:::-;1190:10;1178:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1259:14:::1;::::0;1232:12:::1;:24:::0;;;;;;:41;;;;3898:69:::2;3918:12:::0;1190:10;3898:6:::2;:69::i;:::-;3978:130;4008:10;4032:13;4067:4;4086:12;3978:16;:130::i;:::-;4144:13;-1:-1:-1::0;;;;;4124:69:2::2;;4171:12;4124:69;;;;548:25:4::0;;536:2;521:18;;402:177;8454:1354:2;913:14;;-1:-1:-1;;;;;913:14:2;899:10;:28;878:102;;;;-1:-1:-1;;;878:102:2;;5446:2:4;878:102:2;;;5428:21:4;5485:2;5465:18;;;5458:30;5524:29;5504:18;;;5497:57;5571:18;;878:102:2;5244:351:4;878:102:2;1053:16:::1;:14;:16::i;:::-;1036:14;:33:::0;1096:26:::1;:24;:26::i;:::-;1079:14;:43:::0;8623:1:::2;8608:12:::0;8587:85:::2;;;::::0;-1:-1:-1;;;8587:85:2;;5802:2:4;8587:85:2::2;::::0;::::2;5784:21:4::0;5841:2;5821:18;;;5814:30;-1:-1:-1;;;5860:18:4;;;5853:52;5922:18;;8587:85:2::2;5600:346:4::0;8587:85:2::2;8721:1;8704:14;:18;8683:89;;;::::0;-1:-1:-1;;;8683:89:2;;6153:2:4;8683:89:2::2;::::0;::::2;6135:21:4::0;6192:2;6172:18;;;6165:30;6231:26;6211:18;;;6204:54;6275:18;;8683:89:2::2;5951:348:4::0;8683:89:2::2;8813:14;::::0;8855:15:::2;8838:14;:32:::0;;;8927:14:::2;::::0;8897:44:::2;::::0;::::2;:::i;:::-;8880:14;:61:::0;8956:15:::2;:37:::0;-1:-1:-1;8952:492:2::2;;;9053:10;;9035:14;:28;;9010:117;;;::::0;-1:-1:-1;;;9010:117:2;;6506:2:4;9010:117:2::2;::::0;::::2;6488:21:4::0;6545:2;6525:18;;;6518:30;6584:32;6564:18;;;6557:60;6634:18;;9010:117:2::2;6304:354:4::0;9010:117:2::2;9142:21;9166:53;9204:15;9166:19:::0;:53:::2;:::i;:::-;9142:77;;9234:21;9290:10;;9258:13;:42;;;;:::i;:::-;9374:14;::::0;9234:66;;-1:-1:-1;9315:118:2::2;::::0;9345:11:::2;::::0;-1:-1:-1;;;;;9374:14:2::2;9234:66:::0;9315:12:::2;:118::i;:::-;8995:449;;8952:492;9454:10;:27:::0;;;9518:14:::2;::::0;9492:23:::2;::::0;9518:43:::2;::::0;9467:14;;9518:43:::2;:::i;:::-;9627:14;::::0;9492:69;;-1:-1:-1;9572:135:2::2;::::0;9602:11:::2;::::0;-1:-1:-1;;;;;9627:14:2::2;9663:4;9492:69:::0;9572:16:::2;:135::i;:::-;9723:78;::::0;;6837:25:4;;;6893:2;6878:18;;6871:34;;;9723:78:2::2;::::0;6810:18:4;9723:78:2::2;;;;;;;8577:1231;;8454:1354:::0;:::o;6688:310::-;758:12;;-1:-1:-1;;;;;758:12:2;744:10;:26;723:98;;;;-1:-1:-1;;;723:98:2;;7118:2:4;723:98:2;;;7100:21:4;7157:2;7137:18;;;7130:30;-1:-1:-1;;;7176:18:4;;;7169:55;7241:18;;723:98:2;6916:349:4;723:98:2;-1:-1:-1;;;;;6799:27:2;::::1;6795:93;;6842:35;::::0;-1:-1:-1;;;6842:35:2;;7472:2:4;6842:35:2::1;::::0;::::1;7454:21:4::0;7511:2;7491:18;;;7484:30;-1:-1:-1;;;7530:18:4;;;7523:55;7595:18;;6842:35:2::1;7270:349:4::0;6795:93:2::1;6898:14;:28:::0;;-1:-1:-1;;;;;;6898:28:2::1;-1:-1:-1::0;;;;;6898:28:2;::::1;::::0;;::::1;::::0;;;6942:49:::1;::::0;2746:51:4;;;6942:49:2::1;::::0;2734:2:4;2719:18;6942:49:2::1;;;;;;;;6688:310:::0;:::o;4500:306:3:-;4669:10;4627:4;4715:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4715:33:3;;;;;;;;;;4627:4;;4647:130;;4693:8;;4715:52;;4751:16;;4715:52;:::i;1799:248::-;1910:4;1930:88;1953:10;1977;2001:7;1930:9;:88::i;5971:302:2:-;758:12;;-1:-1:-1;;;;;758:12:2;744:10;:26;723:98;;;;-1:-1:-1;;;723:98:2;;7118:2:4;723:98:2;;;7100:21:4;7157:2;7137:18;;;7130:30;-1:-1:-1;;;7176:18:4;;;7169:55;7241:18;;723:98:2;6916:349:4;723:98:2;-1:-1:-1;;;;;6082:25:2;::::1;6078:91;;6123:35;::::0;-1:-1:-1;;;6123:35:2;;7472:2:4;6123:35:2::1;::::0;::::1;7454:21:4::0;7511:2;7491:18;;;7484:30;-1:-1:-1;;;7530:18:4;;;7523:55;7595:18;;6123:35:2::1;7270:349:4::0;6078:91:2::1;6179:13;:25:::0;;-1:-1:-1;;;;;;6179:25:2::1;-1:-1:-1::0;;;;;6179:25:2;::::1;::::0;;::::1;::::0;;;6220:46:::1;::::0;2746:51:4;;;6220:46:2::1;::::0;2734:2:4;2719:18;6220:46:2::1;2587:216:4::0;7127:514:2;7264:10;-1:-1:-1;;;;;7248:26:2;:12;-1:-1:-1;;;;;7248:26:2;;7244:92;;7290:35;;-1:-1:-1;;;7290:35:2;;7826:2:4;7290:35:2;;;7808:21:4;7865:2;7845:18;;;7838:30;-1:-1:-1;;;7884:18:4;;;7877:55;7949:18;;7290:35:2;7624:349:4;7244:92:2;7366:11;-1:-1:-1;;;;;7350:27:2;:12;-1:-1:-1;;;;;7350:27:2;;7346:93;;7393:35;;-1:-1:-1;;;7393:35:2;;7826:2:4;7393:35:2;;;7808:21:4;7865:2;7845:18;;;7838:30;-1:-1:-1;;;7884:18:4;;;7877:55;7949:18;;7393:35:2;7624:349:4;7346:93:2;7501:12;;7449:99;;7475:12;;-1:-1:-1;;;;;7501:12:2;7527:11;7449:12;:99::i;:::-;7587:12;-1:-1:-1;;;;;7564:70:2;;7613:11;7564:70;;;;548:25:4;;536:2;521:18;;402:177;5311:586:2;5408:20;1053:16;:14;:16::i;:::-;1036:14;:33;1096:26;:24;:26::i;:::-;1079:14;:43;1204:18:::1;1211:10;1204:6;:18::i;:::-;1190:10;1178:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1259:14:::1;::::0;1232:12:::1;:24:::0;;;;;;:41;;;;5504:43:::2;1190:10:::0;5504:6:::2;:43::i;:::-;5489:58;;5594:1;5579:12;:16;5558:91;;;::::0;-1:-1:-1;;;5558:91:2;;8180:2:4;5558:91:2::2;::::0;::::2;8162:21:4::0;8219:2;8199:18;;;8192:30;8258;8238:18;;;8231:58;8306:18;;5558:91:2::2;7978:352:4::0;5558:91:2::2;-1:-1:-1::0;;;;;5660:26:2;::::2;5689:1;5660:26:::0;;;:11:::2;:26;::::0;;;;:30;5701:100:::2;5727:11;5672:13:::0;5779:12;5701::::2;:100::i;:::-;5841:13;-1:-1:-1::0;;;;;5817:73:2::2;;5868:12;5817:73;;;;548:25:4::0;;536:2;521:18;;402:177;5817:73:2::2;;;;;;;;5434:463;5311:586:::0;:::o;7783:460::-;913:14;;-1:-1:-1;;;;;913:14:2;899:10;:28;878:102;;;;-1:-1:-1;;;878:102:2;;5446:2:4;878:102:2;;;5428:21:4;5485:2;5465:18;;;5458:30;5524:29;5504:18;;;5497:57;5571:18;;878:102:2;5244:351:4;878:102:2;7939:1:::1;7921:15;:19;7900:94;;;::::0;-1:-1:-1;;;7900:94:2;;8537:2:4;7900:94:2::1;::::0;::::1;8519:21:4::0;8576:2;8556:18;;;8549:30;8615;8595:18;;;8588:58;8663:18;;7900:94:2::1;8335:352:4::0;7900:94:2::1;8044:14;;8026:15;:32;8005:111;;;::::0;-1:-1:-1;;;8005:111:2;;8894:2:4;8005:111:2::1;::::0;::::1;8876:21:4::0;;;8913:18;;;8906:30;8972:34;8952:18;;;8945:62;9024:18;;8005:111:2::1;8692:356:4::0;8005:111:2::1;8127:14;:32:::0;;;8175:61:::1;::::0;548:25:4;;;8175:61:2::1;::::0;536:2:4;521:18;8175:61:2::1;402:177:4::0;2780:427:2;2851:7;2878:12;;2894:1;2878:17;2874:69;;-1:-1:-1;2918:14:2;;;2780:427::o;2874:69::-;2953:17;3014:14;;2973:26;:24;:26::i;:::-;:55;;;;:::i;:::-;2953:75;;3039:17;3132:12;;422:4;3083:10;;3059:9;:34;;;;:::i;:::-;:58;;;;:::i;:::-;:85;;;;:::i;:::-;3039:105;;3191:9;3162:14;;:38;;;;:::i;:::-;3155:45;;;;2780:427;:::o;5019:211::-;5118:10;5070:22;5095:43;;;:9;:43;;;;;;5149:50;5095:43;5149:12;:50::i;:::-;5210:13;:11;:13::i;:::-;;5060:170;5019:211::o;3739:273:3:-;-1:-1:-1;;;;;3869:19:3;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;3924:81;;548:25:4;;;3924:81:3;;521:18:4;3924:81:3;;;;;;;;3739:273;;;:::o;2114:410::-;-1:-1:-1;;;;;2277:18:3;;;;;;:9;:18;;;;;;:28;;2298:7;;2277:28;:::i;:::-;-1:-1:-1;;;;;2248:18:3;;;;;;;:9;:18;;;;;;;;:57;;;;2376:21;;;;;;;;;;;;:31;;2340:67;;2433:84;;548:25:4;;;2248:18:3;;2433:84;;521:18:4;2433:84:3;402:177:4;1464:267:3;1622:12;;;:22;;;1595:49;;-1:-1:-1;;;;;1695:19:3;;;;-1:-1:-1;1695:19:3;;;;;;:29;;1637:7;;1695:29;:::i;:::-;-1:-1:-1;;;;;1665:19:3;;;;;;;:9;:19;;;;;:59;-1:-1:-1;1464:267:3:o;183:319:1:-;362:123;;-1:-1:-1;;;;;9245:32:4;;362:123:1;;;9227:51:4;9294:18;;;9287:34;;;310:185:1;;342:6;;-1:-1:-1;;;402:24:1;9200:18:4;;362:123:1;;;;-1:-1:-1;;362:123:1;;;;;;;;;;;;;;-1:-1:-1;;;;;362:123:1;-1:-1:-1;;;;;;362:123:1;;;;;;;;;;310:18;:185::i;:::-;183:319;;;:::o;1136:264:3:-;1278:7;1263:12;;:22;;;;:::i;:::-;1240:12;:45;;;-1:-1:-1;;;;;1354:19:3;;;;;:9;:19;;;;;;;:29;;;1320:63;;1136:264::o;579:373:1:-;785:150;;-1:-1:-1;;;;;9590:15:4;;;785:150:1;;;9572:34:4;9642:15;;9622:18;;;9615:43;9674:18;;;9667:34;;;733:212:1;;765:6;;-1:-1:-1;;;825:28:1;9507:18:4;;785:150:1;9332:375:4;733:212:1;579:373;;;;:::o;958:548::-;1087:12;1113:23;1157:6;-1:-1:-1;;;;;1149:20:1;1170:5;1149:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1073:103;;;;1208:7;1187:76;;;;-1:-1:-1;;;1187:76:1;;10206:2:4;1187:76:1;;;10188:21:4;10245:2;10225:18;;;10218:30;-1:-1:-1;;;10264:18:4;;;10257:52;10326:18;;1187:76:1;10004:346:4;1187:76:1;1278:17;;:21;1274:226;;1372:10;1340:88;;;;;;;;;;;;:::i;:::-;1315:174;;;;-1:-1:-1;;;1315:174:1;;10839:2:4;1315:174:1;;;10821:21:4;10878:2;10858:18;;;10851:30;10917:29;10897:18;;;10890:57;10964:18;;1315:174:1;10637:351:4;14:131;-1:-1:-1;;;;;89:31:4;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;584:250::-;669:1;679:113;693:6;690:1;687:13;679:113;;;769:11;;;763:18;750:11;;;743:39;715:2;708:10;679:113;;;-1:-1:-1;;826:1:4;808:16;;801:27;584:250::o;839:396::-;988:2;977:9;970:21;951:4;1020:6;1014:13;1063:6;1058:2;1047:9;1043:18;1036:34;1079:79;1151:6;1146:2;1135:9;1131:18;1126:2;1118:6;1114:15;1079:79;:::i;:::-;1219:2;1198:15;-1:-1:-1;;1194:29:4;1179:45;;;;1226:2;1175:54;;839:396;-1:-1:-1;;839:396:4:o;1240:315::-;1308:6;1316;1369:2;1357:9;1348:7;1344:23;1340:32;1337:52;;;1385:1;1382;1375:12;1337:52;1424:9;1411:23;1443:31;1468:5;1443:31;:::i;:::-;1493:5;1545:2;1530:18;;;;1517:32;;-1:-1:-1;;;1240:315:4:o;1752:456::-;1829:6;1837;1845;1898:2;1886:9;1877:7;1873:23;1869:32;1866:52;;;1914:1;1911;1904:12;1866:52;1953:9;1940:23;1972:31;1997:5;1972:31;:::i;:::-;2022:5;-1:-1:-1;2079:2:4;2064:18;;2051:32;2092:33;2051:32;2092:33;:::i;:::-;1752:456;;2144:7;;-1:-1:-1;;;2198:2:4;2183:18;;;;2170:32;;1752:456::o;2213:180::-;2272:6;2325:2;2313:9;2304:7;2300:23;2296:32;2293:52;;;2341:1;2338;2331:12;2293:52;-1:-1:-1;2364:23:4;;2213:180;-1:-1:-1;2213:180:4:o;3349:388::-;3417:6;3425;3478:2;3466:9;3457:7;3453:23;3449:32;3446:52;;;3494:1;3491;3484:12;3446:52;3533:9;3520:23;3552:31;3577:5;3552:31;:::i;:::-;3602:5;-1:-1:-1;3659:2:4;3644:18;;3631:32;3672:33;3631:32;3672:33;:::i;:::-;3724:7;3714:17;;;3349:388;;;;;:::o;3742:127::-;3803:10;3798:3;3794:20;3791:1;3784:31;3834:4;3831:1;3824:15;3858:4;3855:1;3848:15;3874:128;3941:9;;;3962:11;;;3959:37;;;3976:18;;:::i;4007:168::-;4080:9;;;4111;;4128:15;;;4122:22;;4108:37;4098:71;;4149:18;;:::i;4180:217::-;4220:1;4246;4236:132;;4290:10;4285:3;4281:20;4278:1;4271:31;4325:4;4322:1;4315:15;4353:4;4350:1;4343:15;4236:132;-1:-1:-1;4382:9:4;;4180:217::o;4402:125::-;4467:9;;;4488:10;;;4485:36;;;4501:18;;:::i;9712:287::-;9841:3;9879:6;9873:13;9895:66;9954:6;9949:3;9942:4;9934:6;9930:17;9895:66;:::i;:::-;9977:16;;;;;9712:287;-1:-1:-1;;9712:287:4:o;10355:277::-;10422:6;10475:2;10463:9;10454:7;10450:23;10446:32;10443:52;;;10491:1;10488;10481:12;10443:52;10523:9;10517:16;10576:5;10569:13;10562:21;10555:5;10552:32;10542:60;;10598:1;10595;10588:12

Swarm Source

ipfs://0c76f9ef49e6932b7fec81f35fcce7964e841b049a150c8122a2d50f18ca00a3

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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.