Contract 0x2f546ad4edd93b956c8999be404cdcafde3e89ae 5

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x54ba85dcd1d36711ccf7e466c790d8f6fcb0c5c4e0cd47b1d3c2381567d038d0Approve444837502022-12-08 1:53:001 hr 9 mins ago0x82ff5530b1c1766cf2c310af55831c1279622daa IN  GMX: sGLP Token0 ETH0.00004824
0xeb63f79336fb7c104a3dd1d13d8e938c5e6a6837b5456ccb25b62c8ec218c762Approve444824842022-12-08 1:42:571 hr 19 mins ago0xdf4148beab5b4e68873cad676d54d84022a1f668 IN  GMX: sGLP Token0 ETH0.00002439
0xd7f000e53a9bf9e809dcfda3cf338a97e45c20208a93d83b7c6522384a47b4aeApprove444763242022-12-08 0:50:512 hrs 11 mins ago0x2d82e73751fde6fc396363907bf0fb6071176e04 IN  GMX: sGLP Token0 ETH0.00002512
0xf435e9a311c7ce3ce3cef003572fe7f3ba3306daf5a000ab662ecf5617d2280dApprove444645602022-12-07 23:18:593 hrs 43 mins ago0x1abc9b0a9f1d4eb12e40724b4d705c5f38e56ca5 IN  GMX: sGLP Token0 ETH0.00002373
0xd941f3998957ab610ba867fae169583b320970dbe4b40cbb1cf63f0cecec5346Approve444492602022-12-07 21:45:495 hrs 16 mins ago0x63f0a184b96d37e74b9fcf606da4d779c369e426 IN  GMX: sGLP Token0 ETH0.0000263
0x0665a3111ba6d717804937f1912fb6f82f2f13a91b37d0451b1d0df0802b0949Approve444158022022-12-07 18:24:328 hrs 38 mins ago0xc9c00bd2d63738edf87ed8ed8e5951550f84f3eb IN  GMX: sGLP Token0 ETH0.00073275
0x862914583a9f9077ab37500428628d3d72912700a59a7bda91dfd2c9405d2974Approve444156092022-12-07 18:23:238 hrs 39 mins ago0xc9c00bd2d63738edf87ed8ed8e5951550f84f3eb IN  GMX: sGLP Token0 ETH0.00073272
0xfe1455404328d42b589e348b27c024b908fe17ce2571244d711a90664d9e6368Approve444052532022-12-07 17:32:259 hrs 30 mins ago0x9a311cac49c0081857577243d0ae4f94564b2e22 IN  GMX: sGLP Token0 ETH0.00002843
0x0dd9f17101d2b96a4e4d51de321ba35416e6aa0cd25b1696307e22b9858b6378Approve443903862022-12-07 16:24:0510 hrs 38 mins ago0xc18834fb8e10af526be91eff3fac4375ecfe0602 IN  GMX: sGLP Token0 ETH0.00002901
0xcf2d65f376abcc1d82043dffd0a3b1e221e362af9a6fb1c30b382334b631af25Approve443817592022-12-07 15:44:0711 hrs 18 mins ago0x7677c251594456c609caf4fa8ac723ce4e762c08 IN  GMX: sGLP Token0 ETH0.0000238
0xf64c3a725ac3b22d662b60bfea298f3fef6d1d738641f78f44d1d69d3209cf37Approve443784122022-12-07 15:27:3311 hrs 35 mins ago0x5a5005833f3bbad1c12f0a1998cbd9a67393ae41 IN  GMX: sGLP Token0 ETH0.00006697
0x5d4809548884589aee2536162014a5d84c8a0e2ea0c04970f7dfd9ad815c8983Approve443776612022-12-07 15:24:0011 hrs 38 mins ago0x5a5005833f3bbad1c12f0a1998cbd9a67393ae41 IN  GMX: sGLP Token0 ETH0.00006614
0x37b6d9d6636a16c729ea77973e4c481a18553d01b18d16a1d07d847ae794ccc9Approve443718852022-12-07 14:55:4112 hrs 7 mins ago0x9ef171a8c62eea6455830bde5de99db5a7ca5119 IN  GMX: sGLP Token0 ETH0.00061968
0x61004c2b81c7b3f7dc0effc9bd96c62b0117ddb2379c8878c240ce0103f2480aApprove443627322022-12-07 14:12:4512 hrs 49 mins ago0xc30603461be4c49cf8076797c18f48292ffde03a IN  GMX: sGLP Token0 ETH0.00002467
0x0d6f3bbd6064074c2c8b528a04da0e4a08ed31e4d66bad295ed076e308308dc3Approve443467302022-12-07 12:54:2914 hrs 8 mins ago0x68037f970edf769fc29c9916cee34a2255caff50 IN  GMX: sGLP Token0 ETH0.00024919
0x5411037cc4cd9ea216c31783936a6f4263484438ff44bf05be0f6550b5906722Approve443460732022-12-07 12:50:4514 hrs 11 mins ago0x68037f970edf769fc29c9916cee34a2255caff50 IN  GMX: sGLP Token0 ETH0.00066677
0x57a5ac5d9e7ef37fc240ac7ef43e6c2c2b0684557e9a0892f891949e16c62f50Approve443336542022-12-07 11:45:2215 hrs 17 mins ago0x7541d8dd02b93171e8f8a5c779d45f4569538437 IN  GMX: sGLP Token0 ETH0.00002642
0xa755a49a34a574020f76ddc3d6011c3ce0863a05781377842e48136ba7ea2e9bApprove443319842022-12-07 11:36:4415 hrs 25 mins ago0xc30603461be4c49cf8076797c18f48292ffde03a IN  GMX: sGLP Token0 ETH0.00002477
0x63ec408da0fc8f71bcc7e5158cbf722c6dbfa986015330958de7fccb59ba6771Approve443309922022-12-07 11:31:2015 hrs 31 mins ago0x7677c251594456c609caf4fa8ac723ce4e762c08 IN  GMX: sGLP Token0 ETH0.00002522
0x7b29345767d4d064cea6cd452c33ab7deff55b764b3d37d50515eaa1ac13c435Approve443181332022-12-07 10:25:0116 hrs 37 mins ago0xfe519ff03a09cb802dfb8e2011052969ded3d635 IN  GMX: sGLP Token0 ETH0.00025164
0x9879346ccf819e1928870b1cc4341b30f0eb147111bed053728a892952d18a01Approve442886262022-12-07 8:00:0419 hrs 2 mins ago0xe441bf0f2231e5b95d80d3a4fc9695e1c1a880e9 IN  GMX: sGLP Token0 ETH0.00002411
0x89943088dc77315bfd1bb5fab0c2b027203d47b9fdf28249c4b4d5141cab63f6Approve442726572022-12-07 6:39:4920 hrs 22 mins ago0xc30603461be4c49cf8076797c18f48292ffde03a IN  GMX: sGLP Token0 ETH0.0000224
0x776931c3da09071df3faeb37a105b6a8ba2c45202c58a62399bb020338550247Approve442608942022-12-07 5:27:1621 hrs 35 mins ago0x6b00ea6fc7a9b699ce17bd7825bc16d45d2b3455 IN  GMX: sGLP Token0 ETH0.00002319
0x91be6527f468419d9d673153b79a88f5c24e95db7b359718561ea1a5a924cc03Approve442446292022-12-07 3:39:4823 hrs 22 mins ago0x6cc150449d10afbc5d2f4b9041afcc8fbebeadf0 IN  GMX: sGLP Token0 ETH0.00002322
0x466d075aae32e956cca17f8048dd77110e18a9846f0639e0839b407d45265b06Approve442013392022-12-06 22:42:411 day 4 hrs ago0x65ba38e21528e45e9cdd2f6950d9254fe2af8580 IN  GMX: sGLP Token0 ETH0.00002622
[ Download CSV Export 

OVERVIEW

GMX is a decentralized spot and perpetual exchange that supports low swap fees and zero price impact trades.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago GMX: sGLP Token GMX: GLP Manager0 ETH
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago GMX: sGLP Token GMX: GLP Manager0 ETH
0xe1276f67694516726f74184c109be290876a52aa73d73d263b01a20fd75ae9b3444430152022-12-07 21:08:505 hrs 53 mins ago PlutusDAO: plvGLP Depositor GMX: sGLP Token0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token GMX: GLP Manager0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token GMX: GLP Manager0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago 0xdb607928f10ca503ee6678522567e80d8498d759 GMX: sGLP Token0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token GMX: GLP Manager0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago GMX: sGLP Token GMX: GLP Manager0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago Vesta Finance: Borrower Operations GMX: sGLP Token0 ETH
0xd111ed4e09d48d25275a0bf5a470051517e460804e324546e4ea3eadbc83da36444385962022-12-07 20:40:396 hrs 22 mins ago Vesta Finance: Borrower Operations GMX: sGLP Token0 ETH
0xf09d4ca63f5466fd3a2ff4f52d87ea519999261232e4eb6f83852adf82471a17444341082022-12-07 20:12:566 hrs 49 mins ago GMX: sGLP Token 0x1addd80e6039594ee970e5872d247bf0414c89030 ETH
0xf09d4ca63f5466fd3a2ff4f52d87ea519999261232e4eb6f83852adf82471a17444341082022-12-07 20:12:566 hrs 49 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
0xf09d4ca63f5466fd3a2ff4f52d87ea519999261232e4eb6f83852adf82471a17444341082022-12-07 20:12:566 hrs 49 mins ago GMX: sGLP Token 0x4e971a87900b931ff39d1aad67697f49835400b60 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakedGlp

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 5 : StakedGlp.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "../libraries/math/SafeMath.sol";
import "../libraries/token/IERC20.sol";

import "../core/interfaces/IGlpManager.sol";

import "./interfaces/IRewardTracker.sol";
import "./interfaces/IRewardTracker.sol";

// provide a way to transfer staked GLP tokens by unstaking from the sender
// and staking for the receiver
// tests in RewardRouterV2.js
contract StakedGlp {
    using SafeMath for uint256;

    string public constant name = "StakedGlp";
    string public constant symbol = "sGLP";
    uint8 public constant decimals = 18;

    address public glp;
    IGlpManager public glpManager;
    address public stakedGlpTracker;
    address public feeGlpTracker;

    mapping (address => mapping (address => uint256)) public allowances;

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

    constructor(
        address _glp,
        IGlpManager _glpManager,
        address _stakedGlpTracker,
        address _feeGlpTracker
    ) public {
        glp = _glp;
        glpManager = _glpManager;
        stakedGlpTracker = _stakedGlpTracker;
        feeGlpTracker = _feeGlpTracker;
    }

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

    function approve(address _spender, uint256 _amount) external returns (bool) {
        _approve(msg.sender, _spender, _amount);
        return true;
    }

    function transfer(address _recipient, uint256 _amount) external returns (bool) {
        _transfer(msg.sender, _recipient, _amount);
        return true;
    }

    function transferFrom(address _sender, address _recipient, uint256 _amount) external returns (bool) {
        uint256 nextAllowance = allowances[_sender][msg.sender].sub(_amount, "StakedGlp: transfer amount exceeds allowance");
        _approve(_sender, msg.sender, nextAllowance);
        _transfer(_sender, _recipient, _amount);
        return true;
    }

    function balanceOf(address _account) external view returns (uint256) {
        IRewardTracker(stakedGlpTracker).depositBalances(_account, glp);
    }

    function totalSupply() external view returns (uint256) {
        IERC20(stakedGlpTracker).totalSupply();
    }

    function _approve(address _owner, address _spender, uint256 _amount) private {
        require(_owner != address(0), "StakedGlp: approve from the zero address");
        require(_spender != address(0), "StakedGlp: approve to the zero address");

        allowances[_owner][_spender] = _amount;

        emit Approval(_owner, _spender, _amount);
    }

    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "StakedGlp: transfer from the zero address");
        require(_recipient != address(0), "StakedGlp: transfer to the zero address");

        require(
            glpManager.lastAddedAt(_sender).add(glpManager.cooldownDuration()) <= block.timestamp,
            "StakedGlp: cooldown duration not yet passed"
        );

        IRewardTracker(stakedGlpTracker).unstakeForAccount(_sender, feeGlpTracker, _amount, _sender);
        IRewardTracker(feeGlpTracker).unstakeForAccount(_sender, glp, _amount, _sender);

        IRewardTracker(feeGlpTracker).stakeForAccount(_sender, _recipient, glp, _amount);
        IRewardTracker(stakedGlpTracker).stakeForAccount(_recipient, _recipient, feeGlpTracker, _amount);
    }
}

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

