Index Coop Docs
Search…
⌃K

Index Protocol

Index Protocol is an EVM-based protocol that enables asset management strategies by translating them into ERC20 tokens. It is a good-faith fork of Set Protocol v2 and will be the primary platform for new Index Coop products beginning in 2023. In contrast to Set Protocol v2, Index Protocol is not intended to be a self-service platform for third parties to launch products permissionlessly; rather, it exists to support secure and accessible structured products launched by Index Coop and its partners.
The following Index Coop products have been deployed on Index Protocol:
Index Protocol employs a modular architecture comprised of core contracts, modules, adapters, and ancillary contracts. Product-specific contracts (like SetToken, BaseManagerv2, FeeSplitExtension) rely on general-purpose contracts and resources (like DebtIssuanceModuleV2, StreamingFeeModule, IntegrationRegistry) for complete functionality.

Core Contracts

perform critical functions for the protocol like verifying permissions and enabling general-purpose resources
Contract
Description
Link
SetToken
ERC20 Token contract that allows privileged modules to make modifications to its positions and invoke function calls; deployed on a per-product basis
Github*
BaseManagerV2
Manager contract that contains permissions and administrative functionality for a SetToken; deployed on a per-product basis
Github*
SetTokenCreator
Factory contract that is enabled by the controller to create and register new SetTokens
Etherscan
Controller
contract that registers protocol contracts such as products, modules, factories, price oracles, and other resources
Etherscan
IntegrationRegistry
contract that holds state relating to modules and the integrations they are connected with
Etherscan
PriceOracle
contract that returns the price for any given asset pair; price is retrieved either directly from an oracle, calculated using common asset pairs, or uses external data to calculate price
Github*
* source code linked for contracts that may have many different instances on-chain

Modules

extend setToken functionality by adding fees, enabling composability, and accessing DeFi services; modules can be considered general purpose, or usable by multiple products at once
Module
Description
Link
DebtIssuanceModulev2
enables users to issue and redeem SetTokens that contain default and external positions, including–but not limited to–debt positions
Etherscan
TradeModule
enables SetTokens to perform atomic trades using DEXs or DEX aggregators; integration mappings are stored on the IntegrationRegistry contract
Etherscan
StreamingFeeModule
accrues streaming fees for managers; streaming fees are denominated as percent per year and realized as inflation rewarded to the manager
Etherscan
AirdropModule
enables manager to absorb tokens sent to the SetToken into the token's positions
Etherscan
NotionalTradeModule
enables trading, issuance, and redemption of Notional fCash positions; compatible with ERC20-wrapped fCash assets
Etherscan

Adapters

interface with external protocols and used by modules to gather and validate transaction parameters
Adapter
Description
Link
0x API Adapter
Exchange Adapter for 0x API that returns data for swaps
Etherscan
Curve stETH Exchange Adapter
Exchange Adapter for Curve specialized for stETH/ETH exchange contracts
Etherscan
Synthetix Exchange Adapter
Exchange Adapter for Synthetix that returns data for swaps
Etherscan
Uniswap v2 Exchange Adapter v2
Exchange Adapter for Uniswap v2 that returns data for swaps
Etherscan
Uniswap v3 Exchange Adapter v2
Exchange Adapter for Uniswap v3 that returns data for swaps
Etherscan
Fee Split Extension
Smart Contract Extension that allows for splitting and setting streaming, mint, and redeem fees; deployed on a per-product basis
Github*
StakeWise Reinvestment Extension
Smart Contract Extension that enables reinvestment of rETH2 rewards within dsETH
Github*
* source code linked for contracts that may have many different instances on-chain

Ancillary Contracts

built on top of and/or used in conjunction with protocol contracts
Contract
Description
Link
0x Flash Mint
Contract that swaps an input token for proportional components of an index and issues said index token in an atomic fashion
Etherscan
Compound Flash Mint
Contract that converts an input token into proportional cToken components of an index and issues said index token in an atomic fashion
Etherscan
Notional Flash Mint
Contract that converts an input token into proportional wrapped fCash components of an index and issues said index token in an atomic fashion
Etherscan
The same security assumptions and audit coverage for Set Protocol v2 apply to Index Protocol as no changes have been made to the core code. Any Core Contracts or Modules added to Index Protocol over time will be audited by security professionals before deployment and published here; Adapters and Ancillary Contracts undergo rigorous testing before being enabled.

Source code for all Index Coop contracts can be found in the following GitHub repositories:

Additional information about contracts and capabilities can be found in the official Set Protocol v2 Documentation and in the Set Protocol v2 GitHub repository. Not all Set Protocol v2 contracts will be deployed for Index Protocol, but any smart contract supporting an Index Protocol product will be documented here as well as in Github and on Etherscan.