Collateral and Oracle Profile
A Collateral Profile is the unit of risk configuration. It ties together:
token address + adapter
oracle method
liquidity assumptions
parameter set in RiskRegistry
Profile IDs
Use bytes32 profileId = keccak256(abi.encode(symbol, token, version)) or explicit constants.
Liquid collateral eligibility (hard gate)
A token may enter the liquid pool only if all are true:
Priceability
at least two independent pricing sources or a primary + robust sanity check
staleness behavior defined
Liquidation feasibility
auction can clear meaningful size without relying on multi-day off-chain processes
DEX depth, market-maker commitments, or reliable redemption within short settlement
Transferability
adapter and auction house can legally/technically hold and transfer the token
Operational transparency
supply, NAV (if applicable), and key events observable
clear issuer/custodian posture
Oracle and valuation architecture
Pricing is the sharp edge of an RWA-collateral protocol. The design must be conservative by default and fail closed.
1. Components
Price Router (
PriceRouter)single read interface for the Ledger:
getPrice(profileId) -> (price, status)returns USD price and a status code
Feed Verifier (
SignedFeedVerifier)accepts signed price messages from authorized signers
verifies quorum and freshness
stores latest accepted value
Guard Layer (
PriceGuards)sanity checks: max delta, staleness, cross-source divergence, market premium/discount bounds
can place a profile into restricted mode
2. Price statuses
The Ledger must act differently depending on price status:
OK: price fresh and within guardrailsSTALE: too old; issuance disabled; repayments allowedDISPUTED: sources disagree; issuance disabled; may tighten safety checksHALTED: manual stop; only risk-reducing operations allowed
3. Pricing methods per asset category
A) Tokenized T‑bills (NAV-based)
Target behavior: price increases gradually with accrued yield.
Primary source
signed NAV/share price from an authorized signer set (issuer admin, fund admin, or designated oracle operators)
Sanity sources
on-chain market price TWAP (if token trades)
bounded daily drift: NAV should not jump beyond plausible yield + market move bounds
Guardrails
staleness threshold (tight): if NAV not updated within SLA, set
STALEmax-change: if NAV changes beyond X bps/day, require multi-signer consensus or halt
B) Tokenized stablecoins
Target behavior: price near $1 with depeg detection.
Sources
external oracle feed (primary)
on-chain DEX TWAP (sanity)
optional: CEX index via signed feed (sanity)
Guardrails
if price <
0.995(configurable), issuance disabled automaticallyif price <
0.985, peg rail outflow disabled and safety factor tightened (optional)staleness triggers restricted mode
C) Tokenized gold
Target behavior: price tracks spot gold with token-specific conversion.
Sources
XAU/USD spot feed (primary)
token market TWAP (sanity)
token-specific ratio (e.g., token represents 1 gram or 1 ounce)
Guardrails
divergence clamp between spot-implied and market price
staleness and max delta checks
4. Oracle message format (signed feed)
Use EIP‑712 structured data:
profileIdprice(USD per token unit, AMT precision)validAfter,validUntilnonce(optional)sourceId
Quorum rules:
N-of-M signers, configurable per profile
reject if less than quorum, stale, or outside bounds
Last updated