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.
The "unbacked" BT minted by the Liquidity Injector is safe because the lending market requires borrowers to post collateral. When borrowers repay their loans, the BT is burned. The injector is simply the bootstrap mechanism.
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