• © Goverland Inc. 2026
  • v1.0.1
  • Privacy Policy
  • Terms of Use
GearboxGearboxby0xab025D1Cb886D8464f6aECfC7144C6c4D07aa6D8desnakeee.eth

[GIP-226] Remove controllers, fix staleness periods and multiple small improvements

Voting ended 11 months agoSucceeded

Author

desnake

Summary

List of proposed improvements:

  • Remove dependencies from ControllerTimelockV3 from the protocol contracts by setting corresponding addresses to Null address: 0x0000000000000000000000000000000000000000.
  • Redeploy multiple price feeds to fix incorrectly set staleness periods.
  • Set zero price feed to USDecrvUSD
  • Set nonzero maxRate for DVstETH
  • Set nonzero liquidation fee in tBTC CMs
  • Set zero quota limits and LTs for stkcvxcrvUSDUSDC, stkcvxcrvUSDUSDT, stkcvxcrvUSDFRAX, stkcvxcrvFRAX, stkcvxcrvUSDETHCRV, stkcvxcrvUSDTWBTCWETH phantom tokens.

Motivation

ControllerTimelockV3 removal

The controller is an alternative role that can call certain less dangarous functions. So while adding new collaterals, immediately changing LTs, allowing new adapters are configurator-only functions, ramping LTs slowly or changing debt limits are also callable by controller in addition to configurator. In 3.1, which will be release soon, we will have an emergencyAdmin role with a more intuitive flow. In the meantime, in case of emergency, the contract can be paused / assets can be forbidden by pausable admin. The controller is set per-contract.

Historically Controller Timelock was rarely utilized, with the last time being used in [GIP-117] to urgently raise limits during LRT mania. It proves uselessness of this entity and leads to proposal to remove it to reduce the system complexity.

Staleness periods fix

Staleness periods are set using the Heartbeat parameter specified in Chainlink an other chainlink-compatible push oracles. The heartbeat parameter of 86400s means that the price feed's update will be initiated at least once in 86400 seconds. However, the actual output price changes with some delay, creating the need to set staleness period to equal Heartbeat + buffer with 15 minutes being enough additional time.

The dev team has discovered that some feeds' staleness periods don't incorporate the buffer, and this proposal is to fix it.

Specification

Controller removal

Call setController method of the following Pools, corresponding PoolQuotaKeepers and Gauges with 0x0000000000000000000000000000000000000000 address:

Mainnet

  • Pools (+ PoolQuotaKeepers and Gauges connected to the pools):
    • Trade USDC v3
    • Trade WBTC v3
    • Trade WETH v3
    • USDT v3
    • GHO v3
    • DAI v3
    • Universal USDT v3
    • crvUSD v3
    • Trade DOLA v3
    • Trade tBTC v3
    • wstETH v3

Arbitrum:

  • Pools (+ PoolQuotaKeepers and Gauges connected to the pools):
    • Main USDC.e v3
    • Main WETH v3
    • Main USDC v3

Optimism:

  • Pools (+ PoolQuotaKeepers and Gauges connected to the pools):
    • Main USDC.e v3
    • WETH v3
    • Main USDC v3

Sonic:

  • Pools (+ PoolQuotaKeepers and Gauges connected to the pools):
    • USDC.e v3 Sonic
    • wS v3 Sonic

Price Feeds fix

Sonic

  • USDC.e
    • Main:
      • Chainlink USDC/USD feed (0x55bCa887199d5520B3Ce285D41e6dC10C08716C9) Staleness period: 87300 seconds
  • WETH
    • Main:
      • Chainlink WETH/USD feed (0x824364077993847f71293B24ccA8567c00c2de11) Staleness period: 87300 seconds
  • wS
    • Main:
      • Chainlink S/USD feed (0xc76dFb89fF298145b417d221B2c747d84952e01d) Staleness period: 87300 seconds
  • stS
    • Main:
      • Composite price feed
        • Feed0: Redstone stS_FUNDAMENTAL
        • Feed1:
          • Chainlink S/USD feed (0xc76dFb89fF298145b417d221B2c747d84952e01d) Staleness period: 87300 seconds
    • Reserve:
      • Chainlink S/USD feed (0xc76dFb89fF298145b417d221B2c747d84952e01d) Staleness period: 87300 seconds
  • scUSD
    • Main:
      • Chainlink USDC/USD feed (0x55bCa887199d5520B3Ce285D41e6dC10C08716C9) Staleness period: 87300 seconds

Mainnet

  • USDL
    • Main:
      • Chainlink USDC/USD feed (0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6) Staleness period: 87300 seconds
  • csUSDL
    • Main:
      • ERC4626 (0xbeefc011e94f43b8b7b455ebab290c7ab4e216f1):
        • ERC4626 (0xbdc7c08592ee4aa51d06c27ee23d5087d65adbcd):
          • Chainlink USDC/USD feed (0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6) Staleness period: 87300 seconds
    • Reserve:
      • Chainlink USDC/USD feed (0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6) Staleness period: 87300 seconds
  • wUSDL
    • Main:
      • ERC4626 (0xbdc7c08592ee4aa51d06c27ee23d5087d65adbcd):
        • Chainlink USDC/USD feed (0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6) Staleness period: 87300 seconds

wstETH v3 Pool on Mainnet

Set maxRate for DVstETH to 3%

tBTC liquidation fee

Set feeLiquidation and feeLiquidationExpired to 0.1% in Trade tBTC Tier 1, tBTC Correlated Tier 1, tBTC Correlated Tier 2 CMs.

Phantom tokens' limits

  • For stkcvxcrvUSDUSDC, stkcvxcrvUSDUSDT, stkcvxcrvUSDFRAX and stkcvxcrvFRAX tokens:
    • Set zero quota limits in Trade USDC v3 Pool
    • Set zero LTs in Farm USDC CM
  • For stkcvxcrvUSDETHCRV and stkcvxcrvUSDTWBTCWETH tokens:
    • Set zero quota limits in Trade WETH v3 Pool
    • Set zero LTs in Farm WETH CM

Transaction log

Transaction log can be found here Md5 checksums are as follows: Mainnet: md5 checksum: 16919d79c8c192c1d7d6201b66afe2d4

Arbitrum: md5 checksum: 67f0703c7c1c54d6639e1bf3b0e55a54

Optimism: md5 checksum: 021990bc7fc7b24335832762441e0dbc

Sonic: md5 checksum: 2303b13f0f3f6dee92aa7528410282a6

Off-Chain Vote

For
213.98M GEAR100%
Against
0 GEAR0%
Abstain
0 GEAR0%
Quorum:107%
Download mobile app to vote

Discussion

Gearbox[GIP-226] Remove controllers, fix staleness periods and multiple small improvements

Timeline

Mar 19, 2025Proposal created
Mar 19, 2025Proposal vote started
Mar 22, 2025Proposal vote ended
Dec 22, 2025Proposal updated