Skip to main content


Struct Protocol does not currently have a governance token. Currently, most of the maintenance and development of the protocol is performed by the founding development team. The development team is committed to making Struct Protocol a community-owned, community-run protocol by progressive decentralization.

Protocol Actors:

Vault Creators:

Vault creators have the ability to create new vaults via the Struct's Factory contract. They should be given the WHITELISTED role by the whitelist manager to be able to create vaults. Once the role is granted, the creators can create tailored vaults based on their requirements for the investors.


Investors are the users who directly deposit the funds into one of the tranches of the vault to earn yield on their deposits. They receive their share of StructSPTokens on deposit which acts as the proof of deposit. They can choose which vaults and tranche they wanna deposits funds into based on the factors such as their risk tolerance, market condition, asset performance, vault performance, etc.,


Keepers are external bots that invoke certain methods when needed. For example, the Keeper can call the removeFundsFromLP() method on the Vault contract once the Vault is matured. Anyone can run a Keeper if they so wish, but the account has to be granted with KEEPER role by the protocol operators.


A Governor account has has the ability to call the emergency pause methods that can pause every function in the protocol. This is only to be used in the case of critical incident response, during which action must be taken to prevent and/or stop damage from occurring to the protocol. As mentioned above, currently the Governor account is a Struct operated multisig account. We are working towards progressive decentralization via Governance contract with timelock.

Protocol Roles

GOVERNANCEFEYFactory: Sets parameters including product, yield source, and
price 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.
KEEPERCalls recompoundRewards() on the YieldSource
PAUSERPause/unpause the protocol globally
PRODUCTMints and burns SP Tokens, supplies tokens to and redeems tokens from YieldSource, queues fees on DistributionManager.
FACTORYCalls depositFor on Product, calls setFEYGMXProductInfo() on YieldSource.
WHITELISTEDCreates products without fulfilling minimum deposit requirement

See GlobalAccessControl for technical details.