pragma solidity 0.6.12;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

pragma solidity 0.6.12;

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

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

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

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

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

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

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

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

File 4 of 5 : IGlpManager.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IGlpManager {
    function cooldownDuration() external returns (uint256);
    function lastAddedAt(address _account) external returns (uint256);
    function addLiquidity(address _token, uint256 _amount, uint256 _minUsdg, uint256 _minGlp) external returns (uint256);
    function addLiquidityForAccount(address _fundingAccount, address _account, address _token, uint256 _amount, uint256 _minUsdg, uint256 _minGlp) external returns (uint256);
    function removeLiquidity(address _tokenOut, uint256 _glpAmount, uint256 _minOut, address _receiver) external returns (uint256);
    function removeLiquidityForAccount(address _account, address _tokenOut, uint256 _glpAmount, uint256 _minOut, address _receiver) external returns (uint256);
}

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

pragma solidity 0.6.12;

interface IRewardTracker {
    function depositBalances(address _account, address _depositToken) external view returns (uint256);
    function stakedAmounts(address _account) external view returns (uint256);
    function updateRewards() external;
    function stake(address _depositToken, uint256 _amount) external;
    function stakeForAccount(address _fundingAccount, address _account, address _depositToken, uint256 _amount) external;
    function unstake(address _depositToken, uint256 _amount) external;
    function unstakeForAccount(address _account, address _depositToken, uint256 _amount, address _receiver) external;
    function tokensPerInterval() external view returns (uint256);
    function claim(address _receiver) external returns (uint256);
    function claimForAccount(address _account, address _receiver) external returns (uint256);
    function claimable(address _account) external view returns (uint256);
    function averageStakedAmounts(address _account) external view returns (uint256);
    function cumulativeRewards(address _account) external view returns (uint256);
}

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_glp","type":"address"},{"internalType":"contract IGlpManager","name":"_glpManager","type":"address"},{"internalType":"address","name":"_stakedGlpTracker","type":"address"},{"internalType":"address","name":"_feeGlpTracker","type":"address"}],"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"},{"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":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGlpTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"glp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"glpManager","outputs":[{"internalType":"contract IGlpManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakedGlpTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610cb7380380610cb78339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549484169483169490941790935560038054929093169116179055610c14806100a36000396000f3fe608060405234801561001057600080fd5b50600436106100ba5760003560e01c806306fdde03146100bf578063095ea7b31461013c57806318160ddd1461017c57806323b872dd14610196578063313ce567146101cc57806355b6ed5c146101ea57806370a082311461021857806378a207ee1461023e57806395d89b4114610262578063a9059cbb1461026a578063af394d0014610296578063dd62ed3e1461029e578063e1c363b7146102cc578063fa6db1bc146102d4575b600080fd5b6100c76102dc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101015781810151838201526020016100e9565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101686004803603604081101561015257600080fd5b506001600160a01b038135169060200135610301565b604080519115158252519081900360200190f35b610184610317565b60408051918252519081900360200190f35b610168600480360360608110156101ac57600080fd5b506001600160a01b0381358116916020810135909116906040013561038d565b6101d46103fb565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561020057600080fd5b506001600160a01b0381358116916020013516610400565b6101846004803603602081101561022e57600080fd5b50356001600160a01b031661041d565b6102466104ab565b604080516001600160a01b039092168252519081900360200190f35b6100c76104ba565b6101686004803603604081101561028057600080fd5b506001600160a01b0381351690602001356104da565b6102466104e7565b610184600480360360408110156102b457600080fd5b506001600160a01b03813581169160200135166104f6565b610246610521565b610246610530565b6040518060400160405280600981526020016805374616b6564476c760bc1b81525081565b600061030e33848461053f565b50600192915050565b600254604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561035c57600080fd5b505afa158015610370573d6000803e3d6000fd5b505050506040513d602081101561038657600080fd5b5090919050565b6000806103d8836040518060600160405280602c8152602001610b88602c91396001600160a01b0388166000908152600460209081526040808320338452909152902054919061062b565b90506103e585338361053f565b6103f08585856106c2565b506001949350505050565b601281565b600460209081526000928352604080842090915290825290205481565b6002546000805460408051637aeceb1f60e11b81526001600160a01b038681166004830152928316602482015290519293919091169163f5d9d63e91604480820192602092909190829003018186803b15801561047957600080fd5b505afa15801561048d573d6000803e3d6000fd5b505050506040513d60208110156104a357600080fd5b509092915050565b6000546001600160a01b031681565b60405180604001604052806004815260200163073474c560e41b81525081565b600061030e3384846106c2565b6002546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6003546001600160a01b031681565b6001546001600160a01b031681565b6001600160a01b0383166105845760405162461bcd60e51b8152600401808060200182810382526028815260200180610b136028913960400191505060405180910390fd5b6001600160a01b0382166105c95760405162461bcd60e51b8152600401808060200182810382526026815260200180610b3b6026913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600081848411156106ba5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561067f578181015183820152602001610667565b50505050905090810190601f1680156106ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166107075760405162461bcd60e51b8152600401808060200182810382526029815260200180610aea6029913960400191505060405180910390fd5b6001600160a01b03821661074c5760405162461bcd60e51b8152600401808060200182810382526027815260200180610b616027913960400191505060405180910390fd5b4261084d600160009054906101000a90046001600160a01b03166001600160a01b031663352693156040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b505160015460408051638b770e1160e01b81526001600160a01b03898116600483015291519190921691638b770e119160248083019260209291908290030181600087803b15801561081b57600080fd5b505af115801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b505190610a8a565b111561088a5760405162461bcd60e51b815260040180806020018281038252602b815260200180610bb4602b913960400191505060405180910390fd5b6002546003546040805163098bf59d60e01b81526001600160a01b038781166004830181905293811660248301526044820186905260648201939093529051919092169163098bf59d91608480830192600092919082900301818387803b1580156108f457600080fd5b505af1158015610908573d6000803e3d6000fd5b5050600354600080546040805163098bf59d60e01b81526001600160a01b038a8116600483018190529381166024830152604482018990526064820193909352905191909316945063098bf59d935060848084019382900301818387803b15801561097257600080fd5b505af1158015610986573d6000803e3d6000fd5b50506003546000805460408051631e42d69b60e21b81526001600160a01b038a811660048301528981166024830152928316604482015260648101889052905191909316945063790b5a6c935060848084019382900301818387803b1580156109ee57600080fd5b505af1158015610a02573d6000803e3d6000fd5b505060025460035460408051631e42d69b60e21b81526001600160a01b03888116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b158015610a6d57600080fd5b505af1158015610a81573d6000803e3d6000fd5b50505050505050565b600082820183811015610ae2576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b939250505056fe5374616b6564476c703a207472616e736665722066726f6d20746865207a65726f20616464726573735374616b6564476c703a20617070726f76652066726f6d20746865207a65726f20616464726573735374616b6564476c703a20617070726f766520746f20746865207a65726f20616464726573735374616b6564476c703a207472616e7366657220746f20746865207a65726f20616464726573735374616b6564476c703a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655374616b6564476c703a20636f6f6c646f776e206475726174696f6e206e6f742079657420706173736564a264697066735822122099ad3831a076869d5600abf0e828ea4c6cbfbeacd9f11d4346ea68c3683c727264736f6c634300060c00330000000000000000000000004277f8f2c384827b5273592ff7cebd9f2c1ac258000000000000000000000000321f653eed006ad1c29d174e17d96351bde226490000000000000000000000001addd80e6039594ee970e5872d247bf0414c89030000000000000000000000004e971a87900b931ff39d1aad67697f49835400b6

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

0000000000000000000000004277f8f2c384827b5273592ff7cebd9f2c1ac258000000000000000000000000321f653eed006ad1c29d174e17d96351bde226490000000000000000000000001addd80e6039594ee970e5872d247bf0414c89030000000000000000000000004e971a87900b931ff39d1aad67697f49835400b6

-----Decoded View---------------
Arg [0] : _glp (address): 0x4277f8f2c384827b5273592ff7cebd9f2c1ac258
Arg [1] : _glpManager (address): 0x321f653eed006ad1c29d174e17d96351bde22649
Arg [2] : _stakedGlpTracker (address): 0x1addd80e6039594ee970e5872d247bf0414c8903
Arg [3] : _feeGlpTracker (address): 0x4e971a87900b931ff39d1aad67697f49835400b6

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000004277f8f2c384827b5273592ff7cebd9f2c1ac258
Arg [1] : 000000000000000000000000321f653eed006ad1c29d174e17d96351bde22649
Arg [2] : 0000000000000000000000001addd80e6039594ee970e5872d247bf0414c8903
Arg [3] : 0000000000000000000000004e971a87900b931ff39d1aad67697f49835400b6


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.