ETH Price: $3,451.85 (-1.16%)
Gas: 11 Gwei

Contract

0xeFF66B4A84C8a6b69b99EB1C5e39aF8fc35d13db
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unstake184817262023-11-02 3:27:35259 days ago1698895655IN
GTON Capital: sGTON Token
0 ETH0.0006585924.80399224
Transfer183257642023-10-11 7:38:35281 days ago1697009915IN
GTON Capital: sGTON Token
0 ETH0.000252236.35455292
Unstake183214812023-10-10 17:15:11281 days ago1696958111IN
GTON Capital: sGTON Token
0 ETH0.0013763115.94210812
Stake183214772023-10-10 17:14:23281 days ago1696958063IN
GTON Capital: sGTON Token
0 ETH0.0017379815.3568862
Transfer181985422023-09-23 12:32:35298 days ago1695472355IN
GTON Capital: sGTON Token
0 ETH0.000353738.91156855
Transfer181852692023-09-21 15:53:47300 days ago1695311627IN
GTON Capital: sGTON Token
0 ETH0.0005094812.83522709
Transfer181852632023-09-21 15:52:35300 days ago1695311555IN
GTON Capital: sGTON Token
0 ETH0.0005513.8644058
Transfer181852582023-09-21 15:51:35300 days ago1695311495IN
GTON Capital: sGTON Token
0 ETH0.000594414.9746954
Unstake181418972023-09-15 13:24:35306 days ago1694784275IN
GTON Capital: sGTON Token
0 ETH0.000626515.80083581
Harvest181418842023-09-15 13:21:59306 days ago1694784119IN
GTON Capital: sGTON Token
0 ETH0.0012713216.84858478
Harvest181418742023-09-15 13:19:59306 days ago1694783999IN
GTON Capital: sGTON Token
0 ETH0.0013586418
Harvest181354132023-09-14 15:31:59307 days ago1694705519IN
GTON Capital: sGTON Token
0 ETH0.0029629129.6740014
Stake177542462023-07-23 7:12:11361 days ago1690096331IN
GTON Capital: sGTON Token
0 ETH0.001258916.34999263
Harvest177542402023-07-23 7:10:59361 days ago1690096259IN
GTON Capital: sGTON Token
0 ETH0.0014376915.91263439
Harvest176937102023-07-14 19:14:59369 days ago1689362099IN
GTON Capital: sGTON Token
0 ETH0.0034903438.63180879
Transfer176931272023-07-14 17:17:47369 days ago1689355067IN
GTON Capital: sGTON Token
0 ETH0.0018485446.59815552
Stake176931182023-07-14 17:15:59369 days ago1689354959IN
GTON Capital: sGTON Token
0 ETH0.0039169936.14761179
Harvest176931092023-07-14 17:14:11369 days ago1689354851IN
GTON Capital: sGTON Token
0 ETH0.0030765137.18960751
Transfer176853602023-07-13 15:07:23370 days ago1689260843IN
GTON Capital: sGTON Token
0 ETH0.0009868624.85418126
Transfer176853442023-07-13 15:03:59370 days ago1689260639IN
GTON Capital: sGTON Token
0 ETH0.0009679524.40008702
Transfer176762242023-07-12 8:14:11372 days ago1689149651IN
GTON Capital: sGTON Token
0 ETH0.0005461513.76742545
Transfer176762102023-07-12 8:11:11372 days ago1689149471IN
GTON Capital: sGTON Token
0 ETH0.0006324115.92754228
Unstake176730802023-07-11 21:35:47372 days ago1689111347IN
GTON Capital: sGTON Token
0 ETH0.0013750419.85794509
Harvest176730512023-07-11 21:29:59372 days ago1689110999IN
GTON Capital: sGTON Token
0 ETH0.0018692920.68968844
Harvest176642152023-07-10 15:41:47373 days ago1689003707IN
GTON Capital: sGTON Token
0 ETH0.0029382835.51360325
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Staking

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 800 runs

Other Settings:
default evmVersion
File 1 of 5 : Staking.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.14;

import "./interfaces/IStaking.sol";
import "./interfaces/InitializableOwnable.sol";

