# Update the INV Price Feed - 2

**URL:** <https://forum.inverse.finance/t/update-the-inv-price-feed-2/628>\
**Category:** Inverse Finance DAO\
**Created:** [November 19, 2025, 1:01pm UTC](https://forum.inverse.finance/t/update-the-inv-price-feed-2/628 "2025-11-19T13:01:09Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![cryptoharry](https://sea1.discourse-cdn.com/inverse/user_avatar/forum.inverse.finance/cryptoharry/32/22_2.png) [@cryptoharry](https://forum.inverse.finance/u/cryptoharry)\
**Post date:** [November 19, 2025, 1:01pm UTC](https://forum.inverse.finance/t/update-the-inv-price-feed-2/628/1 "2025-11-19T13:01:09Z")

</div>

# Update INV Price Feed to Dynamic-Fee INV/WETH Curve Oracle

## Summary

This proposal updates the INV/USD price feed used by FiRM and Frontier to:

1. Migrate from the current [INV/WETH](https://etherscan.io/address/0x6bd88c57523bf138a19b263e8ebc8661c836b171) Curve pool to the new higher-fee [INV/WETH](https://etherscan.io/address/0xdcd90d866ff9636e5a04768825d05d27b3fb19ec) Curve pool; and
2. Replace the existing `ChainlinkCurve2CoinsFeed` with a new `DynamicFeeCurveFeed` that explicitly accounts for the Curve pool’s trading fee.

The goal is for FiRM and Frontier to use a price that reflects INV’s net-of-fee executable value in our main liquidity pool.

## Background

- INV is currently priced via a Chainlink + Curve oracle:
  - Chainlink WETH/USD price, combined with
  - Curve INV/WETH twocrypto-ng EMA (`price_oracle()`).

- The DAO is migrating INV liquidity and routing to a new INV/WETH Curve pool configured with a higher trading fee.
- With the higher fee, the mid-price from the pool (EMA) overstates the value a liquidator can actually realize after paying fees.

To keep the oracle aligned with where INV trades and make pricing slightly more conservative, we introduce a dynamic-fee-aware variant.

## DynamicFeeCurveFeed Overview

The new oracle contract, `DynamicFeeCurveFeed`, keeps the same basic structure:

- Uses `IChainlinkBasePriceFeed` for WETH → USD (18 decimals).
- Uses the new INV/WETH Curve pool for:
  - `price_oracle()` (EMA of the INV/WETH rate), and
  - `fee()` (dynamic pool fee, 1e10 precision).

- Returns INV/USD with 18 decimals and description INV / USD.

Price calculation (simplified):

- Get `pairedTokenToUsdPrice` (WETH/USD) from Chainlink.
- Get `crvOraclePrice` from `curvePool.price_oracle()`, which is WETH/INV
- Compute INV/USD
- Fetch `fee = curvePool.fee()`, clamp it to `maxFee` (initially 2%, equal to the pools maximum fee).
- Apply the discount: `usdPrice = usdPrice * (1 - fee)`.

This makes the oracle reflect a post-fee price, bounded by a governance-controlled maxFee (0–100%).

The contract also includes a simple gov / pendingGov pattern and a setMaxFee(int \_maxFee) function restricted to gov.

## Rationale

- We are already relying on the INV/WETH Curve pool as the main liquidity venue for INV.
- With the new pool’s higher fee, using a pure mid-price (price\_oracle()) overestimates the value available to liquidators and arbitrageurs.
- Applying the Curve fee in the oracle:
  - Keeps assumptions closer to real execution, and
  - Introduces a small, bounded conservative bias that improves risk management for FiRM and Frontier.

## On-Chain Actions

- Update FiRM INV Feed
- Update Frontier INV Feed
- Update sINV price feed
