Vault system

The Vault is a program-controlled account on Solana that securely holds the portfolio assets for a given index. Each vault corresponds 1:1 with an index and operates as an isolated unit.


πŸ“Œ Core Mechanics

  • Deposits:

    • Users deposit USDC into the vault interface.

    • The backend executes token swaps (via Jupiter) into the index’s target token allocation.

    • The vault receives the resulting tokens.

  • Index Token Minting:

    • Users receive Index Tokens (SPL tokens) that represent their proportional ownership of the vault’s value.

    • These tokens are minted on deposit and burned on withdrawal.

  • Withdrawals:

    • Users can redeem Index Tokens at any time.

    • The backend performs proportional swaps from vault assets back to USDC and sends the result to the user.


🧠 On-Chain Logic & Safety

  • Non-Custodial:

    • Vaults are program-controlled. Users always hold the Index Token that entitles them to redeem their share.

    • No user funds are held by the team or in off-chain systems.

  • Isolation:

    • Each index is isolated . Misbehavior in one vault does not affect others.

    • Each vault has its own token mint, account structure, and oracle feed.

  • Transparency:

    • Balances, weights, performance data, and vault contents are visible and auditable directly onchain.


πŸ‘₯ Roles & Permissions

DiversiFi separates operational and strategic control across two distinct roles: the Platform Admin and the Index Manager.

The Admin is the operational controller of the protocol. It is currently a multisig controlled by the SolutioFi core team. The Admin is responsible for executing rebalances, processing deposits and withdrawals, deploying new indexes, and maintaining oracle integrations.

πŸ”Έ Partner (Index Creator or Integrator)

A Partner is any external contributor who builds on DiversiFi, either by:

  • Creating and managing an index via our permissioned infrastructure (as an Index Manager)

  • Integrating DiversiFi vaults into their own app or frontend via our SDK and API

Partners can bring new strategies to the platform or distribute existing ones to their own audiences, without handling custody or backend operations.


πŸ” Access Control Summary

Operation

Platform Admin

Index Manager

Notes

Initialize Index

βœ… Required

βœ… Required

Both must sign; admin deploys and funds gas

Update Weights

❌ No Access

βœ… Full Control

Manager sets token list and weights (must sum to 100%)

Update Oracle

βœ… Full Control

❌ No Access

Admin-only: updates Switchboard feed

Rebalance Vault

βœ… Full Control

❌ No Access

Admin executes collateral swaps to maintain index alignment

Process Deposits

βœ… Full Control

❌ No Access

Admin executes user USDC swaps into tokens

Process Withdrawals

βœ… Full Control

❌ No Access

Admin executes token swaps back to USDC


πŸ§‘β€βš–οΈ Role Breakdown

Platform Admin (Operational Control)

  • Deploys and initializes new vaults

  • Executes deposits, withdrawals, and rebalances

  • Maintains oracle price feeds

  • Handles all transaction execution and instruction routing via backend

  • Typically a multisig controlled by SolutioFi for security

Index Manager (Strategic Control)

  • Defines and updates token composition and target weights

  • Can add or remove tokens, provided all conditions are met

  • Receives manager fees

  • Cannot execute rebalances or move funds

  • Is address-set at index creation and can be rotated via admin


⚠️ Constraints for Index Managers

When updating weights, the Manager must:

  • Provide a list of 1 to 5 tokens (v1 - more coming in v2)

  • Ensure weights sum to exactly 100.00%

  • Avoid zero-weight tokens (each token must have weight > 0)

  • Pay gas to initialize any new token vaults

  • Close empty token vaults before removing them from the index

If any of these constraints are violated, the update transaction will fail.


πŸ‘€ Users

  • Can initiate deposits (send USDC) or withdrawals (send Index Tokens)

  • Can cancel/refund a pending deposit or withdrawal if not yet processed

  • Cannot interact with vault tokens directly β€” always go through the frontend/backend

Last updated