contract Staking is InitializableOwnable, IStaking {

    /* ========== HELPER STRUCTURES ========== */

    struct UserInfo {
        uint amount;
        uint rewardAccountedForHarvest;
        uint availableHarvest;
        uint lastHarvestTimestamp;
    }

    /* ========== CONSTANTS ========== */

    IERC20 public immutable stakingToken;

    string public name;
    string public symbol;
    uint public immutable harvestInterval;
    uint8 public immutable decimals;

    uint public constant calcDecimals = 1e14;
    uint public constant secondsInYear = 31557600;
    uint public constant aprDenominator = 10000;

    /* ========== STATE VARIABLES ========== */

    address public admin;
    bool public paused;
    bool public unstakePermitted;
    uint public aprBasisPoints;

    uint public amountStaked;
    uint public accumulatedRewardPerShare;
    uint public lastRewardTimestamp;

    mapping(address => UserInfo) public userInfo;
    mapping(address => mapping(address => uint)) public allowances;

    /* ========== CONSTRUCTOR ========== */

    constructor(
        IERC20 token_,
        string memory name_,
        string memory symbol_,
        uint aprBasisPoints_,
        uint harvestInterval_
    ) {
        initOwner(msg.sender);
        stakingToken = token_;
        name = name_;
        symbol = symbol_;
        aprBasisPoints = aprBasisPoints_;
        harvestInterval = harvestInterval_;
        lastRewardTimestamp = block.timestamp;
        decimals = IERC20Metadata(address(token_)).decimals();
    }

    /* ========== VIEWS ========== */

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

    function currentRewardDelta() public view returns (uint) {
        uint timeDelta = block.timestamp - lastRewardTimestamp;
        return (timeDelta * aprBasisPoints * calcDecimals) / (aprDenominator * secondsInYear);
    }

    function calculateRewardForStake(uint amount) internal view returns (uint) {
        return accumulatedRewardPerShare * amount / calcDecimals;
    }

    function balanceOf(address user_) external view returns(uint) {
        UserInfo storage user = userInfo[user_];
        uint updAccumulatedRewardPerShare = accumulatedRewardPerShare + currentRewardDelta();

        uint virtualReward = 
            updAccumulatedRewardPerShare * user.amount / calcDecimals 
            - user.rewardAccountedForHarvest;
        return user.amount + user.availableHarvest + virtualReward;
    }

    function allowance(address owner, address spender) external view returns (uint256) {
        return allowances[owner][spender];
    }

    /* ========== MUTATIVE FUNCTIONS ========== */

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function approve(
        address spender, 
        uint amount
    ) external whenNotPaused virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _transfer(
        address sender_,
        address recipient_,
        uint amount
    ) internal {
        updateRewardPool();
        require(sender_ != address(0), "ERC20: transfer from the zero address");
        require(recipient_ != address(0), "ERC20: transfer to the zero address");

        UserInfo storage sender = userInfo[sender_];
        UserInfo storage recipient = userInfo[recipient_];
        require(amount <= sender.amount, "ERC20: transfer amount exceeds balance");

        sender.availableHarvest += calculateRewardForStake(sender.amount) - sender.rewardAccountedForHarvest;
        sender.amount -= amount; 
        sender.rewardAccountedForHarvest = calculateRewardForStake(sender.amount);

        recipient.availableHarvest += calculateRewardForStake(recipient.amount) - recipient.rewardAccountedForHarvest;
        recipient.amount += amount; 
        recipient.rewardAccountedForHarvest = calculateRewardForStake(recipient.amount);

        emit Transfer(sender_, recipient_, amount);
    }

    function transfer(
        address recipient, 
        uint256 amount
    ) external whenNotPaused virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    } 

    function transferFrom(
        address spender,
        address recipient,
        uint256 amount
    ) external whenNotPaused virtual override returns (bool) {
        _transfer(spender, recipient, amount);
        uint256 currentAllowance = allowances[spender][msg.sender];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(spender, msg.sender, currentAllowance - amount);
        return true;
    }

    function updateRewardPool() public canUnstake {
        accumulatedRewardPerShare += currentRewardDelta();
        lastRewardTimestamp = block.timestamp;
    }

    function stake(
        uint amount, 
        address to
    ) external whenNotPaused {
        updateRewardPool();
        require(amount > 0, "Staking: Nothing to deposit");
        require(to != address(0));
        require(stakingToken.transferFrom(msg.sender, address(this), amount), "Staking: transfer failed");

        UserInfo storage user = userInfo[to];
        user.availableHarvest += calculateRewardForStake(user.amount) - user.rewardAccountedForHarvest;
        amountStaked += amount;
        user.amount += amount;
        user.rewardAccountedForHarvest = calculateRewardForStake(user.amount);
        emit Transfer(address(0), to, amount);
        emit Stake(to, amount);
    }

    function harvest(uint256 amount) external whenNotPaused {
        updateRewardPool();
        UserInfo storage user = userInfo[msg.sender];
        require(user.lastHarvestTimestamp + harvestInterval <= block.timestamp || 
            user.lastHarvestTimestamp == 0, "Staking: less than 24 hours since last harvest");
        user.lastHarvestTimestamp = block.timestamp;
        uint reward = calculateRewardForStake(user.amount);
        user.availableHarvest += reward - user.rewardAccountedForHarvest;
        user.rewardAccountedForHarvest = reward;

        require(amount > 0, "Staking: Nothing to harvest");
        require(amount <= user.availableHarvest, "Staking: Insufficient to harvest");
        user.availableHarvest -= amount;
        require(stakingToken.transfer(msg.sender, amount), "Staking: transfer failed");
        emit Harvest(msg.sender, amount);
    }

    function unstake(
        address to, 
        uint256 amount
    ) external canUnstake {
        updateRewardPool();
        require(amount > 0, "Staking: Nothing to unstake");
        require(to != address(0));

        UserInfo storage user = userInfo[msg.sender];
        require(amount <= user.amount, "Staking: Insufficient share");
        user.availableHarvest += calculateRewardForStake(user.amount) - user.rewardAccountedForHarvest;
        amountStaked -= amount;
        user.amount -= amount;
        user.rewardAccountedForHarvest = calculateRewardForStake(user.amount);

        require(stakingToken.transfer(to, amount), "Staking: Not enough token to transfer");
        emit Transfer(to, address(0), amount);
        emit Unstake(to, amount);
    }

    /* ========== RESTRICTED FUNCTIONS ========== */

    function setApr(uint aprBasisPoints_) external onlyOwner {
        updateRewardPool();
        uint oldAprBasisPoints = aprBasisPoints;
        aprBasisPoints = aprBasisPoints_;
        emit SetApr(oldAprBasisPoints, aprBasisPoints);
    }

    function togglePause() external onlyOwner {
        paused = !paused;
        emit Pause(paused);
    }

    function toggleUnstake() external onlyOwner {
        unstakePermitted = !unstakePermitted;
        emit UnstakePermit(unstakePermitted);
    }

    function withdrawToken(
        IERC20 tokenToWithdraw, 
        address to, 
        uint amount
    ) external onlyOwner {
        require(tokenToWithdraw.transfer(to, amount));
    }

    /* ========== MODIFIERS ========== */

    modifier whenNotPaused() {
        require(!paused, "Staking: contract paused.");
        _;
    }

    modifier canUnstake() {
        require(unstakePermitted || (!paused), "Staking: contract paused or unstake denied.");
        _;
    }
}

