ETH Price: $2,886.77 (-1.53%)

Contract

0xC50A68170AB8307BD7cc81978707A792d60aaeee

Overview

ETH Balance

Linea Mainnet LogoLinea Mainnet LogoLinea Mainnet Logo0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Apply Withdrawal281341902026-01-21 11:17:204 days ago1768994240IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000007360.03863452
Withdraw270848272025-12-26 3:02:0031 days ago1766718120IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000001450.03493778
Withdraw245779302025-10-16 0:34:04102 days ago1760574844IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000002810.0477662
Apply Withdrawal243109692025-10-09 0:31:36109 days ago1759969896IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000007880.0454406
Apply Withdrawal227307832025-08-31 6:02:42148 days ago1756620162IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000008370.03931482
Withdraw213336492025-07-27 2:54:06183 days ago1753584846IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000002960.05047307
Apply Withdrawal211907972025-07-23 12:00:37186 days ago1753272037IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000004760.04291206
Apply Withdrawal208400202025-07-13 22:01:17196 days ago1752444077IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000010160.04318991
Withdraw201655962025-06-20 1:15:24220 days ago1750382124IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000003110.05287654
Apply Withdrawal201295262025-06-18 17:03:15221 days ago1750266195IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000005720.05149448
Withdraw187314002025-05-06 15:45:35264 days ago1746546335IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.00000190.0455525
Withdraw185613262025-05-01 2:12:23270 days ago1746065543IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000005820.09899555
Apply Withdrawal183792402025-04-25 15:45:00275 days ago1745595900IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000009850.15243578
Withdraw171556962025-03-20 8:37:41312 days ago1742459861IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000066351.59
Apply Withdrawal169519182025-03-15 2:05:35317 days ago1742004335IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000004950.0446048
Apply Withdrawal168822082025-03-13 9:17:52319 days ago1741857472IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000267441.59
Apply Withdrawal165789332025-03-05 14:36:13326 days ago1741185373IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000004960.04471897
Apply Withdrawal165744962025-03-05 12:06:46326 days ago1741176406IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000004960.04471822
Withdraw164220952025-03-01 16:11:21330 days ago1740845481IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.0000030.05111325
Apply Withdrawal161780992025-02-23 15:38:25336 days ago1740325105IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000004320.04597677
Apply Withdrawal160962092025-02-21 13:13:12338 days ago1740143592IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000005320.04789952
Apply Withdrawal157253482025-02-12 7:38:40348 days ago1739345920IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000004520.04816613
Withdraw151742382025-01-29 8:28:28362 days ago1738139308IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000002090.05031303
Apply Withdrawal149978622025-01-24 22:05:57366 days ago1737756357IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000005070.04564943
Withdraw146646402025-01-16 16:36:41374 days ago1737045401IN
Dyson Finance: WETH - USDC Gauge
0 ETH0.000008270.14066596
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
283187352026-01-26 3:03:506 hrs ago1769396630
Dyson Finance: WETH - USDC Gauge
0 ETH
283187262026-01-26 3:03:286 hrs ago1769396608
Dyson Finance: WETH - USDC Gauge
0 ETH
283187182026-01-26 3:03:106 hrs ago1769396590
Dyson Finance: WETH - USDC Gauge
0 ETH
283187082026-01-26 3:02:466 hrs ago1769396566
Dyson Finance: WETH - USDC Gauge
0 ETH
283187002026-01-26 3:02:286 hrs ago1769396548
Dyson Finance: WETH - USDC Gauge
0 ETH
282874642026-01-25 6:52:1226 hrs ago1769323932
Dyson Finance: WETH - USDC Gauge
0 ETH
282811632026-01-25 2:57:2630 hrs ago1769309846
Dyson Finance: WETH - USDC Gauge
0 ETH
282811542026-01-25 2:57:0430 hrs ago1769309824
Dyson Finance: WETH - USDC Gauge
0 ETH
282811452026-01-25 2:56:4430 hrs ago1769309804
Dyson Finance: WETH - USDC Gauge
0 ETH
282811052026-01-25 2:55:1830 hrs ago1769309718
Dyson Finance: WETH - USDC Gauge
0 ETH
282810922026-01-25 2:54:5230 hrs ago1769309692
Dyson Finance: WETH - USDC Gauge
0 ETH
282696292026-01-24 19:28:5238 hrs ago1769282932
Dyson Finance: WETH - USDC Gauge
0 ETH
282435442026-01-24 2:53:402 days ago1769223220
Dyson Finance: WETH - USDC Gauge
0 ETH
282435282026-01-24 2:53:082 days ago1769223188
Dyson Finance: WETH - USDC Gauge
0 ETH
282435172026-01-24 2:52:462 days ago1769223166
Dyson Finance: WETH - USDC Gauge
0 ETH
282435062026-01-24 2:52:242 days ago1769223144
Dyson Finance: WETH - USDC Gauge
0 ETH
282434982026-01-24 2:52:042 days ago1769223124
Dyson Finance: WETH - USDC Gauge
0 ETH
282306602026-01-23 18:45:422 days ago1769193942
Dyson Finance: WETH - USDC Gauge
0 ETH
282226942026-01-23 13:54:182 days ago1769176458
Dyson Finance: WETH - USDC Gauge
0 ETH
282226942026-01-23 13:54:182 days ago1769176458
Dyson Finance: WETH - USDC Gauge
0 ETH
282226942026-01-23 13:54:182 days ago1769176458
Dyson Finance: WETH - USDC Gauge
0 ETH
281989802026-01-22 23:49:083 days ago1769125748
Dyson Finance: WETH - USDC Gauge
0 ETH
281989612026-01-22 23:48:303 days ago1769125710
Dyson Finance: WETH - USDC Gauge
0 ETH
281989512026-01-22 23:48:103 days ago1769125690
Dyson Finance: WETH - USDC Gauge
0 ETH
281989402026-01-22 23:47:483 days ago1769125668
Dyson Finance: WETH - USDC Gauge
0 ETH
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

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

