For the complete documentation index, see llms.txt. This page is also available as Markdown.

Aave Safety Module

Reports an account's stake in the legacy Aave V3 Safety Module across a hardcoded set of stake tokens.

Reports an account's stake in the legacy Aave V3 Safety Module across a hardcoded set of stake tokens. For each stake token it splits the staking principal into a locked and an (optionally present) unlocked leg by isLocked, plus a claimable-rewards leg. The stake-token set is small and slow-moving and Aave publishes no on-chain registry, so the addresses are pinned as compile-time constants.

  • Type: Plain adapter

  • protocolSubId: keccak256("aave-v3-safety-module") (brand aave, ecosystem aave-v3)

  • Source: AaveV3SafetyModuleBalanceAdapter.sol

Mainnet only. The legacy Safety Module is an Ethereum-mainnet protocol. Adding a new SM stake token is a source-code change (new constant + record), not an admin transaction.


Hardcoded stake tokens

Stake token
Address
Staked asset
Reward

stkAAVE

0x4da27a545c0c5B758a6BA100e3a049001de870f5

AAVE

AAVE

stkABPT (Balancer V1 BPT)

0xa1116930326D21fB917d5A27F1E9943A9595fb47

ABPT 0x41A08648C3766F9F9d85598fF102a08f4ef84F84

AAVE

stkABPTv2 (Balancer V2 AAVE/wstETH BPT)

0x9eDA81C21C273a82BE9Bbc19B6A6182212068101

ABPT_V2 0x3de27EFa2F1AA663Ae5D458857e731c129069F29

AAVE

stkGHO

0x1a88Df1cFe15Af22B3c4c783D4e6F7F9e0C1885d

GHO 0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f

AAVE

AAVE = 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9. Reward token is AAVE for every entry.


Positions returned

Up to three legs per stake token (whose staked/reward asset is registered on NAVCalculator):

Leg
PositionKind
isDebt
isLocked
Description

Locked staking

Staking

false

true

Staked-token amount that is not withdrawable right now — active stake plus any cooldown that is still cooling or whose claim window has already passed. amount = previewRedeem(lockedShares)

Unlocked staking

Staking

false

false

Staked-token amount that is withdrawable right now. amount = previewRedeem(unlockedShares). Present only when there is an active cooldown whose period has elapsed and is still inside the UNSTAKE_WINDOW

Rewards

Rewards

false

false

Total claimable (accrued, unclaimed) reward tokens. amount = getTotalRewardsBalance(account), denominated in AAVE

Zero-amount legs are skipped. For stkAAVE all legs are denominated in AAVE and are told apart by PositionKind (rewards vs. staking) and by isLocked (locked vs. unlocked staking).


Balance calculation

Flowchart of the Aave Safety Module balance adapter: read calls derive position legs into PositionBalance entries.
Aave Safety Module adapter — how the underlying balances reported to the NAV Calculator are derived.

Per stake token, the balance is split into a locked and an unlocked staking leg by reading the account's cooldown:

If the cooldown reads fail, or there is no active cooldown, the whole balance is treated as locked and no unlocked leg is emitted.


Identity

  • positionId: abi.encode(address stakeToken) — the same value for all three legs of a stake token; there is no discriminator in the positionId

  • positionKind: Staking · Rewards

The two staking legs share the same positionId and positionKind; since isLocked is a mutable per-leg attribute and not part of the key, they reconcile into one coordinate and sum to the total staked (read isLocked per leg — true locked, false unlocked — for the breakdown). The rewards leg shares the same positionId but is told apart from staking by its positionKind (Rewards). There is no labels field on the position; the adapter implements positionLabels(positionId), which returns ["Safety Module"] (the category is itself the leaf), surfaced only by the verbose reads.


Constructor

Parameter
Description

navCalculator

NAVCalculator address (non-zero, must be a contract); used to resolve registered-asset metadata

No stake-token addresses are passed — they are baked into bytecode.


Registration

Registered as a plain adapter with addBalanceAdapters([adapter]) (MANAGER-gated); removed with removeBalanceAdapters.

Last updated