Smart Contract Components

Technical Reference Documentation

This section provides a comprehensive technical reference for the Quantillon protocol smart contracts, including access roles, key functions, events, and custom errors.


1. Contract Architecture

Overview

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   ChainlinkOracle   β”‚
                    β”‚   (EUR/USD, USDC)   β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚                  β”‚                  β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
   β”‚   QEUROToken    β”‚ β”‚QuantillonVaultβ”‚ β”‚   HedgerPool  β”‚
   β”‚ (ERC20 Stable)  β”‚ β”‚(Collateral Mgr)β”‚ β”‚(Hedger Margin)β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚                  β”‚                  β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
   β”‚  stQEUROToken   β”‚ β”‚   AaveVault   β”‚ β”‚  YieldShift   β”‚
   β”‚ (Yield Bearing) β”‚ β”‚(Aave v3 Yield)β”‚ β”‚(Distribution) β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚    QTIToken     β”‚
   β”‚  (Governance)   β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Shared Libraries

Library
Function

CommonErrorLibrary

Shared custom errors

CommonValidationLibrary

Input validations

AccessControlLibrary

Access control helpers

VaultMath

Mathematical calculations

TreasuryRecoveryLibrary

Token recovery

TimeProvider

Centralized time management


2. Roles and Permissions

QEUROToken

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management, killswitch

MINTER_ROLE

keccak256("MINTER_ROLE")

Mint QEURO

BURNER_ROLE

keccak256("BURNER_ROLE")

Burn QEURO

PAUSER_ROLE

keccak256("PAUSER_ROLE")

Pause/unpause

COMPLIANCE_ROLE

keccak256("COMPLIANCE_ROLE")

Blacklist/whitelist

stQEUROToken

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management

GOVERNANCE_ROLE

keccak256("GOVERNANCE_ROLE")

Parameters, treasury

YIELD_MANAGER_ROLE

keccak256("YIELD_MANAGER_ROLE")

Yield distribution

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Pause, emergency withdraw

QTIToken

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management

GOVERNANCE_ROLE

keccak256("GOVERNANCE_ROLE")

Governance parameters

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Pause, cancel proposals

QuantillonVault

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management

GOVERNANCE_ROLE

keccak256("GOVERNANCE_ROLE")

Vault parameters

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Pause, recovery

VAULT_OPERATOR_ROLE

keccak256("VAULT_OPERATOR_ROLE")

Vault operations

HedgerPool

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management

GOVERNANCE_ROLE

keccak256("GOVERNANCE_ROLE")

Hedging parameters

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Emergency closure

HEDGER_ROLE

keccak256("HEDGER_ROLE")

Hedger operations

YieldShift

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management

GOVERNANCE_ROLE

keccak256("GOVERNANCE_ROLE")

Yield shift parameters

YIELD_MANAGER_ROLE

keccak256("YIELD_MANAGER_ROLE")

Yield distribution

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Pause distribution

AaveVault

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management

GOVERNANCE_ROLE

keccak256("GOVERNANCE_ROLE")

Aave parameters

VAULT_MANAGER_ROLE

keccak256("VAULT_MANAGER_ROLE")

Deploy/withdraw Aave

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Emergency withdrawal

ChainlinkOracle

Role
Hash Value
Permissions

DEFAULT_ADMIN_ROLE

0x00

Role management, recovery

ORACLE_MANAGER_ROLE

keccak256("ORACLE_MANAGER_ROLE")

Price bounds, feeds

EMERGENCY_ROLE

keccak256("EMERGENCY_ROLE")

Circuit breaker

UPGRADER_ROLE

keccak256("UPGRADER_ROLE")

Contract upgrades


3. Important Constants

QEUROToken

QTIToken

YieldShift

ChainlinkOracle

AaveVault


4. Main Events

QEUROToken

stQEUROToken

QTIToken

QuantillonVault

HedgerPool

YieldShift

AaveVault

ChainlinkOracle


5. Custom Errors (CommonErrorLibrary)


6. Emergency Recovery Functions

All contracts include emergency recovery functions:

These functions send recovered funds to the configured treasury address.


7. UUPS Upgrade Pattern

All upgradeable contracts use the UUPS (Universal Upgradeable Proxy Standard) pattern with:

  1. SecureUpgradeable: Base contract with integrated timelock

  2. Timelock: Mandatory delay before upgrade execution

  3. UPGRADER_ROLE: Required permission for upgrades


8. External Dependencies

Feed
Decimals
Usage

EUR/USD

8

Main exchange rate

USDC/USD

8

USDC stability validation

Aave v3 (Base Mainnet)

Contract
Function

PoolAddressesProvider

Pool address retrieval

Pool

Supply/Withdraw USDC

aUSDC

Yield receipt token

RewardsController

Claim Aave rewards


9. Deployment References

Note: Contract addresses will be published after mainnet deployment.

Testnets

Network
Status
Explorer

Base Sepolia

Active

basescan.org/address/...

Mainnet

Network
Status
Explorer

Base Mainnet

Planned

basescan.org/address/...


Documentation updated: January 2026 Contract version: MVP v1.0

Last updated