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.
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 chart below visualizes the reserves with the largest spread between the CAPO upper bound and current ratio across Aave V3.
Source: LlamaRisk, April 28, 2026
The deficit trigger condition can be expressed as:
Here, LT is chosen instead of LTV to depict the worst-case scenario possible, where the attacker HF nears 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 |
|---|---|---|---|---|---|---|---|
| Ethereum Core | sUSDe | 1.229268 | 1.872282 | 52.31 % | 94.0 % | 2.00 % | 458 d |
| Ethereum Prime | sUSDe | 1.229268 | 1.872282 | 52.31 % | 94.0 % | 2.00 % | 458 d |
| Polygon | wstETH | 1.232987 | 1.403639 | 13.84 % | 93.0 % | 1.00 % | 803 d |
| Gnosis | wstETH | 1.232987 | 1.403495 | 13.83 % | 93.0 % | 1.00 % | 803 d |
| Ethereum Core | rETH | 1.162339 | 1.322917 | 13.81 % | 95.0 % | 1.00 % | 803 d |
| Polygon | MaticX | 1.185599 | 1.347389 | 13.65 % | 95.0 % | 1.00 % | 810 d |
| Ethereum Core | weETH | 1.093616 | 1.223966 | 11.92 % | 95.0 % | 1.00 % | 763 d |
| Ethereum Core | ETHx | 1.087845 | 1.215133 | 11.70 % | 95.0 % | 1.00 % | 712 d |
| Ethereum Core | osETH | 1.070109 | 1.192969 | 11.48 % | 95.0 % | 1.00 % | 734 d |
| Ethereum Prime | ezETH | 1.077144 | 1.196636 | 11.09 % | 95.0 % | 1.00 % | 581 d |
| Ethereum Core | ezETH | 1.077144 | 1.196636 | 11.09 % | 95.0 % | 1.00 % | 581 d |
| Ethereum Core | cbETH | 1.128816 | 1.253789 | 11.07 % | 95.0 % | 1.00 % | 803 d |
| Linea | ezETH | 1.077120 | 1.186399 | 10.15 % | 93.0 % | 1.00 % | 512 d |
| Avalanche | sAVAX | 1.259892 | 1.384037 | 9.85 % | 95.0 % | 1.00 % | 810 d |
| Linea | wstETH | 1.232987 | 1.339222 | 8.62 % | 95.5 % | 1.00 % | 472 d |
| Linea | weETH | 1.093578 | 1.183598 | 8.23 % | 93.0 % | 1.00 % | 512 d |
| Avalanche | sUSDe | 1.229152 | 1.311806 | 6.72 % | 91.0 % | 4.00 % | 237 d |
| Plasma | sUSDe | 1.229169 | 1.311805 | 6.72 % | 94.0 % | 1.50 % | 237 d |
| Gnosis | sDAI | 1.237126 | 1.287590 | 4.08 % | 92.0 % | 4.00 % | 359 d |
| Plasma | weETH | 1.093578 | 1.137132 | 3.98 % | 95.0 % | 1.00 % | 237 d |
| Mantle | sUSDe | 1.229164 | 1.273455 | 3.60 % | 92.0 % | 4.00 % | 118 d |
Recommendations
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 (verifiable on-chain) such that all four validation predicates of _setCapParameters are respected: the new timestamp is strictly greater than the stored one, is at least MINIMUM_SNAPSHOT_DELAY seconds in the past, is no more than MAXIMUM_SNAPSHOT_TERM (180 days) in the past, the new ratio is non-zero, and snapshotRatio <= currentRatio.
In addition to the snapshot refresh, we recommend an additional change to the sUSDe CAPO on Ethereum (affects both Core and Lido markets). The adapter is currently configured with a maxYearlyRatioGrowthPercent of 50%, far above realized APY as shown below. Accounting for future growth scenario we recommend lowering maxYearlyRatioGrowthPercent from 50% to 11.17%.
Source: LlamaRisk, April 28, 2026
Specification
| Instance | Asset | Current SnapshotRatio | New SnapshotRatio | Current SnapshotTimestamp | New SnapshotTimestamp |
|---|---|---|---|---|---|
| Ethereum Prime | sUSDe | 1150485992969698694 |
1227131992751411096 |
1737789743 (2025-01-25) |
1776098039 (2026-04-13) |
| Ethereum Core | sUSDe | 1150485992969698694 |
1227131992751411096 |
1737789743 (2025-01-25) |
1776098039 (2026-04-13) |
| Ethereum Core | rETH | 1098284517740008249 |
1161297025018026367 |
1708004591 (2024-02-15) |
1776100271 (2026-04-13) |
| Polygon | MaticX | 1098625039344900513 |
1184553336304744130 |
1707352792 (2024-02-08) |
1776095251 (2026-04-13) |
| Ethereum Core | weETH | 1034656878645040505 |
1092511275951548029 |
1711416299 (2024-03-26) |
1776098051 (2026-04-13) |
| Ethereum Core | ETHx | 1029650229444067238 |
1086803171399918543 |
1715877911 (2024-05-16) |
1776097967 (2026-04-13) |
| Ethereum Core | osETH | 1014445878439441413 |
1069243791626177773 |
1713934379 (2024-04-24) |
1776100271 (2026-04-13) |
| Polygon | wstETH | 1157105995453941980 |
1231787423404290591 |
1707948441 (2024-02-14) |
1776095275 (2026-04-13) |
| Gnosis | wstETH | 1157105995453941980 |
1231706743820320505 |
1707988835 (2024-02-15) |
1776087290 (2026-04-13) |
| Ethereum Core | ezETH | 1019883708003361006 |
1076159265830748846 |
1727172839 (2024-09-24) |
1776100259 (2026-04-13) |
| Ethereum Prime | ezETH | 1019883708003361006 |
1076159265830748846 |
1727172839 (2024-09-24) |
1776100259 (2026-04-13) |
| Ethereum Core | cbETH | 1063814269953974334 |
1127672723490107311 |
1708004591 (2024-02-15) |
1776097967 (2026-04-13) |
| Avalanche | sAVAX | 1130535654847205789 |
1258004893989529449 |
1707346799 (2024-02-07) |
1776080367 (2026-04-13) |
| Linea | wstETH | 1190272828525538502 |
1231706743820320505 |
1736592058 (2025-01-11) |
1776040336 (2026-04-13) |
| Linea | ezETH | 1029140608890425422 |
1076090972297786741 |
1733109809 (2024-12-02) |
1776040248 (2026-04-13) |
| Plasma | sUSDe | 1193972665854975048 |
1227017473582880624 |
1756871339 (2025-09-03) |
1776095930 (2026-04-13) |
| Linea | weETH | 1054169605180649721 |
1092447295285287694 |
1733109809 (2024-12-02) |
1776040278 (2026-04-13) |
| Avalanche | sUSDe | 1193972665854975048 |
1227006247957361173 |
1756871339 (2025-09-03) |
1776080378 (2026-04-13) |
| Plasma | weETH | 1075964667602784803 |
1092447295285287694 |
1756871339 (2025-09-03) |
1776095953 (2026-04-13) |
| Mantle | sUSDe | 1213777113888938853 |
1227013966208500235 |
1767152639 (2025-12-31) |
1776095860 (2026-04-13) |
| Gnosis | sDAI | 1175603447581596870 |
1234933736953001411 |
1746358275 (2025-05-04) |
1776087275 (2026-04-13) |
Both Ethereum Core and Lido markets utilize the same CAPO for sUSDe.
| Instance | Asset | Current maxYearlyRatioGrowthPercent | Recommended maxYearlyRatioGrowthPercent |
|---|---|---|---|
| Ethereum | sUSDe | 50% | 11.17% |
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.

