Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reserve Factor Updates (February 15) #210

Merged
merged 5 commits into from
Feb 20, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
## Reserve changes

### Reserve altered

#### WMATIC ([0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270](https://polygonscan.com/address/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 91 % | 96 % |


#### USDC ([0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174](https://polygonscan.com/address/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 73 % | 78 % |


#### WETH ([0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619](https://polygonscan.com/address/0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 95 % | 99.99 % |


#### DAI ([0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063](https://polygonscan.com/address/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 71 % | 76 % |


#### USDT ([0xc2132D05D31c914a87C6611C10748AEb04B58e8F](https://polygonscan.com/address/0xc2132D05D31c914a87C6611C10748AEb04B58e8F))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 72 % | 77 % |


## Raw diff

```json
{
"reserves": {
"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270": {
"reserveFactor": {
"from": 9100,
"to": 9600
}
},
"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
"reserveFactor": {
"from": 7300,
"to": 7800
}
},
"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619": {
"reserveFactor": {
"from": 9500,
"to": 9999
}
},
"0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": {
"reserveFactor": {
"from": 7100,
"to": 7600
}
},
"0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
"reserveFactor": {
"from": 7200,
"to": 7700
}
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import {AaveV2Polygon, AaveV2PolygonAssets, ILendingPoolConfigurator} from 'aave-address-book/AaveV2Polygon.sol';
import {IProposalGenericExecutor} from 'aave-helpers/interfaces/IProposalGenericExecutor.sol';

/**
* @title Reserve Factor Updates (February 15, 2024)
* @author karpatkey_TokenLogic
* - Snapshot: No snapshot for Direct-to-AIP
* - Discussion: https://governance.aave.com/t/arfc-reserve-factor-updates-polygon-aave-v2/13937/16
*/
contract AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208 is IProposalGenericExecutor {
uint256 public constant DAI_RF = 76_00;
uint256 public constant USDC_RF = 78_00;
uint256 public constant USDT_RF = 77_00;
uint256 public constant WETH_RF = 99_99;
uint256 public constant WMATIC_RF = 96_00;

function execute() external {
ILendingPoolConfigurator(AaveV2Polygon.POOL_CONFIGURATOR).setReserveFactor(
brotherlymite marked this conversation as resolved.
Show resolved Hide resolved
AaveV2PolygonAssets.DAI_UNDERLYING,
DAI_RF
);
ILendingPoolConfigurator(AaveV2Polygon.POOL_CONFIGURATOR).setReserveFactor(
AaveV2PolygonAssets.USDC_UNDERLYING,
USDC_RF
);
ILendingPoolConfigurator(AaveV2Polygon.POOL_CONFIGURATOR).setReserveFactor(
AaveV2PolygonAssets.USDT_UNDERLYING,
USDT_RF
);
ILendingPoolConfigurator(AaveV2Polygon.POOL_CONFIGURATOR).setReserveFactor(
AaveV2PolygonAssets.WETH_UNDERLYING,
WETH_RF
);
ILendingPoolConfigurator(AaveV2Polygon.POOL_CONFIGURATOR).setReserveFactor(
AaveV2PolygonAssets.WMATIC_UNDERLYING,
WMATIC_RF
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {AaveV2Polygon, AaveV2PolygonAssets} from 'aave-address-book/AaveV2Polygon.sol';
import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol';

import {AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208} from './AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208.sol';

/**
* @dev Test for AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208
* command: make test-contract filter=AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208
*/
contract AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208_Test is ProtocolV2TestBase {
struct Changes {
address asset;
uint256 reserveFactor;
}

AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208 internal proposal;

function setUp() public {
vm.createSelectFork(vm.rpcUrl('polygon'), 53441053);
proposal = new AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208();
}

/**
* @dev executes the generic test suite including e2e and config snapshots
*/
function test_defaultProposalExecution() public {
(ReserveConfig[] memory allConfigsBefore, ReserveConfig[] memory allConfigsAfter) = defaultTest(
'AaveV2Polygon_ReserveFactorUpdates_20240215',
AaveV2Polygon.POOL,
address(proposal)
);

address[] memory assetsChanged = new address[](5);
assetsChanged[0] = AaveV2PolygonAssets.DAI_UNDERLYING;
assetsChanged[1] = AaveV2PolygonAssets.USDC_UNDERLYING;
assetsChanged[2] = AaveV2PolygonAssets.USDT_UNDERLYING;
assetsChanged[3] = AaveV2PolygonAssets.WETH_UNDERLYING;
assetsChanged[4] = AaveV2PolygonAssets.WMATIC_UNDERLYING;

Changes[] memory assetChanges = new Changes[](5);
assetChanges[0] = Changes({
asset: AaveV2PolygonAssets.DAI_UNDERLYING,
reserveFactor: proposal.DAI_RF()
});
assetChanges[1] = Changes({
asset: AaveV2PolygonAssets.USDC_UNDERLYING,
reserveFactor: proposal.USDC_RF()
});
assetChanges[2] = Changes({
asset: AaveV2PolygonAssets.USDT_UNDERLYING,
reserveFactor: proposal.USDT_RF()
});
assetChanges[3] = Changes({
asset: AaveV2PolygonAssets.WETH_UNDERLYING,
reserveFactor: proposal.WETH_RF()
});
assetChanges[4] = Changes({
asset: AaveV2PolygonAssets.WMATIC_UNDERLYING,
reserveFactor: proposal.WMATIC_RF()
});

_noReservesConfigsChangesApartFrom(allConfigsBefore, allConfigsAfter, assetsChanged);

for (uint i = 0; i < assetChanges.length; i++) {
ReserveConfig memory cfg = _findReserveConfig(allConfigsAfter, assetChanges[i].asset);
assertEq(cfg.reserveFactor, assetChanges[i].reserveFactor);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: "Reserve Factor Updates (February 15, 2024)"
author: "karpatkey_TokenLogic"
discussions: "https://governance.aave.com/t/arfc-reserve-factor-updates-polygon-aave-v2/13937/16"
snapshot: "No snapshot for Direct-to-AIP"
---

## Simple Summary

This AIP is a continuation of continuation of proposal 24 on Governance v3 and increases the Reserve Factor (RF) for assets on Polygon v2 by 5.00%, up to a maximum of 99.99%.

## Motivation

This AIP will reduce deposit yield for assets on Polygon v2 by increasing the RF. With this upgrade being passed, users will be further encouraged to migrate from Polygon v2 to v3.

Increasing the RF routes a larger portion of the interest paid by users to Aave DAO's Treasury. User's funds are not at risk of liquidation and the borrowing rate remains unchanged.

Of the assets with an RF set at 99.99%, there is no change. All other asset reserves will have the RF increased by 5%.

## Specification

The following parameters are to be updated as follows:

| Asset | Reserve Factor |
| ----- | -------------- |
| DAI | 76.00% |
| USDC | 78.00% |
| USDT | 77.00% |
| wETH | 99.99% |
| MATIC | 96.00% |

## References

- Implementation: [AaveV2Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240208_AaveV2Polygon_ReserveFactorUpdatesFebruary152024/AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208.sol)
- Tests: [AaveV2Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240208_AaveV2Polygon_ReserveFactorUpdatesFebruary152024/AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208.t.sol)
- [Snapshot](No snapshot for Direct-to-AIP)
brotherlymite marked this conversation as resolved.
Show resolved Hide resolved
- [Discussion](https://governance.aave.com/t/arfc-reserve-factor-updates-polygon-aave-v2/13937/16)

## Copyright

Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol';
import {EthereumScript, PolygonScript} from 'aave-helpers/ScriptUtils.sol';
import {AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208} from './AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208.sol';

/**
* @dev Deploy Polygon
* deploy-command: make deploy-ledger contract=src/20240208_AaveV2Polygon_ReserveFactorUpdatesFebruary152024/ReserveFactorUpdatesFebruary152024_20240208.s.sol:DeployPolygon chain=polygon
* verify-command: npx catapulta-verify -b broadcast/ReserveFactorUpdatesFebruary152024_20240208.s.sol/137/run-latest.json
*/
contract DeployPolygon is PolygonScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208).creationCode
);

// compose action
IPayloadsControllerCore.ExecutionAction[]
memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
actions[0] = GovV3Helpers.buildAction(payload0);

// register action at payloadsController
GovV3Helpers.createPayload(actions);
}
}

/**
* @dev Create Proposal
* command: make deploy-ledger contract=src/20240208_AaveV2Polygon_ReserveFactorUpdatesFebruary152024/ReserveFactorUpdatesFebruary152024_20240208.s.sol:CreateProposal chain=mainnet
*/
contract CreateProposal is EthereumScript {
function run() external {
// create payloads
PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](1);

// compose actions for validation
IPayloadsControllerCore.ExecutionAction[]
memory actionsPolygon = new IPayloadsControllerCore.ExecutionAction[](1);
actionsPolygon[0] = GovV3Helpers.buildAction(
type(AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208).creationCode
);
payloads[0] = GovV3Helpers.buildPolygonPayload(vm, actionsPolygon);

// create proposal
vm.startBroadcast();
GovV3Helpers.createProposal(
vm,
payloads,
GovV3Helpers.ipfsHashFile(
vm,
'src/20240208_AaveV2Polygon_ReserveFactorUpdatesFebruary152024/ReserveFactorUpdatesFebruary152024.md'
)
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {ConfigFile} from '../../generator/types';
export const config: ConfigFile = {
rootOptions: {
pools: ['AaveV2Polygon'],
title: 'Reserve Factor Updates (February 15, 2024)',
shortName: 'ReserveFactorUpdatesFebruary152024',
date: '20240208',
author: 'karpatkey_TokenLogic',
discussion:
'https://governance.aave.com/t/arfc-reserve-factor-updates-polygon-aave-v2/13937/16',
snapshot: 'No snapshot for Direct-to-AIP',
},
poolOptions: {AaveV2Polygon: {configs: {OTHERS: {}}, cache: {blockNumber: 53283615}}},
};
Loading