Summary
LlamaRisk proposes updating the snapshotRatio to address stale snapshots and the growing drift between the CAPO upper bound and the current ratio across Aave V3. This update addresses the risk stemming from the widening spread, where, in the event of an inflation attack, collateral could become materially overpriced, potentially resulting in undercollateralized positions and bad debt for the protocol.
This follows a previous snapshot update round conducted as part of the same monitoring process, which is available here.
Upper Cap Growth
The spread between the CAPO upper bound and the current exchange rate for yield-bearing assets on Aave has widened due to a combination of high maxYearlyRatioGrowthPercent values and outdated snapshots. In the event of an inflation attack, where an adversary artificially pushes the underlying exchange-rate source upward, the collateral may become overpriced. The amount of borrows that can be accumulated against this overpriced collateral is directly driven by the magnitude of the spread between the current exchange rate and the CAPO upper bound. If the spread becomes sufficiently large, the position may become undercollateralized once the exchange rate normalizes, potentially resulting in bad debt for the protocol.
The deficit trigger condition can be expressed as:
Here, LT is chosen instead of LTV to capture the worst-case scenario, where the attacker HF approaches 1. The spread is defined as:
Running the deficit-trigger condition over every CAPO instance across Aave V3, we’ve identified the following reserves. In addition, assets projected to meet this condition within the next 30 days, based on current APY trends, have also been selected for a snapshot ratio refresh.
| Instance | Asset | Current Ratio | Calculated Cap Ratio | Spread | maxLT | LB | Days since last snapshot |
|---|---|---|---|---|---|---|---|
| MegaETH | wstETH | 1.246165 | 1.311621 | 5.25 % | 96.0 % | 1.00 % | 267 d |
| Arbitrum | wstETH | 1.246241 | 1.304690 | 4.69 % | 96.0 % | 1.00 % | 238 d |
| Ethereum Prime | wstETH | 1.246241 | 1.294654 | 3.88 % | 96.5 % | 1.00 % | 224 d |
| Ethereum Core | wstETH | 1.246241 | 1.294654 | 3.88 % | 96.5 % | 1.00 % | 224 d |
| Ethereum Prime | tETH | 1.007658 | 1.063766 | 5.57 % | 94.0 % | 2.00 % | 497 d |
| Ethereum Core | tETH | 1.007658 | 1.063766 | 5.57 % | 94.0 % | 2.00 % | 497 d |
| Mantle | sUSDe | 1.252708 | 1.320421 | 5.41 % | 92.0 % | 4.00 % | 183 d |
| Plasma | sUSDe | 1.252709 | 1.320424 | 5.41 % | 94.0 % | 1.50 % | 183 d |
| Base | wstETH | 1.246165 | 1.304753 | 4.70 % | 95.0 % | 1.00 % | 238 d |
| Base | cbETH | 1.141441 | 1.182823 | 3.63 % | 95.0 % | 2.00 % | 238 d |
| Base | weETH | 1.105616 | 1.150567 | 4.07 % | 95.0 % | 1.25 % | 238 d |
| Linea | wstETH | 1.246241 | 1.291669 | 3.65 % | 95.5 % | 1.00 % | 184 d |
| Arbitrum | weETH | 1.105616 | 1.150465 | 4.06 % | 95.0 % | 1.00 % | 238 d |
| Avalanche | sUSDe | 1.252727 | 1.320505 | 5.41 % | 91.0 % | 4.00 % | 183 d |
| Ethereum Core | rETH | 1.173727 | 1.215407 | 3.55 % | 95.0 % | 1.00 % | 183 d |
| Plasma | syrupUSDT | 1.147665 | 1.190230 | 3.71 % | 92.0 % | 4.00 % | 369 d |
| Ethereum Core | sUSDe | 1.252848 | 1.295816 | 3.43 % | 94.0 % | 2.00 % | 183 d |
| Ethereum Core | syrupUSDT | 1.147804 | 1.189363 | 3.62 % | 92.0 % | 4.00 % | 354 d |
| Ethereum Core | osETH | 1.080919 | 1.116118 | 3.26 % | 95.0 % | 1.00 % | 183 d |
| Ethereum Core | weETH | 1.105664 | 1.140412 | 3.14 % | 95.0 % | 1.00 % | 183 d |
| Optimism | wstETH | 1.246241 | 1.455124 | 16.76 % | 79.0 % | 7.20 % | 971 d |
| Ethereum Core | cbETH | 1.141499 | 1.173556 | 2.81 % | 95.0 % | 1.00 % | 183 d |
| Mantle | syrupUSDT | 1.147663 | 1.182652 | 3.05 % | 92.0 % | 4.00 % | 279 d |
| Avalanche | sAVAX | 1.289323 | 1.321744 | 2.51 % | 95.0 % | 1.00 % | 183 d |
Recommendation
The proposal refreshes the snapshotRatio and snapshotTimestamp for the reserves listed above, anchoring the cap to recent on-chain readings rather than year-old reference points. The new snapshot for each adapter is selected from the historical getRatio() series such that all validation predicates of _setCapParameters are respected:
- the new timestamp is strictly greater than the stored one,
- is at least
MINIMUM_SNAPSHOT_DELAYseconds in the past, - is no more than
MAXIMUM_SNAPSHOT_TERM(180 days) in the past, - the new ratio is non-zero, and snapshotRatio <= currentRatio.
Specification
| Instance | Asset | Current SnapshotRatio | New SnapshotRatio | Current SnapshotTimestamp | New SnapshotTimestamp |
|---|---|---|---|---|---|
| Ink | ezETH | 1064510642291841280 |
1086674006107205931 |
1762858813 (2025-11-11) |
1790685274 (2026-09-29) |
| Ink | sUSDe | 1217396774850780700 |
1250369723987849718 |
1769137643 (2026-01-23) |
1790685321 (2026-09-29) |
| MegaETH | wstETH | 1224765524214769828 |
1245095143914044922 |
1768797011 (2026-01-19) |
1790702841 (2026-09-29) |
| Arbitrum | wstETH | 1227259738293014024 |
1245095143914044922 |
1771345811 (2026-02-17) |
1790672168 (2026-09-29) |
| Ink | weETH | 1081205710000000000 |
1104642331580002768 |
1762847219 (2025-11-11) |
1790685417 (2026-09-29) |
| Ethereum Prime | wstETH | 1228282498700325540 |
1245173991915781615 |
1772535659 (2026-03-03) |
1790695535 (2026-09-29) |
| Ethereum Core | wstETH | 1228282498700325540 |
1245173991915781615 |
1772535659 (2026-03-03) |
1790695535 (2026-09-29) |
| Ethereum Prime | tETH | 1002302911335141630 |
1007488415063560147 |
1748925539 (2025-06-03) |
1790608991 (2026-09-28) |
| Ethereum Core | tETH | 1002302911335141630 |
1007488415063560147 |
1748925539 (2025-06-03) |
1790608991 (2026-09-28) |
| Mantle | sUSDe | 1227013966208500235 |
1250198899959694633 |
1776095860 (2026-04-13) |
1790611060 (2026-09-28) |
| Plasma | sUSDe | 1227017473582880624 |
1250200713901004602 |
1776095930 (2026-04-13) |
1790610724 (2026-09-28) |
| Base | wstETH | 1227182231483433137 |
1245095143914044922 |
1771307347 (2026-02-17) |
1790697523 (2026-09-29) |
| Base | cbETH | 1123263823685699828 |
1140492525937407220 |
1771307347 (2026-02-17) |
1790697495 (2026-09-29) |
| Base | weETH | 1088379838933126642 |
1104642334559519957 |
1771307347 (2026-02-17) |
1790697511 (2026-09-29) |
| Linea | wstETH | 1231706743820320505 |
1245095143914044922 |
1776040336 (2026-04-13) |
1790644063 (2026-09-29) |
| Arbitrum | weETH | 1088393341385115561 |
1104642342705274080 |
1771345811 (2026-02-17) |
1790672160 (2026-09-29) |
| Avalanche | sUSDe | 1227006247957361173 |
1250389010122394713 |
1776080378 (2026-04-13) |
1790679548 (2026-09-29) |
| Ethereum Core | rETH | 1161297025018026367 |
1172753229825365613 |
1776100271 (2026-04-13) |
1790697695 (2026-09-29) |
| Plasma | syrupUSDT | 1096519278600264915 |
1145275774230794241 |
1760005389 (2025-10-09) |
1790697135 (2026-09-29) |
| Ethereum Core | sUSDe | 1227131992751411096 |
1250354676588094258 |
1776098039 (2026-04-13) |
1790608979 (2026-09-28) |
| Ethereum Core | syrupUSDT | 1099237959474338773 |
1145466127518004091 |
1761301343 (2025-10-24) |
1790695523 (2026-09-29) |
| Ethereum Core | osETH | 1069243791626177773 |
1080009293964925637 |
1776100271 (2026-04-13) |
1790697695 (2026-09-29) |
| Ethereum Core | weETH | 1092511275951548029 |
1104705218364982206 |
1776098051 (2026-04-13) |
1790695523 (2026-09-29) |
| Optimism | wstETH | 1157105995453941980 |
1245173991915781615 |
1707992685 (2024-02-15) |
1790696773 (2026-09-29) |
| Ethereum Core | cbETH | 1127672723490107311 |
1140492525937407220 |
1776097967 (2026-04-13) |
1790695463 (2026-09-29) |
| Mantle | syrupUSDT | 1110788277783283832 |
1145273939173092775 |
1767755099 (2026-01-07) |
1790697472 (2026-09-29) |
| Avalanche | sAVAX | 1258004893989529449 |
1286821430343919401 |
1776080367 (2026-04-13) |
1790679538 (2026-09-29) |
Disclosure
This review was independently prepared by LlamaRisk, a DeFi risk service provider funded in part by the Aave DAO. LlamaRisk is not directly affiliated with the protocol(s) reviewed in this assessment and did not receive any compensation from the protocol(s) or their affiliated entities for this work.
The information provided should not be construed as legal, financial, tax, or professional advice.