ETH Price: $3,118.73 (-5.27%)
Gas: 4 Gwei

Contract

0x4E1F1206f2B9a651EcF2D49C5d33761861D4910C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Farm Deposit201971312024-06-29 11:45:355 days ago1719661535IN
0x4E1F1206...861D4910C
0 ETH0.000317252.87340062
Exit Farm201620012024-06-24 14:00:4710 days ago1719237647IN
0x4E1F1206...861D4910C
0 ETH0.00107229.3135575
Exit Farm201565702024-06-23 19:47:1111 days ago1719172031IN
0x4E1F1206...861D4910C
0 ETH0.000283462.46231971
Claim Reward200225822024-06-05 2:16:4729 days ago1717553807IN
0x4E1F1206...861D4910C
0 ETH0.0007896711
Exit Farm200091842024-06-03 5:23:4731 days ago1717392227IN
0x4E1F1206...861D4910C
0 ETH0.000739786.42604805
Farm Deposit200055132024-06-02 17:05:2332 days ago1717347923IN
0x4E1F1206...861D4910C
0 ETH0.0022084420
Exit Farm199997882024-06-01 21:54:2333 days ago1717278863IN
0x4E1F1206...861D4910C
0 ETH0.000766026.65399862
Claim Reward199997822024-06-01 21:53:1133 days ago1717278791IN
0x4E1F1206...861D4910C
0 ETH0.000477686.65399862
Exit Farm199536042024-05-26 10:57:5939 days ago1716721079IN
0x4E1F1206...861D4910C
0 ETH0.000505634.39214292
Exit Farm199401332024-05-24 13:47:1141 days ago1716558431IN
0x4E1F1206...861D4910C
0 ETH0.001292079.77194197
Transfer198963312024-05-18 10:48:1147 days ago1716029291IN
0x4E1F1206...861D4910C
0 ETH0.000529854.26831515
Exit Farm198385832024-05-10 8:56:3555 days ago1715331395IN
0x4E1F1206...861D4910C
0 ETH0.000456253.96317683
Claim Reward198077612024-05-06 1:26:5959 days ago1714958819IN
0x4E1F1206...861D4910C
0 ETH0.000392795.47149831
Farm Deposit197188882024-04-23 15:08:4772 days ago1713884927IN
0x4E1F1206...861D4910C
0 ETH0.0023997121.73220208
Exit Farm196988322024-04-20 19:52:2375 days ago1713642743IN
0x4E1F1206...861D4910C
0 ETH0.001085458.20929422
Farm Deposit196563342024-04-14 21:03:4781 days ago1713128627IN
0x4E1F1206...861D4910C
0 ETH0.0013155611.91395349
Exit Farm196445602024-04-13 5:26:1182 days ago1712985971IN
0x4E1F1206...861D4910C
0 ETH0.0014965913
Farm Deposit196429432024-04-12 23:58:1182 days ago1712966291IN
0x4E1F1206...861D4910C
0 ETH0.0019875918
Claim Reward195949672024-04-06 6:42:5989 days ago1712385779IN
0x4E1F1206...861D4910C
0 ETH0.0008614612
Exit Farm195542242024-03-31 13:39:2395 days ago1711892363IN
0x4E1F1206...861D4910C
0 ETH0.0025001518.90861867
Claim Reward195092532024-03-25 4:52:35101 days ago1711342355IN
0x4E1F1206...861D4910C
0 ETH0.0009915514.61687757
Exit Farm194664802024-03-19 4:40:47107 days ago1710823247IN
0x4E1F1206...861D4910C
0 ETH0.0026122622.69111601
Exit Farm194434342024-03-15 22:51:59111 days ago1710543119IN
0x4E1F1206...861D4910C
0 ETH0.0037728732.77257186
Exit Farm193338102024-02-29 14:37:35126 days ago1709217455IN
0x4E1F1206...861D4910C
0 ETH0.009882885.84563729
Farm Deposit193230502024-02-28 2:27:11127 days ago1709087231IN
0x4E1F1206...861D4910C
0 ETH0.0035793832.8761227
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xDED0C22a...83f04cAB2
The constructor portion of the code might be different and could alter the actual behaviour of the contract

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;

    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;
        _;
    }

    modifier updateSender(address sender) {
        userRewards[sender] = earned(sender);
        perTokenPaid[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
        );
    }

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

        return true;
    }

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

        _transfer(
            _sender,
            _recipient,
            _amount
        );

        return true;
    }
}

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)) _allowances;

    address constant ZERO_ADDRESS = address(0x0);

    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;
        }

        emit Transfer(
            ZERO_ADDRESS,
            _address,
            _amount
        );
    }

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

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

        emit Transfer(
            _address,
            ZERO_ADDRESS,
            _amount
        );
    }

    /**
     * @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 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

[{"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"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061021b5760003560e01c80639e447fc611610125578063c8f33c91116100ad578063d153b60c1161007c578063d153b60c146104c8578063dd62ed3e146104db578063ee6c0d5714610514578063f520e7e51461051d578063f7c618c11461052657600080fd5b8063c8f33c911461049c578063cd3daf9d146104a5578063cddaf358146104ad578063cf73a1bc146104b557600080fd5b8063a9059cbb116100f4578063a9059cbb14610448578063b1f8100d1461045b578063b29a81401461046e578063b88a802f14610481578063c0ed00c91461048957600080fd5b80639e447fc6146103ef578063a3fbbaae14610402578063a457c2d714610415578063a4c0ae6f1461042857600080fd5b806339509351116101a85780637b0a47ee116101775780637b0a47ee1461039457806380faa57d1461039d5780638f84aa09146103a557806390717dd3146103b857806395d89b41146103cb57600080fd5b806339509351146103115780634e71e0c81461032457806351ed6a301461032c57806370a082311461036b57600080fd5b80630962c4f9116101ef5780630962c4f9146102be57806318160ddd146102c757806323b872dd146102cf5780632b8c8a64146102e2578063313ce567146102f757600080fd5b80628cc262146102205780630660f1e81461024657806306fdde0314610266578063095ea7b31461029b575b600080fd5b61023361022e3660046116a1565b61054d565b6040519081526020015b60405180910390f35b6102336102543660046116a1565b60086020526000908152604090205481565b61028e6040518060400160405280600981526020016856657273654661726d60b81b81525081565b60405161023d91906116e2565b6102ae6102a9366004611715565b6105d3565b604051901515815260200161023d565b61023360045481565b600054610233565b6102ae6102dd366004611741565b6105ea565b6102f56102f0366004611782565b6106d8565b005b6102ff601281565b60405160ff909116815260200161023d565b6102ae61031f366004611715565b6107f6565b6102f5610832565b6103537f0000000000000000000000006e1fbeeaba87bae1100d95f8340dc27ad7c8427b81565b6040516001600160a01b03909116815260200161023d565b6102336103793660046116a1565b6001600160a01b031660009081526001602052604090205490565b61023360035481565b6102336108e2565b600a54610353906001600160a01b031681565b6102f56103c6366004611782565b6108f9565b61028e60405180604001604052806005815260200164564641524d60d81b81525081565b6102f56103fd366004611782565b6109ae565b6102f56104103660046116a1565b610c14565b6102ae610423366004611715565b610d11565b6102336104363660046116a1565b60096020526000908152604090205481565b6102ae610456366004611715565b610d48565b6102f56104693660046116a1565b610dd5565b6102f561047c366004611715565b610ecb565b610233611018565b6102f5610497366004611782565b611144565b61023360065481565b610233611274565b6102f56112e5565b600c54610353906001600160a01b031681565b600b54610353906001600160a01b031681565b6102336104e936600461179b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023360075481565b61023360055481565b6103537f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a1881565b6001600160a01b0381166000908152600960205260408120548190610570611274565b61057a91906117ea565b6001600160a01b03841660009081526008602090815260408083205460019092529091205491925090670de0b6b3a7640000906105b89084906117fd565b6105c29190611814565b6105cc9190611836565b9392505050565b60006105e033848461130a565b5060015b92915050565b60006105f4611274565b6007556105ff6108e2565b6006558361060c8161054d565b6001600160a01b038216600090815260086020908152604080832093909355600754600990915291902055836106418161054d565b6001600160a01b0380831660009081526008602090815260408083209490945560075460098252848320559189168152600282528281203382529091522054600019146106c1576001600160a01b0386166000908152600260209081526040808320338452909152812080548692906106bb9084906117ea565b90915550505b6106cc86868661136c565b50600195945050505050565b6106e0611274565b6007556106eb6108e2565b6006556106f73361054d565b336000908152600860209081526040808320939093556007546009909152919020556004544210156107795780600054116107795760405162461bcd60e51b815260206004820152601960248201527f53696d706c654661726d3a205354494c4c5f4541524e494e470000000000000060448201526064015b60405180910390fd5b3361078482826113ef565b6107af7f0000000000000000000000006e1fbeeaba87bae1100d95f8340dc27ad7c8427b8284611473565b806001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516107ea91815260200190565b60405180910390a25050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105e091859061082d908690611836565b61130a565b600b546001600160a01b0316331461088c5760405162461bcd60e51b815260206004820152601d60248201527f53696d706c654661726d3a20494e56414c49445f43414e4449444154450000006044820152606401610770565b600b54600a80546001600160a01b0319166001600160a01b0390921691821790556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369060200160405180910390a1565b600060045442106108f4575060045490565b504290565b610901611274565b60075561090c6108e2565b6006556109183361054d565b3360008181526008602090815260408083209490945560075460099091529290209190915561094782826114db565b6109737f0000000000000000000000006e1fbeeaba87bae1100d95f8340dc27ad7c8427b82308561153c565b806001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516107ea91815260200190565b600c546001600160a01b03163314610a085760405162461bcd60e51b815260206004820152601b60248201527f53696d706c654661726d3a20494e56414c49445f4d414e4147455200000000006044820152606401610770565b610a10611274565b600755610a1b6108e2565b600655600054610a665760405162461bcd60e51b815260206004820152601660248201527553696d706c654661726d3a204e4f5f5354414b45525360501b6044820152606401610770565b60008111610ab65760405162461bcd60e51b815260206004820152601860248201527f53696d706c654661726d3a20494e56414c49445f5241544500000000000000006044820152606401610770565b600454426006819055600554610acb91611836565b60045542811115610b8457600354821015610b285760405162461bcd60e51b815260206004820152601e60248201527f53696d706c654661726d3a20524154455f43414e545f444543524541534500006044820152606401610770565b6000610b3442836117ea565b9050600060035482610b4691906117fd565b600c54909150610b81907f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a18906001600160a01b031683611473565b50505b6003829055600554600090610b9a9084906117fd565b600c54909150610bd6907f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a18906001600160a01b0316308461153c565b60408051848152602081018390527f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f55910160405180910390a1505050565b600a546001600160a01b03163314610c6a5760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22fa7aba722a960391b6044820152606401610770565b6001600160a01b038116610cbc5760405162461bcd60e51b815260206004820152601960248201527853696d706c654661726d3a2057524f4e475f4144445245535360381b6044820152606401610770565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b906020015b60405180910390a150565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105e091859061082d9086906117ea565b6000610d52611274565b600755610d5d6108e2565b600655610d693361054d565b3360009081526008602090815260408083209390935560075460099091529190205582610d958161054d565b6001600160a01b038216600090815260086020908152604080832093909355600754600990915291902055610dcb33858561136c565b5060019392505050565b600a546001600160a01b03163314610e2b5760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22fa7aba722a960391b6044820152606401610770565b6001600160a01b038116610e7d5760405162461bcd60e51b815260206004820152601960248201527853696d706c654661726d3a2057524f4e475f4144445245535360381b6044820152606401610770565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f35b5da26a401fdbef2e1cfabeec2c10a6121d56f136be501a393c284cdd1af5890602001610d06565b7f0000000000000000000000006e1fbeeaba87bae1100d95f8340dc27ad7c8427b6001600160a01b0316826001600160a01b031603610f485760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22faa27a5a2a760391b6044820152606401610770565b7f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a186001600160a01b0316826001600160a01b031603610fc55760405162461bcd60e51b815260206004820152601960248201527829b4b6b83632a330b9369d1024a72b20a624a22faa27a5a2a760391b6044820152606401610770565b600a54610fdd9083906001600160a01b031683611473565b816001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28826040516107ea91815260200190565b6000611022611274565b60075561102d6108e2565b6006556110393361054d565b336000818152600860209081526040808320949094556007546009909152929020919091556110678161054d565b9150600082116110b95760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a204e4f5448494e475f544f5f434c41494d000000006044820152606401610770565b6001600160a01b0381166000908152600860205260408120556110fd7f000000000000000000000000249ca82617ec3dfb2589c4c17ab7ec9765350a188284611473565b806001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04868360405161113891815260200190565b60405180910390a25090565b600c546001600160a01b0316331461119e5760405162461bcd60e51b815260206004820152601b60248201527f53696d706c654661726d3a20494e56414c49445f4d414e4147455200000000006044820152606401610770565b600081116111ee5760405162461bcd60e51b815260206004820152601c60248201527f53696d706c654661726d3a20494e56414c49445f4455524154494f4e000000006044820152606401610770565b600454421161123f5760405162461bcd60e51b815260206004820181905260248201527f53696d706c654661726d3a204f4e474f494e475f444953545249425554494f4e6044820152606401610770565b60058190556040518181527ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390602001610d06565b60008054600003611286575060075490565b60006006546112936108e2565b61129d91906117ea565b905060008054670de0b6b3a7640000600354846112ba91906117fd565b6112c491906117fd565b6112ce9190611814565b9050806007546112de9190611836565b9250505090565b336000908152600160205260409020546112fe816106d8565b611306611018565b5050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600160205260409020546113909082906117ea565b6001600160a01b0384811660008181526001602090815260408083209590955592861680825290849020805486019055925184815290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161135f565b6000805483900381556001600160a01b0382168152600160205260409020546114199083906117ea565b6001600160a01b0382166000818152600160205260408082209390935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114679086815260200190565b60405180910390a35050565b6040516001600160a01b0383166024820152604481018290526114d690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261157a565b505050565b816000546114e99190611836565b60009081556001600160a01b038216808252600160209081526040808420805487019055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611467565b6040516001600160a01b03808516602483015283166044820152606481018290526115749085906323b872dd60e01b9060840161149f565b50505050565b600080836001600160a01b0316836040516115959190611849565b6000604051808303816000865af19150503d80600081146115d2576040519150601f19603f3d011682016040523d82523d6000602084013e6115d7565b606091505b5091509150816116225760405162461bcd60e51b815260206004820152601660248201527514d85999515490cc8c0e8810d0531317d1905253115160521b6044820152606401610770565b805115611574578080602001905181019061163d9190611865565b6115745760405162461bcd60e51b815260206004820152601b60248201527f5361666545524332303a204f5045524154494f4e5f4641494c454400000000006044820152606401610770565b6001600160a01b038116811461169e57600080fd5b50565b6000602082840312156116b357600080fd5b81356105cc81611689565b60005b838110156116d95781810151838201526020016116c1565b50506000910152565b60208152600082518060208401526117018160408501602087016116be565b601f01601f19169190910160400192915050565b6000806040838503121561172857600080fd5b823561173381611689565b946020939093013593505050565b60008060006060848603121561175657600080fd5b833561176181611689565b9250602084013561177181611689565b929592945050506040919091013590565b60006020828403121561179457600080fd5b5035919050565b600080604083850312156117ae57600080fd5b82356117b981611689565b915060208301356117c981611689565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e4576105e46117d4565b80820281158282048414176105e4576105e46117d4565b60008261183157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105e4576105e46117d4565b6000825161185b8184602087016116be565b9190910192915050565b60006020828403121561187757600080fd5b815180151581146105cc57600080fdfea264697066735822122092f84d3812118f9024801ecc04263f5dfdf5b183f40d40280d6abd09a49300f864736f6c63430008110033

Deployed Bytecode Sourcemap

96:10791:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:343;;;;;;:::i;:::-;;:::i;:::-;;;548:25:4;;;536:2;521:18;3404:343:2;;;;;;;;433:46;;;;;;:::i;:::-;;;;;;;;;;;;;;135:41:3;;;;;;;;;;;;;;;-1:-1:-1;;;135:41:3;;;;;;;;;;;;:::i;2555:242::-;;;;;;:::i;:::-;;:::i;:::-;;;1725:14:4;;1718:22;1700:41;;1688:2;1673:18;2555:242:3;1560:187:4;252:29:2;;;;;;744:119:3;814:7;844:12;744:119;;10390:495:2;;;;;;:::i;:::-;;:::i;4389:650::-;;;;;;:::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;3544:296:3;;;;;;:::i;:::-;;:::i;6452:270:2:-;;;:::i;139:34::-;;;;;;;;-1:-1:-1;;;;;2764:32:4;;;2746:51;;2734:2;2719:18;139:34:2;2587:216:4;937:166:3;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:25:3;1041:7;1071:25;;;:9;:25;;;;;;;937:166;221:25:2;;;;;;2590:212;;;:::i;539:27::-;;;;;-1:-1:-1;;;;;539:27:2;;;3828:477;;;;;;:::i;:::-;;:::i;182:39:3:-;;;;;;;;;;;;;;;-1:-1:-1;;;182:39:3;;;;;8559:1354:2;;;;;;:::i;:::-;;:::i;6793:310::-;;;;;;:::i;:::-;;:::i;3936:306:3:-;;;;;;:::i;:::-;;:::i;485:47:2:-;;;;;;:::i;:::-;;;;;;;;;;;;;;9981:323;;;;;;:::i;:::-;;:::i;6076:302::-;;;;;;:::i;:::-;;:::i;7232:514::-;;;;;;:::i;:::-;;:::i;5416:586::-;;;:::i;7888:460::-;;;;;;:::i;:::-;;:::i;322:29::-;;;;;;2885:427;;;:::i;5124:211::-;;;:::i;606:29::-;;;;;-1:-1:-1;;;;;606:29:2;;;572:28;;;;;-1:-1:-1;;;;;572:28:2;;;2890:188:3;;;;;;:::i;:::-;-1:-1:-1;;;;;3042:19:3;;;3012:7;3042:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;2890:188;357:29:2;;;;;;287;;;;;;179:35;;;;;3404:343;-1:-1:-1;;;;;3578:28:2;;3503:7;3578:28;;;:12;:28;;;;;;3503:7;;3547:16;:14;:16::i;:::-;:59;;;;:::i;:::-;-1:-1:-1;;;;;3713:27:2;;;;;;:11;:27;;;;;;;;;3624:9;:25;;;;;;;3526:80;;-1:-1:-1;3713:27:2;422:4;;3624:50;;3526:80;;3624:50;:::i;:::-;:74;;;;:::i;:::-;:116;;;;:::i;:::-;3617:123;3404:343;-1:-1:-1;;;3404:343:2:o;2555:242:3:-;2663:4;2683:85;2705:10;2729:8;2751:7;2683:8;:85::i;:::-;-1:-1:-1;2786:4:3;2555:242;;;;;:::o;10390:495:2:-;10614:4;1003:16;:14;:16::i;:::-;986:14;:33;1046:26;:24;:26::i;:::-;1029:14;:43;10555:7;1317:14:::1;10555:7:::0;1317:6:::1;:14::i;:::-;-1:-1:-1::0;;;;;1295:19:2;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:36;;;;1364:14:::1;::::0;1341:12:::1;:20:::0;;;;;;:37;10585:10;1317:14:::2;10585:10:::0;1317:6:::2;:14::i;:::-;-1:-1:-1::0;;;;;1295:19:2;;::::2;;::::0;;;:11:::2;:19;::::0;;;;;;;:36;;;;1364:14:::2;::::0;1341:12:::2;:20:::0;;;;;:37;10638:20;;::::3;::::0;;:11:::3;:20:::0;;;;;10659:10:::3;10638:32:::0;;;;;;;-1:-1:-1;;10638:53:2::3;10634:127;;-1:-1:-1::0;;;;;10707:20:2;::::3;;::::0;;;:11:::3;:20;::::0;;;;;;;10728:10:::3;10707:32:::0;;;;;;;:43;;10743:7;;10707:20;:43:::3;::::0;10743:7;;10707:43:::3;:::i;:::-;::::0;;;-1:-1:-1;;10634:127:2::3;10771:85;10794:7;10815:10;10839:7;10771:9;:85::i;:::-;-1:-1:-1::0;10874:4:2::3;::::0;10390:495;-1:-1:-1;;;;;10390:495:2:o;4389:650::-;1003:16;:14;:16::i;:::-;986:14;:33;1046:26;:24;:26::i;:::-;1029:14;:43;1154:18:::1;1161:10;1154:6;:18::i;:::-;1140:10;1128:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1209:14:::1;::::0;1182:12:::1;:24:::0;;;;;;:41;4543:14:::2;::::0;4525:15:::2;:32;4521:177;;;4613:15;4598:12;;:30;4573:114;;;::::0;-1:-1:-1;;;4573:114:2;;4734:2:4;4573:114:2::2;::::0;::::2;4716:21:4::0;4773:2;4753:18;;;4746:30;4812:27;4792:18;;;4785:55;4857:18;;4573:114:2::2;;;;;;;;;4732:10;4753:75;4776:15:::0;4732:10;4753:9:::2;:75::i;:::-;4839:102;4865:10;4889:13;4916:15;4839:12;:102::i;:::-;4980:13;-1:-1:-1::0;;;;;4957:75:2::2;;5007:15;4957:75;;;;548:25:4::0;;536:2;521:18;;402:177;4957:75:2::2;;;;;;;;4511:528;4389:650:::0;:::o;3544:296:3:-;3708:10;3666:4;3754:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;3754:33:3;;;;;;;;;;3666:4;;3686:125;;3732:8;;3754:47;;3790:11;;3754:47;:::i;:::-;3686:8;:125::i;6452:270:2:-;6544:13;;-1:-1:-1;;;;;6544:13:2;6530:10;:27;6509:103;;;;-1:-1:-1;;;6509:103:2;;5088:2:4;6509:103:2;;;5070:21:4;5127:2;5107:18;;;5100:30;5166:31;5146:18;;;5139:59;5215:18;;6509:103:2;4886:353:4;6509:103:2;6638:13;;6623:12;:28;;-1:-1:-1;;;;;;6623:28:2;-1:-1:-1;;;;;6638:13:2;;;6623:28;;;;;6667:48;;2746:51:4;;;6667:48:2;;2734:2:4;2719:18;6667:48:2;;;;;;;6452:270::o;2590:212::-;2671:11;2722:14;;2704:15;:32;:91;;-1:-1:-1;2781:14:2;;;2590:212::o;2704:91::-;-1:-1:-1;2751:15:2;;2590:212::o;3828:477::-;1003:16;:14;:16::i;:::-;986:14;:33;1046:26;:24;:26::i;:::-;1029:14;:43;1154:18:::1;1161:10;1154:6;:18::i;:::-;1140:10;1128:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1209:14:::1;::::0;1182:12:::1;:24:::0;;;;;;:41;;;;4003:69:::2;4023:12:::0;1140:10;4003:6:::2;:69::i;:::-;4083:130;4113:10;4137:13;4172:4;4191:12;4083:16;:130::i;:::-;4249:13;-1:-1:-1::0;;;;;4229:69:2::2;;4276:12;4229:69;;;;548:25:4::0;;536:2;521:18;;402:177;8559:1354:2;863:14;;-1:-1:-1;;;;;863:14:2;849:10;:28;828:102;;;;-1:-1:-1;;;828:102:2;;5446:2:4;828:102:2;;;5428:21:4;5485:2;5465:18;;;5458:30;5524:29;5504:18;;;5497:57;5571:18;;828:102:2;5244:351:4;828:102:2;1003:16:::1;:14;:16::i;:::-;986:14;:33:::0;1046:26:::1;:24;:26::i;:::-;1029:14;:43:::0;8728:1:::2;8713:12:::0;8692:85:::2;;;::::0;-1:-1:-1;;;8692:85:2;;5802:2:4;8692: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;;8692:85:2::2;5600:346:4::0;8692:85:2::2;8826:1;8809:14;:18;8788:89;;;::::0;-1:-1:-1;;;8788:89:2;;6153:2:4;8788:89:2::2;::::0;::::2;6135:21:4::0;6192:2;6172:18;;;6165:30;6231:26;6211:18;;;6204:54;6275:18;;8788:89:2::2;5951:348:4::0;8788:89:2::2;8918:14;::::0;8960:15:::2;8943:14;:32:::0;;;9032:14:::2;::::0;9002:44:::2;::::0;::::2;:::i;:::-;8985:14;:61:::0;9061:15:::2;:37:::0;-1:-1:-1;9057:492:2::2;;;9158:10;;9140:14;:28;;9115:117;;;::::0;-1:-1:-1;;;9115:117:2;;6506:2:4;9115:117:2::2;::::0;::::2;6488:21:4::0;6545:2;6525:18;;;6518:30;6584:32;6564:18;;;6557:60;6634:18;;9115:117:2::2;6304:354:4::0;9115:117:2::2;9247:21;9271:53;9309:15;9271:19:::0;:53:::2;:::i;:::-;9247:77;;9339:21;9395:10;;9363:13;:42;;;;:::i;:::-;9479:14;::::0;9339:66;;-1:-1:-1;9420:118:2::2;::::0;9450:11:::2;::::0;-1:-1:-1;;;;;9479:14:2::2;9339:66:::0;9420:12:::2;:118::i;:::-;9100:449;;9057:492;9559:10;:27:::0;;;9623:14:::2;::::0;9597:23:::2;::::0;9623:43:::2;::::0;9572:14;;9623:43:::2;:::i;:::-;9732:14;::::0;9597:69;;-1:-1:-1;9677:135:2::2;::::0;9707:11:::2;::::0;-1:-1:-1;;;;;9732:14:2::2;9768:4;9597:69:::0;9677:16:::2;:135::i;:::-;9828:78;::::0;;6837:25:4;;;6893:2;6878:18;;6871:34;;;9828:78:2::2;::::0;6810:18:4;9828:78:2::2;;;;;;;8682:1231;;8559:1354:::0;:::o;6793:310::-;708:12;;-1:-1:-1;;;;;708:12:2;694:10;:26;673:98;;;;-1:-1:-1;;;673:98:2;;7118:2:4;673:98:2;;;7100:21:4;7157:2;7137:18;;;7130:30;-1:-1:-1;;;7176:18:4;;;7169:55;7241:18;;673:98:2;6916:349:4;673:98:2;-1:-1:-1;;;;;6904:27:2;::::1;6900:93;;6947:35;::::0;-1:-1:-1;;;6947:35:2;;7472:2:4;6947: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;;6947:35:2::1;7270:349:4::0;6900:93:2::1;7003:14;:28:::0;;-1:-1:-1;;;;;;7003:28:2::1;-1:-1:-1::0;;;;;7003:28:2;::::1;::::0;;::::1;::::0;;;7047:49:::1;::::0;2746:51:4;;;7047:49:2::1;::::0;2734:2:4;2719:18;7047:49:2::1;;;;;;;;6793:310:::0;:::o;3936:306:3:-;4105:10;4063:4;4151:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4151:33:3;;;;;;;;;;4063:4;;4083:130;;4129:8;;4151:52;;4187:16;;4151:52;:::i;9981:323:2:-;10167:4;1003:16;:14;:16::i;:::-;986:14;:33;1046:26;:24;:26::i;:::-;1029:14;:43;1154:18:::1;1161:10;1154:6;:18::i;:::-;1140:10;1128:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1209:14:::1;::::0;1182:12:::1;:24:::0;;;;;;:41;10138:10;1317:14:::2;10138:10:::0;1317:6:::2;:14::i;:::-;-1:-1:-1::0;;;;;1295:19:2;::::2;;::::0;;;:11:::2;:19;::::0;;;;;;;:36;;;;1364:14:::2;::::0;1341:12:::2;:20:::0;;;;;;:37;10187:88:::3;10210:10;10234::::0;10258:7;10187:9:::3;:88::i;:::-;-1:-1:-1::0;10293:4:2::3;::::0;9981:323;-1:-1:-1;;;9981:323:2:o;6076:302::-;708:12;;-1:-1:-1;;;;;708:12:2;694:10;:26;673:98;;;;-1:-1:-1;;;673:98:2;;7118:2:4;673:98:2;;;7100:21:4;7157:2;7137:18;;;7130:30;-1:-1:-1;;;7176:18:4;;;7169:55;7241:18;;673:98:2;6916:349:4;673:98:2;-1:-1:-1;;;;;6187:25:2;::::1;6183:91;;6228:35;::::0;-1:-1:-1;;;6228:35:2;;7472:2:4;6228: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;;6228:35:2::1;7270:349:4::0;6183:91:2::1;6284:13;:25:::0;;-1:-1:-1;;;;;;6284:25:2::1;-1:-1:-1::0;;;;;6284:25:2;::::1;::::0;;::::1;::::0;;;6325:46:::1;::::0;2746:51:4;;;6325:46:2::1;::::0;2734:2:4;2719:18;6325:46:2::1;2587:216:4::0;7232:514:2;7369:10;-1:-1:-1;;;;;7353:26:2;:12;-1:-1:-1;;;;;7353:26:2;;7349:92;;7395:35;;-1:-1:-1;;;7395:35:2;;7826:2:4;7395:35:2;;;7808:21:4;7865:2;7845:18;;;7838:30;-1:-1:-1;;;7884:18:4;;;7877:55;7949:18;;7395:35:2;7624:349:4;7349:92:2;7471:11;-1:-1:-1;;;;;7455:27:2;:12;-1:-1:-1;;;;;7455:27:2;;7451:93;;7498:35;;-1:-1:-1;;;7498:35:2;;7826:2:4;7498:35:2;;;7808:21:4;7865:2;7845:18;;;7838:30;-1:-1:-1;;;7884:18:4;;;7877:55;7949:18;;7498:35:2;7624:349:4;7451:93:2;7606:12;;7554:99;;7580:12;;-1:-1:-1;;;;;7606:12:2;7632:11;7554:12;:99::i;:::-;7692:12;-1:-1:-1;;;;;7669:70:2;;7718:11;7669:70;;;;548:25:4;;536:2;521:18;;402:177;5416:586:2;5513:20;1003:16;:14;:16::i;:::-;986:14;:33;1046:26;:24;:26::i;:::-;1029:14;:43;1154:18:::1;1161:10;1154:6;:18::i;:::-;1140:10;1128:23;::::0;;;:11:::1;:23;::::0;;;;;;;:44;;;;1209:14:::1;::::0;1182:12:::1;:24:::0;;;;;;:41;;;;5609:43:::2;1140:10:::0;5609:6:::2;:43::i;:::-;5594:58;;5699:1;5684:12;:16;5663:91;;;::::0;-1:-1:-1;;;5663:91:2;;8180:2:4;5663:91:2::2;::::0;::::2;8162:21:4::0;8219:2;8199:18;;;8192:30;8258;8238:18;;;8231:58;8306:18;;5663:91:2::2;7978:352:4::0;5663:91:2::2;-1:-1:-1::0;;;;;5765:26:2;::::2;5794:1;5765:26:::0;;;:11:::2;:26;::::0;;;;:30;5806:100:::2;5832:11;5777:13:::0;5884:12;5806::::2;:100::i;:::-;5946:13;-1:-1:-1::0;;;;;5922:73:2::2;;5973:12;5922:73;;;;548:25:4::0;;536:2;521:18;;402:177;5922:73:2::2;;;;;;;;5539:463;5416:586:::0;:::o;7888:460::-;863:14;;-1:-1:-1;;;;;863:14:2;849:10;:28;828:102;;;;-1:-1:-1;;;828:102:2;;5446:2:4;828:102:2;;;5428:21:4;5485:2;5465:18;;;5458:30;5524:29;5504:18;;;5497:57;5571:18;;828:102:2;5244:351:4;828:102:2;8044:1:::1;8026:15;:19;8005:94;;;::::0;-1:-1:-1;;;8005:94:2;;8537:2:4;8005:94:2::1;::::0;::::1;8519:21:4::0;8576:2;8556:18;;;8549:30;8615;8595:18;;;8588:58;8663:18;;8005:94:2::1;8335:352:4::0;8005:94:2::1;8149:14;;8131:15;:32;8110:111;;;::::0;-1:-1:-1;;;8110:111:2;;8894:2:4;8110:111:2::1;::::0;::::1;8876:21:4::0;;;8913:18;;;8906:30;8972:34;8952:18;;;8945:62;9024:18;;8110:111:2::1;8692:356:4::0;8110:111:2::1;8232:14;:32:::0;;;8280:61:::1;::::0;548:25:4;;;8280:61:2::1;::::0;536:2:4;521:18;8280:61:2::1;402:177:4::0;2885:427:2;2956:7;2983:12;;2999:1;2983:17;2979:69;;-1:-1:-1;3023:14:2;;;2885:427::o;2979:69::-;3058:17;3119:14;;3078:26;:24;:26::i;:::-;:55;;;;:::i;:::-;3058:75;;3144:17;3237:12;;422:4;3188:10;;3164:9;:34;;;;:::i;:::-;:58;;;;:::i;:::-;:85;;;;:::i;:::-;3144:105;;3296:9;3267:14;;:38;;;;:::i;:::-;3260:45;;;;2885:427;:::o;5124:211::-;5223:10;5175:22;5200:43;;;:9;:43;;;;;;5254:50;5200:43;5254:12;:50::i;:::-;5315:13;:11;:13::i;:::-;;5165:170;5124:211::o;3175:273:3:-;-1:-1:-1;;;;;3305:19:3;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;3360:81;;548:25:4;;;3360:81:3;;521:18:4;3360:81:3;;;;;;;;3175:273;;;:::o;2047:410::-;-1:-1:-1;;;;;2210:18:3;;;;;;:9;:18;;;;;;:28;;2231:7;;2210:28;:::i;:::-;-1:-1:-1;;;;;2181:18:3;;;;;;;:9;:18;;;;;;;;:57;;;;2309:21;;;;;;;;;;;;:31;;2273:67;;2366:84;;548:25:4;;;2181:18:3;;2366:84;;521:18:4;2366:84:3;402:177:4;1610:370:3;1768:12;;;:22;;;1741:49;;-1:-1:-1;;;;;1841:19:3;;;;-1:-1:-1;1841:19:3;;;;;;:29;;1783:7;;1841:29;:::i;:::-;-1:-1:-1;;;;;1811:19:3;;;;;;:9;:19;;;;;;:59;;;;1886:87;;;;;;1956:7;548:25:4;;536:2;521:18;;402:177;1886:87:3;;;;;;;;1610:370;;:::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;1179:367:3:-;1321:7;1306:12;;:22;;;;:::i;:::-;1283:12;:45;;;-1:-1:-1;;;;;1397:19:3;;;;;:9;:19;;;;;;;;;;:29;;1363:63;;1452:87;548:25:4;;;1397:19:3;;1283:12;1452:87;;521:18:4;1452:87:3;402:177:4;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://92f84d3812118f9024801ecc04263f5dfdf5b183f40d40280d6abd09a49300f8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.