- Notifications
You must be signed in to change notification settings - Fork 786
Description
Currently, the deployment of a new market of the Aave Protocol has some disadvantages, mainly:
- High deployment cost.
- Burdensome deployment, even by using multiple automations contained on the repository.
In addition, the update of the logic of one component at the same time across all markets is not possible, which creates big friction on versioning of implementations under proxies.
The root cause of these problems is/was the design decision of trying to optimize reading of data via usage of constants/immutables on the smart contracts, leading to non-reusable implementations of components across different markets, even if the logic is exacty the same. Even if this decision is understandable for the initial Aave market -which has the highest usage and needs to be optimal/cheap on execution-, with multiple members of the community working on deploying new markets, we have noticed that in some cases it could be important to have a "light" version of the Aave Protocol with the following requirements:
- To create a new market, it should be only needed to deploy:
- A new LendingPoolAddressesProvider.
- From the LendingPoolAddressesProvider, the proxies for all the proxied components, but reusing implementations of those components from previous markets.
- From the proxy contract of the LendingPoolConfigurator, deploy proxies for all aTokens and debtTokens, reusing implementations of other aTokens/debtTokens from previous markets.
Mainly, the changes needed for this new deployment flow would consists on moving to storage variables certain constants/immutables on all the contracts affected, in order to remove market or token specific dependencies.
Additional requirements of the implementation:
- Create hardhat tasks for the new deployment flow.
- Adapt dev tests where needed.
- Include a comparision of gas cost on execution of the protocol actions between this new model and the current one.