Skip to main content

Core Concepts

A portfolio of ERC20-compliant assets managed onchain. Folios are represented as ERC20 tokens themselves, with each token representing a proportional share of the underlying basket of assets.Example: A “DeFi Blue Chip” Folio might hold ETH, WBTC, and stablecoins in specific proportions.
The collection of ERC20 tokens held by a Folio, along with their target weights or proportions.Composition: Can be changed through governanceRebalancing: Adjusted through dutch auctions
A standardized unit representing the ideal composition of the basket. Used to calculate surpluses and deficits during rebalancing.Unit: Often expressed as quantities like D27{tok/BU} (tokens per basket unit)
The underlying ERC20 tokens held in a Folio’s basket. Users deposit collateral when minting Folio shares and receive collateral when redeeming.
An ERC20 token representing proportional ownership of a Folio’s assets. Users receive shares when minting and burn shares when redeeming.Pro-rata: Claims to the underlying basket are always proportional to share ownership

Rebalancing Terms

The process of adjusting a Folio’s basket composition to match target weights. Executed through a series of dutch auctions over a defined period.Initiated by: REBALANCE_MANAGER roleDuration: Controlled by TTL (time-to-live)
A set of tokens with target weights that the Folio aims to achieve through rebalancing.Components:
  • Target tokens list
  • Weight ranges (low, spot, high)
  • Price ranges for each token
  • Rebalance limits
Range of basket units per share that define the rebalancing path.Structure:
The acceptable range of weights for a token in the basket.Structure:
Control: If weightControl is enabled, AUCTION_LAUNCHER can adjust within range
The maximum duration a rebalance can remain active. After TTL expires, no new auctions can be started (though existing auctions can complete).Extension: Can be extended by AUCTION_LAUNCHER near expiration
When the Folio holds more of a token than the target basket composition requires. Surpluses are sold during rebalancing.Calculation: Relative to RebalanceLimits.high
When the Folio holds less of a token than the target basket composition requires. Deficits are bought during rebalancing.Calculation: Relative to RebalanceLimits.low

Auction Terms

An auction mechanism where the price starts high and decreases over time until a buyer accepts. Used for all token swaps during rebalancing.Curve: Exponential decay from start price to end priceTermination: When fully filled or time expires
A specific instance of trading during rebalancing where participants can exchange tokens with the Folio at dynamically decreasing prices.Limitation: Only one auction can be active at a time per FolioParticipation: Generally permissionless (unless restricted to trusted fillers)
The initial (most optimistic) price at the beginning of a dutch auction. Calculated from the extreme bounds of the provided price ranges.Direction: Favorable to the Folio (typically above or below market depending on buy/sell)
The final (most pessimistic) price at the end of a dutch auction. Calculated from the opposite extreme of the price ranges.Direction: Less favorable to the Folio but still within acceptable bounds
The acceptable range of prices for a token during an auction.Structure:
Maximum Range: 100x (1e2) - auction can span at most 4 orders of magnitude
The quantity of sell token available in an auction. Determined by the limiting factor between surplus and deficit.Dynamic: Can increase or decrease over time depending on which side is limiting
An offer to exchange tokens with the Folio at the current auction price. Participants send buy tokens and receive sell tokens.Partial Fills: Allowed - can fill any amount up to sellAmount
The initial period of a rebalance when only the AUCTION_LAUNCHER can open auctions. Provides the trusted launcher time to act before permissionless participation.Duration: Typically includes a 120s buffer minimumExtension: Gets bumped when AUCTION_LAUNCHER actively uses it
The period after the restricted period when anyone can open auctions with default parameters.Purpose: Ensures liveness even if AUCTION_LAUNCHER is offlineParameters: Uses spot values from rebalance configuration

Role Terms

The primary administrative role with full control over Folio configuration.Expected: Timelock of Slow Folio GovernorPowers:
  • Add/remove tokens from basket
  • Set fees
  • Configure auction parameters
  • Manage roles
  • Close auctions
Security: Highest trust level, longest timelock
The role responsible for initiating and managing rebalances.Expected: Timelock of Fast Folio GovernorPowers:
  • Start rebalances with parameters
  • End rebalances
  • Close auctions
  • Set rebalance limits
Security: Medium trust level, shorter timelock
A semi-trusted role that opens auctions and provides market-aware parameters.Expected: EOA or multisigPowers:
  • Open auctions within approved ranges
  • Select price subranges (if priceControl enabled)
  • Adjust basket weights (if weightControl enabled)
  • Perform atomic swaps (if ATOMIC_SWAP mode)
  • End rebalances
Limitations: Can only operate within bounds set by REBALANCE_MANAGERRisk: Can cause value leakage if malicious, but cannot guarantee they benefit (except in ATOMIC_SWAP mode)

Price Control Modes

The AUCTION_LAUNCHER has no control over prices and must use governance-provided ranges.Security: Highest - no price manipulation possibleExecution: May be less optimal due to stale pricesBest for: Folios with untrusted or public launchers
The AUCTION_LAUNCHER can select a subset of the governance-approved price range for each auction.Security: Medium - can start auctions at suboptimal pricesRisk: Value leakage to MEV searchers possibleExecution: Better price precision, improved executionBest for: Folios with semi-trusted launchers
The AUCTION_LAUNCHER can perform atomic swaps at fixed prices within the approved range.Security: Lowest - full price controlRisk: Can cause value leakage AND be the beneficiaryExecution: Best possible - no MEV leakage, optimal pricesBest for: Highly trusted, sophisticated launchers

