Overview
The FolioDAOFeeRegistry contract manages the protocol-level fee configuration for all Folios. It determines what percentage of Folio fees go to the DAO versus fee recipients, and enforces minimum fee floors to ensure the protocol remains sustainable.Key Features
- DAO Fee Split: Configurable percentage of fees that go to the protocol
- Fee Floor: Minimum fees charged to users, regardless of Folio settings
- Per-Folio Overrides: Custom fee settings for specific Folios
- Chain-Specific Maximums: Different max fees based on blockchain
Fee Mechanics
The registry implements a two-tier fee system:- DAO Fee Percentage: The DAO receives a percentage of collected fees (e.g., 50%)
- Fee Floor: A minimum amount the DAO receives, even if the percentage calculation is lower
- At 0.30% TVL fee: DAO gets 0.15%, recipients get 0.15%
- At 0.20% TVL fee: DAO gets 0.15%, recipients get 0.05%
- At 0.10% TVL fee: DAO gets 0.15%, recipients get 0%
Configuration Functions
Set Fee Recipient
Set the address that receives DAO fees.address
New fee recipient address (cannot be zero)
FolioDAOFeeRegistry.sol
Set Default Fee Numerator
Set the default DAO fee percentage for all Folios.uint256
New fee numerator as D18 (e.g., 0.5e18 = 50%)
FolioDAOFeeRegistry.sol
The fee numerator must not exceed the chain-specific
MAX_DAO_FEE. The denominator is always FEE_DENOMINATOR (1e18).Set Token Fee Numerator
Set a custom DAO fee percentage for a specific Folio.address
Address of the Folio token
uint256
Custom fee numerator (D18)
FolioDAOFeeRegistry.sol
Set Default Fee Floor
Set the default minimum DAO fee for all Folios.uint256
New default fee floor as D18 (e.g., 0.0015e18 = 0.15% = 15 bps)
FolioDAOFeeRegistry.sol
Set Token Fee Floor
Set a custom minimum DAO fee for a specific Folio.address
Address of the Folio token
uint256
Custom fee floor (cannot exceed default floor)
FolioDAOFeeRegistry.sol
Reset Token Fees
Remove custom fee settings for a Folio, reverting to defaults.address
Address of the Folio token
FolioDAOFeeRegistry.sol
View Functions
Get Fee Details
Retrieve complete fee configuration for a Folio.address
Address of the Folio token
FolioDAOFeeRegistry.sol
recipient: Address receiving DAO feesfeeNumerator: DAO percentage numerator (D18)feeDenominator: Always 1e18feeFloor: Minimum DAO fee (D18)
Chain-Specific Limits
Maximum fees vary by blockchain:Ethereum Mainnet (Chain ID: 1)
uint256
default:"0.5e18"
Maximum DAO fee: 50%
uint256
default:"0.0015e18"
Maximum fee floor: 0.15% (15 bps)
Base (Chain ID: 8453)
uint256
default:"0.5e18"
Maximum DAO fee: 50%
uint256
default:"0.0015e18"
Maximum fee floor: 0.15% (15 bps)
BNB Smart Chain (Chain ID: 56)
uint256
default:"0.333...e18"
Maximum DAO fee: 33.33%
uint256
default:"0.001e18"
Maximum fee floor: 0.10% (10 bps)
Events
event
Emitted when DAO fee recipient is changedParameters:
feeRecipient- New recipient address
event
Emitted when default DAO fee percentage is updatedParameters:
feeNumerator- New default numerator (D18)
event
Emitted when a Folio-specific fee numerator is setParameters:
fToken- Folio token addressfeeNumerator- Custom numeratorisActive- Whether override is active
event
Emitted when default fee floor is updatedParameters:
defaultFeeFloor- New default floor (D18)
event
Emitted when a Folio-specific fee floor is setParameters:
fToken- Folio token addressfeeFloor- Custom floorisActive- Whether override is active
Constants
uint256
default:"1e18"
Denominator for all fee calculations (D18 precision)
Access Control
IRoleRegistry
Immutable reference to the RoleRegistry contract for owner checks
Fee Distribution Flow
When fee settings are changed, the registry automatically calls
distributeFees() on the affected Folio before applying changes. This ensures pending fees are calculated with old settings.