Origin OUSD
Score Breakdown
| Category | Weight | Score |
|---|---|---|
| Audits & Historical | 20% | 1.50 |
| Centralization & Control | 30% | 2.17 |
| Funds Management | 30% | 2.25 |
| Liquidity Risk | 15% | 2.50 |
| Operational Risk | 5% | 1.00 |
| Final Score | 2.05 / 5.0 | |
Overview
Origin Dollar (OUSD) is a rebasing stablecoin backed 100% by USDC. Holders' wallet balances automatically increase as yield accrues, without staking, locking, or manual compounding. Smart contracts must opt in to receive rebased yield; those that don't forfeit rewards to standard holders, amplifying returns for participants. An ERC-4626 wrapper (wOUSD) is available for DeFi composability, appreciating in value instead of rebasing.
OUSD generates yield through three mechanisms:
- Morpho Lending on Ethereum (~$2.97M, ~47.6% of TVL) — Deposits USDC into a Morpho Vault V2 that routes into a MetaMorpho vault and on into Morpho Blue markets
- Curve AMO (~$1.02M, ~16.3% of TVL) — Algorithmic Market Operations providing liquidity in the Curve OUSD/USDC pool, earning trading fees and CRV incentives
- Cross-Chain Strategies (~$2.25M, ~36.1% of TVL) — Bridges USDC via Circle CCTP to Base (~$1.21M) and HyperEVM (~$1.04M), where each remote leg deposits into a local Morpho Vault V2 stack
Every strategy leg other than the Curve AMO therefore terminates in Morpho lending markets: ~80% of TVL is USDC supplied to Morpho Blue across three chains.
Collateral was simplified from multi-stablecoin (USDT, DAI, USDC) to USDC-only via governance proposal in November 2025.
- Launch Date: September 18, 2020 (relaunched January 5, 2021 after November 2020 hack)
- Performance Fee: 20% (2,000 bps), collected by Trustee multisig
- Total Value: ~$6.24M (vault
totalValue()at block 25876180, August 31, 2026) - OUSD Supply: ~6,216,831 OUSD — backing ratio
totalValue() / totalSupply()= 100.34%
Links:
Risk Summary
Key Strengths
- On-chain xOGN governance with a ~5-day total cycle, self-administered 48h Timelock, cancel-only GOV multisig, and no admin backdoor — identical governance to audited Origin ARM
- 9 OUSD-specific audits by top firms (OpenZeppelin, Trail of Bits, Sigma Prime, Solidified, Certora formal verification) + $1M Immunefi bounty; the February 2026 Sigma Prime review covered both the current vault implementation and the cross-chain CCTP design
- ~5 years clean track record since the January 2021 relaunch, with lessons learned from the 2020 hack
- Standard minting always requires a USDC collateral deposit — permissionless and fully backed; backing ratio is 100.34%
- AMO minting constrained by the 99.8% solvency check, the pool-balance-improvement modifier, and a governance-controlled whitelist that still contains only the Curve AMO
- The withdrawal queue is fully drained (14 USDC outstanding across 161 lifetime requests) and the vault is unpaused
- Rebase is rate-limited by construction: supply only ratchets up, never above
totalValue(), capped at ≈7.87% APR and 2% per rebase - The Morpho curation layer under ~80% of TVL is Yearn's own, so the largest dependency is an internal counterparty rather than an unknown third party; the Ethereum and Base stacks additionally run 3-day timelocks with guardians set, and the HyperEVM V2 vault has permanently abdicated the two selectors that could gate withdrawals
Key Risks
- ~54% of TVL is credit exposure to Origin's own LSTs. USDC is lent against OETH (Ethereum) and superOETHb (Base) in Morpho markets whose oracles hard-assume a 1:1 ETH peg — a depeg produces bad debt without first producing liquidations.
- Morpho concentration and depth. ~80% of TVL routes through Morpho Blue via six intermediating vault contracts on three chains; the Ethereum leg alone is 47.6% of TVL in a single market at 84.6% utilization, leaving ~$1.59M withdrawable on demand. The curation layer across all three chains is Yearn's own, so for a Yearn allocation this is internal concentration rather than third-party counterparty risk.
- AMO
mintForStrategy()can mint OUSD without direct backing (constrained to ~0.2% of supply by the strategy-level solvency check); the historical vault-level cap is deprecated - Strategist (2-of-8 multisig) has broad untimelocked power: AMO operations, strategy allocation, vault parameters, pause controls, remote-strategy deposits/withdrawals, and yield delegation (
delegateYield/undelegateYieldcan redirect any account's rebase yield) - Single collateral dependency on USDC (Circle) — a centralized stablecoin with freeze capability, now held on three chains
- Cross-chain strategies (~36% of TVL) add bridge risk, and mainnet accounting for them is a CCTP-pushed cached balance up to a day stale by design
- Thin and non-independent exit depth: the Curve pool holds only ~$505K of USDC and 92.5% of its LP is Origin's own AMO;
vaultBuffer= 0 leaves ~$6K idle; redemptions flow through an async queue with no on-chain upper bound on claim time - TVL ~$6.24M, down ~22% over the quarter and ~98% from the $298M peak — small enough that a single large redeemer dominates the exit path
Critical Risks
- None identified. All critical gates pass. OUSD is governed by an on-chain DAO plus a 48h timelock, its contracts are source-verified, and reserves are fully readable on-chain.
- Historical $7.7M hack (November 2020) was on a different codebase; the protocol was completely relaunched with audited contracts.
Full Report
Contract Addresses
Ethereum Mainnet
| Contract | Address | Role / Key facts |
|---|---|---|
| OUSD Token (Proxy) | 0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86 |
Rebasing ERC-20; governor() = Timelock |
| OUSD Token Implementation | 0xA7B7c59a1705e4a624ea8a4ad8a06f9de22dcc33 |
EIP-1967 implementation slot |
| wOUSD (ERC-4626) | 0xD2af830E8CBdFed6CC11Bab697bB25496ed6FA62 |
Non-rebasing wrapper; holds ~1.54M OUSD (~24.9% of supply) |
| OUSD Vault (Proxy) | 0xE75D77B1865Ae93c7eaa3040B038D7aA7BC02F70 |
Collateral vault; governor() = Timelock |
| OUSD Vault Implementation | 0x82948060c4b72684bededec342350ab344975145 |
OUSDVault; EIP-1967 admin slot is zero (Governable pattern) |
| Curve USDC AMO Strategy | 0x26a02ec47ACC2A3442b757F45E0A82B8e993Ce11 |
Only mint-whitelisted strategy; SOLVENCY_THRESHOLD = 99.8%, maxSlippage = 0.2% |
| Morpho V2 Strategy | 0x3643cafA6eF3dd7Fcc2ADaD1cabf708075AFFf6e |
defaultStrategy — receives auto-allocated deposits |
| Cross-Chain Master Strategy (Base) | 0xB1d624fc40824683e2bFBEfd19eB208DbBE00866 |
CrossChainMasterStrategy; reports a cached remoteStrategyBalance |
| Cross-Chain Master Strategy (HyperEVM) | 0xE0228DB13F8C4Eb00fD1e08e076b09eF5cD0EA1e |
Same pattern; peer strategy shares the address on HyperEVM |
| OUSD Vault V2 (Morpho Vault V2) | 0xFB154c729A16802c4ad1E8f7FF539a8b9f49c960 |
OUSD-V2; owner + curator = Yearn Security (4/7); 0% fees |
| Morpho Vault V1 Adapter | 0xD8F093dCE8504F10Ac798A978eF9E0C230B2f5fF |
Sole adapter of OUSD-V2; forwards 100% into OUSD-V1 |
| OUSD Vault V1 (MetaMorpho) | 0x5B8b9FA8e4145eE06025F642cAdB1B47e5F39F04 |
OUSD-V1; owner Yearn Security (4/7), curator 0x90D0…6B51 (2/3), guardian 0xF14B…8FDC, 3-day timelock, 5% fee |
| Morpho Blue | 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb |
Immutable lending primitive underneath both vault layers |
| Curve OUSD/USDC Pool | 0x6d18E1a7faeB1F0467A77C0d293872ab685426dc |
StableSwapNG; ~$1.10M TVL; 92.5% of its LP is the AMO |
| Curve Gauge | 0x1eF8B6Ea6434e722C916314caF8Bf16C81cAF2f9 |
AMO stakes LP here for CRV |
| CoW Harvester | 0xD400341aEfED0BC75176714cFdE82e8BDAA2D3b8 |
Sells CRV / MORPHO into USDC |
| Timelock Controller | 0x35918cDE7233F2dD33fA41ae3Cb6aE0e42E0e69F |
getMinDelay() = 172,800s (48h); self-administered |
| Origin DeFi Governance | 0x1D3fBD4d129Ddd2372EA85c5Fa00b2682081c9EC |
PROPOSER + EXECUTOR + CANCELLER on the Timelock |
| GOV Multisig (5/8, cancel-only) | 0xbe2AB3d3d8F6a32b96414ebbd865dBD276d3d899 |
CANCELLER only |
| Strategist / Guardian (2/8) | 0x4FF1b9D9ba8558F5EAfCec096318eA0d8b541971 |
strategistAddr() on vault and on both remote strategies |
| Trustee / Fee Collector (1/3) | 0xBB077E716A5f1F1B63ed5244eBFf5214E50fec8c |
Receives the 20% performance fee |
| Operator (EOA) | 0x739212d5bAfE6AAC8Be49a60B7d003bD41DBf38b |
operatorAddr() on the vault and on both remote strategies; can call rebase() and push cross-chain balance updates |
| xOGN Governance Token | 0x63898b3b6Ef3d39332082178656E9862bee45C57 |
Staked OGN voting power |
| USDC (Collateral) | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
Sole vault asset (getAllAssets()) |
| Chainlink ETH/USD | 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 |
Base feed of the OETH/USDC Morpho market oracle |
| Chainlink USDC/USD | 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6 |
Quote feed of the same market oracle |
| Legacy Oracle Router | 0x36CFB852d3b84afB3909BCf4ea0dbe8C82eE1C3c |
No longer wired in — the vault's price provider slot is _deprecated_priceProvider |
Base
| Contract | Address | Role / Key facts |
|---|---|---|
| Cross-Chain Remote Strategy | 0xB1d624fc40824683e2bFBEfd19eB208DbBE00866 |
Same address as the mainnet master; governor() = 0xf817…464f |
| OUSD Vault V2 (Morpho Vault V2) | 0x2Ba14b2e1E7D2189D3550b708DFCA01f899f33c1 |
OUSDb-V2; owner 0xFEaE…E36F (4/8), curator 0x90D0…6B51 (2/3) |
| Morpho Vault V1 Adapter | 0xFE4ccb1f0d9634F3191cA45B7f3413c4ca85086E |
Sole adapter; forwards 100% into OUSDb-V1 |
| OUSD Vault V1 (MetaMorpho) | 0x581Cc9a73Ec7431723A4a80699B8f801205841F1 |
OUSDb-V1; guardian 0x28bc…9703, 3-day timelock, 5% fee |
| USDC (Base) | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
CCTP destination asset |
HyperEVM
| Contract | Address | Role / Key facts |
|---|---|---|
| Cross-Chain Remote Strategy | 0xE0228DB13F8C4Eb00fD1e08e076b09eF5cD0EA1e |
Same address as the mainnet master; governor() = 0x7712…1364 |
| OUSD Vault V2 (Morpho Vault V2) | 0xE90959cbE7E56b5eBFF9AD12de611A4976F2d2B1 |
OUSDh-V2; owner = curator = Yearn deployer key 0xFc5F…C12B; setReceiveAssetsGate and setAdapterRegistry permanently abdicated |
| Morpho Vault V1 Adapter | 0xF912d9489DEc1593D888eb680a4074f84c44413c |
Sole adapter; forwards 100% into OUSDh-V1 |
| OUSD Vault V1 (MetaMorpho v1.1) | 0x0fb7e41A0A85Eb0BcA55172b73942cc6685e2B2E |
OUSDh-V1; owner = the same key, curator() = 0x0, guardian() = 0x0, timelock() = 0; feeRecipient() = the Yearn curator Safe |
| Morpho Blue (HyperEVM) | 0x68e37dE8d93d3496ae143F2E900490f6280C57cD |
Lending primitive |
| USDC (HyperEVM) | 0xb88339CB7199b77E23DB6E890353E22632Ba630f |
CCTP destination asset |
Audits and Due Diligence Disclosures
OUSD has been audited extensively across its lifecycle. Key OUSD-specific audits:
| # | Date | Firm | Scope | Report |
|---|---|---|---|---|
| 1 | Dec 2020 | Trail of Bits | OUSD (pre-relaunch) | Report |
| 2 | Dec 2020 | Solidified | OUSD (pre-relaunch) | Report |
| 3 | Oct 2021 | OpenZeppelin | Origin Dollar | Report |
| 4 | Jun 2022 | OpenZeppelin | Origin Dollar Governance | Report |
| 5 | Oct 2022 | OpenZeppelin | Origin Dollar Convex | Report |
| 6 | Apr 2023 | OpenZeppelin | OUSD Dripper & Uniswap Strategy | Report |
| 7 | Dec 2024 | Certora | Formal Verification (OUSD) | Report |
| 8 | Dec 2024 | OpenZeppelin | Origin OUSD | Report |
| 9 | Feb 2026 | Sigma Prime | OUSD Upgrade Security Assessment v2 | Report |
The February 2026 Sigma Prime review is the one that matters for the current architecture: its scope covered both the vault upgrade (rebase mechanism, strategy management, yield distribution) and the cross-chain CCTP strategies, and it produced findings specific to CCTP fee handling, remote-balance timestamp tracking, and finality-threshold validation.
Origin Protocol maintains 30+ audit reports across all products in their security repository. They have a continuous auditing agreement with OpenZeppelin to review 100% of smart contract changes.
Smart Contract Complexity: High — upgradeable proxy pattern (EIP-1967), rebasing token with non-standard ERC-20 behavior, AMO minting mechanism, 4 active strategies including two cross-chain legs driven by CCTP messaging, and a three-deep Morpho vault nesting (strategy → Morpho Vault V2 → adapter → MetaMorpho → Morpho Blue markets) replicated on three chains.
Bug Bounty
- Platform: Immunefi — live since November 22, 2021, program last updated August 4, 2026
- Maximum Payout: $1,000,000 for a critical smart-contract report, capped at 10% of economic damage with a $50,000 floor. High severity is a flat $15,000. Payouts are made directly by Origin, denominated in USD and settled in OUSD.
- Scope: OUSD token contract explicitly in-scope (28 assets total)
- Track record: 40 paid reports totalling $139.2K; median resolution time 7 hours
- Safe Harbor: Enabled via SEAL team; PoC always required, no KYC for payout
- Link: https://immunefi.com/bug-bounty/originprotocol/information/
Historical Track Record
- Launched: September 18, 2020 (~5.5 years in production)
- Relaunched: January 5, 2021 (after November 2020 hack, with fresh audits)
- November 17, 2020 — OUSD Flash Loan Reentrancy Attack ($7.7M loss):
- Attack: Exploited missing input validation in
mintMultiple()and lack of reentrancy protection. Attacker used a malicious ERC-20 contract to re-enter the mint function, inflating OUSD supply without depositing backing collateral. - Impact: 11,809 ETH + 2,249,821 DAI stolen (~$7.7M), including $1M+ from Origin founders/employees.
- Resolution: Deposits immediately disabled. $1M bounty offered for fund recovery. All existing OUSD balances reset to zero upon relaunch.
- Compensation: Users <=1,000 OUSD received 100% in newly minted OUSD. Users >1,000 OUSD received 25% OUSD + 75% in OGN tokens (1-year lock, 25% interest). Founders received no compensation.
- Source: PeckShield Root Cause Analysis, rekt.news
- Attack: Exploited missing input validation in
- Post-relaunch incidents: None in ~5 years since relaunch
- TVL history: Peak $298.2M (January 1, 2022), all-time low $4.90M (November 2024), current ~$6.24M on-chain / $5.69M as tracked by DeFiLlama. Over the last 90 days TVL ran from ~$7.31M in mid-June down to ~$5.63M in mid-August and has since flattened around $5.7M — a ~22% quarterly drawdown with no single-day cliff.
- Price stability: Post-relaunch peg maintained within a few basis points of $1.00. Minor deviation to $0.9671 in March 2022. The Curve pool's internal EMA oracle currently marks OUSD at $1.0001.
- Team: Origin Protocol since 2017. Founded by Josh Fraser & Matthew Liu. CEO: Rafael Ugolini. Backed by Pantera Capital, Founders Fund.
Funds Management
Strategy Allocation (vault totalValue() = 6,237,697.49 USDC at block 25876180):
| Strategy | Balance (USDC) | % of TVL | Description |
|---|---|---|---|
| Morpho V2 (Ethereum) | 2,966,094 | 47.55% | Morpho Vault V2 → MetaMorpho → Morpho Blue |
| Curve USDC AMO | 1,015,646 | 16.28% | Curve OUSD/USDC pool + gauge staking |
| Cross-Chain (Base) | 1,209,584 | 19.39% | CCTP to Base → Morpho Vault V2 stack |
| Cross-Chain (HyperEVM) | 1,039,942 | 16.67% | CCTP to HyperEVM → Morpho Vault V2 stack |
| Vault (idle) | 6,432 | 0.10% | Raw vault USDC 6,446 less the withdrawal queue's queued − claimed reserve of 14; vaultBuffer = 0 |
Reward tokens (CRV, MORPHO) are sold via CoW Protocol into USDC and returned to the vault, where they are distributed to holders via rebase.
Where the Morpho Legs Actually Sit
Each Morpho leg is three contracts deep: the strategy holds shares of a Morpho Vault V2, which holds a single MorphoVaultV1Adapter, which holds shares of a MetaMorpho (Vault V1), which supplies Morpho Blue markets. Only the outermost layer is named after OUSD; the risk lives in the innermost markets.
| Chain | Morpho Blue market | LLTV | OUSD exposure | Market utilization | Oracle |
|---|---|---|---|---|---|
| Ethereum | OETH / USDC — 0xb8fe…510e |
86% | ~$2,966,000 (~100% of the leg) | 84.6% ($10.32M supplied, $8.73M borrowed) | Chainlink ETH/USD ÷ USDC/USD |
| Base | superOETHb / USDC — 0x67a6…b538 |
77% | ~$421,100 (~35% of the leg) | 88.2% ($421.1K supplied, $371.5K borrowed) | Chainlink ETH/USD ÷ USDC/USD |
| Base | cbXRP / USDC — 0xd4a9…4109 |
62.5% | ~$788,900 (~65% of the leg) | 86.7% ($50.6M supplied, $43.9M borrowed) | Chainlink XRP/USD |
| HyperEVM | kHYPE / USDC | 62.5% | ~$957,000 (~92% of the leg) | 85.5% ($11.64M supplied, $9.95M borrowed) | RedStone kHYPE_FUNDAMENTAL × RedStone HYPE |
| HyperEVM | WHYPE / USDC | 62.5% | ~$84,000 (~8% of the leg) | 87.9% ($1.37M supplied, $1.21M borrowed) | RedStone HYPE |
Two consequences follow directly from this table.
Origin's own LSTs back over half of OUSD. ~$2.97M (OETH on Ethereum) plus ~$421K (superOETHb on Base) is ~54% of OUSD's TVL lent against collateral that Origin itself issues. The borrowers are third parties — 38 Borrow events from 15 distinct accounts in the OETH market over the last ~275K blocks — so this is not a self-loan, but the credit quality of a majority of OUSD's backing is a function of an Origin product. Both oracles price the collateral off Chainlink ETH/USD with no OETH/ETH or superOETHb/ETH feed, i.e. they hard-assume a 1:1 peg to ETH. An OETH depeg would not trigger liquidations; it would silently convert those positions into bad debt carried by OUSD.
Origin's own AMO is the Curve pool. The AMO strategy holds 1,012,809 of the pool's 1,094,475 LP tokens — 92.5% of the OUSD/USDC pool. The "secondary DEX liquidity" that backstops OUSD's peg is, in the main, OUSD's own capital.
Accessibility
- Minting: Permissionless. Anyone can call
mint()by depositing USDC; the vault mints equivalent OUSD 1:1. RequiressafeTransferFromof USDC — cannot mint without depositing collateral. - AMO Minting: The Curve AMO strategy can call
mintForStrategy()to mint OUSD without direct user-deposited backing (see AMO Minting Analysis below). Only governor-whitelisted strategies can use this function. - Redemption: Async withdrawal queue — two-step process:
requestWithdrawal(amount)burns OUSD immediately and enqueues a withdrawal (NFT-like request ID).claimWithdrawal(id)/claimWithdrawals(ids[])pays out USDC afterwithdrawalClaimDelay(600s = 10 minutes minimum, verified on-chain) AND when the queue's claimable liquidity has caught up to the request. There is no on-chain upper bound on claim time — if the queue is ahead of deposits/strategy withdrawals, a claim can wait indefinitely. The strategist (or anyone permissionlessly, viaallocate()/addWithdrawalQueueLiquidity()) must supply USDC to advance the queue.
- Queue state:
withdrawalQueueMetadata()reports lifetime cumulative counters —queued=claimable= 3,546,522 USDC andclaimed= 3,546,507 across 161 requests since launch. The outstanding, unclaimed balance isqueued − claimed= 14 USDC; there is effectively no backlog. - DEX Swaps: Instant exits via Curve OUSD/USDC pool (~$1.10M TVL).
- Fees: 20% performance fee (2,000 bps), no deposit/withdrawal fees.
AMO Minting Analysis
Can OUSD be minted without backing? Yes, through the AMO mechanism, but with constraints:
mintForStrategy()allows whitelisted strategies to mint OUSD without depositing collateral. Currently only the Curve USDC AMO strategy (0x26a02ec47ACC2A3442b757F45E0A82B8e993Ce11) is whitelisted.- Adding strategies to the mint whitelist requires governance (xOGN vote + 48h timelock).
- Solvency check: After every AMO operation,
_solvencyAssert()verifies thattotalVaultValue / totalOUSDSupply >= 99.8%(SOLVENCY_THRESHOLD). This caps the maximum unbacked OUSD at ~0.2% of total supply. - Pool balance check: The
improvePoolBalancemodifier ensures one-sided operations (mint-and-add or remove-and-burn) must improve the Curve pool's balance. Sequential operations in the same direction are prevented. maxSupplyDiff: Set to 5% (checked during redemptions) — if supply exceeds backing by >5%, redemptions revert.- Historical minting cap (
netOusdMintForStrategyThreshold) has been deprecated. There is no vault-level per-strategy cap. Protection relies on the strategy-level solvency check.
Risk assessment: AMO-minted OUSD enters the Curve pool (not free circulation). It can only be obtained by someone swapping USDC for it, at which point it becomes backed. The strategist (2-of-8 multisig) can trigger AMO operations without governance vote. The 99.8% solvency threshold limits exploitation but the deprecated vault-level cap is a design choice worth monitoring.
Collateralization
- The vault's only asset is USDC (
getAllAssets()returns a single entry), and OUSD is minted 1:1 against it. Backing ratiototalValue() / totalSupply()= 100.34%. - What backs OUSD in practice is not idle USDC but lending claims: ~80% of TVL is USDC supplied to Morpho Blue markets across Ethereum, Base, and HyperEVM, and ~16% is an AMO LP position in the Curve OUSD/USDC pool.
vaultBuffer= 0, so effective idle USDC is ~6,432. - Collateral behind those lending claims is Origin's own OETH and superOETHb (~54% of TVL), cbXRP (~12.6%), and HYPE / kHYPE (~16.7%). Every market is over-collateralized at the LLTVs above, but the OETH and superOETHb markets rely on oracles that assume a hard 1:1 peg to ETH.
- No debt, leverage, or liquidation mechanics exist in the OUSD vault itself; the leverage sits with the third-party borrowers on the other side of the Morpho markets.
- Cross-chain strategies hold ~36% of TVL on Base and HyperEVM — these funds require a CCTP round trip before they can settle an Ethereum redemption.
Provability
vault.totalValue()returns the sum of strategy balances plus vault USDC, minus the withdrawal-queue reserve (queued − claimed). The same is true ofvault.checkBalance(asset). Raw vault USDC and the queue reserve must be inspected separately to reconstruct each component.ousd.totalSupply()lives on the OUSD token, not on the vault. The vault parametermaxSupplyDiff(5%) and the AMOSOLVENCY_THRESHOLD(99.8%) compare these two sources at redemption / AMO time.- Rebase calculated programmatically:
rebasingCreditsPerTokendetermines each holder's share of rebased yield. - The vault holds no oracle. The current implementation's price-provider slot is
_deprecated_priceProviderand neitherVaultCorenorVaultAdminreads a price anywhere — with a single 1:1 asset there is nothing to price. Chainlink still matters, but one layer down, inside the Morpho market oracles. - Cross-chain balances are cached, not live.
CrossChainMasterStrategy.checkBalance()returnslocal USDC + pendingAmount + remoteStrategyBalance, whereremoteStrategyBalanceis a value pushed from the remote chain over CCTP messaging and accepted up toMAX_BALANCE_CHECK_AGE = 1 dayold. At the snapshot block the cached figures track the remote side to within ~$23 (Base 1,209,584 cached vs 1,209,605 live; HyperEVM 1,039,942 vs 1,039,964), so the mechanism is working — but 36% of reported TVL is a message, not a read. - Full verification requires walking three chains and four contract layers per leg. Everything is on-chain and permissionlessly readable; nothing is attested off-chain.
Liquidity Risk
- Primary exit: Async withdrawal queue via
requestWithdrawal()→claimWithdrawal(). OUSD is burned at request time; USDC is paid only after (a)withdrawalClaimDelayof 10 minutes AND (b) queue claimable liquidity has advanced past the request. No on-chain upper bound on wait time — effective wait depends on how quickly strategies return USDC. - Queue backlog: effectively zero.
withdrawalQueueMetadata()cumulativequeued(3,546,522) minus cumulativeclaimed(3,546,507) leaves 14 USDC outstanding across 161 lifetime requests. Note thatqueuedandclaimableare running lifetime totals, not a live backlog; onlyqueued − claimedmeasures pending exit demand. - Instant on-Ethereum liquidity is the binding constraint. Only ~$1.59M of the $2.97M Ethereum Morpho position can be pulled right now — the OETH/USDC market runs at 84.6% utilization, leaving $1,594,442 of free liquidity. Adding vault idle (~$6K) and the Curve pool's USDC side (~$505K), roughly $2.1M (~34% of TVL) is reachable without waiting on borrowers or a bridge.
- DEX liquidity: Curve OUSD/USDC pool (
0x6d18E1a7faeB1F0467A77C0d293872ab685426dc) holds 592,983 OUSD + 504,559 USDC (nominal TVL ~$1.10M).get_dy(0,1, 100k OUSD)= 99,965 USDC (−0.03%),get_dy(0,1, 300k)= 299,732 (−0.09%),get_dy(0,1, 500k)= 492,141 (−1.6%). The USDC side is only ~$505K, so swap exits past ~$500K OUSD deplete it. 92.5% of the pool's LP is Origin's own AMO, so this depth is not independent third-party liquidity. - Vault buffer:
vaultBuffer= 0 and effective idle USDC is ~6,432. Queue advancement depends on the strategist pulling from strategies (withdrawFromStrategy/withdrawAllFromStrategies), on the permissionlessaddWithdrawalQueueLiquidity(), or on new deposits auto-allocating. - Cross-chain assets: ~$2.25M (~36% of TVL) on Base and HyperEVM. The HyperEVM leg is fully liquid at the remote end ($1.04M position against $1.86M of free market liquidity); the Base leg is not — its superOETHb market is 88.2% utilized with only ~$50K free against a ~$421K position, so ~$421K of the Base leg is illiquid until borrowers repay. Everything returning to Ethereum needs a CCTP round trip (minutes to hours) on top.
- No priority mechanism — first-come-first-served queue ordering.
- Same-value assets (USD stablecoins) mitigate price impact risk during any waiting period.
- Legacy OUSD/3CRV pool: ~13,956 OUSD + ~13,990 3CRV (~$28K), effectively deprecated.
Centralization & Control Risks
Governance
Governance Structure: Identical to Origin ARM — same xOGN governance, same Timelock, same multisig. See Appendix: Contract Architecture for full diagram.
Timelock Roles (verified via hasRole()):
| Role | Origin DeFi Governance | GOV Multisig (5/8) |
|---|---|---|
| PROPOSER | ✓ | ✗ |
| EXECUTOR | ✓ | ✗ |
| CANCELLER | ✓ | ✓ |
- Timelock is self-administered (TIMELOCK_ADMIN_ROLE held by itself)
- Total time from proposal to execution: ~5 days minimum (24h voting delay + 48h voting + 48h timelock)
- No backdoor — only Origin DeFi Governance can propose/execute
Multisig thresholds (getThreshold() / getOwners()): GOV Multisig 5-of-8, Strategist / Guardian 2-of-8, Trustee 1-of-3.
Privileged Roles:
| Role | Who | Timelock? | Powers |
|---|---|---|---|
| Governor (owner) | Timelock → xOGN governance | ~5 days | Upgrade proxy, approve/remove strategies, add/remove from mint whitelist, setAutoAllocateThreshold, setMaxSupplyDiff, setWithdrawalClaimDelay, setTrusteeFeeBps, setTrusteeAddress, setStrategistAddr, setOperatorAddr, governanceRebaseOptIn |
| Strategist | 2-of-8 Safe 0x4FF1…971 |
None | Vault (all onlyGovernorOrStrategist): depositToStrategy / withdrawFromStrategy / withdrawAllFromStrategy / withdrawAllFromStrategies, setVaultBuffer, setDefaultStrategy, setRebaseRateMax, setDripDuration, pauseCapital / pauseRebase, unpauseCapital / unpauseRebase, rebase. Curve AMO: mintAndAddOTokens / removeAndBurnOTokens / removeOnlyAssets, reward harvesting. Both remote cross-chain strategies: deposit / depositAll / withdraw / withdrawAll. OUSD Token (onlyGovernorOrStrategist): delegateYield(from, to), undelegateYield(from) — can redirect rebase yield of any account to any other account without that account's consent. |
| Operator | EOA 0x7392…F38b |
None | rebase() on the vault; sendBalanceUpdate() on both remote strategies. Bounded — _rebase() only ratchets supply upward, never above totalValue(), and is capped by rebasePerSecondMax and a 2% per-rebase ceiling. |
| Trustee | 1-of-3 Safe 0xBB07…c8c |
None | Receives 20% performance fee |
Key Risks:
- AMO minting without timelock: The Strategist can trigger AMO mint/burn operations, constrained by the strategy-level 99.8% solvency check. The vault-level AMO minting cap (
netOusdMintForStrategyThreshold) is deprecated (function reverts on-chain). - Yield delegation without timelock:
delegateYield/undelegateYieldon the OUSD token areonlyGovernorOrStrategist— the strategist can redirect the rebase yield of any account (including smart contracts holding OUSD) to an arbitrary recipient. This is a non-trivial power over holder yield. - Strategy reallocation without timelock: The strategist can move all vault funds to/from any approved strategy (
withdrawAllFromStrategies,setDefaultStrategy,depositToStrategy). Bounded by what's already on the governor-approved strategy list. - Rebase rate cap without timelock:
setRebaseRateMaxlets the strategist cap the rebase APR — misconfiguration could strand yield.rebasePerSecondMaxis currently 2,496,362,574 (≈7.87% APR).
Programmability
- Standard minting and
requestWithdrawal/claimWithdrawal: fully programmatic and permissionless.allocate()andaddWithdrawalQueueLiquidity()are permissionless too. - Rebase: not automatic on user operations.
rebase()is restricted to the operator EOA, the strategist, or the governor. Yield is dripped rather than paid in full:_nextYield()smooths the surplus overdripDuration(604,800s = 7 days), caps it atrebasePerSecondMax(≈7.87% APR), and hard-caps any single rebase at 2% of rebasing supply. Supply only ever ratchets up and never abovetotalValue(). - Auto-allocation: triggered inside
mint()when a deposit exceedsautoAllocateThreshold(25,000 USDC), routed todefaultStrategy(currently the Morpho V2 strategy). - AMO operations and inter-strategy rebalancing: require strategist intervention.
- Cross-chain strategy management: manual bridging decisions plus operator-pushed balance updates; the mainnet accounting for those legs is a cached value refreshed by CCTP messages.
- Reward harvesting: CoW Harvester sells CRV/MORPHO → USDC via CoW Protocol (semi-automated, bot-triggered).
External Dependencies
USDC / Circle (Critical) — Sole collateral asset on all three chains. Circle can freeze/blacklist addresses holding USDC, which would impact the vault, the strategies, or the remote legs.
Morpho (Critical) — ~80% of TVL ultimately sits in Morpho Blue markets, reached through six intermediating vault contracts across three chains. Morpho Blue itself is immutable; the risk is concentrated in the curation layer above it.
Morpho curation — Yearn (not an external counterparty) — every OUSD Morpho vault on all three chains is curated by Yearn:
- Ethereum:
OUSD-V2andOUSD-V1are owned by the Yearn Security multisig (0xe5e2Baf9…89c0, 4-of-7);OUSD-V1is curated by0x90D0…6B51(2-of-3) with a guardian and a 3-day timelock. - Base:
OUSDb-V2/OUSDb-V1owned by0xFEaE2F85…E36F(4-of-8, signer set overlapping Yearn Security), same curator Safe, guardian set, 3-day timelock. - HyperEVM:
OUSDh-V2/OUSDh-V1deployed and operated by the Yearn key0xFc5F89d2…C12B, which created both vaults and setfeeRecipient()to the same Yearn curator Safe. This leg is configured more loosely than the other two — the key is an EOA rather than a Safe,curator()andguardian()are unset, andtimelock()is 0, so cap and supply-queue changes take effect immediately. Withdrawals cannot be blocked:setReceiveAssetsGateandsetAdapterRegistryare permanently abdicated onOUSDh-V2.
For a Yearn allocation decision this is an internal counterparty rather than a third-party trust assumption — the same team already curates the Morpho vaults behind several Yearn products. It is recorded here because it is a real concentration (Yearn curation sits under ~80% of OUSD's TVL) and because the HyperEVM configuration is worth tightening, not because it is an external dependency to be priced.
- Ethereum:
Origin OETH / superOETHb (Critical) — ~54% of TVL is lent against Origin's own LSTs, priced by oracles that assume a fixed 1:1 ETH peg. A sustained OETH depeg produces bad debt in the markets OUSD supplies without triggering liquidations first.
Curve (High) — AMO yield generation (~16% of TVL) and the primary on-Ethereum DEX exit (~$1.10M pool TVL, ~$505K USDC side). 92.5% of that pool's LP is the AMO itself.
Circle CCTP (High) — Cross-chain strategies use Circle CCTP V2 to bridge USDC to Base and HyperEVM, and also to carry the balance and withdrawal messages the mainnet accounting depends on. ~36% of TVL is held on remote chains.
Chainlink (High) — No longer read by the OUSD vault, but the ETH/USD and USDC/USD feeds price the OETH and superOETHb Morpho markets that hold ~54% of TVL.
RedStone (Medium) —
kHYPE_FUNDAMENTALandHYPEpush feeds price the HyperEVM markets holding ~17% of TVL.CoW Protocol (Low) — Used for reward token swaps (CRV, MORPHO → USDC). Not critical for core functionality.
There is no single dependency whose failure stops the protocol, but the dependency surface is now both wider and deeper than the vault's "100% USDC-backed" description suggests: a Circle freeze, a Morpho curation failure on any of three chains, or an OETH depeg each reaches a large fraction of backing.
Operational Risk
- Team: Origin Protocol since 2017, public team, known leadership (Josh Fraser, Matthew Liu, Rafael Ugolini), VC-backed (Pantera, Founders Fund)
- Documentation: Comprehensive. Public GitHub with active development, dedicated security repo with 30+ audits
- Legal: Established company (Origin Protocol)
- Incident Response: Learned from 2020 hack. $1M bug bounty on Immunefi. Safe Harbor enabled via SEAL team. Full relaunch with multiple audits after incident.
Monitoring
- Morpho curation (all three chains): Track owner, curator, guardian, timelock, cap submissions, and supply-queue changes on
OUSD-V2/OUSD-V1(Ethereum),OUSDb-V2/OUSDb-V1(Base), andOUSDh-V2/OUSDh-V1(HyperEVM). The HyperEVM pair warrants tighter watch than the other two:timelock()is 0 and no guardian is set, so a cap change and a reallocation can land in the same block and detection is the only control. Alert on any change ofowner(),curator(),guardian(), ortimelock()on any of the six vaults. - Governance: Monitor Timelock events (
CallScheduled,CallExecuted,Cancelled) on0x35918cDE7233F2dD33fA41ae3Cb6aE0e42E0e69F. Monitor EIP-1967 implementation slot changes on Vault and OUSD Token proxies. Monitor Origin DeFi Governance proposals. - Vault Parameters: Track
totalValue()on the vault (0xE75D…F70) andtotalSupply()on the OUSD token (0x2A8e…E86). Alert on >1% divergence. Note:totalValue()andcheckBalance(asset)already subtract the withdrawal-queue reserve (queued − claimed); reconstruct components from the per-strategycheckBalance()calls, the vault's raw USDC balance, andwithdrawalQueueMetadata()separately. MonitorrebasePaused()/capitalPaused(). TrackmaxSupplyDiff,vaultBuffer,defaultStrategy,dripDuration,rebasePerSecondMax, andoperatorAddrchanges. - AMO: Monitor
mintForStrategy()calls and the OUSD supply vs vault value ratio. Alert if solvency drops below 99.5%. TrackisMintWhitelistedStrategychanges (requires governance). - Strategy Allocation: Monitor strategy balances via
checkBalance()on each strategy. Alert on >20% TVL change in 24h. Track CCTP bridge transactions on both cross-chain legs. - Cross-chain balance freshness: The mainnet
checkBalance()for both remote legs is a cachedremoteStrategyBalanceaccepted up toMAX_BALANCE_CHECK_AGE(1 day) old. Compare it against the live remote-sidecheckBalance()on Base and HyperEVM; alert on divergence >1% or on a cache older than a day. - Morpho market oracles: The OETH/USDC (Ethereum) and superOETHb/USDC (Base) markets price collateral as Chainlink ETH/USD ÷ USDC/USD with no LST-specific feed. Monitor the OETH and superOETHb secondary-market prices against ETH directly; a depeg is invisible to those markets. Monitor Chainlink ETH/USD (
0x5f4eC3Df…8419) and USDC/USD (0x8fFfFfd4…18f6) for staleness, and the RedStonekHYPE_FUNDAMENTAL/HYPEfeeds on HyperEVM. - Morpho market liquidity: Track
totalSupplyAssets − totalBorrowAssetsfor the OETH/USDC and superOETHb/USDC markets. Alert when free liquidity in the Ethereum OETH market falls below the vault's likely redemption need, or when the Base superOETHb market's free liquidity stays near zero. - Liquidity: Monitor the Curve OUSD/USDC pool balance ratio; alert on imbalance beyond 60/40. Track the AMO's share of the pool's LP supply — a fall would signal the AMO is unwinding OUSD's own DEX depth.
- Strategist: Monitor role changes on vault
strategistAddr(). Track AMO operation frequency and size. MonitorYieldDelegated/YieldUndelegatedevents on the OUSD token. MonitorwithdrawAllFromStrategies,setVaultBuffer,setDefaultStrategy,setDripDuration,setRebaseRateMaxcalls. - Withdrawal Queue: Track
withdrawalQueueMetadata()and compute the live backlog asqueued − claimed—queuedandclaimableon their own are lifetime cumulative totals and will look alarming if read as a depth. Alert when the backlog exceeds vault idle plus free Ethereum Morpho liquidity.
Reassessment Triggers
- Time-based: Quarterly (next: November 2026)
- Incident-based: Any security incident, AMO solvency anomaly, USDC depeg/freeze, OETH or superOETHb depeg, bad debt in any Morpho market OUSD supplies, or a CCTP outage
- Change-based:
- Curator, owner, guardian, or timelock changes on any of the six OUSD Morpho vaults — in particular, the Morpho curation passing out of Yearn's hands would turn an internal concentration into a third-party dependency and warrant a re-score
- Supply-queue or cap changes that move a Morpho leg into a new collateral type
- New strategy added to the mint whitelist, or a new cross-chain deployment
- Governance parameter changes on the vault (
setStrategistAddr,setOperatorAddr,setMaxSupplyDiff,setWithdrawalClaimDelay, proxy upgrades) - Significant TVL change (>50%), or Origin-LST collateral exposure moving materially away from ~54% of TVL
Appendix: Contract Architecture
┌──────────────────────────────────────────────────────────────────────────┐
│ GOVERNANCE (Ethereum) │
│ │
│ xOGN Token Holders (Staked OGN) │
│ (100K xOGN to propose, ~274M xOGN quorum) │
│ │ │
│ ▼ │
│ Origin DeFi Governance (0x1D3f...) │
│ [PROPOSER + EXECUTOR + CANCELLER] │
│ (7,200 blocks voting delay + 14,416 blocks voting period) │
│ │ │
│ ▼ │
│ Timelock Controller (0x3591...) GOV Multisig 5/8 │
│ [48h delay, self-administered] ◄────── (0xbe2A...) │
│ │ [CANCELLER only] │
│ │ governor │
│ ├──────────────────────────────────────────────────────────┐ │
│ ▼ ▼ │
│ OUSD Token (0x2A8e...) OUSD Vault (0xE75D│
│ [Rebasing ERC-20, proxy] [Proxy, impl: 0x82│
│ impl: 0xA7B7... │
│ │
└──────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────┐
│ OUSD VAULT (0xE75D...) │
│ │
│ Supported Asset: USDC only (0xA0b8...) No oracle — 1:1 mint/redeem │
│ (vault's price-provider slot is _deprecated_priceProvider) │
│ │
│ Roles: │
│ ├── governor: Timelock (0x3591...) [~5d timelock] │
│ │ approveStrategy, addStrategyToMintWhitelist, setTrusteeFeeBps, │
│ │ setAutoAllocateThreshold, setMaxSupplyDiff, setOperatorAddr, │
│ │ setWithdrawalClaimDelay, setStrategistAddr, upgradeTo │
│ ├── strategistAddr: 2-of-8 Safe (0x4FF1...) "Origin: Guardian" [none] │
│ │ Vault: depositToStrategy, withdrawFromStrategy, │
│ │ withdrawAllFromStrategy(ies), setDefaultStrategy, setVaultBuffer, │
│ │ setDripDuration, setRebaseRateMax, │
│ │ pauseCapital/Rebase, unpauseCapital/Rebase, rebase. │
│ │ AMO: mintAndAddOTokens, removeAndBurnOTokens, harvest. │
│ │ Remote strategies: deposit(All), withdraw(All). │
│ │ OUSD Token: delegateYield, undelegateYield (any account). │
│ ├── operatorAddr: EOA (0x7392...) [none] — rebase(), balance updates │
│ ├── trusteeAddress: 1-of-3 Safe (0xBB07...) receives 20% fee │
│ └── vaultBuffer: 0 (all funds deployed to strategies) │
│ │
│ Key Parameters: │
│ ├── autoAllocateThreshold: 25,000 USDC │
│ ├── dripDuration: 604,800s (7d) │
│ ├── rebasePerSecondMax: 2,496,362,574 (~7.87% APR) │
│ ├── maxSupplyDiff: 5% │
│ ├── withdrawalClaimDelay: 600s │
│ └── trusteeFeeBps: 2,000 (20%) │
│ │
│ Permissionless: mint, requestWithdrawal, claimWithdrawal(s), │
│ allocate, addWithdrawalQueueLiquidity │
│ Permissioned: rebase (operator / strategist / governor) │
│ │
└──────┬──────────────┬──────────────┬──────────────┬──────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐
│ Curve USDC │ │ Morpho V2 │ │ Cross-Chain │ │ Cross-Chain │
│ AMO Strategy │ │ Strategy │ │ Master (Base)│ │ Master (HyperEVM) │
│ (0x26a0...) │ │ (0x3643...) │ │ (0xB1d6...) │ │ (0xE022...) │
│ $1.02M 16.3% │ │ $2.97M 47.6% │ │ $1.21M 19.4% │ │ $1.04M 16.7% │
│ │ │ │ │ cached bal │ │ cached bal │
│ ┌──────────┐ │ │ ▼ │ │ │ │ │ │ │
│ │Curve Pool│ │ │ OUSD-V2 │ │ CCTP V2 │ │ CCTP V2 │
│ │OUSD/USDC │ │ │ (0xFB15...) │ │ ▼ │ │ ▼ │
│ │(0x6d18..)│ │ │ Vault V2 │ │ Remote strat │ │ Remote strat │
│ │~$1.10M │ │ │ owner+curator│ │ (0xB1d6...) │ │ (0xE022...) │
│ │92.5% LP │ │ │ = Yearn Sec │ │ ▼ │ │ ▼ │
│ │ is AMO │ │ │ (4-of-7) │ │ OUSDb-V2 → │ │ OUSDh-V2 → │
│ └──────────┘ │ │ ▼ │ │ OUSDb-V1 │ │ OUSDh-V1 │
│ │ │ │ adapter → │ │ owner 4-of-8 │ │ owner = Yearn key │
│ Gauge │ │ OUSD-V1 │ │ curator 2/3 │ │ (EOA, also curator) │
│ (0x1eF8..) │ │ (0x5B8b...) │ │ guardian set │ │ guardian: none │
│ → CRV │ │ MetaMorpho │ │ timelock 3d │ │ timelock: 0 │
│ rewards │ │ 3d timelock │ │ ▼ │ │ ▼ │
│ │ │ │ ▼ │ │ Morpho Blue │ │ Morpho Blue │
│ ▼ │ │ Morpho Blue │ │ superOETHb │ │ kHYPE 62.5% ~$957K │
│ Strategist │ │ OETH/USDC │ │ 77% ~$421K │ │ WHYPE 62.5% ~$84K │
│ harvests │ │ 86% ~$2.97M │ │ cbXRP 86% │ │ (RedStone oracles) │
│ │ │ 84.6% util │ │ 62.5% ~$789K │ │ │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────────────┘
┌──────────────────────────────────────────────────────────────────────────┐
│ ORIGIN-COLLATERAL CONCENTRATION (~54% of TVL) │
│ │
│ OETH/USDC market (Ethereum) ~$2.97M oracle: CL ETH/USD ÷ USDC/USD│
│ superOETHb/USDC market (Base) ~$421K oracle: CL ETH/USD ÷ USDC/USD│
│ │
│ Neither oracle reads an OETH/ETH or superOETHb/ETH price — a depeg of │
│ Origin's own LST does not trigger liquidation, it creates bad debt in │
│ the markets OUSD supplies. │
│ │
└──────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────┐
│ AMO MINTING FLOW │
│ │
│ Curve AMO Strategy → mintForStrategy() → OUSD Token mints new OUSD │
│ [Whitelisted by governor] [No vault-level cap] [99.8% solvency] │
│ │
│ OUSD enters Curve pool → only obtainable by swapping USDC → backed │
│ │
│ Constraints: │
│ ├── _solvencyAssert(): totalValue/totalSupply >= 99.8% │
│ ├── improvePoolBalance: must improve pool ratio │
│ ├── maxSlippage: 0.2% │
│ └── maxSupplyDiff: 5% (checked on requestWithdrawal) │
│ │
└──────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────┐
│ SECONDARY LIQUIDITY │
│ │
│ Curve Pool: OUSD/USDC (CurveStableSwapNG) │
│ (0x6d18...) ~$1.10M TVL (592,983 OUSD + 504,559 USDC) │
│ AMO holds 1,012,809 / 1,094,475 LP = 92.5% — not third-party depth │
│ │
│ Legacy: OUSD/3CRV Metapool (0x8765...) ~$28K TVL [deprecated] │
│ │
│ wOUSD (0xD2af...): ERC-4626 wrapper holding ~1.54M OUSD (~24.9%) │
│ │
└──────────────────────────────────────────────────────────────────────────┘
Data flows:
Mint: User USDC → Vault → mint OUSD 1:1 → auto-allocate above 25K
Redeem: requestWithdrawal (burns OUSD, enqueues request) →
wait >=600s AND queue liquidity advances →
claimWithdrawal(s) pays USDC (no on-chain upper bound on wait)
Rebase: Operator/strategist/governor calls rebase() → yield dripped over
7 days, capped at ~7.87% APR and 2% per rebase
AMO: Strategist → AMO Strategy → mintForStrategy → Curve pool
Yield: Morpho interest + CRV/MORPHO rewards → CoW Harvester → USDC → Vault
Bridge: Vault → Master strategy → CCTP → Remote strategy → Morpho V2 stack
Report: Remote strategy → CCTP message → master.remoteStrategyBalance
(accepted up to 1 day old)
Score Details
Critical Risk Gates
- Unverified contract source → PASS (vault, token, strategies, and every Morpho vault in the chain are source-verified)
- No audit → PASS (9 OUSD-specific audits including Trail of Bits, OpenZeppelin, Sigma Prime, Certora)
- Unverifiable reserves → PASS (fully on-chain via
totalValue()and per-strategycheckBalance(), though the cross-chain legs read a CCTP-pushed cache and full reconstruction spans three chains) - Total centralization → PASS (xOGN governance + 48h Timelock; strategist is a 2-of-8 multisig, not an EOA)
Category Scores
Expand a category to see how it was scored.
Audits & Historical Track Record20%1.50
Subcategory A: Audits & Security Reviews — 1.0
| Aspect | Assessment |
|---|---|
| Audits | 9 OUSD-specific audits by 5 top firms (OpenZeppelin, Trail of Bits, Sigma Prime, Solidified, Certora) |
| Current architecture | The Feb 2026 Sigma Prime review scoped both the deployed vault implementation and the cross-chain CCTP strategies |
| Bug Bounty | $1M on Immunefi, OUSD explicitly in scope, Safe Harbor enabled |
| Formal Verification | Certora formal verification (December 2024) |
| Continuous Review | OpenZeppelin reviews 100% of contract changes |
Subcategory B: Historical Track Record — 2.0
| Aspect | Assessment |
|---|---|
| Time in Production | ~5.9 years total, ~5.6 years since the secure relaunch |
| Past Incidents | $7.7M flash-loan reentrancy hack (Nov 2020) on pre-relaunch code; users fully compensated; different code since relaunch |
| TVL | ~$6.24M — down ~22% over the quarter and ~98% from the $298M peak (Jan 2022) |
| Price Stability | Peg maintained within basis points of $1.00 since relaunch; Curve EMA marks OUSD at $1.0001 |
| Redemption pressure | Withdrawal queue fully drained — 14 USDC outstanding across 161 lifetime requests |
Score: (1.0 + 2.0) / 2 = 1.5
Centralization & Control Risks30%2.17
Subcategory A: Governance — 1.0
- Upgrades are DAO-gated end to end.
upgradeTo/upgradeToAndCallareonlyGovernoron both proxies, andgovernor()on the OUSD token, the vault, and all four strategies is the Timelock0x35918cDE…E69F.transferGovernanceisonlyGovernorwith a two-stepclaimGovernance. - Only the Governor can drive the Timelock. Enumerating every
RoleGranted/RoleRevokedsince deployment: PROPOSER and EXECUTOR are held solely by Origin DeFi Governance0x1D3fBD4d…C9EC. The two earlier proposers — a 5/8 multisig and the GOV multisig — were both revoked in 2024. The GOV multisig (5-of-8) retains CANCELLER only, and TIMELOCK_ADMIN_ROLE is held by the Timelock itself. - Latency:
getMinDelay()= 172,800s (48h);votingDelay7,200 blocks (24.0h) +votingPeriod14,416 blocks (48.1h) gives exactly 5.00 days from proposal to execution, with no shorter path. This clears the rubric's 48h+ score-1 bar on the Timelock alone. - No admin backdoor. The 2-of-8 strategist and the operator EOA hold operational powers bounded by the governor-approved strategy list and the AMO solvency check, and are scored under Programmability below rather than here. Same governance as Origin ARM.
Subcategory B: Programmability — 2.5
- Minting,
requestWithdrawal,claimWithdrawal,allocate, andaddWithdrawalQueueLiquidityare permissionless; rebase is algorithmic, rate-capped, and can only ratchet supply upward withintotalValue() - Broad untimelocked strategist surface (2-of-8 multisig,
onlyGovernorOrStrategist): AMO mint/burn, strategy allocation (depositToStrategy,withdrawFromStrategy,withdrawAllFromStrategies,setDefaultStrategy), vault parameters (setVaultBuffer,setDripDuration,setRebaseRateMax), pause controls, remote-strategy deposits and withdrawals, and OUSD tokendelegateYield/undelegateYieldwhich can redirect any account's rebase yield without consent - An operator EOA can call
rebase()and push cross-chain balance updates — bounded, but it means live accounting for 36% of TVL depends on an off-chain keeper doing its job - Cross-chain strategy management and AMO rebalancing require manual intervention; reward harvesting is semi-automated via CoW Protocol
Subcategory C: External Dependencies — 3.0
- Critical: USDC/Circle (sole asset, three chains); Morpho Blue (~80% of TVL); three independent Morpho curation regimes; Origin's own OETH/superOETHb as the collateral behind ~54% of TVL
- The Morpho curation layer on all three chains is Yearn's own, so it is not scored as an external trust assumption; the HyperEVM leg is nonetheless configured more loosely than Ethereum and Base (EOA key, no guardian, zero timelock)
- High: Curve (AMO yield plus the only meaningful on-Ethereum DEX exit, 92.5% AMO-owned), Circle CCTP (asset transport and the accounting message bus), Chainlink (prices the OETH/superOETHb markets)
- Medium: RedStone (prices the HyperEVM markets). Low: CoW Protocol (reward swaps)
- The vault's own oracle dependency is gone — the price-provider slot is deprecated and no code path reads a feed — but the dependency moved down a layer rather than away
Score: (1.0 + 2.5 + 3.0) / 3 = 2.17
Funds Management30%2.25
Subcategory A: Collateralization — 2.5
- 100% on-chain backing, ratio 100.34%, single high-quality asset (USDC)
- But the backing is deployed as lending claims, not held: ~80% of TVL is USDC supplied to Morpho Blue and ~16% is an AMO LP position. Collateral quality behind those claims is mixed — Origin's own OETH/superOETHb (~54% of TVL) priced at an assumed 1:1 ETH peg, cbXRP (~12.6%), and HYPE/kHYPE (~16.7%)
- AMO can temporarily create up to ~0.2% unbacked OUSD (solvency check)
vaultBuffer= 0; effective idle USDC ~$6,432
Subcategory B: Provability — 2.0
- Everything is on-chain and permissionlessly readable, with no off-chain attestation anywhere
- But reconstruction is genuinely involved:
totalValue()nets out the queue reserve, and each cross-chain leg requires walking a master strategy, a remote strategy, two Morpho vault layers, and the underlying markets on a second chain - 36% of reported TVL is a cached
remoteStrategyBalancerefreshed by CCTP messages and accepted up to a day old, rather than a live read. It tracked the remote side to within ~$23 at the snapshot block, but the accounting is push-based
Score: (2.5 + 2.0) / 2 = 2.25
Liquidity Risk15%2.50
- Async withdrawal queue: 10-minute minimum delay (
withdrawalClaimDelay= 600s) plus queue liquidity catch-up; no on-chain upper bound - Queue backlog is effectively zero (14 USDC outstanding), so there is no queued exit demand competing with a new redeemer
- Instantly reachable on Ethereum: ~$1.59M of free Morpho liquidity + ~$505K Curve USDC side + ~$6K idle ≈ $2.1M, ~34% of TVL — enough to absorb a sizeable but not a wholesale exit
- Curve OUSD/USDC pool ~$1.10M TVL with slippage under 0.1% up to 300K OUSD, but the USDC side is only ~$505K and 92.5% of the pool's LP is Origin's own AMO
- Cross-chain assets (~$2.25M, ~36% of TVL) need a CCTP round trip; the HyperEVM leg is liquid at the remote end, but ~$421K of the Base leg is stuck behind an 88%-utilized superOETHb market
- Same-value assets (USD stablecoins) mitigate waiting risk; no priority mechanism, first-come-first-served
Operational Risk5%1.00
- Established team (2017), public, VC-backed (Pantera, Founders Fund)
- Comprehensive security repo with 30+ audit reports
- $1M bug bounty, Safe Harbor enabled
- Demonstrated incident response capability (2020 hack recovery and user compensation)
Final Score Calculation
Final Score = (Audits × 0.20) + (Centralization × 0.30) + (Funds Mgmt × 0.30) + (Liquidity × 0.15) + (Operational × 0.05)
= (1.5 × 0.20) + (2.17 × 0.30) + (2.25 × 0.30) + (2.5 × 0.15) + (1.0 × 0.05)
= 0.300 + 0.650 + 0.675 + 0.375 + 0.050
= 2.050
| Category | Score | Weight | Weighted |
|---|---|---|---|
| Audits & Historical | 1.5 | 20% | 0.300 |
| Centralization & Control | 2.17 | 30% | 0.650 |
| Funds Management | 2.25 | 30% | 0.675 |
| Liquidity Risk | 2.5 | 15% | 0.375 |
| Operational Risk | 1.0 | 5% | 0.050 |
| Final Score | 2.05 / 5.0 |
Risk Tier
| Final Score | Risk Tier | Recommendation |
|---|---|---|
| 1.00–1.49 | Minimal Risk | Approved, high confidence |
| 1.50–2.49 | Low Risk | Approved with standard monitoring |
| 2.50–3.49 | Medium Risk | Approved with enhanced monitoring |
| 3.50–4.49 | Elevated Risk | Limited approval, strict limits |
| 4.50–5.00 | High Risk | Not recommended |
Final Risk Tier: LOW RISK
Assessment History
| Date | Score | Notes |
|---|---|---|
| June 25, 2026 | 1.85 | Initial assessment |
| August 31, 2026 | 2.05 | TVL $6.24M (−16%). Traced the Morpho legs three vault layers deep across Ethereum, Base, and HyperEVM: ~80% of TVL now sits in Morpho Blue markets, and ~54% of TVL is USDC lent against Origin's own OETH / superOETHb in markets whose oracles assume a 1:1 ETH peg with no LST feed. Morpho curation on all three chains is Yearn's own, so it is treated as an internal counterparty rather than an external dependency; the HyperEVM leg is configured more loosely (EOA key, no guardian, timelock() = 0) and is called out for monitoring. Corrected the withdrawal-queue reading — queued / claimable are lifetime counters, so outstanding demand is 14 USDC, not the ~$1.68M implied previously. Vault uses no oracle (_deprecated_priceProvider) and rebase is permissioned and rate-capped. Bug bounty reconfirmed live at $1M. Governance, roles, thresholds, proxies, and the mint whitelist unchanged. Dependencies 2.5 → 3.0, Collateralization 2.0 → 2.5, Provability 1.5 → 2.0. |