Core Functionality
Pricing Mechanism
Discount Rate Determination
Fetched via
TermDiscountRateAdapter
contractUses clearing rate from most recent valid auction
Validation rules:
For reopening auctions (within 30 minutes), uses previous valid auction rate
Oracle can invalidate specific auction rates
Requires at least one valid auction result
Price Calculation
The purchase/sale price is calculated using:
The face value of the RepoToken, adjusted by the redemptionValue,
discounted using Actual/360 day count convention relative to the RepoToken's
redemptionTimestamp
; and
the discount rate fetched from the most recent Term Auction, retrieved via the
TermDiscountRateAdapter
,
adjusted by a discountRateMarkup
Base Formula:
Safety Features
Oracle role for manual intervention in case of auction rate manipulation
Haircut mechanism to adjust valuation for bad debt
Rate validity checks with timestamp verification of auction results
Listing Operations
RepoTokens must meet these criteria for listing:
Not blacklisted (
repoTokenBlacklist[token] == false
)Active deployment in TermController (
isTermDeployed == true
)Not matured (
redemptionTimestamp > current_timestamp
)Amount exceeds minimum listing threshold
Purchase Methods
Two purchase options available:
purchase(uint256 desiredAmount, address repoToken)
Buy specific quantity of RepoTokens
swapExactPurchaseForRepo(uint256 purchaseTokenAmount, address repoToken)
Spend specific amount of purchase tokens
Safety Features
Reentrancy protection on all state-modifying functions
Pausable functionality for emergency stops
Role-based access control for admin functions
Blacklist capability for RepoTokens
Minimum listing amounts based on token type
Last updated