FiraMarketFactory

FiraMarketFactory deploys FiraMarket instances via split-code CREATE2 and manages fee configuration.

circle-info

Source: src/fira_bonding/core/Market/v3/FiraMarketFactory.sol

Contract summary

Deploys markets using split-code CREATE2 (because FiraMarket exceeds the 24KB EVM contract size limit). Markets are keyed by BT + scalarRoot + initialAnchor + lnFeeRateRoot — creating the same combination twice reverts.

Functionality

Market creation

The factory validates that the BT comes from the registered YieldContractFactory and is not expired, then deploys the market using the split-code pattern (bytecode is split across two storage contracts and concatenated at deploy time).

Fee management

The factory stores:

  • Treasury address — Receives reserve fees from swaps

  • Reserve fee percent — Portion of swap fees sent to treasury

  • Router-specific fee overrides — Must be strictly less than the market's base fee

getMarketConfig(market, router) is called by the market on every readState to load treasury, fee overrides, and reserve percent. This means fee changes take effect on the next trade without redeployment.

Duplicate prevention

Markets are uniquely identified by their BT address and curve parameters. Attempting to create a duplicate reverts.

Last updated