TL;DR
We present an EIP-4626 compatible generic aToken vault/wrapper for all Aave V3 pools with their current/future listed tokens https://github.com/bgd-labs/static-a-token-v3.
Context
Aave aToken’s growing balance was a big innovation in the space, one of the first uses of the so-called “rebasing” assets, directly improving the experience of end users: you deposit assets on Aave → you receive the same amount of aToken which grows over time on your wallet.
Moreover, certain models like Curve’s liquidity pools also integrate quite nicely with the growing balance nature of aTokens.
But for some other technical integrations (e.g. Balancer’s bb-pools), the growing balance on aTokens
usually comes with an implementation overhead and unnecessary headaches.
During the last months supporting technical teams contributing to Aave, we have realized the need for an “official” Aave wrapper/vault contract, simple enough for anybody else to re-use or extend, without re-implementing it from scratch every time.
stataToken
vault/wrapper
The idea of stataTokens
(static aToken) is simple: a user with an asset listed on Aave like USDC can interact with the stataUSDC contract both with USDC and aUSDC to wrap it into its stataUSDC version, which represents exactly the same deposit on Aave, just not increasing in balance, but in value over time.
For example, let’s say a user deposits 100 USDC on Aave v3 Ethereum, and over time will have 102 aUSDC in his wallet. By interacting first with the stataUSDC
, he would receive something like 99 stataUSDC, which will stay as 99 over time, but whose growth in value will allow him to withdraw the same 102 USDC as by holding its “plain” aToken version.
From an end-user perspective, the main use case is to have full control over the balance’s growth of token changes in his wallet. For example, user A maybe just wants to deposit 200 DAI into Aave but doesn’t want his balance to increase anyhow during the following year.
From a technical perspective, as previously mentioned, the goal of this development is to serve as both a usable smart contract from day 0, together with a base layer on which anybody else can build on top, by interacting with the deployed instances, or even by inheriting and modifying the codebase.
Everything with the assurances of being an “official” development for the Aave DAO.
The main technical features are the following:
- Full EIP 4626 compatibility.
-
Accounting for any potential liquidity mining rewards. Let’s say some team of the Aave ecosystem (or the Aave community itself) decides to incentivize deposits of USDC on Aave v3 Ethereum. By holding
stataUSDC
, the user will still be eligible for those incentives.
It is important to highlight that currently the wrapper only supports 1 reward token by design (e.g. AAVE incentivizing aUSDC), but this is something that can be added in the future without breaking changes. -
Meta-transactions support. To enable interfaces to offer gasless transactions to deposit/withdraw on the wrapper/Aave protocol (also supported on Aave v3). Including permit() for transfers of the
stataAToken
itself. -
Upgradable by the Aave governance. Similar to other contracts of the Aave ecosystem, the Level 1 executor (short executor) will be able to add new features to the deployed instances of the
stataTokens
. -
Powered by a
stataToken Factory
. Whenever a token will be listed on Aave v3, anybody will be able to call thestataToken Factory
to deploy an instance for the new asset, permissionless, but still assuring the code used and permissions are properly configured without any extra headache.
Additionally, this Factory also acts as a token registry that can be used to query all the instances of stataTokens in the network.
Security procedures
For this project, the security procedures applied/being finished are:
- The test suite of the codebase itself.
- Certora audit/property checking for all the dynamics of the
stataToken
, including respecting all the specs of 4626.
IMPORTANT. We will share deployed addresses once the security procedures are finished, don’t use the wrapper in production before!
Next steps
Once the security procedures are finished, we will deploy stataTokens
for all Aave v3 instances and share with the community the final documentation on how to interact and integrate them.
In parallel, we are already working with partners of the ecosystem like Balancer for their integrations.