Protocol Interactions
Overview
In addition to the standard ERC-4626 methods implemented via Yearn V3 base operations, Term's custom strategy extends the BaseStrategy to include two key Term-specific functionalities:
Auction Participation: Enables the submission of offers into Term auctions, callable only by a designated manager.
Direct Repo Token Liquidity: Allows public users to sell repoTokens into the vault.
Validation and Risk Management (Shared Across Methods)
Validation Criteria
Description
RepoToken Eligibility
Not Blacklisted
repoTokenBlacklist[repoToken] == false
Recognized in TermController
_isTermDeployed(repoToken) == true
Not Matured
redemptionTimestamp > block.timestamp
Collateral Requirements
maintenanceCollateralRatios >= minCollateralRatio
Portfolio Constraints
(from StrategyState struct)
Maximum Maturity
Ensures the weighted average maturity of the portfolio is below timeToMaturityThreshold.
Reserve Ratio
Maintains at least requiredReserveRatio for liquidity.
Exposure Limits
Verifies that exposure to a single repoToken does not exceed repoTokenConcentrationLimit.
Additiona Safeguards:
Reentrancy guards prevent recursive exploits in state-modifying functions.
Pausable operations allow emergency suspension.
Role-based access control ensures restricted access where required.
Configurable blacklist functionality excludes prohibited repoTokens.
Auction Participation
Callable by MANAGER only. Allows MANAGER to submit an offer into an eligible Term auctions, provided the offer satisfies all portfolio risk constraints.
function submitAuctionOffer(
ITermAuction termAuction,
address repoToken,
bytes32 idHash,
bytes32 offerPriceHash,
uint256 purchaseTokenAmount
) external returns (bytes32[] memory)function deleteAuctionOffers(address, bytes32[]) externalFeatures:
Submits an offer into a Term auction after passing validation and portfolio risk checks.
Restricted to the
MANAGERrole for controlled access.
Direct Repo Token Liquidity
The sellRepoToken method provides a public interface for users to sell repoTokens into the vault.
function sellRepoToken(
address repoToken,
uint256 repoTokenAmount
) externalFeatures:
Facilitates liquidity by allowing users to sell repoTokens to the vault.
Applies the
discountRateMarkupto determine the repoToken's value.
Last updated