Understanding how Quantillon Protocol operates is essential for both users and developers. This comprehensive guide breaks down the core mechanisms that power QEURO—from the dual-pool architecture and overcollateralization model to the innovative Yield Shift system that maintains peg stability while generating sustainable returns.
📋 MVP Status: This documentation reflects the current MVP implementation. Features marked with 🚧 are planned for future phases.
🏗️ Protocol Architecture Overview
Quantillon Protocol represents a paradigm shift in stablecoin design, combining the capital efficiency of overcollateralized systems with the liquidity advantages of forex markets. At its core, the protocol operates through interconnected mechanisms that ensure peg stability, yield generation, and capital efficiency.
Oracle Health: Freshness and accuracy of price feeds
Efficiency Metrics
Yield Generation: Aave APY on deployed collateral
YieldShift Responsiveness: Time to rebalance pools
Gas Optimization: Transaction costs for operations
Monitoring Functions
Quantillon's mechanisms represent a new paradigm in stablecoin design—combining the stability of overcollateralization with the efficiency of delta-neutral hedging and the innovation of dynamic yield distribution. The MVP focuses on core functionality with a single hedger model and Aave v3 integration, with multi-hedger support and additional vault types planned for future phases.
// Single hedger address
address public singleHedger;
// Hedger role for operations
bytes32 public constant HEDGER_ROLE = keccak256("HEDGER_ROLE");
struct HedgePosition {
address hedger; // Hedger address
uint96 positionSize; // Position size
uint96 filledVolume; // Volume filled by user mints
uint96 margin; // Margin deposited
uint96 entryPrice; // Entry price (EUR/USD)
uint64 entryTime; // Position open time
uint64 lastUpdateTime; // Last update timestamp
int128 unrealizedPnL; // Current unrealized P&L
int128 realizedPnL; // Realized P&L
uint8 leverage; // Position leverage
bool isActive; // Position status
uint128 qeuroBacked; // QEURO backed by this position
}
Hedger Revenue Sources:
├── EUR/USD Interest Rate Differential
├── YieldShift allocation (10-50% based on pool ratios)
├── Entry/Exit fees from position management
└── Margin fees (if applicable)
// Check if position is healthy
function _isPositionHealthyForFill(HedgePosition memory pos) internal view returns (bool);
// Emergency close by governance
function emergencyClosePosition(address hedger) external onlyRole(EMERGENCY_ROLE);
// Users must hold deposits for 7 days before claiming yield
if (TIME_PROVIDER.currentTime() < lastDepositTime[user] + MIN_HOLDING_PERIOD) {
revert CommonErrorLibrary.HoldingPeriodNotMet();
}
uint256 minCollateralizationRatioForMinting; // Min ratio to allow mints
uint256 criticalCollateralizationRatio; // Triggers alerts/restrictions
// Check if liquidation should be triggered
function shouldTriggerLiquidation() external view returns (bool);
// Get current liquidation status
function getLiquidationStatus() external view returns (
bool canLiquidate,
uint256 shortfall,
uint256 requiredCollateral
);
// Force close hedger position in emergency
function emergencyClosePosition(address hedger) external onlyRole(EMERGENCY_ROLE);
// Lock QTI for voting power
function lock(uint256 amount, uint256 duration) external returns (uint256 veQTI);
// Voting power multiplier (up to 4x for max lock)
MAX_LOCK_TIME = 4 years;
MAX_VE_QTI_MULTIPLIER = 4;
// Mint QEURO via Vault
vault.mintQEURO(usdcAmount, recipient);
// Stake QEURO for yield
stQEURO.stake(qeuroAmount);
// Get current exchange rate
// QuantillonVault
function getVaultMetrics() external view returns (...);
function getProtocolCollateralizationRatio() external view returns (uint256);
// YieldShift
function getPoolMetrics() external view returns (...);
function getCurrentYieldShift() external view returns (uint256);
// ChainlinkOracle
function getOracleHealth() external view returns (bool, bool, bool);