External Interfaces
Last updated
Last updated
A MORE Vault never calls another contract “raw.” Instead, every outward‐facing interaction is typed behind an interface: a Solidity contract that defines what can be called and what shapes the data take, while hiding the router-specific opcodes. These interfaces form the contractual handshake between MORE’s facets and the rest of the on-chain world, guaranteeing that upgrades or network forks can swap addresses without rewriting vault logic.
Below each family of interfaces is introduced in plain language, outlining why the vault uses it and what guarantees it provides. Function-by-function details live in the section. Here we focus on the conceptual role each interface plays.
Uniswap V2 Factory & Pair IUniswapV2Factory
, IUniswapV2Pair
Lets swap facets discover the canonical pool for two tokens and read reserves before quoting price impact.
Pools are always symmetric 50 / 50; reserves are public and updated every swap.
Curve Router ICurveRouter
A single entry point for multi-pool stable-asset routes. Swap facets stream an encoded path here to execute the whole trip atomically.
Route arrays allow up to five hops with near-zero slippage on correlated assets.
iZUMi Swap Path ISwap
(used by iZUMi routers)
Encodes fee tier, tick range, and hop list in one byte string for concentrated-liquidity trades.
Vault passes the path as data; the router decodes and executes without a separate registry call.
AggroKitty Router IAggroKittyRouter
Meta-aggregates quotes from many DEXs, returning the best executable route for a given size.
Discovery logic lives off-chain; the vault sees only a validated “trade” struct.
aToken Receipt Token IATokenExtended
Represents the vault’s supplied collateral in Aave-v3 pools; its balance earns interest continuously.
Balance changes linearly with interest; no explicit “claim interest” needed.
Aave Rewards Controller IAaveV3RewardsController
Streams protocol-native incentives (eg. AAVE, stkAAVE) to the vault when it supplies or borrows.
Strategy facets claim rewards, swap them via a DEX facet, and compound back into collateral.
(Pool-level interfaces such as IPool
are abstracted by the MOREMarketsFacet; see )
Origami Investment & Manager IMORELeverageFacet
, IMORELeverageInvestment
, IMORELeverageLovTokenFlashAndBorrowManager
Abstracts a looped collateral-borrow-swap cycle into a single ERC-20 “LOV token” that the vault can mint or redeem.
Vault maintains its usual over-collateralised posture while Origami handles flash-loan rebalances under the hood.
Chainlink Aggregator IAggregatorV2V3Interface
Standardised price oracle returning the latest answer, round data, and heartbeat for USD pairs.
The Vaults Registry keeps a pointer to the feed; vault facets query it for slippage checks, NAV, and health factors.
Facet chooses an address: e.g., Uniswap router, Aave pool, or Chainlink feed.
Interface enforces the ABI: the Solidity compiler guarantees the call signature matches, preventing “method not found” exploits.
Registry or strategist updates: changing the address behind an interface (e.g., migrating to a new Chainlink feed) requires only one on-chain storage write. Vault bytecode stays untouched.
Shared safety rails apply: role checks, asset whitelists, and timelocks gate the call before any external contract executes.