ETH Price: $1,966.98 (-0.59%)

Contract

0xf63042F5E51dD00A83df63c05efF8C574DB6f8a5
 

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
Claim182055462023-09-24 12:06:11895 days ago1695557171IN
0xf63042F5...74DB6f8a5
0 ETH0.000675377.79955569
Withdraw182055362023-09-24 12:04:11895 days ago1695557051IN
0xf63042F5...74DB6f8a5
0 ETH0.000825787.28267765
Claim182044422023-09-24 8:23:47895 days ago1695543827IN
0xf63042F5...74DB6f8a5
0 ETH0.000615417.1071023
Withdraw182044402023-09-24 8:23:23895 days ago1695543803IN
0xf63042F5...74DB6f8a5
0 ETH0.000861167.59313902
Claim182004372023-09-23 18:55:11896 days ago1695495311IN
0xf63042F5...74DB6f8a5
0 ETH0.000730147.99942525
Deposit181994922023-09-23 15:45:23896 days ago1695483923IN
0xf63042F5...74DB6f8a5
0 ETH0.000854967.71080286
Claim181994112023-09-23 15:28:59896 days ago1695482939IN
0xf63042F5...74DB6f8a5
0 ETH0.000780697.20368874
Deposit181990122023-09-23 14:07:35896 days ago1695478055IN
0xf63042F5...74DB6f8a5
0 ETH0.000860557.76124602
Claim181990042023-09-23 14:05:59896 days ago1695477959IN
0xf63042F5...74DB6f8a5
0 ETH0.000802197.40204587
Claim181950012023-09-23 0:38:47896 days ago1695429527IN
0xf63042F5...74DB6f8a5
0 ETH0.000674617.39104167
Deposit181935242023-09-22 19:41:35897 days ago1695411695IN
0xf63042F5...74DB6f8a5
0 ETH0.001251379.83767178
Claim181917332023-09-22 13:39:35897 days ago1695389975IN
0xf63042F5...74DB6f8a5
0 ETH0.0011693413.50423138
Withdraw181917212023-09-22 13:37:11897 days ago1695389831IN
0xf63042F5...74DB6f8a5
0 ETH0.001567713.82282106
Claim181891232023-09-22 4:50:47897 days ago1695358247IN
0xf63042F5...74DB6f8a5
0 ETH0.000389077.51466874
Claim181891212023-09-22 4:50:23897 days ago1695358223IN
0xf63042F5...74DB6f8a5
0 ETH0.000712358.22664267
Withdraw181891042023-09-22 4:46:59897 days ago1695358019IN
0xf63042F5...74DB6f8a5
0 ETH0.0007137.40473545
Claim181881992023-09-22 1:44:11897 days ago1695347051IN
0xf63042F5...74DB6f8a5
0 ETH0.000862249.44666194
Deposit181866612023-09-21 20:34:35898 days ago1695328475IN
0xf63042F5...74DB6f8a5
0 ETH0.0024126925.72417128
Claim181811142023-09-21 1:54:59898 days ago1695261299IN
0xf63042F5...74DB6f8a5
0 ETH0.000637227.35904146
Claim181809272023-09-21 1:17:11898 days ago1695259031IN
0xf63042F5...74DB6f8a5
0 ETH0.000840619.7078328
Withdraw181809252023-09-21 1:16:47898 days ago1695259007IN
0xf63042F5...74DB6f8a5
0 ETH0.0009559.91557509
Claim181807362023-09-21 0:38:59898 days ago1695256739IN
0xf63042F5...74DB6f8a5
0 ETH0.000886879.7165379
Claim181797772023-09-20 21:26:23898 days ago1695245183IN
0xf63042F5...74DB6f8a5
0 ETH0.0018832317.37701729
Claim181775702023-09-20 14:02:47899 days ago1695218567IN
0xf63042F5...74DB6f8a5
0 ETH0.0018985517.518346
Withdraw181765532023-09-20 10:38:11899 days ago1695206291IN
0xf63042F5...74DB6f8a5
0 ETH0.000612677.73444933
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:
StakingPool

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-08-14
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

library Address {
    error AddressInsufficientBalance(address account);
    error AddressEmptyCode(address target);
    error FailedInnerCall();

    function sendValue(address payable recipient, uint256 amount) internal {
        if (address(this).balance < amount) {
            revert AddressInsufficientBalance(address(this));
        }

        (bool success, ) = recipient.call{value: amount}("");
        if (!success) {
            revert FailedInnerCall();
        }
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, defaultRevert);
    }

    function functionCall(
        address target,
        bytes memory data,
        function() internal view customRevert
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, customRevert);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, defaultRevert);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        function() internal view customRevert
    ) internal returns (bytes memory) {
        if (address(this).balance < value) {
            revert AddressInsufficientBalance(address(this));
        }
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, customRevert);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, defaultRevert);
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        function() internal view customRevert
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, customRevert);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, defaultRevert);
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        function() internal view customRevert
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, customRevert);
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        function() internal view customRevert
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                if (target.code.length == 0) {
                    revert AddressEmptyCode(target);
                }
            }
            return returndata;
        } else {
            _revert(returndata, customRevert);
        }
    }

    function verifyCallResult(bool success, bytes memory returndata) internal view returns (bytes memory) {
        return verifyCallResult(success, returndata, defaultRevert);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        function() internal view customRevert
    ) internal view returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, customRevert);
        }
    }

    function defaultRevert() internal pure {
        revert FailedInnerCall();
    }

    function _revert(bytes memory returndata, function() internal view customRevert) private view {
        if (returndata.length > 0) {
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            customRevert();
            revert FailedInnerCall();
        }
    }
}

library SafeERC20 {
    using Address for address;

    error SafeERC20FailedOperation(address token);
    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);

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

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

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        forceApprove(token, spender, oldAllowance + value);
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
        unchecked {
            uint256 currentAllowance = token.allowance(address(this), spender);
            if (currentAllowance < requestedDecrease) {
                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
            }
            forceApprove(token, spender, currentAllowance - requestedDecrease);
        }
    }

    function forceApprove(IERC20 token, address spender, uint256 value) internal {
        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));

        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
            _callOptionalReturn(token, approvalCall);
        }
    }

    /*
    function safePermit(
        IERC20Permit token,
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal {
        uint256 nonceBefore = token.nonces(owner);
        token.permit(owner, spender, value, deadline, v, r, s);
        uint256 nonceAfter = token.nonces(owner);
        if (nonceAfter != nonceBefore + 1) {
            revert SafeERC20FailedOperation(address(token));
        }
    }
    */

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data);
        if (returndata.length != 0 && !abi.decode(returndata, (bool))) {
            revert SafeERC20FailedOperation(address(token));
        }
    }

    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
        (bool success, bytes memory returndata) = address(token).call(data);
        return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ReEntrancyGuard {
    bool internal locked;

    modifier noReentrant() {
        require(!locked, "No re-entrancy");
        locked = true;
        _;
        locked = false;
    }
}