Fee Terms

A continuous fee charged on assets under management (AUM), implemented as share inflation.Rate: Expressed annually (e.g., 50 bps = 0.5% per year)Minimum: 15 basis pointsMaximum: 10% annuallyAccrual: Every 24 hours (as of v4.0.0)DAO Cut: Minimum 15 bps goes to ecosystem DAO
A one-time fee charged when minting Folio shares.Minimum: 15 basis pointsMaximum: 5%DAO Cut: Minimum 15 bps goes to ecosystem DAONote: No redemption fee
The minimum fee that must be charged, with the minimum going to the ecosystem DAO.Default: 15 basis pointsAdjustment: Can be lowered by DAO globally or per-FolioPurpose: Ensures sustainable funding for protocol development
An address that receives a portion of collected fees.Configuration: Set by governanceMultiple Recipients: Supported - fees split by configured portions

Staking Terms

A contract that holds staked Folio tokens and distributes rewards.Purpose:
  • Earn rewards in multiple tokens
  • Gain voting power for governance
  • Align long-term incentives
Owner: Community Governor
The underlying token (typically Folio shares) deposited into the StakingVault.Voting Power: Staked tokens provide governance voting rights
A token distributed to stakers as rewards.Multiple Rewards: StakingVault supports simultaneous distribution of multiple reward tokensConfiguration: Added/removed by vault owner
The time period over which unclaimed rewards decay by half.Purpose: Creates time preference for claiming rewardsConfiguration: Set per reward token by vault owner
A waiting period between initiating unstaking and being able to withdraw tokens.Purpose:
  • Prevent governance attacks (stake-vote-unstake)
  • Support optimistic governance patterns
  • Align long-term interests
Configuration: Set by vault owner, can be 0

Governance Terms

The canonical governance contract for Folios.Type: Time-based governor using OpenZeppelin Governor frameworkVoting Token: Typically staked Folio shares from StakingVaultTypes:
  • Slow Governor (long timelock)
  • Fast Governor (shorter timelock)
A delay between when a governance proposal passes and when it can be executed.Purpose: Gives users time to react to governance decisions (e.g., redeem before unfavorable changes)Duration: Varies by governor type and urgency of powers
A governance pattern where actions take effect immediately but can be challenged and reverted.Slashing: v5.0.0 adds StakingVault.burn() to enable slashing malicious proposersTrade-off: Faster execution vs. risk of malicious actions
The governor that controls the StakingVault.Powers:
  • Add/remove reward tokens
  • Set reward parameters
  • Configure unstaking delay
Separate from: Folio governors (different scope of control)

Technical Terms

A precision multiplier representing 1e18 (18 decimals).Usage: Percentages, simple ratiosExample: D18{1} is a percentage value with 18 decimal precision
A precision multiplier representing 1e27 (27 decimals).Usage: Prices, exchange rates, high-precision ratiosExample: D27{UoA/tok} is a price with 27 decimal precision
A standardized unit for expressing prices and values.Common: nanoUSD (1 billionth of a USD)Flexibility: Can be any consistent unit
One billionth of a USD (1e-9 USD), commonly used as the Unit of Account.Why: Provides precision for assets with very low or very high USD values
The smallest indivisible unit of a token, considering its decimals.Example: For USDC (6 decimals), 1 quantum = 0.000001 USDC
A vulnerability where external contracts read Folio state during a state change and rely on inconsistent data.Protection: Check stateChangeActive() before reading stateNote: Folio itself is protected; consuming protocols must check
Whitelisted entities that can provide async fills for auctions.Implementation: CoW Swap integrationBenefits: Better prices, MEV protectionConfiguration: Enabled per Folio by governance
Profit that can be extracted by reordering, inserting, or censoring transactions.In Auctions: Searchers can extract value by bidding at optimal momentsMitigation: Tight price ranges, trusted fillers, atomic swaps

DAO Terms

Contract that manages fees paid to the broader ecosystem DAO.Responsibilities:
  • Set fee floors
  • Collect DAO portion of fees
  • Configure per-Folio fee overrides
Owner: Ecosystem DAO
Contract that tracks approved versions of FolioDeployer implementations.Purpose: Ensure Folios can upgrade to vetted implementationsOwner: Ecosystem DAO
External contract that manages role assignments across the ecosystem.Interface: Must implement IRoleRegistryDependency: Required for Folio deployment

Contract Terms

Contract that deploys new Folio instances.Versioning: Multiple versions can exist, tracked by FolioVersionRegistryUpgrades: New versions deployed by DAO
A proxy contract that delegates calls to Folio implementation.Purpose: Enable upgrades while maintaining storage and addressValidation: Checks upgrades against FolioVersionRegistry
Contract that deploys governance systems (staking tokens and governors).Deploys:
  • StakingVault
  • FolioGovernor instances
  • Associated contracts

FAQ

Frequently asked questions

Unit System

Detailed unit documentation

Architecture

System architecture overview

API Reference

Contract API documentation