Contract Name:
Gauge

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

pragma solidity 0.8.17;

// SPDX-License-Identifier: AGPL-3.0-only

import "interface/IFarm.sol";
import "./lib/SqrtMath.sol";
import "./lib/TransferHelper.sol";

/// @title Gauge is a voting contract for liquidity pool
/// @notice Each liquidity pool will have its own Gauge contract.
/// User deposit sGOV token, i.e., sDYSON token, to Gauge contract to earn additional reward.
/// This is an ERC20 contract with checkpoints.
contract Gauge {
    using SqrtMath for *;
    using TransferHelper for address;

    uint private constant REWARD_RATE_BASE_UNIT = 1e18;
    uint private constant BONUS_MULTIPLIER = 22.5e36;
    uint private constant MAX_BONUS = 1.5e18;

    IFarm public immutable farm;
    /// @dev sGOV token, i.e., sDYSON token
    address public immutable SGOV;
    /// @notice Pool Id of the liquidity pool registered in Farm contract
    address public immutable poolId;
    /// @notice The first week this contract is deployed
    uint public immutable genesis;

    /// @notice Weight determines the how much reward user can earn in Farm contract.
    /// The higher the `weight`, the lower the reward
    uint public weight;
    /// @notice This is the latest total supply
    /// Use `totalSupplyAt` to query total supply in previous week
    uint public totalSupply;
    /// @notice Base reward rate
    uint public base;
    /// @notice Slope of reward rate
    /// The higher the `slope`, the faster the reward rate increases
    uint public slope;
    /// @notice Current week, i.e., number of weeks since 1970/01/01. Checkpoint is recored on per week basis
    /// @dev IMPORTANT: `thisWeek` is updated by calling `tick`, `deposit` or `applyWithdrawal`.
    /// It is EXPECTED that either one of these functions are called at least once every week
    uint public thisWeek;
    address public owner;

    struct Checkpoint {
        uint week;
        uint amount;
    }

    /// @notice Number of checkpoints user has recorded
    mapping(address => uint) public numCheckpoints;
    mapping(address => mapping(uint => Checkpoint)) checkpoints;
    mapping(uint => uint) internal _totalSupplyAt;
    /// @notice Total amount of sGov token pending for withdrawal
    mapping(address => uint) public pendingWithdrawal;
    /// @notice The week user can complete his withdrawal
    mapping(address => uint) public weekToWithdraw;

    event TransferOwnership(address newOwner);
    event Deposit(address indexed user, address depositor, uint indexed week, uint amount);
    event ApplyWithdrawal(address indexed user, uint indexed week, uint amount);
    event Withdraw(address indexed user, uint amount);

    constructor(address _farm, address _sgov, address _poolId, uint _weight, uint _base, uint _slope) {
        require(_sgov != address(0), "sgov cannot be zero");
        owner = msg.sender;
        farm = IFarm(_farm);
        SGOV = _sgov;
        poolId = _poolId;
        weight = _weight;
        base = _base;
        slope = _slope;
        thisWeek = block.timestamp / 1 weeks;
        genesis = block.timestamp / 1 weeks;
    }

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

    function transferOwnership(address _owner) external onlyOwner {
        require(_owner != address(0), "owner cannot be zero");
        owner = _owner;

        emit TransferOwnership(_owner);
    }

    /// @notice rescue token stucked in this contract
    /// @param tokenAddress Address of token to be rescued
    /// @param to Address that will receive token
    /// @param amount Amount of token to be rescued
    function rescueERC20(address tokenAddress, address to, uint256 amount) onlyOwner external {
        require(tokenAddress != SGOV);
        tokenAddress.safeTransfer(to, amount);
    }

    function setParams(uint _weight, uint _base, uint _slope) external onlyOwner {
        weight = _weight;
        base = _base;
        slope = _slope;
    }

    /// @notice User's latest balance, i.e., balance recorded in user's latest checkpoint
    function balanceOf(address account) public view returns (uint) {
        uint nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].amount : 0;
    }

    /// @notice User's balance at given week. If no checkpoint recorded at given week,
    /// search for latest checkpoint amoung previous ones.
    /// @dev Due to first `require` check, you can't query balance of current week. Use `balanceOf` instead.
    /// @param account User's address
    /// @param week The week we are interested to find out user's balance
    /// @return User's balance at given week
    function balanceOfAt(address account, uint week) external view returns (uint) {
        require(week < block.timestamp / 1 weeks, "not yet");
        require(week <= thisWeek, "not yet");
        uint nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }
        // Check user's balance in latest checkpoint
        if (checkpoints[account][nCheckpoints - 1].week <= week) {
            return checkpoints[account][nCheckpoints - 1].amount;
        }
        // Check user's balance in his first checkpoint
        if (checkpoints[account][0].week > week) {
            return 0;
        }
        // Binary search to find user's balance in the checkpoint closest to given `week`
        uint lower = 0;
        uint upper = nCheckpoints - 1;
        while (upper > lower) {
            uint center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.week == week) {
                return cp.amount;
            } else if (cp.week < week) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].amount;
    }

    /// @dev If this is a new week, add a new checkpoint
    function _writeCheckpoint(address account, uint amount) internal {
        uint _week = block.timestamp / 1 weeks;
        uint nCheckpoints = numCheckpoints[account];
        if (nCheckpoints > 0 && checkpoints[account][nCheckpoints - 1].week == _week) {
            checkpoints[account][nCheckpoints - 1].amount = amount;
        } else {
            checkpoints[account][nCheckpoints] = Checkpoint(_week, amount);
            numCheckpoints[account]++;
        }
    }

    function totalSupplyAt(uint week) public view returns (uint) {
        require(week < block.timestamp / 1 weeks, "not yet");

        if (week >= thisWeek) {
            return totalSupply;
        }
        else {
            return _totalSupplyAt[week];
        }
    }

    /// @notice If this is a new week, update `thisWeek`, reward rate and record total supply of past week
    function tick() public {
        uint _week = block.timestamp / 1 weeks;

        if (_week > thisWeek) {
            for(uint i = thisWeek; i < _week; ++i) {
                _totalSupplyAt[i] = totalSupply;
            }
            thisWeek = _week;
            _updateRewardRate();
        }
    }

    /// @dev Update latest total supply and trigger `tick`
    function updateTotalSupply(uint _totalSupply) internal {
        tick();
        totalSupply = _totalSupply;
    }

    /// @notice Compute new reward rate base on latest total supply, `slope` and `base`
    function nextRewardRate() public view returns (uint newRewardRate) {
        // rewardRate = token * slope + base
        newRewardRate = totalSupply * slope / REWARD_RATE_BASE_UNIT + base;
    }

    /// @dev Update reward rate recorded in Farm contract
    function _updateRewardRate() internal {
        try farm.setPoolRewardRate(poolId, nextRewardRate(), weight) {} catch {}
    }

    /// @notice Deposit sGov token on behalf of `to`
    /// @param amount Amount of sGov token
    /// @param to Address that owns the amount of sGov token
    function deposit(uint amount, address to) external {
        require(amount > 0, "cannot deposit 0");
        SGOV.safeTransferFrom(msg.sender, address(this), amount);
        _writeCheckpoint(to, balanceOf(to) + amount);
        updateTotalSupply(totalSupply + amount);
        emit Deposit(to, msg.sender, block.timestamp / 1 weeks, amount);
    }

    /// @notice User requests for withdrawal of his sGov token
    /// Withdrawal will have a delay of 1 week
    /// @param amount Amount of sGov token to withdraw
    function applyWithdrawal(uint amount) external {
        require(amount > 0 ,"cannot withdraw 0");
        require(amount <= balanceOf(msg.sender) ,"cannot withdraw more than balance");
        uint _week = block.timestamp / 1 weeks;
        _writeCheckpoint(msg.sender, balanceOf(msg.sender) - amount);
        updateTotalSupply(totalSupply - amount);
        pendingWithdrawal[msg.sender] += amount;
        weekToWithdraw[msg.sender] = _week + 1;
        emit ApplyWithdrawal(msg.sender, _week, amount);
    }

    /// @notice User completes his withdrawal
    /// @return amount Amount of sGov token withdrawn
    function withdraw() external returns (uint amount) {
        require(block.timestamp / 1 weeks >= weekToWithdraw[msg.sender], "not yet");
        amount = pendingWithdrawal[msg.sender];
        require(amount > 0 ,"cannot withdraw 0");
        pendingWithdrawal[msg.sender] = 0;
        SGOV.safeTransfer(msg.sender, amount);
        emit Withdraw(msg.sender, amount);
    }

    /// @notice User's bonus ratio computed base on his latest balance.
    /// Bonus ratio approaches max when balance gets closer to 1/10 of total supply.
    /// Bonus ratio will be capped at 1.5x
    /// @param user User's address
    /// @return _bonus User's bonus ratio 
    function bonus(address user) external view returns (uint _bonus) {
        uint balance = balanceOf(user);
        if(balance > 0) {
            _bonus = (balance * BONUS_MULTIPLIER / totalSupply).sqrt();
            _bonus = _bonus > MAX_BONUS ? MAX_BONUS : _bonus;
        }
    }

}