contract StakingPool is Ownable, ReEntrancyGuard {
  using SafeERC20 for IERC20;
  uint256 public constant EXP_FACTOR = 1e36;

  struct PoolInfo {
    IERC20 stakeToken;
    IERC20 rewardToken;
    uint256 lastRewardTimestamp;
    uint256 accRewardPerShare;
    uint256 depositedAmount;
    uint256 rewardsAmount;
    uint256 rewardsClaimed;
    uint256 rewardReserve;
    uint256 rewardPerDayRate; // 1 == 0.0001% - smallest unit
    uint256 lockupDuration; // seconds the stake is locked for
    uint256 depositMinimum; // min per deposit
    uint256 stakeMaximum; // total stake maximum
    bool depositEnabled;
  }

  struct UserInfo {
    uint256 amount;
    uint256 rewardDebt;
    uint256 pendingRewards;
    uint256 lockupStart;
  }  

  // mappings
  PoolInfo public poolInfo;
  mapping(address => UserInfo) public userInfo;  

  event Deposit(address indexed user, uint256 amount);
  event Withdraw(address indexed user, uint256 amount);
  event Claim(address indexed user, uint256 amount);  

  constructor(IERC20 stakeToken, IERC20 rewardToken, uint256 rewardPerDayRate, uint256 lockupDuration, uint256 depositMinimum, uint256 stakeMaximum) {
    PoolInfo storage pool = poolInfo;
    pool.stakeToken = stakeToken;
    pool.rewardToken = rewardToken;
    pool.rewardPerDayRate = rewardPerDayRate;
    pool.lockupDuration = lockupDuration;
    pool.depositMinimum = depositMinimum;
    pool.stakeMaximum = stakeMaximum;
  }

  function setRewardPerDayRate(uint256 rate) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    updatePool();
    pool.rewardPerDayRate = rate;
  }

  function setLockupDuration(uint256 lockupDuration) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    pool.lockupDuration = lockupDuration;
  }

  function setDepositMinimum(uint256 amount) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    pool.depositMinimum = amount;
  }

  function setStakeMaximum(uint256 amount) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    pool.stakeMaximum = amount;
  }

  function setDepositEnabled(bool enabled) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    pool.depositEnabled = enabled;
  }

  function updatePool() internal {
    PoolInfo storage pool = poolInfo;
    
    if(block.timestamp <= pool.lastRewardTimestamp) {
        return;
    }

    if(pool.depositedAmount == 0) {
      pool.lastRewardTimestamp = block.timestamp;
      return;
    }

    uint256 diff = block.timestamp - pool.lastRewardTimestamp;
    uint256 rewardPerSecondRate = (pool.rewardPerDayRate * EXP_FACTOR) / 86400;
    uint256 reward = (diff * (rewardPerSecondRate / 1000000) * pool.depositedAmount) / EXP_FACTOR;

    pool.rewardsAmount = pool.rewardsAmount + reward;
    pool.accRewardPerShare = pool.accRewardPerShare + ((reward * EXP_FACTOR) / pool.depositedAmount);
    pool.lastRewardTimestamp = block.timestamp;
  }  

  function _deposit(uint256 amount) internal {
    PoolInfo storage pool = poolInfo;
    UserInfo storage user = userInfo[msg.sender];

    require(pool.depositEnabled, "Deposits are not enabled");
    require(amount > 0, "The amount can not be zero");
    require(amount >= pool.depositMinimum, "The amount is less than the deposit minimum");
    require(pool.stakeMaximum == 0 || (user.amount + amount <= pool.stakeMaximum), "The deposit is more than the stake maximum");

    updatePool();

    if(user.amount > 0) {
      uint256 pending = ((user.amount * pool.accRewardPerShare) / EXP_FACTOR) - user.rewardDebt;
      user.pendingRewards = user.pendingRewards + pending;
    }

    pool.stakeToken.safeTransferFrom(address(msg.sender), address(this), amount);
    user.amount = user.amount + amount;
    pool.depositedAmount = pool.depositedAmount + amount;
    user.rewardDebt = (user.amount * pool.accRewardPerShare) / EXP_FACTOR;
    user.lockupStart = block.timestamp;

    emit Deposit(msg.sender, amount);
  }

  function _withdraw(uint256 amount) internal {
    PoolInfo storage pool = poolInfo;
    UserInfo storage user = userInfo[msg.sender];    

    require(amount > 0, "The amount can not be zero");
    require(user.amount >= amount, "The amount is more than the stake amount");
    require(pool.lockupDuration == 0 || block.timestamp > user.lockupStart + pool.lockupDuration, "The stake lockup duration has not been reached");

    updatePool();

    uint256 pending = ((user.amount * pool.accRewardPerShare) / EXP_FACTOR) - user.rewardDebt;
    if(pending > 0) {
      user.pendingRewards = user.pendingRewards + pending;
    }

    pool.stakeToken.safeTransfer(msg.sender, amount);
    pool.depositedAmount = pool.depositedAmount - amount;
    user.amount = user.amount - amount;
    user.rewardDebt = (user.amount * pool.accRewardPerShare) / EXP_FACTOR;
    //user.lockupStart = block.timestamp;

    emit Withdraw(msg.sender, amount);
  }

  function deposit(uint256 amount) external noReentrant {
    _deposit(amount);
  }  

  function depositMax() external noReentrant {
    _deposit(poolInfo.stakeToken.allowance(msg.sender, address(this)));
  }  

  function withdraw(uint256 amount) external noReentrant {
    _withdraw(amount);
  }  

  function withdrawMax() external noReentrant {
    _withdraw(userInfo[msg.sender].amount);
  }  

  function claim() external noReentrant {
    PoolInfo storage pool = poolInfo;
    UserInfo storage user = userInfo[msg.sender];

    updatePool();

    uint256 pending = ((user.amount * pool.accRewardPerShare) / EXP_FACTOR) - user.rewardDebt;
    if(pending > 0 || user.pendingRewards > 0) {
      user.pendingRewards = user.pendingRewards + pending;
      uint256 claimed = safeRewardTransfer(msg.sender, user.pendingRewards);
      emit Claim(msg.sender, claimed);
      user.pendingRewards = user.pendingRewards - claimed;
      user.lockupStart = block.timestamp;
      pool.rewardsAmount = pool.rewardsAmount - claimed;
      pool.rewardsClaimed = pool.rewardsClaimed + claimed;
    }
    user.rewardDebt = (user.amount * pool.accRewardPerShare) / EXP_FACTOR;
  }  

  function pendingRewards(address _user) external view returns (uint256) {
    PoolInfo storage pool = poolInfo;
    UserInfo storage user = userInfo[_user];

    uint256 accRewardPerShare = pool.accRewardPerShare;
    if(block.timestamp > pool.lastRewardTimestamp && pool.depositedAmount > 0) {
      uint256 diff = block.timestamp - pool.lastRewardTimestamp;
      uint256 rewardPerSecondRate = (pool.rewardPerDayRate * EXP_FACTOR) / 86400;
      uint256 reward = (diff * (rewardPerSecondRate / 1000000) * pool.depositedAmount) / EXP_FACTOR;
      accRewardPerShare = accRewardPerShare + ((reward * EXP_FACTOR) / pool.depositedAmount); // store expanded 1e36
    }
    return (((user.amount * accRewardPerShare) / EXP_FACTOR) - user.rewardDebt) + user.pendingRewards;
  } 

  function pendingRewardsTotal(uint256 timestamp) external view returns (uint256) {
    PoolInfo storage pool = poolInfo;    
    if(timestamp == 0) {
      timestamp = block.timestamp;
    }
    uint256 accRewardPerShare = pool.accRewardPerShare;
    if(timestamp > pool.lastRewardTimestamp && pool.depositedAmount > 0) {
      uint256 diff = timestamp - pool.lastRewardTimestamp;
      uint256 rewardPerSecondRate = (pool.rewardPerDayRate * EXP_FACTOR) / 86400;
      uint256 reward = (diff * (rewardPerSecondRate / 1000000) * pool.depositedAmount) / EXP_FACTOR;
      accRewardPerShare = accRewardPerShare + ((reward * EXP_FACTOR) / pool.depositedAmount); // store expanded 1e36
    }
    uint256 poolDebt = 0;
    poolDebt = (pool.depositedAmount * pool.accRewardPerShare) / EXP_FACTOR;
    return (((pool.depositedAmount * accRewardPerShare) / EXP_FACTOR) - poolDebt) + pool.rewardsAmount;
  }

  function safeRewardTransfer(address to, uint256 amount) internal returns (uint256) {
    PoolInfo storage pool = poolInfo;
    uint256 rewardAmount = amount;
    if(rewardAmount > pool.rewardsAmount) {
      rewardAmount = pool.rewardsAmount;
    }
    if(rewardAmount > pool.rewardReserve) {
      rewardAmount = pool.rewardReserve;
    }
    pool.rewardToken.safeTransfer(to, rewardAmount);
    pool.rewardReserve = pool.rewardReserve - rewardAmount;
    return rewardAmount;
  }  

  function depositRewardReserve(uint256 amount) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    pool.rewardToken.safeTransferFrom(address(msg.sender), address(this), amount);
    pool.rewardReserve = pool.rewardReserve + amount;
  }

  function withdrawRewardReserve(uint256 amount) external onlyOwner {
    PoolInfo storage pool = poolInfo;
    require(pool.rewardReserve >= amount, "Amount is more than the reward reserve");
    pool.rewardReserve = pool.rewardReserve - amount;
    pool.rewardToken.safeTransfer(address(owner()), amount);
  }  
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IERC20","name":"stakeToken","type":"address"},{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"rewardPerDayRate","type":"uint256"},{"internalType":"uint256","name":"lockupDuration","type":"uint256"},{"internalType":"uint256","name":"depositMinimum","type":"uint256"},{"internalType":"uint256","name":"stakeMaximum","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"EXP_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositRewardReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"pendingRewardsTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"stakeToken","type":"address"},{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"lastRewardTimestamp","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardsAmount","type":"uint256"},{"internalType":"uint256","name":"rewardsClaimed","type":"uint256"},{"internalType":"uint256","name":"rewardReserve","type":"uint256"},{"internalType":"uint256","name":"rewardPerDayRate","type":"uint256"},{"internalType":"uint256","name":"lockupDuration","type":"uint256"},{"internalType":"uint256","name":"depositMinimum","type":"uint256"},{"internalType":"uint256","name":"stakeMaximum","type":"uint256"},{"internalType":"bool","name":"depositEnabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDepositEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setDepositMinimum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockupDuration","type":"uint256"}],"name":"setLockupDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRewardPerDayRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setStakeMaximum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"uint256","name":"lockupStart","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawRewardReserve","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b5060405162001848380380620018488339810160408190526200003391620000f1565b6200003e3362000086565b600180546001600160a01b039788166001600160a01b0319918216179091556002805496909716951694909417909455600991909155600a55600b91909155600c556200014a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ec575f80fd5b919050565b5f805f805f8060c0878903121562000107575f80fd5b6200011287620000d5565b95506200012260208801620000d5565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b6116f080620001585f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c80635a2f3d09116100a9578063b6b55f251161006e578063b6b55f251461032b578063c3825c2a1461033e578063e5cd8b6a14610351578063e7a1107f14610359578063f2fde38b1461036c575f80fd5b80635a2f3d091461022b5780635b17d04b146102e35780636eb5adbe146102f6578063715018a6146103095780638da5cb5b14610311575f80fd5b80632e1a7d4d116100ef5780632e1a7d4d146101e257806331d7a262146101f5578063382c43c0146102085780633ea61cc01461021b5780634e71d92d14610223575f80fd5b806307cbb5371461012b5780631959a002146101515780632a42a034146101a55780632c8ec27c146101ba5780632d681bf5146101cf575b5f80fd5b61013e61013936600461152a565b61037f565b6040519081526020015b60405180910390f35b61018561015f366004611541565b600e6020525f908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610148565b6101b86101b336600461152a565b6104e7565b005b61013e6a0c097ce7bc90715b34b9f160241b81565b6101b86101dd36600461152a565b61051e565b6101b86101f036600461152a565b61054c565b61013e610203366004611541565b61059f565b6101b861021636600461152a565b6106bc565b6101b86106f5565b6101b86107b5565b600154600254600354600454600554600654600754600854600954600a54600b54600c54600d546102749c6001600160a01b039081169c169a9998979695949392919060ff168d565b604080516001600160a01b039e8f1681529d909c1660208e01529a8c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015215156101808201526101a001610148565b6101b86102f1366004611574565b610941565b6101b861030436600461152a565b61097d565b6101b86109da565b5f546040516001600160a01b039091168152602001610148565b6101b861033936600461152a565b610a0e565b6101b861034c36600461152a565b610a52565b6101b8610b21565b6101b861036736600461152a565b610b72565b6101b861037a366004611541565b610ba0565b5f600182820361038d574292505b60038101546002820154841180156103a857505f8260040154115b1561046b575f8260020154856103be91906115a3565b90505f620151806a0c097ce7bc90715b34b9f160241b85600801546103e391906115b6565b6103ed91906115cd565b90505f6a0c097ce7bc90715b34b9f160241b8560040154620f42408461041391906115cd565b61041d90866115b6565b61042791906115b6565b61043191906115cd565b60048601549091506104516a0c097ce7bc90715b34b9f160241b836115b6565b61045b91906115cd565b61046590856115ec565b93505050505b5f6a0c097ce7bc90715b34b9f160241b8360030154846004015461048f91906115b6565b61049991906115cd565b90508260050154816a0c097ce7bc90715b34b9f160241b8486600401546104c091906115b6565b6104ca91906115cd565b6104d491906115a3565b6104de91906115ec565b95945050505050565b5f546001600160a01b031633146105195760405162461bcd60e51b8152600401610510906115ff565b60405180910390fd5b600b55565b5f546001600160a01b031633146105475760405162461bcd60e51b8152600401610510906115ff565b600c55565b5f54600160a01b900460ff16156105755760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b17905561059081610c3a565b505f805460ff60a01b19169055565b6001600160a01b0381165f908152600e602052604081206004546003546001929190421180156105d257505f8360040154115b15610695575f8360020154426105e891906115a3565b90505f620151806a0c097ce7bc90715b34b9f160241b866008015461060d91906115b6565b61061791906115cd565b90505f6a0c097ce7bc90715b34b9f160241b8660040154620f42408461063d91906115cd565b61064790866115b6565b61065191906115b6565b61065b91906115cd565b600487015490915061067b6a0c097ce7bc90715b34b9f160241b836115b6565b61068591906115cd565b61068f90856115ec565b93505050505b6002820154600183015483546a0c097ce7bc90715b34b9f160241b906104c09085906115b6565b5f546001600160a01b031633146106e55760405162461bcd60e51b8152600401610510906115ff565b60016106ef610e86565b60080155565b5f54600160a01b900460ff161561071e5760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b179055600154604051636eb1769f60e11b81523360048201523060248201526107a7916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561077e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a2919061165c565b610f8e565b5f805460ff60a01b19169055565b5f54600160a01b900460ff16156107de5760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b178155338152600e60205260409020600190610807610e86565b5f81600101546a0c097ce7bc90715b34b9f160241b8460030154845f015461082f91906115b6565b61083991906115cd565b61084391906115a3565b90505f81118061085657505f8260020154115b156108fe5780826002015461086b91906115ec565b600283018190555f9061087f903390611237565b60405181815290915033907f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49060200160405180910390a28083600201546108c791906115a3565b600284015542600384015560058401546108e29082906115a3565b600585015560068401546108f79082906115ec565b6006850155505b600383015482546a0c097ce7bc90715b34b9f160241b9161091e916115b6565b61092891906115cd565b60019092019190915550505f805460ff60a01b19169055565b5f546001600160a01b0316331461096a5760405162461bcd60e51b8152600401610510906115ff565b600d805460ff1916911515919091179055565b5f546001600160a01b031633146109a65760405162461bcd60e51b8152600401610510906115ff565b6002546001906109c1906001600160a01b031633308561129d565b8181600701546109d191906115ec565b60079091015550565b5f546001600160a01b03163314610a035760405162461bcd60e51b8152600401610510906115ff565b610a0c5f61130a565b565b5f54600160a01b900460ff1615610a375760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b17905561059081610f8e565b5f546001600160a01b03163314610a7b5760405162461bcd60e51b8152600401610510906115ff565b600854600190821115610adf5760405162461bcd60e51b815260206004820152602660248201527f416d6f756e74206973206d6f7265207468616e2074686520726577617264207260448201526565736572766560d01b6064820152608401610510565b818160070154610aef91906115a3565b6007820155610b1d610b085f546001600160a01b031690565b60018301546001600160a01b03169084611359565b5050565b5f54600160a01b900460ff1615610b4a5760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b178155338152600e60205260409020546107a790610c3a565b5f546001600160a01b03163314610b9b5760405162461bcd60e51b8152600401610510906115ff565b600a55565b5f546001600160a01b03163314610bc95760405162461bcd60e51b8152600401610510906115ff565b6001600160a01b038116610c2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610510565b610c378161130a565b50565b335f908152600e6020526040902060019082610c985760405162461bcd60e51b815260206004820152601a60248201527f54686520616d6f756e742063616e206e6f74206265207a65726f0000000000006044820152606401610510565b8054831115610cfa5760405162461bcd60e51b815260206004820152602860248201527f54686520616d6f756e74206973206d6f7265207468616e20746865207374616b6044820152671948185b5bdd5b9d60c21b6064820152608401610510565b60098201541580610d1d575081600901548160030154610d1a91906115ec565b42115b610d805760405162461bcd60e51b815260206004820152602e60248201527f546865207374616b65206c6f636b7570206475726174696f6e20686173206e6f60448201526d1d081899595b881c995858da195960921b6064820152608401610510565b610d88610e86565b5f81600101546a0c097ce7bc90715b34b9f160241b8460030154845f0154610db091906115b6565b610dba91906115cd565b610dc491906115a3565b90508015610de257808260020154610ddc91906115ec565b60028301555b8254610df8906001600160a01b03163386611359565b838360040154610e0891906115a3565b60048401558154610e1a9085906115a3565b80835560038401546a0c097ce7bc90715b34b9f160241b91610e3c91906115b6565b610e4691906115cd565b600183015560405184815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505050565b6003546001904211610e955750565b80600401545f03610ea95742600290910155565b5f816002015442610eba91906115a3565b90505f620151806a0c097ce7bc90715b34b9f160241b8460080154610edf91906115b6565b610ee991906115cd565b90505f6a0c097ce7bc90715b34b9f160241b8460040154620f424084610f0f91906115cd565b610f1990866115b6565b610f2391906115b6565b610f2d91906115cd565b9050808460050154610f3f91906115ec565b60058501556004840154610f616a0c097ce7bc90715b34b9f160241b836115b6565b610f6b91906115cd565b8460030154610f7a91906115ec565b600385015550504260029092019190915550565b335f908152600e60205260409020600d546001919060ff16610ff25760405162461bcd60e51b815260206004820152601860248201527f4465706f7369747320617265206e6f7420656e61626c656400000000000000006044820152606401610510565b5f83116110415760405162461bcd60e51b815260206004820152601a60248201527f54686520616d6f756e742063616e206e6f74206265207a65726f0000000000006044820152606401610510565b81600a01548310156110a95760405162461bcd60e51b815260206004820152602b60248201527f54686520616d6f756e74206973206c657373207468616e20746865206465706f60448201526a736974206d696e696d756d60a81b6064820152608401610510565b600b82015415806110ca5750600b82015481546110c79085906115ec565b11155b6111295760405162461bcd60e51b815260206004820152602a60248201527f546865206465706f736974206973206d6f7265207468616e20746865207374616044820152696b65206d6178696d756d60b01b6064820152608401610510565b611131610e86565b80541561118d575f81600101546a0c097ce7bc90715b34b9f160241b8460030154845f015461116091906115b6565b61116a91906115cd565b61117491906115a3565b905080826002015461118691906115ec565b6002830155505b81546111a4906001600160a01b031633308661129d565b80546111b19084906115ec565b815560048201546111c39084906115ec565b6004830155600382015481546a0c097ce7bc90715b34b9f160241b916111e8916115b6565b6111f291906115cd565b600182015542600382015560405183815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2505050565b6006545f90600190839081111561124f575060058101545b8160070154811115611262575060078101545b600182015461127b906001600160a01b03168683611359565b80826007015461128b91906115a3565b60079092019190915590505b92915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526113049186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061138f565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0383811660248301526044820183905261138a91859182169063a9059cbb906064016112d2565b505050565b5f6113a36001600160a01b038416836113f0565b905080515f141580156113c75750808060200190518101906113c59190611673565b155b1561138a57604051635274afe760e01b81526001600160a01b0384166004820152602401610510565b606061140083835f611407611420565b9392505050565b604051630a12f52160e11b815260040160405180910390fd5b6060824710156114455760405163cd78605960e01b8152306004820152602401610510565b5f80866001600160a01b03168587604051611460919061168e565b5f6040518083038185875af1925050503d805f811461149a576040519150601f19603f3d011682016040523d82523d5f602084013e61149f565b606091505b50915091506114b0878383876114bd565b925050505b949350505050565b606083156115095782515f0361150257846001600160a01b03163b5f0361150257604051639996b31560e01b81526001600160a01b0386166004820152602401610510565b50816114b5565b6114b5838381511561151e5781518083602001fd5b6114078163ffffffff16565b5f6020828403121561153a575f80fd5b5035919050565b5f60208284031215611551575f80fd5b81356001600160a01b0381168114611400575f80fd5b8015158114610c37575f80fd5b5f60208284031215611584575f80fd5b813561140081611567565b634e487b7160e01b5f52601160045260245ffd5b818103818111156112975761129761158f565b80820281158282048414176112975761129761158f565b5f826115e757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156112975761129761158f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d4e6f2072652d656e7472616e637960901b604082015260600190565b5f6020828403121561166c575f80fd5b5051919050565b5f60208284031215611683575f80fd5b815161140081611567565b5f82515f5b818110156116ad5760208186018101518583015201611693565b505f92019182525091905056fea2646970667358221220b9e0cc0feef6741c8963855eee64b5ead24d7f4a25a12ff0c78fa9312c0d0b4864736f6c63430008140033000000000000000000000000b2d97fe4bd48246337c02024985d9b2a0c3ddcfe000000000000000000000000b2d97fe4bd48246337c02024985d9b2a0c3ddcfe0000000000000000000000000000000000000000000000000000000000011bd100000000000000000000000000000000000000000000000000000000001baf8000000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610127575f3560e01c80635a2f3d09116100a9578063b6b55f251161006e578063b6b55f251461032b578063c3825c2a1461033e578063e5cd8b6a14610351578063e7a1107f14610359578063f2fde38b1461036c575f80fd5b80635a2f3d091461022b5780635b17d04b146102e35780636eb5adbe146102f6578063715018a6146103095780638da5cb5b14610311575f80fd5b80632e1a7d4d116100ef5780632e1a7d4d146101e257806331d7a262146101f5578063382c43c0146102085780633ea61cc01461021b5780634e71d92d14610223575f80fd5b806307cbb5371461012b5780631959a002146101515780632a42a034146101a55780632c8ec27c146101ba5780632d681bf5146101cf575b5f80fd5b61013e61013936600461152a565b61037f565b6040519081526020015b60405180910390f35b61018561015f366004611541565b600e6020525f908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610148565b6101b86101b336600461152a565b6104e7565b005b61013e6a0c097ce7bc90715b34b9f160241b81565b6101b86101dd36600461152a565b61051e565b6101b86101f036600461152a565b61054c565b61013e610203366004611541565b61059f565b6101b861021636600461152a565b6106bc565b6101b86106f5565b6101b86107b5565b600154600254600354600454600554600654600754600854600954600a54600b54600c54600d546102749c6001600160a01b039081169c169a9998979695949392919060ff168d565b604080516001600160a01b039e8f1681529d909c1660208e01529a8c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015215156101808201526101a001610148565b6101b86102f1366004611574565b610941565b6101b861030436600461152a565b61097d565b6101b86109da565b5f546040516001600160a01b039091168152602001610148565b6101b861033936600461152a565b610a0e565b6101b861034c36600461152a565b610a52565b6101b8610b21565b6101b861036736600461152a565b610b72565b6101b861037a366004611541565b610ba0565b5f600182820361038d574292505b60038101546002820154841180156103a857505f8260040154115b1561046b575f8260020154856103be91906115a3565b90505f620151806a0c097ce7bc90715b34b9f160241b85600801546103e391906115b6565b6103ed91906115cd565b90505f6a0c097ce7bc90715b34b9f160241b8560040154620f42408461041391906115cd565b61041d90866115b6565b61042791906115b6565b61043191906115cd565b60048601549091506104516a0c097ce7bc90715b34b9f160241b836115b6565b61045b91906115cd565b61046590856115ec565b93505050505b5f6a0c097ce7bc90715b34b9f160241b8360030154846004015461048f91906115b6565b61049991906115cd565b90508260050154816a0c097ce7bc90715b34b9f160241b8486600401546104c091906115b6565b6104ca91906115cd565b6104d491906115a3565b6104de91906115ec565b95945050505050565b5f546001600160a01b031633146105195760405162461bcd60e51b8152600401610510906115ff565b60405180910390fd5b600b55565b5f546001600160a01b031633146105475760405162461bcd60e51b8152600401610510906115ff565b600c55565b5f54600160a01b900460ff16156105755760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b17905561059081610c3a565b505f805460ff60a01b19169055565b6001600160a01b0381165f908152600e602052604081206004546003546001929190421180156105d257505f8360040154115b15610695575f8360020154426105e891906115a3565b90505f620151806a0c097ce7bc90715b34b9f160241b866008015461060d91906115b6565b61061791906115cd565b90505f6a0c097ce7bc90715b34b9f160241b8660040154620f42408461063d91906115cd565b61064790866115b6565b61065191906115b6565b61065b91906115cd565b600487015490915061067b6a0c097ce7bc90715b34b9f160241b836115b6565b61068591906115cd565b61068f90856115ec565b93505050505b6002820154600183015483546a0c097ce7bc90715b34b9f160241b906104c09085906115b6565b5f546001600160a01b031633146106e55760405162461bcd60e51b8152600401610510906115ff565b60016106ef610e86565b60080155565b5f54600160a01b900460ff161561071e5760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b179055600154604051636eb1769f60e11b81523360048201523060248201526107a7916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561077e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a2919061165c565b610f8e565b5f805460ff60a01b19169055565b5f54600160a01b900460ff16156107de5760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b178155338152600e60205260409020600190610807610e86565b5f81600101546a0c097ce7bc90715b34b9f160241b8460030154845f015461082f91906115b6565b61083991906115cd565b61084391906115a3565b90505f81118061085657505f8260020154115b156108fe5780826002015461086b91906115ec565b600283018190555f9061087f903390611237565b60405181815290915033907f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49060200160405180910390a28083600201546108c791906115a3565b600284015542600384015560058401546108e29082906115a3565b600585015560068401546108f79082906115ec565b6006850155505b600383015482546a0c097ce7bc90715b34b9f160241b9161091e916115b6565b61092891906115cd565b60019092019190915550505f805460ff60a01b19169055565b5f546001600160a01b0316331461096a5760405162461bcd60e51b8152600401610510906115ff565b600d805460ff1916911515919091179055565b5f546001600160a01b031633146109a65760405162461bcd60e51b8152600401610510906115ff565b6002546001906109c1906001600160a01b031633308561129d565b8181600701546109d191906115ec565b60079091015550565b5f546001600160a01b03163314610a035760405162461bcd60e51b8152600401610510906115ff565b610a0c5f61130a565b565b5f54600160a01b900460ff1615610a375760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b17905561059081610f8e565b5f546001600160a01b03163314610a7b5760405162461bcd60e51b8152600401610510906115ff565b600854600190821115610adf5760405162461bcd60e51b815260206004820152602660248201527f416d6f756e74206973206d6f7265207468616e2074686520726577617264207260448201526565736572766560d01b6064820152608401610510565b818160070154610aef91906115a3565b6007820155610b1d610b085f546001600160a01b031690565b60018301546001600160a01b03169084611359565b5050565b5f54600160a01b900460ff1615610b4a5760405162461bcd60e51b815260040161051090611634565b5f805460ff60a01b1916600160a01b178155338152600e60205260409020546107a790610c3a565b5f546001600160a01b03163314610b9b5760405162461bcd60e51b8152600401610510906115ff565b600a55565b5f546001600160a01b03163314610bc95760405162461bcd60e51b8152600401610510906115ff565b6001600160a01b038116610c2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610510565b610c378161130a565b50565b335f908152600e6020526040902060019082610c985760405162461bcd60e51b815260206004820152601a60248201527f54686520616d6f756e742063616e206e6f74206265207a65726f0000000000006044820152606401610510565b8054831115610cfa5760405162461bcd60e51b815260206004820152602860248201527f54686520616d6f756e74206973206d6f7265207468616e20746865207374616b6044820152671948185b5bdd5b9d60c21b6064820152608401610510565b60098201541580610d1d575081600901548160030154610d1a91906115ec565b42115b610d805760405162461bcd60e51b815260206004820152602e60248201527f546865207374616b65206c6f636b7570206475726174696f6e20686173206e6f60448201526d1d081899595b881c995858da195960921b6064820152608401610510565b610d88610e86565b5f81600101546a0c097ce7bc90715b34b9f160241b8460030154845f0154610db091906115b6565b610dba91906115cd565b610dc491906115a3565b90508015610de257808260020154610ddc91906115ec565b60028301555b8254610df8906001600160a01b03163386611359565b838360040154610e0891906115a3565b60048401558154610e1a9085906115a3565b80835560038401546a0c097ce7bc90715b34b9f160241b91610e3c91906115b6565b610e4691906115cd565b600183015560405184815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505050565b6003546001904211610e955750565b80600401545f03610ea95742600290910155565b5f816002015442610eba91906115a3565b90505f620151806a0c097ce7bc90715b34b9f160241b8460080154610edf91906115b6565b610ee991906115cd565b90505f6a0c097ce7bc90715b34b9f160241b8460040154620f424084610f0f91906115cd565b610f1990866115b6565b610f2391906115b6565b610f2d91906115cd565b9050808460050154610f3f91906115ec565b60058501556004840154610f616a0c097ce7bc90715b34b9f160241b836115b6565b610f6b91906115cd565b8460030154610f7a91906115ec565b600385015550504260029092019190915550565b335f908152600e60205260409020600d546001919060ff16610ff25760405162461bcd60e51b815260206004820152601860248201527f4465706f7369747320617265206e6f7420656e61626c656400000000000000006044820152606401610510565b5f83116110415760405162461bcd60e51b815260206004820152601a60248201527f54686520616d6f756e742063616e206e6f74206265207a65726f0000000000006044820152606401610510565b81600a01548310156110a95760405162461bcd60e51b815260206004820152602b60248201527f54686520616d6f756e74206973206c657373207468616e20746865206465706f60448201526a736974206d696e696d756d60a81b6064820152608401610510565b600b82015415806110ca5750600b82015481546110c79085906115ec565b11155b6111295760405162461bcd60e51b815260206004820152602a60248201527f546865206465706f736974206973206d6f7265207468616e20746865207374616044820152696b65206d6178696d756d60b01b6064820152608401610510565b611131610e86565b80541561118d575f81600101546a0c097ce7bc90715b34b9f160241b8460030154845f015461116091906115b6565b61116a91906115cd565b61117491906115a3565b905080826002015461118691906115ec565b6002830155505b81546111a4906001600160a01b031633308661129d565b80546111b19084906115ec565b815560048201546111c39084906115ec565b6004830155600382015481546a0c097ce7bc90715b34b9f160241b916111e8916115b6565b6111f291906115cd565b600182015542600382015560405183815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2505050565b6006545f90600190839081111561124f575060058101545b8160070154811115611262575060078101545b600182015461127b906001600160a01b03168683611359565b80826007015461128b91906115a3565b60079092019190915590505b92915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526113049186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061138f565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0383811660248301526044820183905261138a91859182169063a9059cbb906064016112d2565b505050565b5f6113a36001600160a01b038416836113f0565b905080515f141580156113c75750808060200190518101906113c59190611673565b155b1561138a57604051635274afe760e01b81526001600160a01b0384166004820152602401610510565b606061140083835f611407611420565b9392505050565b604051630a12f52160e11b815260040160405180910390fd5b6060824710156114455760405163cd78605960e01b8152306004820152602401610510565b5f80866001600160a01b03168587604051611460919061168e565b5f6040518083038185875af1925050503d805f811461149a576040519150601f19603f3d011682016040523d82523d5f602084013e61149f565b606091505b50915091506114b0878383876114bd565b925050505b949350505050565b606083156115095782515f0361150257846001600160a01b03163b5f0361150257604051639996b31560e01b81526001600160a01b0386166004820152602401610510565b50816114b5565b6114b5838381511561151e5781518083602001fd5b6114078163ffffffff16565b5f6020828403121561153a575f80fd5b5035919050565b5f60208284031215611551575f80fd5b81356001600160a01b0381168114611400575f80fd5b8015158114610c37575f80fd5b5f60208284031215611584575f80fd5b813561140081611567565b634e487b7160e01b5f52601160045260245ffd5b818103818111156112975761129761158f565b80820281158282048414176112975761129761158f565b5f826115e757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156112975761129761158f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d4e6f2072652d656e7472616e637960901b604082015260600190565b5f6020828403121561166c575f80fd5b5051919050565b5f60208284031215611683575f80fd5b815161140081611567565b5f82515f5b818110156116ad5760208186018101518583015201611693565b505f92019182525091905056fea2646970667358221220b9e0cc0feef6741c8963855eee64b5ead24d7f4a25a12ff0c78fa9312c0d0b4864736f6c63430008140033

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

