Index Coop Resource Center
  • Welcome to The Index Coop.
  • Products
    • Trade
      • Index Coop Leverage Suite
      • Leverage Token Parameters
      • Leverage Token Keepers
      • Trading Interface Guide
      • Ripcord Guide
    • Earn
      • High Yield ETH Index (hyETH)
      • Interest Compounding ETH Index (icETH)
    • Asset Management
      • Product Development Process
      • Product Revenue Tokens (PRTs)
    • Legacy Products
      • How to Redeem Legacy Products
      • DeFi Pulse Index (DPI)
      • Bankless BED Index (BED)
      • Metaverse Index (MVI)
      • Diversified Staked ETH Index (dsETH)
      • Index Coop CoinDesk ETH Trend Index (cdETI)
      • Index Coop Large Cap Index (ic21)
      • ETH 2x Flexible Leverage Index (ETH2x-FLI)
      • BTC 2x Flexible Leverage Index (BTC2x-FLI)
      • Flexible Leverage Index- Polygon (FLI-Ps)
        • ETH 2x Flexible Leverage Index (ETH2x-FLI-P)
        • Inverse ETH Flexible Leverage Index (iETH-FLI-P)
        • BTC 2x Flexible Leverage Index (BTC2x-FLI-P)
        • Inverse BTC Flexible Leverage Index (iBTC-FLI-P)
        • MATIC 2x Flexible Leverage Index (MATIC2x-FLI-P)
        • Inverse MATIC Flexible Leverage Index (iMATIC-FLI-P)
      • Market Neutral Yield ETH (MNYe)
      • Bankless DeFi Innovation Index (GMI)
      • Data Economy Index (DATA)
      • Legacy Contract Addresses
      • Gitcoin Staked ETH Index (gtcETH)
  • Protocol
    • Index Protocol
      • Core Contracts
        • Set Token
        • Set Token Creator
        • Controller
        • Integration Registry
        • Price Oracle
        • Set Valuer
      • Modules
        • Basic Issuance Module
        • Debt Issuance Module v2
        • NAV Issuance Module
        • Trade Module
        • Streaming Fee Module
        • Wrap Module
        • Airdrop Module
        • Claim Module
        • Governance Module
        • Compound Leverage Module
        • Aave v2 Leverage Module
        • Aave v3 Leverage Module
        • Auction Rebalance Module
    • Set Protocol v2
    • Security and Audits
    • Contract Verification
    • Programmatic Redemptions
  • Resources
    • Governance
      • $INDEX - Governance Token
      • Index Improvement Proposals (IIP) Overview
        • IIP Step-by-Step
        • Governance Representatives
        • IIP Template
        • Product (DG) Template
      • Meta-Governance
      • Delegation
    • Data & Analytics
    • Multisigs
    • Press Kit
Powered by GitBook
On this page
  • Select Methods
  • accrueFee()
  • initialize()
  • updateStreamingFee()
  • updateFeeRecipient()
  1. Protocol
  2. Index Protocol
  3. Modules

Streaming Fee Module

PreviousTrade ModuleNextWrap Module

Last updated 1 year ago

The StreamingFeeModule () is a smart contract that accrues streaming fees for managers and methodologists. Streaming fees are denominated as percent per year and realized as inflation rewarded to recipients.

Select Methods

accrueFee()

function accrueFee(ISetToken _setToken)

Calculates total inflation percentage then mints new Sets to the fee recipient. Position units are then adjusted down (in magnitude) in order to ensure full collateralization. Callable by anyone.

Parameter Name

Type

Description

_setToken

ISetToken

Instance of the SetToken

initialize()

function initialize(ISetToken _setToken, FeeState memory _settings)

Manager only. Initializes this module to the SetToken.

Parameter Name

Type

Description

_setToken

ISetToken

Address of the SetToken

_settings

FeeState

FeeState struct defining fee parameters

The FeeState struct is constructed as follows:

struct FeeState {
    address feeRecipient;                   // Address to accrue fees to
    uint256 maxStreamingFeePercentage;      // Max streaming fee manager commits to using (1% = 1e16, 100% = 1e18)
    uint256 streamingFeePercentage;         // Percent of Set accruing to manager annually (1% = 1e16, 100% = 1e18)
    uint256 lastStreamingFeeTimestamp;      // Timestamp last streaming fee was accrued
}                                                  

updateStreamingFee()

function updateStreamingFee(ISetToken _setToken, uint256 _newFee)

Manager only. Set new streaming fee. Fees accrue at current rate then new rate is set. Fees are accrued to prevent the manager from unfairly accruing a larger percentage.

Parameter Name

Type

Description

_setToken

address

Instance of the SetToken

_newFee

uint256

New streaming fee in 18 decimal precision

updateFeeRecipient()

function updateFeeRecipient(ISetToken _setToken, address _newFeeRecipient)

Manager only. Set new fee recipient.

Parameter Name

Type

Description

_setToken

ISetToken

Instance of the SetToken

_newFeeRecipient

address

New fee recipient

Etherscan