File 2 of 5 : IStaking.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.14;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";

interface IStaking is IERC20, IERC20Metadata {

     /* ========== CONSTANTS ========== */

    function calcDecimals() external view returns (uint);

    function secondsInYear() external view returns (uint);

    function aprDenominator() external view returns (uint);

    /* ========== STATE VARIABLES ========== */

    function aprBasisPoints() external view returns (uint);

    /* ========== MUTATIVE FUNCTIONS ========== */

    function updateRewardPool() external;

    function stake(uint amount, address to) external;

    function harvest(uint256 amount) external;

    function unstake(address to, uint256 amount) external;

    /* ========== RESTRICTED FUNCTIONS ========== */

    function setApr(uint _aprBasisPoints) external;

    function togglePause() external;

    function toggleUnstake() external;

    function withdrawToken(IERC20 tokenToWithdraw, address to, uint amount) external;

    /* ========== EVENTS ========== */

    event Pause(bool indexed flag);
    event UnstakePermit(bool indexed flag);
    event SetApr(uint indexed oldBasisPoints, uint indexed newBasisPoints);
    event Stake(address indexed user, uint indexed amount);
    event Unstake(address indexed user, uint indexed amount);
    event Harvest(address indexed user, uint indexed amount);
}

File 3 of 5 : InitializableOwnable.sol
// SPDX-License-Identifier: Apache-2.0

pragma solidity >=0.8.14;

