Protocol Overview

Struct Finance offers users a way to customize interest rate instruments and compose them with options available in the ecosystem to construct superior financial products. Our platform opens up the number of investment choices available, enables varying protection levels, abstracts risk management and complex pricing away from its users while providing highly-competitive yields on various digital assets. ****

Contract Addresses (Avalanche)

Please note that these linked contracts are specifically related to our GMX integration.

Smart Contract Asset Link Smart Contract Asset Name
0x64ae9e549e807139afab354fe4470b7f458d9655 FEYGMXProduct Implementation
0x46f8765781Ac36E5e8F9937658fA311aF9D735d7 FEYGMXProductFactory
0x3bEf4cE67588bEb59d37F47ee2e6DE7065C7F4F8 StructSPToken
0x6ae12b0adf9716181c07d19dfe76442ab1b3817b GMXYieldSource
https://github.com/struct-defi/struct-contracts/blob/main/contracts/protocol/adapters/TraderJoeLPAdapter.sol TraderJoeLPAdapter
0xcB4E352825df013D4b827b0E28DE3E996655cb97 GlobalAccessControl
0xE0CF087363e44cfe25e31C42d407795986FE8202 Helpers

1. Product Implementation (FEYProduct)

The fixed and enhanced yield contract containing core functions of the protocol: depositing, claiming excess, and withdrawals. Interacts with the Yield Source contract to supply and remove liquidity from the underlying protocol.

2. Factory (FEYProductFactory)

Creates new FEYProduct contracts (using clones) with user-defined configurations such as tranche start and end times, tranche tokens, fixed rate, etc. It also has methods to whitelist tokens and token pairs.

3. SP Token (StructSPToken)

An ERC1155 standard token is used to represent user's position in each tranche, Every tranche is assigned a unique ID in the StructSPToken and is minted at a 1:1 ratio for deposits.

Note that FEYProduct and FEYProductFactory components have a new implementation for each integration (platform). The implementation of StructSPToken remains the same, but there will be a new deployment for each integration.

4. YieldSource

Helps the FEYProduct contract to interact with the external protocols. For example, TraderJoeYieldSource contract interacts with each respective protocol to add/remove liquidity and compound rewards.

The GMXYieldSource contract works slightly differently, in that there is only 1 instance of the contract, which supplies and redeems any combination of tokens from the GMX V1 liquidity pool.

5. Global Access Control (GAC)

Enforces the access control methods for the entire protocol implemented by the GACManaged contract which inherits the GlobalAccessControl for the roles. All the core contracts will inherit the GACManaged contract.

Role Privilege
GOVERNANCE FEYFactory: Sets parameters including product, yield source, andprice oracle implementations, min and max tranche duration, protocol fees, leverage threshold min and max, fixed rate max, min deposit value, whitelist tokens and pairs.FEYProduct: Sets slippage and rescues tokens in case they get stuck.YieldSource: Distributes rewards via the Yield Source to incentivize Products.SPToken: Sets the Factory implementation and the base token URI for all token IDs.DistributionManager: Initializes contract, adds/removes/edits distribution recipients, sets rewards per second.
KEEPER Calls recompoundRewards on the YieldSource
PAUSER Pause/unpause the protocol globally
PRODUCT Mints and burns SP Tokens, supplies tokens to and redeems tokens from YieldSource, queues fees on DistributionManager.
FACTORY Calls depositFor on Product, calls setFEYGMXProductInfo on YieldSource.
WHITELIST_MANAGER Grants WHITELISTED roles to accounts
WHITELISTED Creates products without fulfilling minimum deposit requirement