pragma solidity >=0.8.0;

// SPDX-License-Identifier: MIT

interface IFarm {
    event TransferOwnership(address newOwner);
    event RateUpdated(address indexed poolId, uint rewardRate, uint weight);
    event GrantSP(address indexed user, address indexed poolId, uint amountIn, uint amountOut);
    event Swap(address indexed user, address indexed parent, uint amountIn, uint amountOut);
    
    struct Pool {
        uint weight;
        uint rewardRate;
        uint lastUpdateTime;
        uint lastReserve;
        address gauge;
    }

    function agency() external view returns (address);
    function gov() external view returns (address);
    function owner() external view returns (address);
    function globalPool() external view returns (uint weight, uint rewardRate, uint lastUpdateTime, uint lastReserve, address gauge);
    function pools(address poolId) external view returns (uint weight, uint rewardRate, uint lastUpdateTime, uint lastReserve, address gauge);
    function balanceOf(address user) external view returns (uint);
    function cooldown(address user) external view returns (uint);
    function transferOwnership(address _owner) external;
    function rescueERC20(address tokenAddress, address to, uint256 amount) external;
    function setPool(address poolId, address gauge) external;
    function setPoolRewardRate(address poolId, uint rewardRate, uint weight) external;
    function setGlobalRewardRate(uint rewardRate, uint weight) external;
    function getCurrentPoolReserve(address poolId) view external returns (uint reserve);
    function getCurrentGlobalReserve() view external returns (uint reserve);
    function grantSP(address to, uint amount) external;
    function swap(address user) external returns (uint amountOut);
}

