Everstrat Docs home
Changelog

Contract updates

Protocol upgrades, permissions, and configuration changes.

Governance can now pull funds from one strategy into Controller

Controller 1.1.0 is active on mainnet, letting the admin timelock move a specific strategy's funds back into Controller for strategy migrations.

  • Funds always return to Controller; governance cannot send them to any other address.
  • The Controller proxy address stays the same.
  • Keeper access remains available; SECURITY gains no new permission.
Details & sources

Controller 1.1.0 activated

Executed on mainnet. Upgraded the Controller proxy to 1.1.0. The admin timelock can now call withdrawFromStrategy alongside the keeper, providing a governed path to move a specific strategy's funds back into Controller for migration. The function has no recipient parameter: StrategyManager always withdraws to the Controller, so governance cannot transfer strategy funds to any other address. SECURITY does not gain that permission. The proxy address remains unchanged.

Evidence: contracts #52, governance 018 payload, and execution receipt, block 26,176,319, 12:13:23 UTC. The receipt contains the implementation upgrade and timelock execution events. The proposal's older Scheduled wording predates this execution.

Controller 1.1.0 is ready for upgrade

The implementation letting ADMIN move a single strategy's funds into Controller merged. Its mainnet proxy upgrade followed on October 12.

Details & sources

Controller 1.1.0 implementation merged

Merged. Added ADMIN authorization to the single-strategy withdrawal function, which returns funds to Controller only, and changed version() from 1.0.0 to 1.1.0. This source milestone preceded the October 12 proxy upgrade; it did not itself activate the permission on mainnet.

Source: contracts #52.

The 15% performance fee is enabled

The protocol now charges 15% of eligible accrued Uniswap V3 LP trading fees.

  • The fee is settled by minting EVE to the DAO treasury.
  • Deposits and general NAV growth are not the fee basis.
Details & sources

Performance fee enabled

Executed on mainnet. Changed StrategyManager.performanceFeeBps from 0 to 1500 (15%). The fee applies to eligible accrued Uniswap V3 LP fees and is settled by minting EVE to the DAO treasury. It is not a fee on deposits or all NAV growth.

Evidence: governance 014, execution receipt, block 26,061,384, 11:39:47 UTC. See Performance fee.

UNI valuation and accounting support

The UNI/USD price feed and supported-token registration are active, preparing the protocol for the UNI/WETH strategy.

Details & sources

UNI oracle and supported-token registration

Executed on mainnet. Added the UNI/USD feed with a 4200-second staleness bound and added UNI to StrategyManager's supported ERC-20 set. These calls prepared token valuation and accounting; the UNI/WETH strategy was registered on September 26.

Evidence: governance 013. The feed call executed at block 26,036,243, 23:15:47 UTC, and the supported-token call at block 26,036,248, 23:16:47 UTC.

More margin around the USDT feed heartbeat

The USDT price-feed freshness window increases from 24 hours to 24 hours 30 minutes.

Details & sources

USDT feed staleness margin

Executed on mainnet. Increased the USDT/USD staleness interval from 86400 to 88200 seconds to allow heartbeat jitter while preserving a finite freshness bound.

Evidence: governance 010, execution receipt, block 25,989,820, 11:44:47 UTC.

ETH and USDC feed freshness windows adjusted

Oracle freshness bounds gain a margin for normal feed-update timing: 70 minutes for ETH/WETH and 23 hours 30 minutes for USDC.

Details & sources

ETH and USDC feed staleness margins

Executed on mainnet. Increased the WETH and native-ETH feed staleness bounds from 3600 to 4200 seconds, and USDC from 82800 to 84600 seconds.

Evidence: governance 008. Execution receipts: WETH at block 25,983,142, 13:24:11 UTC; native ETH at block 25,983,200, 13:35:59 UTC; and USDC at block 25,983,206, 13:37:11 UTC.

USDT valuation and accounting are enabled

USDT gets a USD price feed and joins the protocol’s supported-token set.

Details & sources

USDT valuation and accounting support

Executed on mainnet. Registered the USDT/USD feed with an initial 86400-second staleness bound, then added USDT to StrategyManager's supported-token set.

Evidence: governance 006 and 007. The feed registration executed at block 25,968,966, 13:59:11 UTC; the supported-token registration at block 25,970,736, 19:53:47 UTC.

USDC accounting and Uniswap conversion are enabled

USDC joins the supported-token set, and the Uniswap V3 Converter adapter is authorized.

Details & sources

USDC accounting and Uniswap adapter enabled

Executed on mainnet. Added USDC to StrategyManager's supported ERC-20 set and allowed the Uniswap V3 Converter adapter. Adapter authorization is separate from registering a strategy.

Evidence: governance 004 and 005. The USDC call executed at block 25,933,686, 15:57:47 UTC; the adapter call at block 25,934,444, 18:30:11 UTC.