000000000000000000000000b2d97fe4bd48246337c02024985d9b2a0c3ddcfe000000000000000000000000b2d97fe4bd48246337c02024985d9b2a0c3ddcfe0000000000000000000000000000000000000000000000000000000000011bd100000000000000000000000000000000000000000000000000000000001baf8000000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : stakeToken (address): 0xb2D97fe4bd48246337c02024985d9B2a0C3DdcFE
Arg [1] : rewardToken (address): 0xb2D97fe4bd48246337c02024985d9B2a0C3DdcFE
Arg [2] : rewardPerDayRate (uint256): 72657
Arg [3] : lockupDuration (uint256): 1814400
Arg [4] : depositMinimum (uint256): 500000000000000000000
Arg [5] : stakeMaximum (uint256): 0

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000b2d97fe4bd48246337c02024985d9b2a0c3ddcfe
Arg [1] : 000000000000000000000000b2d97fe4bd48246337c02024985d9b2a0c3ddcfe
Arg [2] : 0000000000000000000000000000000000000000000000000000000000011bd1
Arg [3] : 00000000000000000000000000000000000000000000000000000000001baf80
Arg [4] : 00000000000000000000000000000000000000000000001b1ae4d6e2ef500000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

9210:8995:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16213:911;;;;;;:::i;:::-;;:::i;:::-;;;345:25:1;;;333:2;318:18;16213:911:0;;;;;;;;10027:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:25:1;;;959:2;944:18;;937:34;;;;987:18;;;980:34;1045:2;1030:18;;1023:34;890:3;875:19;10027:44:0;672:391:1;11024:142:0;;;;;;:::i;:::-;;:::i;:::-;;9295:41;;-1:-1:-1;;;9295:41:0;;11172:138;;;;;;:::i;:::-;;:::i;14434:85::-;;;;;;:::i;:::-;;:::i;15423:783::-;;;;;;:::i;:::-;;:::i;10693:161::-;;;;;;:::i;:::-;;:::i;14304:122::-;;;:::i;14630:785::-;;;:::i;9998:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9998:24:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1592:32:1;;;1574:51;;1661:32;;;;1656:2;1641:18;;1634:60;1710:18;;;1703:34;;;;1768:2;1753:18;;1746:34;;;;1811:3;1796:19;;1789:35;;;;1612:3;1840:19;;1833:35;;;;1899:3;1884:19;;1877:35;;;;1943:3;1928:19;;1921:35;1987:3;1972:19;;1965:35;2031:3;2016:19;;2009:35;2075:3;2060:19;;2053:36;2120:3;2105:19;;2098:36;2178:15;2171:23;2165:3;2150:19;;2143:52;1561:3;1546:19;9998:24:0;1068:1133:1;11316:141:0;;;;;;:::i;:::-;;:::i;17631:249::-;;;;;;:::i;:::-;;:::i;8523:94::-;;;:::i;8300:87::-;8346:7;8373:6;8300:87;;-1:-1:-1;;;;;8373:6:0;;;2721:51:1;;2709:2;2694:18;8300:87:0;2575:203:1;14213:83:0;;;;;;:::i;:::-;;:::i;17886:314::-;;;;;;:::i;:::-;;:::i;14527:95::-;;;:::i;10860:158::-;;;;;;:::i;:::-;;:::i;8625:192::-;;;;;;:::i;:::-;;:::i;16213:911::-;16284:7;16324:8;16346:14;;;16343:63;;16383:15;16371:27;;16343:63;16440:22;;;;16484:24;;;;16472:36;;:64;;;;;16535:1;16512:4;:20;;;:24;16472:64;16469:440;;;16547:12;16574:4;:24;;;16562:9;:36;;;;:::i;:::-;16547:51;;16607:27;16676:5;-1:-1:-1;;;16638:4:0;:21;;;:34;;;;:::i;:::-;16637:44;;;;:::i;:::-;16607:74;;16690:14;-1:-1:-1;;;16749:4:0;:20;;;16738:7;16716:19;:29;;;;:::i;:::-;16708:38;;:4;:38;:::i;:::-;:61;;;;:::i;:::-;16707:76;;;;:::i;:::-;16857:20;;;;16690:93;;-1:-1:-1;16834:19:0;-1:-1:-1;;;16690:93:0;16834:19;:::i;:::-;16833:44;;;;:::i;:::-;16812:66;;:17;:66;:::i;:::-;16792:86;;16538:371;;;16469:440;16915:16;-1:-1:-1;;;16977:4:0;:22;;;16954:4;:20;;;:45;;;;:::i;:::-;16953:60;;;;:::i;:::-;16942:71;;17100:4;:18;;;17088:8;-1:-1:-1;;;17053:17:0;17030:4;:20;;;:40;;;;:::i;:::-;17029:55;;;;:::i;:::-;17028:68;;;;:::i;:::-;17027:91;;;;:::i;:::-;17020:98;16213:911;-1:-1:-1;;;;;16213:911:0:o;11024:142::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;;;;;;;;;11132:19;:28;11024:142::o;11172:138::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;11278:17;:26;11172:138::o;14434:85::-;9109:6;;-1:-1:-1;;;9109:6:0;;;;9108:7;9100:34;;;;-1:-1:-1;;;9100:34:0;;;;;;;:::i;:::-;9145:6;:13;;-1:-1:-1;;;;9145:13:0;-1:-1:-1;;;9145:13:0;;;14496:17:::1;14506:6:::0;14496:9:::1;:17::i;:::-;-1:-1:-1::0;9190:5:0;9181:14;;-1:-1:-1;;;;9181:14:0;;;14434:85::o;15423:783::-;-1:-1:-1;;;;;15564:15:0;;15485:7;15564:15;;;:8;:15;;;;;15616:22;;;15666:24;15525:8;;15564:15;15616:22;15648:15;:42;:70;;;;;15717:1;15694:4;:20;;;:24;15648:70;15645:452;;;15729:12;15762:4;:24;;;15744:15;:42;;;;:::i;:::-;15729:57;;15795:27;15864:5;-1:-1:-1;;;15826:4:0;:21;;;:34;;;;:::i;:::-;15825:44;;;;:::i;:::-;15795:74;;15878:14;-1:-1:-1;;;15937:4:0;:20;;;15926:7;15904:19;:29;;;;:::i;:::-;15896:38;;:4;:38;:::i;:::-;:61;;;;:::i;:::-;15895:76;;;;:::i;:::-;16045:20;;;;15878:93;;-1:-1:-1;16022:19:0;-1:-1:-1;;;15878:93:0;16022:19;:::i;:::-;16021:44;;;;:::i;:::-;16000:66;;:17;:66;:::i;:::-;15980:86;;15720:377;;;15645:452;16181:19;;;;16162:15;;;;16113:11;;-1:-1:-1;;;9332:4:0;16113:31;;16127:17;;16113:31;:::i;10693:161::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;10786:8:::1;10801:12;:10;:12::i;:::-;10820:21;;:28:::0;10693:161::o;14304:122::-;9109:6;;-1:-1:-1;;;9109:6:0;;;;9108:7;9100:34;;;;-1:-1:-1;;;9100:34:0;;;;;;;:::i;:::-;9145:6;:13;;-1:-1:-1;;;;9145:13:0;-1:-1:-1;;;9145:13:0;;;-1:-1:-1;14363:19:0;:56:::1;::::0;-1:-1:-1;;;14363:56:0;;14393:10:::1;14363:56;::::0;::::1;4489:34:1::0;14413:4:0::1;4539:18:1::0;;;4532:43;14354:66:0::1;::::0;-1:-1:-1;;;;;14363:19:0::1;::::0;:29:::1;::::0;4424:18:1;;14363:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14354:8;:66::i;:::-;9190:5:::0;9181:14;;-1:-1:-1;;;;9181:14:0;;;14304:122::o;14630:785::-;9109:6;;-1:-1:-1;;;9109:6:0;;;;9108:7;9100:34;;;;-1:-1:-1;;;9100:34:0;;;;;;;:::i;:::-;9145:6;:13;;-1:-1:-1;;;;9145:13:0;-1:-1:-1;;;9145:13:0;;;14747:10:::1;14738:20:::0;;:8:::1;:20;::::0;;;;9154:4;;14767:12:::1;:10;:12::i;:::-;14788:15;14862:4;:15;;;-1:-1:-1::0;;;14822:4:0::1;:22;;;14808:4;:11;;;:36;;;;:::i;:::-;14807:51;;;;:::i;:::-;14806:71;;;;:::i;:::-;14788:89;;14897:1;14887:7;:11;:38;;;;14924:1;14902:4;:19;;;:23;14887:38;14884:450;;;14980:7;14958:4;:19;;;:29;;;;:::i;:::-;14936:19;::::0;::::1;:51:::0;;;14996:15:::1;::::0;15014:51:::1;::::0;15033:10:::1;::::0;15014:18:::1;:51::i;:::-;15079:26;::::0;345:25:1;;;14996:69:0;;-1:-1:-1;15085:10:0::1;::::0;15079:26:::1;::::0;333:2:1;318:18;15079:26:0::1;;;;;;;15158:7;15136:4;:19;;;:29;;;;:::i;:::-;15114:19;::::0;::::1;:51:::0;15193:15:::1;15174:16;::::0;::::1;:34:::0;15238:18:::1;::::0;::::1;::::0;:28:::1;::::0;15259:7;;15238:28:::1;:::i;:::-;15217:18;::::0;::::1;:49:::0;15297:19:::1;::::0;::::1;::::0;:29:::1;::::0;15319:7;;15297:29:::1;:::i;:::-;15275:19;::::0;::::1;:51:::0;-1:-1:-1;14884:450:0::1;15373:22;::::0;::::1;::::0;15359:11;;-1:-1:-1;;;9332:4:0;15359:36:::1;::::0;::::1;:::i;:::-;15358:51;;;;:::i;:::-;15340:15;::::0;;::::1;:69:::0;;;;-1:-1:-1;;9190:5:0;9181:14;;-1:-1:-1;;;;9181:14:0;;;14630:785::o;11316:141::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;11422:19;:29;;-1:-1:-1;;11422:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11316:141::o;17631:249::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;17742:16;;17727:8:::1;::::0;17742:77:::1;::::0;-1:-1:-1;;;;;17742:16:0::1;17784:10;17805:4;17812:6:::0;17742:33:::1;:77::i;:::-;17868:6;17847:4;:18;;;:27;;;;:::i;:::-;17826:18;::::0;;::::1;:48:::0;-1:-1:-1;17631:249:0:o;8523:94::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;8588:21:::1;8606:1;8588:9;:21::i;:::-;8523:94::o:0;14213:83::-;9109:6;;-1:-1:-1;;;9109:6:0;;;;9108:7;9100:34;;;;-1:-1:-1;;;9100:34:0;;;;;;;:::i;:::-;9145:6;:13;;-1:-1:-1;;;;9145:13:0;-1:-1:-1;;;9145:13:0;;;14274:16:::1;14283:6:::0;14274:8:::1;:16::i;17886:314::-:0;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;18006:18;;17983:8:::1;::::0;18006:28;-1:-1:-1;18006:28:0::1;17998:79;;;::::0;-1:-1:-1;;;17998:79:0;;4977:2:1;17998:79:0::1;::::0;::::1;4959:21:1::0;5016:2;4996:18;;;4989:30;5055:34;5035:18;;;5028:62;-1:-1:-1;;;5106:18:1;;;5099:36;5152:19;;17998:79:0::1;4775:402:1::0;17998:79:0::1;18126:6;18105:4;:18;;;:27;;;;:::i;:::-;18084:18;::::0;::::1;:48:::0;18139:55:::1;18177:7;8346::::0;8373:6;-1:-1:-1;;;;;8373:6:0;;8300:87;18177:7:::1;18139:16;::::0;::::1;::::0;-1:-1:-1;;;;;18139:16:0::1;::::0;18187:6;18139:29:::1;:55::i;:::-;17952:248;17886:314:::0;:::o;14527:95::-;9109:6;;-1:-1:-1;;;9109:6:0;;;;9108:7;9100:34;;;;-1:-1:-1;;;9100:34:0;;;;;;;:::i;:::-;9145:6;:13;;-1:-1:-1;;;;9145:13:0;-1:-1:-1;;;9145:13:0;;;14597:10:::1;14588:20:::0;;:8:::1;:20;::::0;;;;:27;14578:38:::1;::::0;:9:::1;:38::i;10860:158::-:0;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;10976:19;:36;10860:158::o;8625:192::-;8346:7;8373:6;-1:-1:-1;;;;;8373:6:0;7935:10;8435:23;8427:68;;;;-1:-1:-1;;;8427:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8714:22:0;::::1;8706:73;;;::::0;-1:-1:-1;;;8706:73:0;;5384:2:1;8706:73:0::1;::::0;::::1;5366:21:1::0;5423:2;5403:18;;;5396:30;5462:34;5442:18;;;5435:62;-1:-1:-1;;;5513:18:1;;;5506:36;5559:19;;8706:73:0::1;5182:402:1::0;8706:73:0::1;8790:19;8800:8;8790:9;:19::i;:::-;8625:192:::0;:::o;13247:960::-;13370:10;13298:21;13361:20;;;:8;:20;;;;;13322:8;;13402:10;13394:49;;;;-1:-1:-1;;;13394:49:0;;5791:2:1;13394:49:0;;;5773:21:1;5830:2;5810:18;;;5803:30;5869:28;5849:18;;;5842:56;5915:18;;13394:49:0;5589:350:1;13394:49:0;13458:11;;:21;-1:-1:-1;13458:21:0;13450:74;;;;-1:-1:-1;;;13450:74:0;;6146:2:1;13450:74:0;;;6128:21:1;6185:2;6165:18;;;6158:30;6224:34;6204:18;;;6197:62;-1:-1:-1;;;6275:18:1;;;6268:38;6323:19;;13450:74:0;5944:404:1;13450:74:0;13539:19;;;;:24;;:84;;;13604:4;:19;;;13585:4;:16;;;:38;;;;:::i;:::-;13567:15;:56;13539:84;13531:143;;;;-1:-1:-1;;;13531:143:0;;6555:2:1;13531:143:0;;;6537:21:1;6594:2;6574:18;;;6567:30;6633:34;6613:18;;;6606:62;-1:-1:-1;;;6684:18:1;;;6677:44;6738:19;;13531:143:0;6353:410:1;13531:143:0;13683:12;:10;:12::i;:::-;13704:15;13778:4;:15;;;-1:-1:-1;;;13738:4:0;:22;;;13724:4;:11;;;:36;;;;:::i;:::-;13723:51;;;;:::i;:::-;13722:71;;;;:::i;:::-;13704:89;-1:-1:-1;13803:11:0;;13800:84;;13869:7;13847:4;:19;;;:29;;;;:::i;:::-;13825:19;;;:51;13800:84;13892:15;;:48;;-1:-1:-1;;;;;13892:15:0;13921:10;13933:6;13892:28;:48::i;:::-;13993:6;13970:4;:20;;;:29;;;;:::i;:::-;13947:20;;;:52;14020:11;;:20;;14034:6;;14020:20;:::i;:::-;14006:34;;;14080:22;;;;-1:-1:-1;;;9332:4:0;14066:36;;14080:22;14066:36;:::i;:::-;14065:51;;;;:::i;:::-;14047:15;;;:69;14173:28;;345:25:1;;;14182:10:0;;14173:28;;333:2:1;318:18;14173:28:0;;;;;;;13291:916;;;13247:960;:::o;11463:729::-;11568:24;;11525:8;;11549:15;:43;11546:73;;11605:7;11463:729::o;11546:73::-;11630:4;:20;;;11654:1;11630:25;11627:104;;11693:15;11666:24;;;;:42;11463:729::o;11627:104::-;11739:12;11772:4;:24;;;11754:15;:42;;;;:::i;:::-;11739:57;;11803:27;11872:5;-1:-1:-1;;;11834:4:0;:21;;;:34;;;;:::i;:::-;11833:44;;;;:::i;:::-;11803:74;;11884:14;-1:-1:-1;;;11943:4:0;:20;;;11932:7;11910:19;:29;;;;:::i;:::-;11902:38;;:4;:38;:::i;:::-;:61;;;;:::i;:::-;11901:76;;;;:::i;:::-;11884:93;;12028:6;12007:4;:18;;;:27;;;;:::i;:::-;11986:18;;;:48;12116:20;;;;12093:19;-1:-1:-1;;;12093:6:0;:19;:::i;:::-;12092:44;;;;:::i;:::-;12066:4;:22;;;:71;;;;:::i;:::-;12041:22;;;:96;-1:-1:-1;;12171:15:0;12144:24;;;;:42;;;;-1:-1:-1;11463:729:0:o;12200:1041::-;12322:10;12250:21;12313:20;;;:8;:20;;;;;12350:19;;12274:8;;12313:20;12350:19;;12342:56;;;;-1:-1:-1;;;12342:56:0;;6970:2:1;12342:56:0;;;6952:21:1;7009:2;6989:18;;;6982:30;7048:26;7028:18;;;7021:54;7092:18;;12342:56:0;6768:348:1;12342:56:0;12422:1;12413:6;:10;12405:49;;;;-1:-1:-1;;;12405:49:0;;5791:2:1;12405:49:0;;;5773:21:1;5830:2;5810:18;;;5803:30;5869:28;5849:18;;;5842:56;5915:18;;12405:49:0;5589:350:1;12405:49:0;12479:4;:19;;;12469:6;:29;;12461:85;;;;-1:-1:-1;;;12461:85:0;;7323:2:1;12461:85:0;;;7305:21:1;7362:2;7342:18;;;7335:30;7401:34;7381:18;;;7374:62;-1:-1:-1;;;7452:18:1;;;7445:41;7503:19;;12461:85:0;7121:407:1;12461:85:0;12561:17;;;;:22;;:69;;-1:-1:-1;12612:17:0;;;;12588:11;;:20;;12602:6;;12588:20;:::i;:::-;:41;;12561:69;12553:124;;;;-1:-1:-1;;;12553:124:0;;7735:2:1;12553:124:0;;;7717:21:1;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:1;;;7857:40;7914:19;;12553:124:0;7533:406:1;12553:124:0;12686:12;:10;:12::i;:::-;12710:11;;:15;12707:186;;12736:15;12810:4;:15;;;-1:-1:-1;;;12770:4:0;:22;;;12756:4;:11;;;:36;;;;:::i;:::-;12755:51;;;;:::i;:::-;12754:71;;;;:::i;:::-;12736:89;;12878:7;12856:4;:19;;;:29;;;;:::i;:::-;12834:19;;;:51;-1:-1:-1;12707:186:0;12901:15;;:76;;-1:-1:-1;;;;;12901:15:0;12942:10;12963:4;12970:6;12901:32;:76::i;:::-;12998:11;;:20;;13012:6;;12998:20;:::i;:::-;12984:34;;13048:20;;;;:29;;13071:6;;13048:29;:::i;:::-;13025:20;;;:52;13117:22;;;;13103:11;;-1:-1:-1;;;9332:4:0;13103:36;;;:::i;:::-;13102:51;;;;:::i;:::-;13084:15;;;:69;13179:15;13160:16;;;:34;13208:27;;345:25:1;;;13216:10:0;;13208:27;;333:2:1;318:18;13208:27:0;;;;;;;12243:998;;12200:1041;:::o;17130:493::-;17313:18;;17204:7;;17244:8;;17282:6;;17298:33;;17295:88;;;-1:-1:-1;17357:18:0;;;;17295:88;17407:4;:18;;;17392:12;:33;17389:88;;;-1:-1:-1;17451:18:0;;;;17389:88;17483:16;;;;:47;;-1:-1:-1;;;;;17483:16:0;17513:2;17517:12;17483:29;:47::i;:::-;17579:12;17558:4;:18;;;:33;;;;:::i;:::-;17537:18;;;;:54;;;;17605:12;-1:-1:-1;17130:493:0;;;;;:::o;5360:190::-;5488:53;;-1:-1:-1;;;;;8202:15:1;;;5488:53:0;;;8184:34:1;8254:15;;;8234:18;;;8227:43;8286:18;;;8279:34;;;5461:81:0;;5481:5;;5503:18;;;;;8119::1;;5488:53:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5488:53:0;;;;;;;;;;;5461:19;:81::i;:::-;5360:190;;;;:::o;8825:173::-;8881:16;8900:6;;-1:-1:-1;;;;;8917:17:0;;;-1:-1:-1;;;;;;8917:17:0;;;;;;8950:40;;8900:6;;;;;;;8950:40;;8881:16;8950:40;8870:128;8825:173;:::o;5190:162::-;5300:43;;-1:-1:-1;;;;;8516:32:1;;;5300:43:0;;;8498:51:1;8565:18;;;8558:34;;;5273:71:0;;5293:5;;5315:14;;;;;8471:18:1;;5300:43:0;8324:274:1;5273:71:0;5190:162;;;:::o;7216:295::-;7297:23;7323:33;-1:-1:-1;;;;;7323:27:0;;7351:4;7323:27;:33::i;:::-;7297:59;;7371:10;:17;7392:1;7371:22;;:57;;;;;7409:10;7398:30;;;;;;;;;;;;:::i;:::-;7397:31;7371:57;7367:137;;;7452:40;;-1:-1:-1;;;7452:40:0;;-1:-1:-1;;;;;2739:32:1;;7452:40:0;;;2721:51:1;2694:18;;7452:40:0;2575:203:1;1225:168:0;1300:12;1332:53;1354:6;1362:4;1368:1;1371:13;1332:21;:53::i;:::-;1325:60;1225:168;-1:-1:-1;;;1225:168:0:o;4469:82::-;4526:17;;-1:-1:-1;;;4526:17:0;;;;;;;;;;;1853:494;2034:12;2087:5;2063:21;:29;2059:110;;;2116:41;;-1:-1:-1;;;2116:41:0;;2151:4;2116:41;;;2721:51:1;2694:18;;2116:41:0;2575:203:1;2059:110:0;2180:12;2194:23;2221:6;-1:-1:-1;;;;;2221:11:0;2240:5;2247:4;2221:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2179:73;;;;2270:69;2297:6;2305:7;2314:10;2326:12;2270:26;:69::i;:::-;2263:76;;;;1853:494;;;;;;;:::o;3419:530::-;3615:12;3644:7;3640:302;;;3672:10;:17;3693:1;3672:22;3668:165;;3719:6;-1:-1:-1;;;;;3719:18:0;;3741:1;3719:23;3715:103;;3774:24;;-1:-1:-1;;;3774:24:0;;-1:-1:-1;;;;;2739:32:1;;3774:24:0;;;2721:51:1;2694:18;;3774:24:0;2575:203:1;3715:103:0;-1:-1:-1;3854:10:0;3847:17;;3640:302;3897:33;3905:10;3917:12;4668:17;;:21;4664:284;;4763:10;4757:17;4820:15;4807:10;4803:2;4799:19;4792:44;4664:284;4883:14;:12;:14;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:286::-;440:6;493:2;481:9;472:7;468:23;464:32;461:52;;;509:1;506;499:12;461:52;535:23;;-1:-1:-1;;;;;587:31:1;;577:42;;567:70;;633:1;630;623:12;2206:118;2292:5;2285:13;2278:21;2271:5;2268:32;2258:60;;2314:1;2311;2304:12;2329:241;2385:6;2438:2;2426:9;2417:7;2413:23;2409:32;2406:52;;;2454:1;2451;2444:12;2406:52;2493:9;2480:23;2512:28;2534:5;2512:28;:::i;2783:127::-;2844:10;2839:3;2835:20;2832:1;2825:31;2875:4;2872:1;2865:15;2899:4;2896:1;2889:15;2915:128;2982:9;;;3003:11;;;3000:37;;;3017:18;;:::i;3048:168::-;3121:9;;;3152;;3169:15;;;3163:22;;3149:37;3139:71;;3190:18;;:::i;3221:217::-;3261:1;3287;3277:132;;3331:10;3326:3;3322:20;3319:1;3312:31;3366:4;3363:1;3356:15;3394:4;3391:1;3384:15;3277:132;-1:-1:-1;3423:9:1;;3221:217::o;3443:125::-;3508:9;;;3529:10;;;3526:36;;;3542:18;;:::i;3573:356::-;3775:2;3757:21;;;3794:18;;;3787:30;3853:34;3848:2;3833:18;;3826:62;3920:2;3905:18;;3573:356::o;3934:338::-;4136:2;4118:21;;;4175:2;4155:18;;;4148:30;-1:-1:-1;;;4209:2:1;4194:18;;4187:44;4263:2;4248:18;;3934:338::o;4586:184::-;4656:6;4709:2;4697:9;4688:7;4684:23;4680:32;4677:52;;;4725:1;4722;4715:12;4677:52;-1:-1:-1;4748:16:1;;4586:184;-1:-1:-1;4586:184:1:o;8603:245::-;8670:6;8723:2;8711:9;8702:7;8698:23;8694:32;8691:52;;;8739:1;8736;8729:12;8691:52;8771:9;8765:16;8790:28;8812:5;8790:28;:::i;8853:412::-;8982:3;9020:6;9014:13;9045:1;9055:129;9069:6;9066:1;9063:13;9055:129;;;9167:4;9151:14;;;9147:25;;9141:32;9128:11;;;9121:53;9084:12;9055:129;;;-1:-1:-1;9239:1:1;9203:16;;9228:13;;;-1:-1:-1;9203:16:1;8853:412;-1:-1:-1;8853:412:1:o

Swarm Source

ipfs://b9e0cc0feef6741c8963855eee64b5ead24d7f4a25a12ff0c78fa9312c0d0b48

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.