> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/reserve-protocol/reserve-index-dtf/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction to Reserve Folio

> Learn about Reserve Folio, a protocol for creating and managing portfolios of ERC20 assets entirely onchain with composable, multi-asset portfolios.

## What is Reserve Folio?

Reserve Folio is a protocol for creating and managing portfolios of ERC20-compliant assets entirely onchain. Folios are designed to be used as a single source of truth for asset allocations, enabling composability of complex, multi-asset portfolios.

<Note>
  Folios are backed ERC20 tokens with permissionless minting/redemption and a semi-permissioned rebalancing mechanism designed for optimal execution under timelock delays.
</Note>

## Key Features

<CardGroup cols={2}>
  <Card title="Permissionless Minting & Redemption" icon="coins">
    Anyone can mint Folio tokens by depositing the required basket of assets, or redeem them to receive the underlying assets pro-rata.
  </Card>

  <Card title="Flexible Rebalancing" icon="arrows-rotate">
    Dutch auction-based rebalancing system that enables portfolio adjustments while maintaining optimal execution and MEV protection.
  </Card>

  <Card title="Onchain Governance" icon="users">
    Three-tier role system (Admin, Rebalance Manager, Auction Launcher) designed to work efficiently even with timelock delays.
  </Card>

  <Card title="Multi-Asset Support" icon="layer-group">
    Support for any ERC20-compliant token within the basket, with configurable weights and price ranges.
  </Card>
</CardGroup>

## How It Works

Folios operate through a sophisticated rebalancing mechanism:

<Steps>
  <Step title="Rebalance Initiation">
    The `REBALANCE_MANAGER` starts a rebalance, specifying target ranges for all variables including tokens, limits, weights, and prices.
  </Step>

  <Step title="Auction Opening">
    The `AUCTION_LAUNCHER` opens Dutch auctions within approved ranges to rebalance the portfolio. After a delay, auctions can be opened permissionlessly.
  </Step>

  <Step title="Bidding Period">
    Participants bid on token pairs at progressively better prices as the auction runs along an exponential decay curve.
  </Step>

  <Step title="Settlement">
    The auction completes, assets are exchanged, and the portfolio moves closer to its target allocation.
  </Step>
</Steps>

## Core Components

### Folio Contracts

* **Folio.sol**: The primary contract representing a portfolio of ERC20 assets with auction-based rebalancing logic
* **FolioDeployer.sol**: Manages deployment of new Folio instances with configurable parameters
* **FolioProxy.sol**: Upgradeable proxy contract that checks upgrades with FolioVersionRegistry

### Governance System

* **FolioGovernor.sol**: Time-based canonical governor for the system
* **GovernanceDeployer.sol**: Deploys staking tokens and governing systems
* **StakingVault.sol**: ERC4626 vault for staked tokens with multi-reward support and voting power

### DAO Infrastructure

* **FolioDAOFeeRegistry.sol**: Manages ecosystem-wide DAO fees with a 15 bps minimum floor
* **FolioVersionRegistry.sol**: Tracks approved versions of FolioDeployer contracts

## Role-Based Access Control

Folios implement a three-tier permission system:

<AccordionGroup>
  <Accordion title="DEFAULT_ADMIN_ROLE" icon="crown">
    **Expected holder:** Timelock of Slow Folio Governor

    **Permissions:**

    * Add/remove assets from the basket
    * Configure fees (TVL fee, mint fee)
    * Set auction parameters (length, delay)
    * Close auctions and rebalances
    * Assign other roles
    * Deprecate the Folio
  </Accordion>

  <Accordion title="REBALANCE_MANAGER" icon="chart-line">
    **Expected holder:** Timelock of Fast Folio Governor

    **Permissions:**

    * Start rebalances with target ranges
    * End rebalances and auctions
    * Set rebalance control parameters (weight control, price control)
  </Accordion>

  <Accordion title="AUCTION_LAUNCHER" icon="gavel">
    **Expected holder:** EOA or multisig (semi-trusted)

    **Permissions:**

    * Open auctions within approved ranges
    * Adjust auction parameters (basket limits, weights, prices)
    * End auctions and rebalances
    * Extend restricted period when active
  </Accordion>
</AccordionGroup>

<Warning>
  The `AUCTION_LAUNCHER` is semi-trusted and can cause value leakage if malicious, especially with `PARTIAL` or `ATOMIC_SWAP` price control. Governance should carefully consider these settings.
</Warning>

## Fee Structure

Folios support two types of fees, both with a DAO minimum floor:

### TVL Fee

Per-unit time fee on Assets Under Management (AUM)

* **DAO minimum:** 15 bps annually
* **Maximum:** 10% annually
* Causes supply inflation over time (discretely once per day)
* If set to 15 bps, 100% goes to the DAO

### Mint Fee

Fee charged on minting new shares

* **DAO minimum:** 15 bps
* **Maximum:** 5%
* Does not cause supply inflation
* If set to 15 bps, 100% goes to the DAO

<Info>
  The 15 bps fee floor can be lowered by the DAO globally or on a per-Folio basis. Fee recipients only receive the portion above the DAO minimum.
</Info>

## Supported Token Types

Folios support most standard ERC20 tokens with some restrictions:

| Token Type            | Folio Support | StakingVault Support |
| --------------------- | ------------- | -------------------- |
| Standard ERC20        | ✅             | ✅                    |
| Missing return values | ✅             | ✅                    |
| Flash mint            | ✅             | ✅                    |
| Revert on zero-value  | ✅             | ✅                    |
| Upward-rebasing       | ✅             | ❌                    |
| Downward-rebasing     | ✅             | ❌                    |
| Multiple entrypoints  | ❌             | ❌                    |
| Pausable/Blocklist    | ❌             | ❌                    |
| Fee-on-transfer       | ❌             | ❌                    |
| ERC777/Callback       | ❌             | ❌                    |

<Warning>
  Rebasing tokens may cause accounting discrepancies if rebasing occurs non-incrementally. Use with caution.
</Warning>

## Version History

<Steps>
  <Step title="v1.0.0 - Initial Release">
    Non-repeatable pairwise auctions. Basic Folio functionality with single-run auctions.
  </Step>

  <Step title="v2.0.0 - Repeatable Auctions">
    Added repeatable pairwise auctions, dust limits, and minimum mint enforcement.
  </Step>

  <Step title="v4.0.0 - Basket Auctions">
    Major upgrade with trusted fillers integration (CoW Swap), rebalance targets system, and overhauled auction mechanics. Changed from per-block to daily fee inflation.
  </Step>

  <Step title="v5.0.0 - Current">
    Full weight range support, max auction sizes, trusted filler restrictions, and name changing capability. Optimistic governance with slashing.
  </Step>
</Steps>

## Next Steps

<CardGroup cols={2}>
  <Card title="Quick Start" icon="rocket" href="/quickstart">
    Deploy your first Folio and learn the basics
  </Card>

  <Card title="Architecture" icon="sitemap" href="/architecture">
    Deep dive into the system architecture and rebalancing mechanics
  </Card>
</CardGroup>

## Chain Assumptions

<Info>
  The protocol assumes block times equal to or under 30 seconds. Deploy only on chains meeting this requirement.
</Info>
