Liquidity Injector
The Liquidity Injector bootstraps fixed-rate lending markets by minting and supplying BT as initial liquidity.
Overview
Fixed-rate lending markets need BT as the loan token, but BT can normally only be created by splitting FW through the yield tokenization process. The Liquidity Injector solves this chicken-and-egg problem by having a special privilege to mint BT directly, without backing FW.
How it works
Inject liquidity
injectLiquidity(params, amount):
Validates the market is a fixed-rate market (
params.irm == address(0))Mints BT via
BondToken.mintByLI()— the only way to create BT outside the normal FW→BT+CT pathSupplies the BT to the lending market via
lendingMarket.supply()Tracks the injection amount in
marketStats[marketId]
Withdraw liquidity
withdrawLiquidity(params, amount):
Checks available liquidity (total supply minus total borrows)
Withdraws BT from the lending market
Burns the BT via
BondToken.burnByLI()Updates
marketStats[marketId]
The available liquidity check prevents withdrawal from disrupting existing borrows.
Key features
Owner-only operation — Only the protocol owner can inject or withdraw
No resting state — BT is either in the lending market or burned; the injector never holds BT idly
Per-market tracking —
marketStatsrecords net injected amounts per marketSelf-balancing — Borrowers must repay BT, which is then burned, closing the loop
Risk considerations
The unbacked BT creates a soft protocol liability: if the underlying FW exchange rate rises significantly, BT becomes more valuable than when it was minted. However, since borrowers must post collateral and repay in BT, the system is self-balancing.
Related contracts
LiquidityInjector.sol— Contract detailsBondToken.sol— BT contract withmintByLI/burnByLI
Last updated