contract InitializableOwnable {

    address public owner;
    address public newOwner;

    bool internal initialized;

    // ============ Events ============

    event OwnerTransferRequested(
        address indexed oldOwner, 
        address indexed newOwner
    );

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

    /* ========== MUTATIVE FUNCTIONS ========== */

    function initOwner(address _newOwner) public notInitialized {
        initialized = true;
        owner = _newOwner;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        emit OwnerTransferRequested(owner, _newOwner);
        newOwner = _newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == newOwner, "Claim from wrong address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }

    /* ========== MODIFIERS ========== */

    modifier notInitialized() {
        require(!initialized, "Not initialized");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }
}

File 4 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 5 of 5 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 800
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"aprBasisPoints_","type":"uint256"},{"internalType":"uint256","name":"harvestInterval_","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"flag","type":"bool"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldBasisPoints","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newBasisPoints","type":"uint256"}],"name":"SetApr","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","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":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"flag","type":"bool"}],"name":"UnstakePermit","type":"event"},{"inputs":[],"name":"accumulatedRewardPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountStaked","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":[],"name":"aprBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aprDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calcDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentRewardDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"harvestInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastRewardTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondsInYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"aprBasisPoints_","type":"uint256"}],"name":"setApr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","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":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleUnstake","outputs":[],"stateMutability":"nonpayable","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":"spender","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":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakePermitted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateRewardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardAccountedForHarvest","type":"uint256"},{"internalType":"uint256","name":"availableHarvest","type":"uint256"},{"internalType":"uint256","name":"lastHarvestTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToWithdraw","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040523480156200001157600080fd5b5060405162002263380380620022638339810160408190526200003491620002fe565b6200003f3362000104565b6001600160a01b0385166080528351620000619060029060208701906200018b565b508251620000779060039060208601906200018b565b50600582905560a0819052426008556040805163313ce56760e01b815290516001600160a01b0387169163313ce5679160048083019260209291908290030181865afa158015620000cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f291906200039b565b60ff1660c05250620004039350505050565b600154600160a01b900460ff1615620001555760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b604482015260640160405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b8280546200019990620003c7565b90600052602060002090601f016020900481019282620001bd576000855562000208565b82601f10620001d857805160ff191683800117855562000208565b8280016001018555821562000208579182015b8281111562000208578251825591602001919060010190620001eb565b50620002169291506200021a565b5090565b5b808211156200021657600081556001016200021b565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200025957600080fd5b81516001600160401b038082111562000276576200027662000231565b604051601f8301601f19908116603f01168101908282118183101715620002a157620002a162000231565b81604052838152602092508683858801011115620002be57600080fd5b600091505b83821015620002e25785820183015181830184015290820190620002c3565b83821115620002f45760008385830101525b9695505050505050565b600080600080600060a086880312156200031757600080fd5b85516001600160a01b03811681146200032f57600080fd5b60208701519095506001600160401b03808211156200034d57600080fd5b6200035b89838a0162000247565b955060408801519150808211156200037257600080fd5b50620003818882890162000247565b606088015160809098015196999598509695949350505050565b600060208284031215620003ae57600080fd5b815160ff81168114620003c057600080fd5b9392505050565b600181811c90821680620003dc57607f821691505b602082108103620003fd57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c051611e146200044f60003960006103be015260008181610315015261140801526000818161047801528181610c0b0152818161119001526115c90152611e146000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80635c975abb11610160578063c2a672e0116100d8578063f2fde38b1161008c578063f8077fae11610071578063f8077fae14610598578063f851a440146105a1578063fab1e747146105b457600080fd5b8063f2fde38b1461057d578063f4036bcf1461059057600080fd5b8063d4ee1d90116100bd578063d4ee1d901461051e578063dd62ed3e14610531578063ddc632621461056a57600080fd5b8063c2a672e014610503578063c4ae31681461051657600080fd5b80638da5cb5b1161012f57806396e5b4db1161011457806396e5b4db146104e0578063a9059cbb146104e8578063ab6a8b02146104fb57600080fd5b80638da5cb5b146104c557806395d89b41146104d857600080fd5b80635c975abb1461044c57806370a082311461046057806372f702f3146104735780637acb7757146104b257600080fd5b80631959a002116101f357806336d42195116101c25780634e71e0c8116101a75780634e71e0c81461040657806355b6ed5c1461040e57806359cee29c1461043957600080fd5b806336d42195146103f25780633ea6713e146103fb57600080fd5b80631959a0021461034857806323b872dd1461039d5780632bdd2ad9146103b0578063313ce567146103b957600080fd5b80630d0092971161024a57806314dc0ce01161022f57806314dc0ce01461031057806315a361d21461033757806318160ddd1461034057600080fd5b80630d009297146102e957806311d81c0f146102fc57600080fd5b806301e336671461027c57806304bd829c1461029157806306fdde03146102b1578063095ea7b3146102c6575b600080fd5b61028f61028a366004611b9f565b6105bd565b005b61029e655af3107a400081565b6040519081526020015b60405180910390f35b6102b9610689565b6040516102a89190611be0565b6102d96102d4366004611c35565b610717565b60405190151581526020016102a8565b61028f6102f7366004611c61565b610788565b6004546102d990600160a81b900460ff1681565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b61029e61271081565b60065461029e565b61037d610356366004611c61565b60096020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016102a8565b6102d96103ab366004611b9f565b610825565b61029e60055481565b6103e07f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102a8565b61029e60075481565b61029e6301e187e081565b61028f610946565b61029e61041c366004611c85565b600a60209081526000928352604080842090915290825290205481565b61028f610447366004611cbe565b610a11565b6004546102d990600160a01b900460ff1681565b61029e61046e366004611c61565b610a98565b61049a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a8565b61028f6104c0366004611cd7565b610b24565b60005461049a906001600160a01b031681565b6102b9610dd4565b61028f610de1565b6102d96104f6366004611c35565b610e9b565b61028f610f03565b61028f610511366004611c35565b610fa9565b61028f6112eb565b60015461049a906001600160a01b031681565b61029e61053f366004611c85565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b61028f610578366004611cbe565b61138a565b61028f61058b366004611c61565b6116bc565b61029e61176a565b61029e60085481565b60045461049a906001600160a01b031681565b61029e60065481565b6000546001600160a01b031633146106085760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b9190611cfc565b61068457600080fd5b505050565b6002805461069690611d1e565b80601f01602080910402602001604051908101604052809291908181526020018280546106c290611d1e565b801561070f5780601f106106e45761010080835404028352916020019161070f565b820191906000526020600020905b8154815290600101906020018083116106f257829003601f168201915b505050505081565b600454600090600160a01b900460ff16156107745760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b61077f3384846117bc565b50600192915050565b600154600160a01b900460ff16156107e25760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016105ff565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19909216919091179055565b600454600090600160a01b900460ff16156108825760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b61088d8484846118e0565b6001600160a01b0384166000908152600a60209081526040808320338452909152902054828110156109275760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016105ff565b61093b85336109368685611d6e565b6117bc565b506001949350505050565b6001546001600160a01b031633146109a05760405162461bcd60e51b815260206004820152601860248201527f436c61696d2066726f6d2077726f6e672061646472657373000000000000000060448201526064016105ff565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03841617909155169055565b6000546001600160a01b03163314610a575760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b610a5f610f03565b6005805490829055604051829082907f6ec6d062a87c4b42fe40885d2e8955d89ab9275e14d24354dd2b6b130043bba590600090a35050565b6001600160a01b038116600090815260096020526040812081610ab961176a565b600754610ac69190611d85565b905060008260010154655af3107a4000846000015484610ae69190611d9d565b610af09190611dbc565b610afa9190611d6e565b90508083600201548460000154610b119190611d85565b610b1b9190611d85565b95945050505050565b600454600160a01b900460ff1615610b7e5760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b610b86610f03565b60008211610bd65760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7468696e6720746f206465706f736974000000000060448201526064016105ff565b6001600160a01b038116610be957600080fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c809190611cfc565b610ccc5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a207472616e73666572206661696c6564000000000000000060448201526064016105ff565b6001600160a01b038116600090815260096020526040902060018101548154610cf490611b60565b610cfe9190611d6e565b816002016000828254610d119190611d85565b925050819055508260066000828254610d2a9190611d85565b9091555050805483908290600090610d43908490611d85565b90915550508054610d5390611b60565b60018201556040518381526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405183906001600160a01b038416907febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a90600090a3505050565b6003805461069690611d1e565b6000546001600160a01b03163314610e275760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b6004805460ff600160a81b80830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9093169290921792839055604051919092049091161515907f6b37936355f1e7eb93bbf5afb0444c7f425f273ed40451377ff81e0332ea5e4390600090a2565b600454600090600160a01b900460ff1615610ef85760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b61077f3384846118e0565b600454600160a81b900460ff1680610f255750600454600160a01b900460ff16155b610f855760405162461bcd60e51b815260206004820152602b60248201527f5374616b696e673a20636f6e747261637420706175736564206f7220756e737460448201526a30b5b2903232b734b2b21760a91b60648201526084016105ff565b610f8d61176a565b60076000828254610f9e9190611d85565b909155505042600855565b600454600160a81b900460ff1680610fcb5750600454600160a01b900460ff16155b61102b5760405162461bcd60e51b815260206004820152602b60248201527f5374616b696e673a20636f6e747261637420706175736564206f7220756e737460448201526a30b5b2903232b734b2b21760a91b60648201526084016105ff565b611033610f03565b600081116110835760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7468696e6720746f20756e7374616b65000000000060448201526064016105ff565b6001600160a01b03821661109657600080fd5b33600090815260096020526040902080548211156110f65760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a20496e73756666696369656e74207368617265000000000060448201526064016105ff565b6001810154815461110690611b60565b6111109190611d6e565b8160020160008282546111239190611d85565b92505081905550816006600082825461113c9190611d6e565b9091555050805482908290600090611155908490611d6e565b9091555050805461116590611b60565b600182015560405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd9190611cfc565b61126f5760405162461bcd60e51b815260206004820152602560248201527f5374616b696e673a204e6f7420656e6f75676820746f6b656e20746f2074726160448201527f6e7366657200000000000000000000000000000000000000000000000000000060648201526084016105ff565b6040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405182906001600160a01b038516907f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd90600090a3505050565b6000546001600160a01b031633146113315760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b6004805460ff600160a01b808304821615810260ff60a01b199093169290921792839055604051919092049091161515907f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f45930490600090a2565b600454600160a01b900460ff16156113e45760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b6113ec610f03565b3360009081526009602052604090206003810154429061142d907f000000000000000000000000000000000000000000000000000000000000000090611d85565b11158061143c57506003810154155b6114ae5760405162461bcd60e51b815260206004820152602e60248201527f5374616b696e673a206c657373207468616e20323420686f7572732073696e6360448201527f65206c617374206861727665737400000000000000000000000000000000000060648201526084016105ff565b42600382015580546000906114c290611b60565b90508160010154816114d49190611d6e565b8260020160008282546114e79190611d85565b909155505060018201819055826115405760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7468696e6720746f2068617276657374000000000060448201526064016105ff565b81600201548311156115945760405162461bcd60e51b815260206004820181905260248201527f5374616b696e673a20496e73756666696369656e7420746f206861727665737460448201526064016105ff565b828260020160008282546115a89190611d6e565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e9190611cfc565b61168a5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a207472616e73666572206661696c6564000000000000000060448201526064016105ff565b604051839033907fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba90600090a3505050565b6000546001600160a01b031633146117025760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b600080546040516001600160a01b03808516939216917ffe468f2d56412c82d8634992af86bf1fe77006b5d9659cff6e01542a36362a6d91a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000806008544261177b9190611d6e565b905061178d6301e187e0612710611d9d565b655af3107a4000600554836117a29190611d9d565b6117ac9190611d9d565b6117b69190611dbc565b91505090565b6001600160a01b03831661181e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ff565b6001600160a01b03821661187f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ff565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6118e8610f03565b6001600160a01b0383166119645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105ff565b6001600160a01b0382166119c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ff565b6001600160a01b03808416600090815260096020526040808220928516825290208154831115611a5e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105ff565b60018201548254611a6e90611b60565b611a789190611d6e565b826002016000828254611a8b9190611d85565b9091555050815483908390600090611aa4908490611d6e565b90915550508154611ab490611b60565b6001808401919091558101548154611acb90611b60565b611ad59190611d6e565b816002016000828254611ae89190611d85565b9091555050805483908290600090611b01908490611d85565b90915550508054611b1190611b60565b60018201556040518381526001600160a01b0380861691908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6000655af3107a400082600754611b779190611d9d565b611b819190611dbc565b92915050565b6001600160a01b0381168114611b9c57600080fd5b50565b600080600060608486031215611bb457600080fd5b8335611bbf81611b87565b92506020840135611bcf81611b87565b929592945050506040919091013590565b600060208083528351808285015260005b81811015611c0d57858101830151858201604001528201611bf1565b81811115611c1f576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611c4857600080fd5b8235611c5381611b87565b946020939093013593505050565b600060208284031215611c7357600080fd5b8135611c7e81611b87565b9392505050565b60008060408385031215611c9857600080fd5b8235611ca381611b87565b91506020830135611cb381611b87565b809150509250929050565b600060208284031215611cd057600080fd5b5035919050565b60008060408385031215611cea57600080fd5b823591506020830135611cb381611b87565b600060208284031215611d0e57600080fd5b81518015158114611c7e57600080fd5b600181811c90821680611d3257607f821691505b602082108103611d5257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611d8057611d80611d58565b500390565b60008219821115611d9857611d98611d58565b500190565b6000816000190483118215151615611db757611db7611d58565b500290565b600082611dd957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220ceae707500c361d09564137e8bd12ffb6ca16ace6eb9c4f29f1294891143386664736f6c634300080e003300000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000008b80000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000000c5374616b696e672047544f4e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057347544f4e000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102775760003560e01c80635c975abb11610160578063c2a672e0116100d8578063f2fde38b1161008c578063f8077fae11610071578063f8077fae14610598578063f851a440146105a1578063fab1e747146105b457600080fd5b8063f2fde38b1461057d578063f4036bcf1461059057600080fd5b8063d4ee1d90116100bd578063d4ee1d901461051e578063dd62ed3e14610531578063ddc632621461056a57600080fd5b8063c2a672e014610503578063c4ae31681461051657600080fd5b80638da5cb5b1161012f57806396e5b4db1161011457806396e5b4db146104e0578063a9059cbb146104e8578063ab6a8b02146104fb57600080fd5b80638da5cb5b146104c557806395d89b41146104d857600080fd5b80635c975abb1461044c57806370a082311461046057806372f702f3146104735780637acb7757146104b257600080fd5b80631959a002116101f357806336d42195116101c25780634e71e0c8116101a75780634e71e0c81461040657806355b6ed5c1461040e57806359cee29c1461043957600080fd5b806336d42195146103f25780633ea6713e146103fb57600080fd5b80631959a0021461034857806323b872dd1461039d5780632bdd2ad9146103b0578063313ce567146103b957600080fd5b80630d0092971161024a57806314dc0ce01161022f57806314dc0ce01461031057806315a361d21461033757806318160ddd1461034057600080fd5b80630d009297146102e957806311d81c0f146102fc57600080fd5b806301e336671461027c57806304bd829c1461029157806306fdde03146102b1578063095ea7b3146102c6575b600080fd5b61028f61028a366004611b9f565b6105bd565b005b61029e655af3107a400081565b6040519081526020015b60405180910390f35b6102b9610689565b6040516102a89190611be0565b6102d96102d4366004611c35565b610717565b60405190151581526020016102a8565b61028f6102f7366004611c61565b610788565b6004546102d990600160a81b900460ff1681565b61029e7f000000000000000000000000000000000000000000000000000000000001518081565b61029e61271081565b60065461029e565b61037d610356366004611c61565b60096020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016102a8565b6102d96103ab366004611b9f565b610825565b61029e60055481565b6103e07f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff90911681526020016102a8565b61029e60075481565b61029e6301e187e081565b61028f610946565b61029e61041c366004611c85565b600a60209081526000928352604080842090915290825290205481565b61028f610447366004611cbe565b610a11565b6004546102d990600160a01b900460ff1681565b61029e61046e366004611c61565b610a98565b61049a7f00000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d81565b6040516001600160a01b0390911681526020016102a8565b61028f6104c0366004611cd7565b610b24565b60005461049a906001600160a01b031681565b6102b9610dd4565b61028f610de1565b6102d96104f6366004611c35565b610e9b565b61028f610f03565b61028f610511366004611c35565b610fa9565b61028f6112eb565b60015461049a906001600160a01b031681565b61029e61053f366004611c85565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b61028f610578366004611cbe565b61138a565b61028f61058b366004611c61565b6116bc565b61029e61176a565b61029e60085481565b60045461049a906001600160a01b031681565b61029e60065481565b6000546001600160a01b031633146106085760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b9190611cfc565b61068457600080fd5b505050565b6002805461069690611d1e565b80601f01602080910402602001604051908101604052809291908181526020018280546106c290611d1e565b801561070f5780601f106106e45761010080835404028352916020019161070f565b820191906000526020600020905b8154815290600101906020018083116106f257829003601f168201915b505050505081565b600454600090600160a01b900460ff16156107745760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b61077f3384846117bc565b50600192915050565b600154600160a01b900460ff16156107e25760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016105ff565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19909216919091179055565b600454600090600160a01b900460ff16156108825760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b61088d8484846118e0565b6001600160a01b0384166000908152600a60209081526040808320338452909152902054828110156109275760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016105ff565b61093b85336109368685611d6e565b6117bc565b506001949350505050565b6001546001600160a01b031633146109a05760405162461bcd60e51b815260206004820152601860248201527f436c61696d2066726f6d2077726f6e672061646472657373000000000000000060448201526064016105ff565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b03841617909155169055565b6000546001600160a01b03163314610a575760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b610a5f610f03565b6005805490829055604051829082907f6ec6d062a87c4b42fe40885d2e8955d89ab9275e14d24354dd2b6b130043bba590600090a35050565b6001600160a01b038116600090815260096020526040812081610ab961176a565b600754610ac69190611d85565b905060008260010154655af3107a4000846000015484610ae69190611d9d565b610af09190611dbc565b610afa9190611d6e565b90508083600201548460000154610b119190611d85565b610b1b9190611d85565b95945050505050565b600454600160a01b900460ff1615610b7e5760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b610b86610f03565b60008211610bd65760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7468696e6720746f206465706f736974000000000060448201526064016105ff565b6001600160a01b038116610be957600080fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d6001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c809190611cfc565b610ccc5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a207472616e73666572206661696c6564000000000000000060448201526064016105ff565b6001600160a01b038116600090815260096020526040902060018101548154610cf490611b60565b610cfe9190611d6e565b816002016000828254610d119190611d85565b925050819055508260066000828254610d2a9190611d85565b9091555050805483908290600090610d43908490611d85565b90915550508054610d5390611b60565b60018201556040518381526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405183906001600160a01b038416907febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a90600090a3505050565b6003805461069690611d1e565b6000546001600160a01b03163314610e275760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b6004805460ff600160a81b80830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9093169290921792839055604051919092049091161515907f6b37936355f1e7eb93bbf5afb0444c7f425f273ed40451377ff81e0332ea5e4390600090a2565b600454600090600160a01b900460ff1615610ef85760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b61077f3384846118e0565b600454600160a81b900460ff1680610f255750600454600160a01b900460ff16155b610f855760405162461bcd60e51b815260206004820152602b60248201527f5374616b696e673a20636f6e747261637420706175736564206f7220756e737460448201526a30b5b2903232b734b2b21760a91b60648201526084016105ff565b610f8d61176a565b60076000828254610f9e9190611d85565b909155505042600855565b600454600160a81b900460ff1680610fcb5750600454600160a01b900460ff16155b61102b5760405162461bcd60e51b815260206004820152602b60248201527f5374616b696e673a20636f6e747261637420706175736564206f7220756e737460448201526a30b5b2903232b734b2b21760a91b60648201526084016105ff565b611033610f03565b600081116110835760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7468696e6720746f20756e7374616b65000000000060448201526064016105ff565b6001600160a01b03821661109657600080fd5b33600090815260096020526040902080548211156110f65760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a20496e73756666696369656e74207368617265000000000060448201526064016105ff565b6001810154815461110690611b60565b6111109190611d6e565b8160020160008282546111239190611d85565b92505081905550816006600082825461113c9190611d6e565b9091555050805482908290600090611155908490611d6e565b9091555050805461116590611b60565b600182015560405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490527f00000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d169063a9059cbb906044016020604051808303816000875af11580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd9190611cfc565b61126f5760405162461bcd60e51b815260206004820152602560248201527f5374616b696e673a204e6f7420656e6f75676820746f6b656e20746f2074726160448201527f6e7366657200000000000000000000000000000000000000000000000000000060648201526084016105ff565b6040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405182906001600160a01b038516907f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd90600090a3505050565b6000546001600160a01b031633146113315760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b6004805460ff600160a01b808304821615810260ff60a01b199093169290921792839055604051919092049091161515907f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f45930490600090a2565b600454600160a01b900460ff16156113e45760405162461bcd60e51b815260206004820152601960248201527f5374616b696e673a20636f6e7472616374207061757365642e0000000000000060448201526064016105ff565b6113ec610f03565b3360009081526009602052604090206003810154429061142d907f000000000000000000000000000000000000000000000000000000000001518090611d85565b11158061143c57506003810154155b6114ae5760405162461bcd60e51b815260206004820152602e60248201527f5374616b696e673a206c657373207468616e20323420686f7572732073696e6360448201527f65206c617374206861727665737400000000000000000000000000000000000060648201526084016105ff565b42600382015580546000906114c290611b60565b90508160010154816114d49190611d6e565b8260020160008282546114e79190611d85565b909155505060018201819055826115405760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7468696e6720746f2068617276657374000000000060448201526064016105ff565b81600201548311156115945760405162461bcd60e51b815260206004820181905260248201527f5374616b696e673a20496e73756666696369656e7420746f206861727665737460448201526064016105ff565b828260020160008282546115a89190611d6e565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d6001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e9190611cfc565b61168a5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a207472616e73666572206661696c6564000000000000000060448201526064016105ff565b604051839033907fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba90600090a3505050565b6000546001600160a01b031633146117025760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016105ff565b600080546040516001600160a01b03808516939216917ffe468f2d56412c82d8634992af86bf1fe77006b5d9659cff6e01542a36362a6d91a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000806008544261177b9190611d6e565b905061178d6301e187e0612710611d9d565b655af3107a4000600554836117a29190611d9d565b6117ac9190611d9d565b6117b69190611dbc565b91505090565b6001600160a01b03831661181e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ff565b6001600160a01b03821661187f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ff565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6118e8610f03565b6001600160a01b0383166119645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105ff565b6001600160a01b0382166119c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ff565b6001600160a01b03808416600090815260096020526040808220928516825290208154831115611a5e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105ff565b60018201548254611a6e90611b60565b611a789190611d6e565b826002016000828254611a8b9190611d85565b9091555050815483908390600090611aa4908490611d6e565b90915550508154611ab490611b60565b6001808401919091558101548154611acb90611b60565b611ad59190611d6e565b816002016000828254611ae89190611d85565b9091555050805483908290600090611b01908490611d85565b90915550508054611b1190611b60565b60018201556040518381526001600160a01b0380861691908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6000655af3107a400082600754611b779190611d9d565b611b819190611dbc565b92915050565b6001600160a01b0381168114611b9c57600080fd5b50565b600080600060608486031215611bb457600080fd5b8335611bbf81611b87565b92506020840135611bcf81611b87565b929592945050506040919091013590565b600060208083528351808285015260005b81811015611c0d57858101830151858201604001528201611bf1565b81811115611c1f576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611c4857600080fd5b8235611c5381611b87565b946020939093013593505050565b600060208284031215611c7357600080fd5b8135611c7e81611b87565b9392505050565b60008060408385031215611c9857600080fd5b8235611ca381611b87565b91506020830135611cb381611b87565b809150509250929050565b600060208284031215611cd057600080fd5b5035919050565b60008060408385031215611cea57600080fd5b823591506020830135611cb381611b87565b600060208284031215611d0e57600080fd5b81518015158114611c7e57600080fd5b600181811c90821680611d3257607f821691505b602082108103611d5257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611d8057611d80611d58565b500390565b60008219821115611d9857611d98611d58565b500190565b6000816000190483118215151615611db757611db7611d58565b500290565b600082611dd957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220ceae707500c361d09564137e8bd12ffb6ca16ace6eb9c4f29f1294891143386664736f6c634300080e0033

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

00000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000008b80000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000000c5374616b696e672047544f4e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057347544f4e000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : token_ (address): 0x01e0E2e61f554eCAaeC0cC933E739Ad90f24a86d
Arg [1] : name_ (string): Staking GTON
Arg [2] : symbol_ (string): sGTON
Arg [3] : aprBasisPoints_ (uint256): 2232
Arg [4] : harvestInterval_ (uint256): 86400

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000001e0e2e61f554ecaaec0cc933e739ad90f24a86d
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 00000000000000000000000000000000000000000000000000000000000008b8
Arg [4] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [6] : 5374616b696e672047544f4e0000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 7347544f4e000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Based on the cutting-edge achievements of Web 3.0 technology, GTON Capital is building an infrastructure to advance digital capital markets.

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.