USD price feeds for USDC and WETH

The first USDC/USD and WETH/USD feeds are registered on mainnet.

Details & sources

USDC and WETH USD feeds registered

Executed on mainnet. Configured the USDC/USD and WETH/USD reference feeds with initial staleness bounds of 82800 and 3600 seconds. Later bounds are recorded above.

Evidence: governance 003, execution receipt, block 25,925,347, 12:02:11 UTC.

The Everstrat EVE token is registered

The Registry points to the new token named Everstrat, with the symbol EVE. The unused bootstrap token is replaced.

Details & sources

Everstrat EVE token registered

Executed on mainnet. Repointed Registry's EVE key to the re-deployed token named Everstrat, symbol EVE. The original bootstrap token had no supply. Canonical token and proxy addresses are maintained in Contract addresses.

Evidence: governance 002, execution receipt, block 25,897,546, 15:01:59 UTC.

Keeper executors are rebuilt around a caller allowlist

Vendor-neutral keeper executors replace the CRE receivers. Any allowlisted automation address, such as a Mimic smart account, can call them.

Details & sources

CRE receivers replaced by caller-allowlist executors

Merged. Removed the CRE/Keystone receivers merged on August 14 (CREReceiverBase, CREQueueExecutor, CREStrategyExecutor) and replaced them with KeeperExecutorBase, QueueKeeperExecutor, and StrategyKeeperExecutor. Instead of forwarder and workflow-identity checks, the new executors admit calls from an ADMIN-managed caller allowlist (allowExecutorCaller), so any per-operator automation address can drive them. Executor version is 2.1.0-mimic. The PR passed through an intermediate Gelato-based version before the final Mimic-oriented naming; only the final state reached main. Off-chain migration and on-chain caller authorization have separate dates in Automation.

Source: contracts #46.

Keeper receipts report what actually moved

Controller methods return achieved amounts so keeper receipts reflect execution results.

  • Unpriced, cancellable exits no longer drive strategy-withdrawal liabilities.
  • Empty whole-batch processing becomes a no-op.
  • Deposit eligibility checks the strategy’s deposit weight.
Details & sources

Keeper liabilities and achieved amounts

Merged. Excluded unpriced, cancellable exits from strategy-keeper withdrawal liabilities. Controller deposit, withdrawal, and harvest methods return achieved amounts, which the strategy executor uses in receipts instead of requested estimates. Empty whole-batch processing becomes a no-op, and deposit eligibility also checks nonzero deposit weight.

Source: contracts #43. The returned amounts change the Controller ABI; clients should use the matching interfaces.

Share pricing accounts for priced exits

Live pricing and fee minting now account for in-window priced redemption liabilities and escrowed EVE.

  • Minting happens before ETH is forwarded to Controller.
  • Deployment checks enforce the timelock floor, proposer, and whitelist setup.
Details & sources

Priced-queue share accounting and deployment checks

Merged. Live pricing and fee minting deduct in-window priced redemption liabilities and their escrowed EVE. Unpriced requests remain equity; expired unprocessed requests stop contributing to those offsets and recover through cancellation/closure. Added a 25-live-priced-batch bound. The ExitQueue storage-layout change requires migration planning for an initialized proxy.

Also reordered minting before the ETH transfer to Controller, and hardened deployment checks for the 48-hour timelock floor, a nonzero proposer, and Whitelist registration before finalization.

Sources: contracts #39, #16, and #41. Strategy circuit-breaker changes are recorded in Strategy updates.

Emergency Converter pause and new keeper receivers

SECURITY can pause Converter immediately; unpausing remains an admin action. Historical CRE receivers replace the earlier automation contracts.

Details & sources

Converter emergency pause and CRE executor implementation

Merged. SECURITY gained permission to pause Converter; unpause remained ADMIN-only. Replaced the legacy Chainlink Automation executors with CRE/Keystone receivers, including forwarder/workflow authentication and replay guards. This historical CRE integration was subsequently superseded by the Mimic-compatible executor plane.

Sources: contracts #17 and #5.

Strategy activation goes through the timelock

Deploying a strategy and activating it are now separate steps. Adapter authorization and strategy registration use the admin timelock.

Details & sources

Timelocked strategy go-live

Merged. Unified deployment flows so adapter allowlisting and strategy registration go through the admin timelock. Core deployment, adapter deployment, strategy deployment, and authorization are distinct steps. Deployment configuration became explicit for performance fees and keeper roles.

Source: contracts #1.

About this history

Dates are UTC. Merged entries use source merge dates and do not establish deployment. Executed on mainnet entries were checked against successful transaction receipts and block timestamps. Strategy implementation and registration history lives in Strategy updates; off-chain keeper changes live in Automation. Addresses remain in the canonical reference.

Last updated on