pragma solidity 0.8.17;

// SPDX-License-Identifier: AGPL-2.0

//https://github.com/Gaussian-Process/solidity-sqrt/blob/main/src/FixedPointMathLib.sol
library SqrtMath {
    function sqrt(uint256 x) internal pure returns (uint256 z) {
        assembly {
            // This segment is to get a reasonable initial estimate for the Babylonian method.
            // If the initial estimate is bad, the number of correct bits increases ~linearly
            // each iteration instead of ~quadratically.
            // The idea is to get z*z*y within a small factor of x.
            // More iterations here gets y in a tighter range. Currently, we will have
            // y in [256, 256*2^16). We ensure y>= 256 so that the relative difference
            // between y and y+1 is small. If x < 256 this is not possible, but those cases
            // are easy enough to verify exhaustively.
            z := 181 // The 'correct' value is 1, but this saves a multiply later
            let y := x
            // Note that we check y>= 2^(k + 8) but shift right by k bits each branch,
            // this is to ensure that if x >= 256, then y >= 256.
            if iszero(lt(y, 0x10000000000000000000000000000000000)) {
                y := shr(128, y)
                z := shl(64, z)
            }
            if iszero(lt(y, 0x1000000000000000000)) {
                y := shr(64, y)
                z := shl(32, z)
            }
            if iszero(lt(y, 0x10000000000)) {
                y := shr(32, y)
                z := shl(16, z)
            }
            if iszero(lt(y, 0x1000000)) {
                y := shr(16, y)
                z := shl(8, z)
            }
            // Now, z*z*y <= x < z*z*(y+1), and y <= 2^(16+8),
            // and either y >= 256, or x < 256.
            // Correctness can be checked exhaustively for x < 256, so we assume y >= 256.
            // Then z*sqrt(y) is within sqrt(257)/sqrt(256) of x, or about 20bps.

            // The estimate sqrt(x) = (181/1024) * (x+1) is off by a factor of ~2.83 both when x=1
            // and when x = 256 or 1/256. In the worst case, this needs seven Babylonian iterations.
            z := shr(18, mul(z, add(y, 65536))) // A multiply is saved from the initial z := 181

            // Run the Babylonian method seven times. This should be enough given initial estimate.
            // Possibly with a quadratic/cubic polynomial above we could get 4-6.
            z := shr(1, add(z, div(x, z)))
            z := shr(1, add(z, div(x, z)))
            z := shr(1, add(z, div(x, z)))
            z := shr(1, add(z, div(x, z)))
            z := shr(1, add(z, div(x, z)))
            z := shr(1, add(z, div(x, z)))
            z := shr(1, add(z, div(x, z)))

            // See https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division.
            // If x+1 is a perfect square, the Babylonian method cycles between
            // floor(sqrt(x)) and ceil(sqrt(x)). This check ensures we return floor.
            // The solmate implementation assigns zRoundDown := div(x, z) first, but
            // since this case is rare, we choose to save gas on the assignment and
            // repeat division in the rare case.
            // If you don't care whether floor or ceil is returned, you can skip this.
            if lt(div(x, z), z) {
                z := div(x, z)
            }
        }
    }
}

