Skip to content
This repository has been archived by the owner on Nov 1, 2023. It is now read-only.

Feat/caps upgrade 20230904 draft #292

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all 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,25 @@
## Reserve changes

### Reserves altered

#### AAVE ([0xba5DdD1f9d7F570dc94a51479a000E3BCE967196](https://arbiscan.io/address/0xba5DdD1f9d7F570dc94a51479a000E3BCE967196))

| description | value before | value after |
| --- | --- | --- |
| supplyCap | 1,850 AAVE | 2,710 AAVE |


## Raw diff

```json
{
"reserves": {
"0xba5DdD1f9d7F570dc94a51479a000E3BCE967196": {
"supplyCap": {
"from": 1850,
"to": 2710
}
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Reserve changes

### Reserves altered

#### Metis ([0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://andromeda-explorer.metis.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000))

| description | value before | value after |
| --- | --- | --- |
| supplyCap | 60,000 Metis | 120,000 Metis |


## Raw diff

```json
{
"reserves": {
"0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000": {
"supplyCap": {
"from": 60000,
"to": 120000
}
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Reserve changes

### Reserves altered

#### DPI ([0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369](https://polygonscan.com/address/0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369))

| description | value before | value after |
| --- | --- | --- |
| supplyCap | 1,417 DPI | 2,460 DPI |


## Raw diff

```json
{
"reserves": {
"0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369": {
"supplyCap": {
"from": 1417,
"to": 2460
}
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {AaveV3PayloadArbitrum, IEngine, EngineFlags} from 'aave-helpers/v3-config-engine/AaveV3PayloadArbitrum.sol';
import {AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol';

/**
* @title CapsUpgrade_20230904
* @author Alice Rozengarden (@Rozengarden - Aave-chan initiative)
* - Snapshot: no snapshot for Direct-to-AIP
* - Discussion: https://governance.aave.com/t/arfc-aave-v3-caps-increase-2023-08-31/14698
*/
contract AaveV3_Arbitrum_CapsUpgrade_20230904_20230904 is AaveV3PayloadArbitrum {
function _preExecute() internal override {}

function capsUpdates() public pure override returns (IEngine.CapsUpdate[] memory) {
IEngine.CapsUpdate[] memory capsUpdate = new IEngine.CapsUpdate[](1);

capsUpdate[0] = IEngine.CapsUpdate({
asset: AaveV3ArbitrumAssets.AAVE_UNDERLYING,
supplyCap: 2_710,
borrowCap: EngineFlags.KEEP_CURRENT
});

return capsUpdate;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import 'forge-std/Test.sol';
import {GovHelpers} from 'aave-helpers/GovHelpers.sol';
import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
import {AaveV3Arbitrum, AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol';
import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
import {AaveV3_Arbitrum_CapsUpgrade_20230904_20230904} from './AaveV3_Arbitrum_CapsUpgrade_20230904_20230904.sol';

/**
* @dev Test for AaveV3_Arbitrum_CapsUpgrade_20230904_20230904
* command: make test-contract filter=AaveV3_Arbitrum_CapsUpgrade_20230904_20230904
*/
contract AaveV3_Arbitrum_CapsUpgrade_20230904_20230904_Test is ProtocolV3TestBase {
AaveV3_Arbitrum_CapsUpgrade_20230904_20230904 internal proposal;

function setUp() public {
vm.createSelectFork(vm.rpcUrl('arbitrum'), 127957002);
proposal = new AaveV3_Arbitrum_CapsUpgrade_20230904_20230904();
}

function testProposalExecution() public {
ReserveConfig[] memory allConfigsBefore = createConfigurationSnapshot(
'preAaveV3_Arbitrum_CapsUpgrade_20230904_20230904',
AaveV3Arbitrum.POOL
);

GovHelpers.executePayload(vm, address(proposal), AaveGovernanceV2.ARBITRUM_BRIDGE_EXECUTOR);

ReserveConfig[] memory allConfigsAfter = createConfigurationSnapshot(
'postAaveV3_Arbitrum_CapsUpgrade_20230904_20230904',
AaveV3Arbitrum.POOL
);

address[] memory assetsChanged = new address[](1);
assetsChanged[0] = AaveV3ArbitrumAssets.AAVE_UNDERLYING;
_noReservesConfigsChangesApartFrom(allConfigsBefore, allConfigsAfter, assetsChanged);

ReserveConfig memory AAVE = _findReserveConfig(
allConfigsBefore,
AaveV3ArbitrumAssets.AAVE_UNDERLYING
);
AAVE.supplyCap = 2_710;
_validateReserveConfig(AAVE, allConfigsAfter);

e2eTestAsset(
AaveV3Arbitrum.POOL,
_findReserveConfig(allConfigsAfter, AaveV3ArbitrumAssets.WETH_UNDERLYING),
_findReserveConfig(allConfigsAfter, AaveV3ArbitrumAssets.AAVE_UNDERLYING)
);

diffReports(
'preAaveV3_Arbitrum_CapsUpgrade_20230904_20230904',
'postAaveV3_Arbitrum_CapsUpgrade_20230904_20230904'
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {GovHelpers} from 'aave-helpers/GovHelpers.sol';
import {EthereumScript, ArbitrumScript, MetisScript, PolygonScript} from 'aave-helpers/ScriptUtils.sol';
import {AaveV3_Arbitrum_CapsUpgrade_20230904_20230904} from './AaveV3_Arbitrum_CapsUpgrade_20230904_20230904.sol';
import {AaveV3_Metis_CapsUpgrade_20230904_20230904} from './AaveV3_Metis_CapsUpgrade_20230904_20230904.sol';
import {AaveV3_Polygon_CapsUpgrade_20230904_20230904} from './AaveV3_Polygon_CapsUpgrade_20230904_20230904.sol';

/**
* @dev Deploy AaveV3_Arbitrum_CapsUpgrade_20230904_20230904
* command: make deploy-ledger contract=src/20230904_AaveV3_Multi_CapsUpgrade_20230904/AaveV3_CapsUpgrade_20230904_20230904.s.sol:DeployArbitrum chain=arbitrum
*/
contract DeployArbitrum is ArbitrumScript {
function run() external broadcast {
new AaveV3_Arbitrum_CapsUpgrade_20230904_20230904();
}
}

/**
* @dev Deploy AaveV3_Metis_CapsUpgrade_20230904_20230904
* command: make deploy-ledger contract=src/20230904_AaveV3_Multi_CapsUpgrade_20230904/AaveV3_CapsUpgrade_20230904_20230904.s.sol:DeployMetis chain=metis
*/
contract DeployMetis is MetisScript {
function run() external broadcast {
new AaveV3_Metis_CapsUpgrade_20230904_20230904();
}
}

/**
* @dev Deploy AaveV3_Polygon_CapsUpgrade_20230904_20230904
* command: make deploy-ledger contract=src/20230904_AaveV3_Multi_CapsUpgrade_20230904/AaveV3_CapsUpgrade_20230904_20230904.s.sol:DeployPolygon chain=polygon
*/
contract DeployPolygon is PolygonScript {
function run() external broadcast {
new AaveV3_Polygon_CapsUpgrade_20230904_20230904();
}
}

/**
* @dev Create Proposal
* command: make deploy-ledger contract=src/20230904_AaveV3_Multi_CapsUpgrade_20230904/AaveV3_CapsUpgrade_20230904_20230904.s.sol:CreateProposal chain=mainnet
*/
contract CreateProposal is EthereumScript {
function run() external broadcast {
GovHelpers.Payload[] memory payloads = new GovHelpers.Payload[](3);
payloads[0] = GovHelpers.buildArbitrum(address(0));
payloads[1] = GovHelpers.buildMetis(address(0));
payloads[2] = GovHelpers.buildPolygon(address(0));
GovHelpers.createProposal(
payloads,
GovHelpers.ipfsHashFile(
vm,
'src/20230904_AaveV3_Multi_CapsUpgrade_20230904/CapsUpgrade_20230904.md'
)
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {AaveV3PayloadMetis, IEngine, EngineFlags} from 'aave-helpers/v3-config-engine/AaveV3PayloadMetis.sol';
import {AaveV3MetisAssets} from 'aave-address-book/AaveV3Metis.sol';

/**
* @title CapsUpgrade_20230904
* @author Alice Rozengarden (@Rozengarden - Aave-chan initiative)
* - Snapshot: no snapshot for Direct-to-AIP
* - Discussion: https://governance.aave.com/t/arfc-aave-v3-caps-increase-2023-08-31/14698
*/
contract AaveV3_Metis_CapsUpgrade_20230904_20230904 is AaveV3PayloadMetis {
function _preExecute() internal override {}

function capsUpdates() public pure override returns (IEngine.CapsUpdate[] memory) {
IEngine.CapsUpdate[] memory capsUpdate = new IEngine.CapsUpdate[](1);

capsUpdate[0] = IEngine.CapsUpdate({
asset: AaveV3MetisAssets.Metis_UNDERLYING,
supplyCap: 120_000,
borrowCap: EngineFlags.KEEP_CURRENT
});

return capsUpdate;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import 'forge-std/Test.sol';
import {GovHelpers} from 'aave-helpers/GovHelpers.sol';
import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
import {AaveV3Metis, AaveV3MetisAssets} from 'aave-address-book/AaveV3Metis.sol';
import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
import {AaveV3_Metis_CapsUpgrade_20230904_20230904} from './AaveV3_Metis_CapsUpgrade_20230904_20230904.sol';

/**
* @dev Test for AaveV3_Metis_CapsUpgrade_20230904_20230904
* command: make test-contract filter=AaveV3_Metis_CapsUpgrade_20230904_20230904
*/
contract AaveV3_Metis_CapsUpgrade_20230904_20230904_Test is ProtocolV3TestBase {
AaveV3_Metis_CapsUpgrade_20230904_20230904 internal proposal;

function setUp() public {
vm.createSelectFork(vm.rpcUrl('metis'), 8405352);
proposal = new AaveV3_Metis_CapsUpgrade_20230904_20230904();
}

function testProposalExecution() public {
ReserveConfig[] memory allConfigsBefore = createConfigurationSnapshot(
'preAaveV3_Metis_CapsUpgrade_20230904_20230904',
AaveV3Metis.POOL
);

GovHelpers.executePayload(vm, address(proposal), AaveGovernanceV2.METIS_BRIDGE_EXECUTOR);

ReserveConfig[] memory allConfigsAfter = createConfigurationSnapshot(
'postAaveV3_Metis_CapsUpgrade_20230904_20230904',
AaveV3Metis.POOL
);

address[] memory assetsChanged = new address[](1);
assetsChanged[0] = AaveV3MetisAssets.Metis_UNDERLYING;
_noReservesConfigsChangesApartFrom(allConfigsBefore, allConfigsAfter, assetsChanged);

ReserveConfig memory Metis = _findReserveConfig(
allConfigsBefore,
AaveV3MetisAssets.Metis_UNDERLYING
);
Metis.supplyCap = 120_000;
_validateReserveConfig(Metis, allConfigsAfter);

e2eTestAsset(
AaveV3Metis.POOL,
_findReserveConfig(allConfigsAfter, AaveV3MetisAssets.WETH_UNDERLYING),
_findReserveConfig(allConfigsAfter, AaveV3MetisAssets.Metis_UNDERLYING)
);

diffReports(
'preAaveV3_Metis_CapsUpgrade_20230904_20230904',
'postAaveV3_Metis_CapsUpgrade_20230904_20230904'
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {AaveV3PayloadPolygon, IEngine, EngineFlags} from 'aave-helpers/v3-config-engine/AaveV3PayloadPolygon.sol';
import {AaveV3PolygonAssets} from 'aave-address-book/AaveV3Polygon.sol';

/**
* @title CapsUpgrade_20230904
* @author Alice Rozengarden (@Rozengarden - Aave-chan initiative)
* - Snapshot: no snapshot for Direct-to-AIP
* - Discussion: https://governance.aave.com/t/arfc-aave-v3-caps-increase-2023-08-31/14698
*/
contract AaveV3_Polygon_CapsUpgrade_20230904_20230904 is AaveV3PayloadPolygon {
function _preExecute() internal override {}

function capsUpdates() public pure override returns (IEngine.CapsUpdate[] memory) {
IEngine.CapsUpdate[] memory capsUpdate = new IEngine.CapsUpdate[](1);

capsUpdate[0] = IEngine.CapsUpdate({
asset: AaveV3PolygonAssets.DPI_UNDERLYING,
supplyCap: 2_460,
borrowCap: EngineFlags.KEEP_CURRENT
});

return capsUpdate;
}
}
Loading