pragma solidity 0.8.17;

// SPDX-License-Identifier: AGPL-2.0

library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: approve failed');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: transfer failed');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: transferFrom failed');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'transferHelper: ETH transfer failed');
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "interface/=src/interface/",
    "util/=src/util/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
    "openzeppelin/=lib/openzeppelin-contracts/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_farm","type":"address"},{"internalType":"address","name":"_sgov","type":"address"},{"internalType":"address","name":"_poolId","type":"address"},{"internalType":"uint256","name":"_weight","type":"uint256"},{"internalType":"uint256","name":"_base","type":"uint256"},{"internalType":"uint256","name":"_slope","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"week","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ApplyWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":true,"internalType":"uint256","name":"week","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"SGOV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"applyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"week","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"base","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"bonus","outputs":[{"internalType":"uint256","name":"_bonus","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farm","outputs":[{"internalType":"contract IFarm","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRewardRate","outputs":[{"internalType":"uint256","name":"newRewardRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingWithdrawal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolId","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_weight","type":"uint256"},{"internalType":"uint256","name":"_base","type":"uint256"},{"internalType":"uint256","name":"_slope","type":"uint256"}],"name":"setParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slope","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tick","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"week","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"weekToWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

0x6101006040523480156200001257600080fd5b506040516200158938038062001589833981016040819052620000359162000118565b6001600160a01b038516620000905760405162461bcd60e51b815260206004820152601360248201527f73676f762063616e6e6f74206265207a65726f00000000000000000000000000604482015260640160405180910390fd5b600580546001600160a01b031916331790556001600160a01b0386811660805285811660a052841660c052600083905560028290556003819055620000d962093a80426200017e565b600455620000eb62093a80426200017e565b60e05250620001a1945050505050565b80516001600160a01b03811681146200011357600080fd5b919050565b60008060008060008060c087890312156200013257600080fd5b6200013d87620000fb565b95506200014d60208801620000fb565b94506200015d60408801620000fb565b9350606087015192506080870151915060a087015190509295509295509295565b6000826200019c57634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c05160e05161138b620001fe60003960006103490152600081816102300152610da80152600081816101b901528181610450015281816107ad0152610acf0152600081816102010152610d79015261138b6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636fcfff45116100de578063981b24d011610097578063a7f0b3de11610071578063a7f0b3de14610344578063b2118a8d1461036b578063d8cb4aa31461037e578063f2fde38b1461039157600080fd5b8063981b24d0146103085780639bdb78811461031b578063a1aab33f1461033b57600080fd5b80636fcfff451461029e57806370a08231146102be578063715fda7b146102d157806383caf275146102d95780638da5cb5b146102e25780639056206e146102f557600080fd5b80633e0dc34e116101305780633e0dc34e1461022b5780633eaf5d9f146102525780634ee2cd7e1461025c5780635001f3b51461026f5780635a0ce676146102785780636e553f651461028b57600080fd5b80630964c95b1461017857806318160ddd146101ab5780631b9e899f146101b4578063218d30b0146101f357806336e9332d146101fc5780633ccfd60b14610223575b600080fd5b610198610186366004611140565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b61019860015481565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101a2565b61019860045481565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6101986103a4565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b61025a6104b7565b005b61019861026a36600461115b565b610511565b61019860025481565b61025a610286366004611185565b610725565b61025a6102993660046111b1565b61075d565b6101986102ac366004611140565b60066020526000908152604090205481565b6101986102cc366004611140565b61085e565b6101986108c1565b61019860035481565b6005546101db906001600160a01b031681565b61025a6103033660046111dd565b6108f8565b6101986103163660046111dd565b610a4d565b610198610329366004611140565b600a6020526000908152604090205481565b61019860005481565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b61025a6103793660046111f6565b610aa3565b61019861038c366004611140565b610b24565b61025a61039f366004611140565b610b91565b336000908152600a60205260408120546103c162093a8042611248565b10156103e85760405162461bcd60e51b81526004016103df9061126a565b60405180910390fd5b50336000908152600960205260409020548061043a5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b3360008181526009602052604081205561047f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169083610c5c565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a290565b60006104c662093a8042611248565b905060045481111561050e576004545b81811015610500576001546000828152600860205260409020556104f98161128b565b90506104d6565b50600481905561050e610d77565b50565b600061052062093a8042611248565b821061053e5760405162461bcd60e51b81526004016103df9061126a565b6004548211156105605760405162461bcd60e51b81526004016103df9061126a565b6001600160a01b0383166000908152600660205260408120549081900361058b57600091505061071f565b6001600160a01b038416600090815260076020526040812084916105b06001856112a4565b81526020019081526020016000206000015411610605576001600160a01b0384166000908152600760205260408120906105eb6001846112a4565b81526020019081526020016000206001015491505061071f565b6001600160a01b038416600090815260076020908152604080832083805290915290205483101561063a57600091505061071f565b6000806106486001846112a4565b90505b818111156106f4576000600261066184846112a4565b61066b9190611248565b61067590836112a4565b6001600160a01b03881660009081526007602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908790036106ce5760200151945061071f9350505050565b80518711156106df578193506106ed565b6106ea6001836112a4565b92505b505061064b565b506001600160a01b038516600090815260076020908152604080832093835292905220600101549150505b92915050565b6005546001600160a01b0316331461074f5760405162461bcd60e51b81526004016103df906112b7565b600092909255600255600355565b600082116107a05760405162461bcd60e51b815260206004820152601060248201526f063616e6e6f74206465706f73697420360841b60448201526064016103df565b6107d56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085610e30565b6107f281836107e38461085e565b6107ed91906112da565b610f60565b6108088260015461080391906112da565b611074565b61081562093a8042611248565b60408051338152602081018590526001600160a01b038416917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a35050565b6001600160a01b038116600090815260066020526040812054806108835760006108ba565b6001600160a01b0383166000908152600760205260408120906108a76001846112a4565b8152602001908152602001600020600101545b9392505050565b6000600254670de0b6b3a76400006003546001546108df91906112ed565b6108e99190611248565b6108f391906112da565b905090565b6000811161093c5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b6109453361085e565b81111561099e5760405162461bcd60e51b815260206004820152602160248201527f63616e6e6f74207769746864726177206d6f7265207468616e2062616c616e636044820152606560f81b60648201526084016103df565b60006109ad62093a8042611248565b90506109c733836109bd3361085e565b6107ed91906112a4565b6109d88260015461080391906112a4565b33600090815260096020526040812080548492906109f79084906112da565b90915550610a0890508160016112da565b336000818152600a6020908152604091829020939093555184815283927f14f34b061b1da2da9b0c6e20f8b8407e1377641bc2999c22f40d60e632e44bf39101610852565b6000610a5c62093a8042611248565b8210610a7a5760405162461bcd60e51b81526004016103df9061126a565b6004548210610a8b57505060015490565b5060009081526008602052604090205490565b919050565b6005546001600160a01b03163314610acd5760405162461bcd60e51b81526004016103df906112b7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610b0b57600080fd5b610b1f6001600160a01b0384168383610c5c565b505050565b600080610b308361085e565b90508015610b8b57600154610b6890610b596f10ed57a5e12b1f6842257ae800000000846112ed565b610b639190611248565b611081565b91506714d1120d7b1600008211610b7f57816108ba565b6714d1120d7b16000091505b50919050565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016103df906112b7565b6001600160a01b038116610c085760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b60448201526064016103df565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610cb89190611304565b6000604051808303816000865af19150503d8060008114610cf5576040519150601f19603f3d011682016040523d82523d6000602084013e610cfa565b606091505b5091509150818015610d24575080511580610d24575080806020019051810190610d249190611333565b610d705760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c65640060448201526064016103df565b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f531c1fa7f0000000000000000000000000000000000000000000000000000000000000000610dcf6108c1565b6000546040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015610e2057600080fd5b505af192505050801561050e5750565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610e949190611304565b6000604051808303816000865af19150503d8060008114610ed1576040519150601f19603f3d011682016040523d82523d6000602084013e610ed6565b606091505b5091509150818015610f00575080511580610f00575080806020019051810190610f009190611333565b610f585760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b60648201526084016103df565b505050505050565b6000610f6f62093a8042611248565b6001600160a01b0384166000908152600660205260409020549091508015801590610fce57506001600160a01b03841660009081526007602052604081208391610fba6001856112a4565b815260200190815260200160002060000154145b15611011576001600160a01b03841660009081526007602052604081208491610ff86001856112a4565b815260208101919091526040016000206001015561106e565b60408051808201825283815260208082018681526001600160a01b0388166000818152600784528581208782528452858120945185559151600190940193909355918252600690529081208054916110688361128b565b91905055505b50505050565b61107c6104b7565b600155565b60b581600160881b811061109a5760409190911b9060801c5b690100000000000000000081106110b65760209190911b9060401c5b6501000000000081106110ce5760109190911b9060201c5b630100000081106110e45760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c808204811115610a9e57900490565b80356001600160a01b0381168114610a9e57600080fd5b60006020828403121561115257600080fd5b6108ba82611129565b6000806040838503121561116e57600080fd5b61117783611129565b946020939093013593505050565b60008060006060848603121561119a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156111c457600080fd5b823591506111d460208401611129565b90509250929050565b6000602082840312156111ef57600080fd5b5035919050565b60008060006060848603121561120b57600080fd5b61121484611129565b925061122260208501611129565b9150604084013590509250925092565b634e487b7160e01b600052601160045260246000fd5b60008261126557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600790820152661b9bdd081e595d60ca1b604082015260600190565b60006001820161129d5761129d611232565b5060010190565b8181038181111561071f5761071f611232565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b8082018082111561071f5761071f611232565b808202811582820484141761071f5761071f611232565b6000825160005b81811015611325576020818601810151858301520161130b565b506000920191825250919050565b60006020828403121561134557600080fd5b815180151581146108ba57600080fdfea26469706673582212206c6984da575ed1495b33d58d55314a6f10ac0ad68de2b00151c5390ade4e69f564736f6c634300081100330000000000000000000000004c5770abf8897e487671348cd59a2abf9f20d81b000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d000000000000000000000000cec911f803d984ae2e5a134b2d1521846699386900000000000000000000000000000000000000000000000000000086f8ec84e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636fcfff45116100de578063981b24d011610097578063a7f0b3de11610071578063a7f0b3de14610344578063b2118a8d1461036b578063d8cb4aa31461037e578063f2fde38b1461039157600080fd5b8063981b24d0146103085780639bdb78811461031b578063a1aab33f1461033b57600080fd5b80636fcfff451461029e57806370a08231146102be578063715fda7b146102d157806383caf275146102d95780638da5cb5b146102e25780639056206e146102f557600080fd5b80633e0dc34e116101305780633e0dc34e1461022b5780633eaf5d9f146102525780634ee2cd7e1461025c5780635001f3b51461026f5780635a0ce676146102785780636e553f651461028b57600080fd5b80630964c95b1461017857806318160ddd146101ab5780631b9e899f146101b4578063218d30b0146101f357806336e9332d146101fc5780633ccfd60b14610223575b600080fd5b610198610186366004611140565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b61019860015481565b6101db7f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d81565b6040516001600160a01b0390911681526020016101a2565b61019860045481565b6101db7f0000000000000000000000004c5770abf8897e487671348cd59a2abf9f20d81b81565b6101986103a4565b6101db7f000000000000000000000000cec911f803d984ae2e5a134b2d1521846699386981565b61025a6104b7565b005b61019861026a36600461115b565b610511565b61019860025481565b61025a610286366004611185565b610725565b61025a6102993660046111b1565b61075d565b6101986102ac366004611140565b60066020526000908152604090205481565b6101986102cc366004611140565b61085e565b6101986108c1565b61019860035481565b6005546101db906001600160a01b031681565b61025a6103033660046111dd565b6108f8565b6101986103163660046111dd565b610a4d565b610198610329366004611140565b600a6020526000908152604090205481565b61019860005481565b6101987f0000000000000000000000000000000000000000000000000000000000000b1981565b61025a6103793660046111f6565b610aa3565b61019861038c366004611140565b610b24565b61025a61039f366004611140565b610b91565b336000908152600a60205260408120546103c162093a8042611248565b10156103e85760405162461bcd60e51b81526004016103df9061126a565b60405180910390fd5b50336000908152600960205260409020548061043a5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b3360008181526009602052604081205561047f907f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d6001600160a01b03169083610c5c565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a290565b60006104c662093a8042611248565b905060045481111561050e576004545b81811015610500576001546000828152600860205260409020556104f98161128b565b90506104d6565b50600481905561050e610d77565b50565b600061052062093a8042611248565b821061053e5760405162461bcd60e51b81526004016103df9061126a565b6004548211156105605760405162461bcd60e51b81526004016103df9061126a565b6001600160a01b0383166000908152600660205260408120549081900361058b57600091505061071f565b6001600160a01b038416600090815260076020526040812084916105b06001856112a4565b81526020019081526020016000206000015411610605576001600160a01b0384166000908152600760205260408120906105eb6001846112a4565b81526020019081526020016000206001015491505061071f565b6001600160a01b038416600090815260076020908152604080832083805290915290205483101561063a57600091505061071f565b6000806106486001846112a4565b90505b818111156106f4576000600261066184846112a4565b61066b9190611248565b61067590836112a4565b6001600160a01b03881660009081526007602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908790036106ce5760200151945061071f9350505050565b80518711156106df578193506106ed565b6106ea6001836112a4565b92505b505061064b565b506001600160a01b038516600090815260076020908152604080832093835292905220600101549150505b92915050565b6005546001600160a01b0316331461074f5760405162461bcd60e51b81526004016103df906112b7565b600092909255600255600355565b600082116107a05760405162461bcd60e51b815260206004820152601060248201526f063616e6e6f74206465706f73697420360841b60448201526064016103df565b6107d56001600160a01b037f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d16333085610e30565b6107f281836107e38461085e565b6107ed91906112da565b610f60565b6108088260015461080391906112da565b611074565b61081562093a8042611248565b60408051338152602081018590526001600160a01b038416917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a35050565b6001600160a01b038116600090815260066020526040812054806108835760006108ba565b6001600160a01b0383166000908152600760205260408120906108a76001846112a4565b8152602001908152602001600020600101545b9392505050565b6000600254670de0b6b3a76400006003546001546108df91906112ed565b6108e99190611248565b6108f391906112da565b905090565b6000811161093c5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b6109453361085e565b81111561099e5760405162461bcd60e51b815260206004820152602160248201527f63616e6e6f74207769746864726177206d6f7265207468616e2062616c616e636044820152606560f81b60648201526084016103df565b60006109ad62093a8042611248565b90506109c733836109bd3361085e565b6107ed91906112a4565b6109d88260015461080391906112a4565b33600090815260096020526040812080548492906109f79084906112da565b90915550610a0890508160016112da565b336000818152600a6020908152604091829020939093555184815283927f14f34b061b1da2da9b0c6e20f8b8407e1377641bc2999c22f40d60e632e44bf39101610852565b6000610a5c62093a8042611248565b8210610a7a5760405162461bcd60e51b81526004016103df9061126a565b6004548210610a8b57505060015490565b5060009081526008602052604090205490565b919050565b6005546001600160a01b03163314610acd5760405162461bcd60e51b81526004016103df906112b7565b7f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d6001600160a01b0316836001600160a01b031603610b0b57600080fd5b610b1f6001600160a01b0384168383610c5c565b505050565b600080610b308361085e565b90508015610b8b57600154610b6890610b596f10ed57a5e12b1f6842257ae800000000846112ed565b610b639190611248565b611081565b91506714d1120d7b1600008211610b7f57816108ba565b6714d1120d7b16000091505b50919050565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016103df906112b7565b6001600160a01b038116610c085760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b60448201526064016103df565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610cb89190611304565b6000604051808303816000865af19150503d8060008114610cf5576040519150601f19603f3d011682016040523d82523d6000602084013e610cfa565b606091505b5091509150818015610d24575080511580610d24575080806020019051810190610d249190611333565b610d705760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c65640060448201526064016103df565b5050505050565b7f0000000000000000000000004c5770abf8897e487671348cd59a2abf9f20d81b6001600160a01b031663f531c1fa7f000000000000000000000000cec911f803d984ae2e5a134b2d15218466993869610dcf6108c1565b6000546040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015610e2057600080fd5b505af192505050801561050e5750565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610e949190611304565b6000604051808303816000865af19150503d8060008114610ed1576040519150601f19603f3d011682016040523d82523d6000602084013e610ed6565b606091505b5091509150818015610f00575080511580610f00575080806020019051810190610f009190611333565b610f585760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b60648201526084016103df565b505050505050565b6000610f6f62093a8042611248565b6001600160a01b0384166000908152600660205260409020549091508015801590610fce57506001600160a01b03841660009081526007602052604081208391610fba6001856112a4565b815260200190815260200160002060000154145b15611011576001600160a01b03841660009081526007602052604081208491610ff86001856112a4565b815260208101919091526040016000206001015561106e565b60408051808201825283815260208082018681526001600160a01b0388166000818152600784528581208782528452858120945185559151600190940193909355918252600690529081208054916110688361128b565b91905055505b50505050565b61107c6104b7565b600155565b60b581600160881b811061109a5760409190911b9060801c5b690100000000000000000081106110b65760209190911b9060401c5b6501000000000081106110ce5760109190911b9060201c5b630100000081106110e45760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c808204811115610a9e57900490565b80356001600160a01b0381168114610a9e57600080fd5b60006020828403121561115257600080fd5b6108ba82611129565b6000806040838503121561116e57600080fd5b61117783611129565b946020939093013593505050565b60008060006060848603121561119a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156111c457600080fd5b823591506111d460208401611129565b90509250929050565b6000602082840312156111ef57600080fd5b5035919050565b60008060006060848603121561120b57600080fd5b61121484611129565b925061122260208501611129565b9150604084013590509250925092565b634e487b7160e01b600052601160045260246000fd5b60008261126557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600790820152661b9bdd081e595d60ca1b604082015260600190565b60006001820161129d5761129d611232565b5060010190565b8181038181111561071f5761071f611232565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b8082018082111561071f5761071f611232565b808202811582820484141761071f5761071f611232565b6000825160005b81811015611325576020818601810151858301520161130b565b506000920191825250919050565b60006020828403121561134557600080fd5b815180151581146108ba57600080fdfea26469706673582212206c6984da575ed1495b33d58d55314a6f10ac0ad68de2b00151c5390ade4e69f564736f6c63430008110033

Block Transaction Gas Used Reward
view all blocks sequenced

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

OVERVIEW

WETH-USDC Gauge is a instance of the Gauge contract, which is a voting contract associated with a specific liquidity pair, and each liquidity pair has its own dedicated Gauge contract. The Farm utilizes these Gauges to determine how Dyson Points are distributed to liquidity providers.

Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.