From 1817acd2d0df875ad0908bace181eee24cc715ab Mon Sep 17 00:00:00 2001 From: Jonathan Reem Date: Thu, 16 Nov 2023 11:43:32 -0800 Subject: [PATCH 1/2] Add proposal for raising uopt for certain stablecoins. --- ...7360009ed79d63299cf66d8c80048372f3e17b.svg | 1 + ...8a0eb71635793f12d6014b9e935c2b6858d00b.svg | 1 + ...cb0fd07fde8594230045982589445fc02ace52.svg | 1 + ...8e72716b27c4283bf4287c6417a41bc5b4a2b4.svg | 1 + ...7a7aa4b568d8cd90f169e1d287fe4bd4355746.svg | 1 + ...e21fb294480b8513f7ed4d61207214c8e8a1bb.svg | 1 + ...3b368705d0caf204c10ce9c2dda8d3b8cf9c11.svg | 1 + ...9c259cb3204856ff66883fa069d750c84650b1.svg | 1 + ...leAcrossAllV3Deployments_20231116_after.md | 51 ++++ ...leAcrossAllV3Deployments_20231116_after.md | 74 +++++ ...leAcrossAllV3Deployments_20231116_after.md | 74 +++++ ...leAcrossAllV3Deployments_20231116_after.md | 74 +++++ ...leAcrossAllV3Deployments_20231116_after.md | 74 +++++ ...leAcrossAllV3Deployments_20231116_after.md | 76 +++++ ...leAcrossAllV3Deployments_20231116_after.md | 59 ++++ ...licableAcrossAllV3Deployments_20231116.sol | 21 ++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...licableAcrossAllV3Deployments_20231116.sol | 72 +++++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...licableAcrossAllV3Deployments_20231116.sol | 72 +++++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...licableAcrossAllV3Deployments_20231116.sol | 72 +++++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...licableAcrossAllV3Deployments_20231116.sol | 58 ++++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...licableAcrossAllV3Deployments_20231116.sol | 58 ++++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...licableAcrossAllV3Deployments_20231116.sol | 58 ++++ ...cableAcrossAllV3Deployments_20231116.t.sol | 35 +++ ...AXWhereApplicableAcrossAllV3Deployments.md | 58 ++++ ...cableAcrossAllV3Deployments_20231116.s.sol | 181 +++++++++++ .../config.json | 289 ++++++++++++++++++ 32 files changed, 1674 insertions(+) create mode 100644 .assets/577360009ed79d63299cf66d8c80048372f3e17b.svg create mode 100644 .assets/748a0eb71635793f12d6014b9e935c2b6858d00b.svg create mode 100644 .assets/b5cb0fd07fde8594230045982589445fc02ace52.svg create mode 100644 .assets/b88e72716b27c4283bf4287c6417a41bc5b4a2b4.svg create mode 100644 .assets/cf7a7aa4b568d8cd90f169e1d287fe4bd4355746.svg create mode 100644 .assets/d1e21fb294480b8513f7ed4d61207214c8e8a1bb.svg create mode 100644 .assets/da3b368705d0caf204c10ce9c2dda8d3b8cf9c11.svg create mode 100644 .assets/ef9c259cb3204856ff66883fa069d750c84650b1.svg create mode 100644 diffs/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 diffs/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 diffs/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 diffs/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 diffs/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 diffs/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 diffs/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol create mode 100644 src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json diff --git a/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg b/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg new file mode 100644 index 000000000..563140564 --- /dev/null +++ b/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%Optimal 90%Optimal 90% \ No newline at end of file diff --git a/.assets/748a0eb71635793f12d6014b9e935c2b6858d00b.svg b/.assets/748a0eb71635793f12d6014b9e935c2b6858d00b.svg new file mode 100644 index 000000000..e2172dcc4 --- /dev/null +++ b/.assets/748a0eb71635793f12d6014b9e935c2b6858d00b.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/b5cb0fd07fde8594230045982589445fc02ace52.svg b/.assets/b5cb0fd07fde8594230045982589445fc02ace52.svg new file mode 100644 index 000000000..59dc7a873 --- /dev/null +++ b/.assets/b5cb0fd07fde8594230045982589445fc02ace52.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%Optimal 45%Optimal 45% \ No newline at end of file diff --git a/.assets/b88e72716b27c4283bf4287c6417a41bc5b4a2b4.svg b/.assets/b88e72716b27c4283bf4287c6417a41bc5b4a2b4.svg new file mode 100644 index 000000000..d01804bc7 --- /dev/null +++ b/.assets/b88e72716b27c4283bf4287c6417a41bc5b4a2b4.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%2%4%Optimal 0%Optimal 0% \ No newline at end of file diff --git a/.assets/cf7a7aa4b568d8cd90f169e1d287fe4bd4355746.svg b/.assets/cf7a7aa4b568d8cd90f169e1d287fe4bd4355746.svg new file mode 100644 index 000000000..7dccadb54 --- /dev/null +++ b/.assets/cf7a7aa4b568d8cd90f169e1d287fe4bd4355746.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/d1e21fb294480b8513f7ed4d61207214c8e8a1bb.svg b/.assets/d1e21fb294480b8513f7ed4d61207214c8e8a1bb.svg new file mode 100644 index 000000000..64bac08e9 --- /dev/null +++ b/.assets/d1e21fb294480b8513f7ed4d61207214c8e8a1bb.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%Optimal 90%Optimal 90% \ No newline at end of file diff --git a/.assets/da3b368705d0caf204c10ce9c2dda8d3b8cf9c11.svg b/.assets/da3b368705d0caf204c10ce9c2dda8d3b8cf9c11.svg new file mode 100644 index 000000000..98a8dafb7 --- /dev/null +++ b/.assets/da3b368705d0caf204c10ce9c2dda8d3b8cf9c11.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 90%Optimal 90% \ No newline at end of file diff --git a/.assets/ef9c259cb3204856ff66883fa069d750c84650b1.svg b/.assets/ef9c259cb3204856ff66883fa069d750c84650b1.svg new file mode 100644 index 000000000..a1eedc581 --- /dev/null +++ b/.assets/ef9c259cb3204856ff66883fa069d750c84650b1.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%Optimal 90%Optimal 90% \ No newline at end of file diff --git a/diffs/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..ea18706cf --- /dev/null +++ b/diffs/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,51 @@ +## Reserve changes + +### Reserve altered + +#### LUSD ([0x5f98805A4E8be255a32880FDeC7F6728C6568bA0](https://etherscan.io/address/0x5f98805A4E8be255a32880FDeC7F6728C6568bA0)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 20 % | 25 % | + + +#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 20 % | 25 % | + + +#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 20 % | 25 % | + + +## Raw diff + +```json +{ + "reserves": { + "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0": { + "reserveFactor": { + "from": 2000, + "to": 2500 + } + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "reserveFactor": { + "from": 2000, + "to": 2500 + } + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "reserveFactor": { + "from": 2000, + "to": 2500 + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..1892e7bad --- /dev/null +++ b/diffs/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,74 @@ +## Reserve changes + +### Reserve altered + +#### FRAX ([0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F](https://arbiscan.io/address/0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://arbiscan.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0xb02381b1d27aA9845e5012083CA288c1818884f0](https://arbiscan.io/address/0xb02381b1d27aA9845e5012083CA288c1818884f0) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### DAI ([0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1](https://arbiscan.io/address/0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://arbiscan.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0xb02381b1d27aA9845e5012083CA288c1818884f0](https://arbiscan.io/address/0xb02381b1d27aA9845e5012083CA288c1818884f0) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### USDT ([0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9](https://arbiscan.io/address/0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://arbiscan.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0xb02381b1d27aA9845e5012083CA288c1818884f0](https://arbiscan.io/address/0xb02381b1d27aA9845e5012083CA288c1818884f0) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0xb02381b1d27aA9845e5012083CA288c1818884f0" + } + }, + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0xb02381b1d27aA9845e5012083CA288c1818884f0" + } + }, + "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0xb02381b1d27aA9845e5012083CA288c1818884f0" + } + } + }, + "strategies": { + "0xb02381b1d27aA9845e5012083CA288c1818884f0": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..62a0adabc --- /dev/null +++ b/diffs/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,74 @@ +## Reserve changes + +### Reserve altered + +#### USDt ([0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7](https://snowtrace.io/address/0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xfab05a6aF585da2F96e21452F91E812452996BD3](https://snowtrace.io/address/0xfab05a6aF585da2F96e21452F91E812452996BD3) | [0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17](https://snowtrace.io/address/0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### FRAX ([0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64](https://snowtrace.io/address/0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xfab05a6aF585da2F96e21452F91E812452996BD3](https://snowtrace.io/address/0xfab05a6aF585da2F96e21452F91E812452996BD3) | [0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17](https://snowtrace.io/address/0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### DAI.e ([0xd586E7F844cEa2F87f50152665BCbc2C279D8d70](https://snowtrace.io/address/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xfab05a6aF585da2F96e21452F91E812452996BD3](https://snowtrace.io/address/0xfab05a6aF585da2F96e21452F91E812452996BD3) | [0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17](https://snowtrace.io/address/0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7": { + "interestRateStrategy": { + "from": "0xfab05a6aF585da2F96e21452F91E812452996BD3", + "to": "0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17" + } + }, + "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64": { + "interestRateStrategy": { + "from": "0xfab05a6aF585da2F96e21452F91E812452996BD3", + "to": "0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17" + } + }, + "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": { + "interestRateStrategy": { + "from": "0xfab05a6aF585da2F96e21452F91E812452996BD3", + "to": "0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17" + } + } + }, + "strategies": { + "0x04daBC3C1c052AB94AA2ca80140f2b978d2F6E17": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..aa0df09c6 --- /dev/null +++ b/diffs/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,74 @@ +## Reserve changes + +### Reserve altered + +#### FRAX ([0x853d955aCEf822Db058eb8505911ED77F175b99e](https://etherscan.io/address/0x853d955aCEf822Db058eb8505911ED77F175b99e)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0x694d4cFdaeE639239df949b6E24Ff8576A00d1f2](https://etherscan.io/address/0x694d4cFdaeE639239df949b6E24Ff8576A00d1f2) | [0x588b62C84533232E3A881e096E5D639Fa754F093](https://etherscan.io/address/0x588b62C84533232E3A881e096E5D639Fa754F093) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xC82dF96432346cFb632473eB619Db3B8AC280234](https://etherscan.io/address/0xC82dF96432346cFb632473eB619Db3B8AC280234) | [0x53b13a6D43F647D788411Abfd28D229C274AfBF9](https://etherscan.io/address/0x53b13a6D43F647D788411Abfd28D229C274AfBF9) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/398a9e53757e01d6b0e762e21b88bb93cf4aa95e.svg) | ![after](/.assets/d1e21fb294480b8513f7ed4d61207214c8e8a1bb.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x853d955aCEf822Db058eb8505911ED77F175b99e": { + "interestRateStrategy": { + "from": "0x694d4cFdaeE639239df949b6E24Ff8576A00d1f2", + "to": "0x588b62C84533232E3A881e096E5D639Fa754F093" + } + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "interestRateStrategy": { + "from": "0xC82dF96432346cFb632473eB619Db3B8AC280234", + "to": "0x53b13a6D43F647D788411Abfd28D229C274AfBF9" + } + } + }, + "strategies": { + "0x53b13a6D43F647D788411Abfd28D229C274AfBF9": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "40000000000000000000000000", + "stableRateSlope2": "720000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + }, + "0x588b62C84533232E3A881e096E5D639Fa754F093": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..da4cd637a --- /dev/null +++ b/diffs/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,74 @@ +## Reserve changes + +### Reserve altered + +#### m.DAI ([0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0](https://andromeda-explorer.metis.io/address/0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0x4a8de3E62B4a63905f62e56292ECdCfD3593d1c9](https://andromeda-explorer.metis.io/address/0x4a8de3E62B4a63905f62e56292ECdCfD3593d1c9) | [0x3c8DF161A59F2a3ed4D40F073395d6a0f14290C0](https://andromeda-explorer.metis.io/address/0x3c8DF161A59F2a3ed4D40F073395d6a0f14290C0) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/748a0eb71635793f12d6014b9e935c2b6858d00b.svg) | ![after](/.assets/da3b368705d0caf204c10ce9c2dda8d3b8cf9c11.svg) | + +#### m.USDT ([0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC](https://andromeda-explorer.metis.io/address/0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0x5A1bdAc4eBa2A70D465ef4aDd2f68dBBae183454](https://andromeda-explorer.metis.io/address/0x5A1bdAc4eBa2A70D465ef4aDd2f68dBBae183454) | [0x082612269926F85741E6c2B0447D000469880c1C](https://andromeda-explorer.metis.io/address/0x082612269926F85741E6c2B0447D000469880c1C) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0": { + "interestRateStrategy": { + "from": "0x4a8de3E62B4a63905f62e56292ECdCfD3593d1c9", + "to": "0x3c8DF161A59F2a3ed4D40F073395d6a0f14290C0" + } + }, + "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC": { + "interestRateStrategy": { + "from": "0x5A1bdAc4eBa2A70D465ef4aDd2f68dBBae183454", + "to": "0x082612269926F85741E6c2B0447D000469880c1C" + } + } + }, + "strategies": { + "0x082612269926F85741E6c2B0447D000469880c1C": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + }, + "0x3c8DF161A59F2a3ed4D40F073395d6a0f14290C0": { + "from": null, + "to": { + "baseStableBorrowRate": "80000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "70000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..c798b9986 --- /dev/null +++ b/diffs/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,76 @@ +## Reserve changes + +### Reserve altered + +#### USDT ([0x94b008aA00579c1307B0EF2c499aD98a8ce58e58](https://explorer.optimism.io/address/0x94b008aA00579c1307B0EF2c499aD98a8ce58e58)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://explorer.optimism.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0x3832311560d3B457E9cC35e5b8e06EB167D8c17D](https://explorer.optimism.io/address/0x3832311560d3B457E9cC35e5b8e06EB167D8c17D) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### DAI ([0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1](https://explorer.optimism.io/address/0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://explorer.optimism.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e](https://explorer.optimism.io/address/0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| variableRateSlope1 | 4 % | 0 % | +| baseStableBorrowRate | 5 % | 1 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/ef9c259cb3204856ff66883fa069d750c84650b1.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0x3832311560d3B457E9cC35e5b8e06EB167D8c17D" + } + }, + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e" + } + } + }, + "strategies": { + "0x3832311560d3B457E9cC35e5b8e06EB167D8c17D": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + }, + "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e": { + "from": null, + "to": { + "baseStableBorrowRate": "10000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": 0, + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md b/diffs/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md new file mode 100644 index 000000000..69034a8be --- /dev/null +++ b/diffs/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_before_AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_after.md @@ -0,0 +1,59 @@ +## Reserve changes + +### Reserve altered + +#### DAI ([0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063](https://polygonscan.com/address/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://polygonscan.com/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0xD87974E8ED49AB16d5053ba793F4e17078Be0426](https://polygonscan.com/address/0xD87974E8ED49AB16d5053ba793F4e17078Be0426) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +#### USDT ([0xc2132D05D31c914a87C6611C10748AEb04B58e8F](https://polygonscan.com/address/0xc2132D05D31c914a87C6611C10748AEb04B58e8F)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://polygonscan.com/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0xD87974E8ED49AB16d5053ba793F4e17078Be0426](https://polygonscan.com/address/0xD87974E8ED49AB16d5053ba793F4e17078Be0426) | +| optimalUsageRatio | 80 % | 90 % | +| maxExcessUsageRatio | 20 % | 10 % | +| interestRate | ![before](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) | ![after](/.assets/577360009ed79d63299cf66d8c80048372f3e17b.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0xD87974E8ED49AB16d5053ba793F4e17078Be0426" + } + }, + "0xc2132D05D31c914a87C6611C10748AEb04B58e8F": { + "interestRateStrategy": { + "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D", + "to": "0xD87974E8ED49AB16d5053ba793F4e17078Be0426" + } + } + }, + "strategies": { + "0xD87974E8ED49AB16d5053ba793F4e17078Be0426": { + "from": null, + "to": { + "baseStableBorrowRate": "50000000000000000000000000", + "baseVariableBorrowRate": 0, + "maxExcessStableToTotalDebtRatio": "800000000000000000000000000", + "maxExcessUsageRatio": "100000000000000000000000000", + "optimalStableToTotalDebtRatio": "200000000000000000000000000", + "optimalUsageRatio": "900000000000000000000000000", + "stableRateSlope1": "5000000000000000000000000", + "stableRateSlope2": "750000000000000000000000000", + "variableRateSlope1": "40000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..168cf6f90 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2Ethereum, AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; +import {IProposalGenericExecutor} from 'aave-helpers/interfaces/IProposalGenericExecutor.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + IProposalGenericExecutor +{ + function execute() external { + AaveV2Ethereum.POOL_CONFIGURATOR.setReserveFactor(AaveV2EthereumAssets.USDC_UNDERLYING, 25_00); + AaveV2Ethereum.POOL_CONFIGURATOR.setReserveFactor(AaveV2EthereumAssets.USDT_UNDERLYING, 25_00); + AaveV2Ethereum.POOL_CONFIGURATOR.setReserveFactor(AaveV2EthereumAssets.LUSD_UNDERLYING, 25_00); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..bfdf99a9f --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2Ethereum} from 'aave-address-book/AaveV2Ethereum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol'; +import {AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV2TestBase +{ + AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 18586524); + proposal = new AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV2Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..68a64cdf6 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol'; +import {AaveV3PayloadArbitrum} from 'aave-helpers/v3-config-engine/AaveV3PayloadArbitrum.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + AaveV3PayloadArbitrum +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.DAI_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.USDT_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.FRAX_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..c59f398a3 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV3TestBase +{ + AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('arbitrum'), 151080230); + proposal = new AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV3Arbitrum.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..8f86ab31f --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3AvalancheAssets} from 'aave-address-book/AaveV3Avalanche.sol'; +import {AaveV3PayloadAvalanche} from 'aave-helpers/v3-config-engine/AaveV3PayloadAvalanche.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + AaveV3PayloadAvalanche +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.DAIe_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.USDt_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.FRAX_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..40fc2e62c --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV3TestBase +{ + AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('avalanche'), 37851533); + proposal = new AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV3Avalanche.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..6162567fb --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; +import {AaveV3PayloadEthereum} from 'aave-helpers/v3-config-engine/AaveV3PayloadEthereum.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + AaveV3PayloadEthereum +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.DAI_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.USDT_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.FRAX_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..c7188705c --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV3TestBase +{ + AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 18586524); + proposal = new AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV3Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..e942a815d --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3MetisAssets} from 'aave-address-book/AaveV3Metis.sol'; +import {AaveV3PayloadMetis} from 'aave-helpers/v3-config-engine/AaveV3PayloadMetis.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + AaveV3PayloadMetis +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3MetisAssets.mDAI_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3MetisAssets.mUSDT_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..2e010e1a8 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Metis} from 'aave-address-book/AaveV3Metis.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV3TestBase +{ + AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('metis'), 9377430); + proposal = new AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV3Metis.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..ec587cb0b --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3OptimismAssets} from 'aave-address-book/AaveV3Optimism.sol'; +import {AaveV3PayloadOptimism} from 'aave-helpers/v3-config-engine/AaveV3PayloadOptimism.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + AaveV3PayloadOptimism +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.DAI_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: _bpsToRay(0), + variableRateSlope1: _bpsToRay(0), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.USDT_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..5562eec21 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV3TestBase +{ + AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('optimism'), 112281968); + proposal = new AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV3Optimism.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol new file mode 100644 index 000000000..60e9aca71 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3PolygonAssets} from 'aave-address-book/AaveV3Polygon.sol'; +import {AaveV3PayloadPolygon} from 'aave-helpers/v3-config-engine/AaveV3PayloadPolygon.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; + +/** + * @title Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments + * @author Gauntlet, Block Analitica + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93 + * - Discussion: https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096 + */ +contract AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 is + AaveV3PayloadPolygon +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.DAI_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.USDT_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(90_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol new file mode 100644 index 000000000..0e14be142 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Polygon} from 'aave-address-book/AaveV3Polygon.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol'; +import {AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Test for AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + * command: make test-contract filter=AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + */ +contract AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116_Test is + ProtocolV3TestBase +{ + AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('polygon'), 50025135); + proposal = new AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116', + AaveV3Polygon.POOL, + address(proposal) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md new file mode 100644 index 000000000..cd29c0cfb --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md @@ -0,0 +1,58 @@ +--- +title: "Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments" +author: "Gauntlet, Block Analitica" +discussions: "https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096" +--- + +## Summary + +A proposal to make RF and Uopt changes to stablecoins on all V3 deployments and v2 Ethereum. For more details, see the full forum post here. + +## Specification + +#### Uopt changes + +| Market | Asset | Parameter | Current Value | Recommended Value | +| ------------ | ----- | --------- | ------------- | ----------------- | +| Ethereum v3 | USDT | Uopt | 80% | 90% | +| Ethereum v3 | DAI | Uopt | 80% | 90% | +| Ethereum v3 | FRAX | Uopt | 80% | 90% | +| Avalanche v3 | USDT | Uopt | 80% | 90% | +| Avalanche v3 | DAI | Uopt | 80% | 90% | +| Avalanche v3 | FRAX | Uopt | 80% | 90% | +| Polygon v3 | USDT | Uopt | 80% | 90% | +| Polygon v3 | DAI | Uopt | 80% | 90% | +| Optimism v3 | USDT | Uopt | 80% | 90% | +| Optimism v3 | DAI | Uopt | 80% | 90% | +| Arbitrum v3 | USDT | Uopt | 80% | 90% | +| Arbitrum v3 | DAI | Uopt | 80% | 90% | +| Arbitrum v3 | FRAX | Uopt | 80% | 90% | +| Metis v3 | USDT | Uopt | 80% | 90% | +| Metis v3 | DAI | Uopt | 80% | 90% | + +#### RF changes + +| Market | Asset | Parameter | Current Value | Recommended Value | +| ----------- | ----- | --------- | ------------- | ----------------- | +| Ethereum v2 | USDC | RF | 20% | 25% | +| Ethereum v2 | USDT | RF | 20% | 25% | +| Ethereum v2 | LUSD | RF | 20% | 25% | + +## References + +- Implementation: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol) +- Tests: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93) +- [Discussion](https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096) + +## Disclaimer + +Gauntlet and Block Analitica have not received any compensation from any third-party in exchange for recommending any of the actions contained in this proposal. + +By approving this proposal, you agree that any services provided by Gauntlet shall be governed by the terms of service available at gauntlet.network/tos. + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). + +_By approving this proposal, you agree that any services provided by Gauntlet shall be governed by the terms of service available at gauntlet.network/tos._ diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol new file mode 100644 index 000000000..706d21c44 --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol @@ -0,0 +1,181 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol'; +import {EthereumScript, PolygonScript, AvalancheScript, OptimismScript, ArbitrumScript, MetisScript} from 'aave-helpers/ScriptUtils.sol'; +import {AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; +import {AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; +import {AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; +import {AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; +import {AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; +import {AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; +import {AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116} from './AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol'; + +/** + * @dev Deploy Ethereum + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:DeployEthereum chain=mainnet + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload0 = new AaveV2Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload1 = new AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](2); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + actions[1] = GovV3Helpers.buildAction(address(payload1)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Polygon + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:DeployPolygon chain=polygon + */ +contract DeployPolygon is PolygonScript { + function run() external broadcast { + // deploy payloads + AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload0 = new AaveV3Polygon_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Avalanche + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:DeployAvalanche chain=avalanche + */ +contract DeployAvalanche is AvalancheScript { + function run() external broadcast { + // deploy payloads + AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload0 = new AaveV3Avalanche_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Optimism + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:DeployOptimism chain=optimism + */ +contract DeployOptimism is OptimismScript { + function run() external broadcast { + // deploy payloads + AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload0 = new AaveV3Optimism_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Arbitrum + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:DeployArbitrum chain=arbitrum + */ +contract DeployArbitrum is ArbitrumScript { + function run() external broadcast { + // deploy payloads + AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload0 = new AaveV3Arbitrum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Metis + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:DeployMetis chain=metis + */ +contract DeployMetis is MetisScript { + function run() external broadcast { + // deploy payloads + AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116 payload0 = new AaveV3Metis_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Create Proposal + * command: make deploy-ledger contract=src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.s.sol:CreateProposal chain=mainnet + */ +contract CreateProposal is EthereumScript { + function run() external { + // create payloads + PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](6); + + // compose actions for validation + IPayloadsControllerCore.ExecutionAction[] + memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](2); + actionsEthereum[0] = GovV3Helpers.buildAction(address(0)); + actionsEthereum[1] = GovV3Helpers.buildAction(address(0)); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsPolygon = new IPayloadsControllerCore.ExecutionAction[](1); + actionsPolygon[0] = GovV3Helpers.buildAction(address(0)); + payloads[1] = GovV3Helpers.buildPolygonPayload(vm, actionsPolygon); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsAvalanche = new IPayloadsControllerCore.ExecutionAction[](1); + actionsAvalanche[0] = GovV3Helpers.buildAction(address(0)); + payloads[2] = GovV3Helpers.buildAvalanchePayload(vm, actionsAvalanche); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsOptimism = new IPayloadsControllerCore.ExecutionAction[](1); + actionsOptimism[0] = GovV3Helpers.buildAction(address(0)); + payloads[3] = GovV3Helpers.buildOptimismPayload(vm, actionsOptimism); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsArbitrum = new IPayloadsControllerCore.ExecutionAction[](1); + actionsArbitrum[0] = GovV3Helpers.buildAction(address(0)); + payloads[4] = GovV3Helpers.buildArbitrumPayload(vm, actionsArbitrum); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsMetis = new IPayloadsControllerCore.ExecutionAction[](1); + actionsMetis[0] = GovV3Helpers.buildAction(address(0)); + payloads[5] = GovV3Helpers.buildMetisPayload(vm, actionsMetis); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal2_5( + payloads, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md' + ) + ); + } +} diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json new file mode 100644 index 000000000..c10dde14d --- /dev/null +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json @@ -0,0 +1,289 @@ +{ + "rootOptions": { + "pools": [ + "AaveV2Ethereum", + "AaveV3Ethereum", + "AaveV3Polygon", + "AaveV3Avalanche", + "AaveV3Optimism", + "AaveV3Arbitrum", + "AaveV3Metis" + ], + "title": "Raise Uopt to 90% for USDC, USDT, DAI, FRAX, where applicable, across all v3 deployments", + "shortName": "RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments", + "date": "20231116", + "author": "Gauntlet, Block Analitica", + "discussion": "https://governance.aave.com/t/arfc-increase-optimal-borrow-rates-for-ethereum-stablecoin-markets/15096", + "snapshot": "https://snapshot.org/#/aave.eth/proposal/0xb9b28f57f7633dd6b987de9abcede23da62fe4fab6b002f189b8b25a7c02ea93" + }, + "poolOptions": { + "AaveV2Ethereum": { + "configs": {}, + "features": [] + }, + "AaveV3Ethereum": { + "configs": { + "RATE_UPDATE_V3": [ + { + "asset": "DAI", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "USDT", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "FRAX", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + } + ] + }, + "features": [ + "RATE_UPDATE_V3" + ] + }, + "AaveV3Polygon": { + "configs": { + "RATE_UPDATE_V3": [ + { + "asset": "DAI", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "USDT", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + } + ] + }, + "features": [ + "RATE_UPDATE_V3" + ] + }, + "AaveV3Avalanche": { + "configs": { + "RATE_UPDATE_V3": [ + { + "asset": "DAIe", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "USDt", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "FRAX", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + } + ] + }, + "features": [ + "RATE_UPDATE_V3" + ] + }, + "AaveV3Optimism": { + "configs": { + "RATE_UPDATE_V3": [ + { + "asset": "DAI", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "_bpsToRay(0)", + "variableRateSlope1": "_bpsToRay(0)", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "USDT", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + } + ] + }, + "features": [ + "RATE_UPDATE_V3" + ] + }, + "AaveV3Arbitrum": { + "configs": { + "RATE_UPDATE_V3": [ + { + "asset": "DAI", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "USDT", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "FRAX", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + } + ] + }, + "features": [ + "RATE_UPDATE_V3" + ] + }, + "AaveV3Metis": { + "configs": { + "RATE_UPDATE_V3": [ + { + "asset": "mDAI", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + }, + { + "asset": "mUSDT", + "params": { + "optimalUtilizationRate": "_bpsToRay(90_00)", + "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", + "variableRateSlope1": "EngineFlags.KEEP_CURRENT", + "variableRateSlope2": "EngineFlags.KEEP_CURRENT", + "stableRateSlope1": "EngineFlags.KEEP_CURRENT", + "stableRateSlope2": "EngineFlags.KEEP_CURRENT", + "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", + "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", + "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" + } + } + ] + }, + "features": [ + "RATE_UPDATE_V3" + ] + } + } +} \ No newline at end of file From 222ef2344769b422f5fcf1a2340815bd0766bc4d Mon Sep 17 00:00:00 2001 From: Jonathan Reem Date: Fri, 17 Nov 2023 12:11:54 -0800 Subject: [PATCH 2/2] Remove eth v3 DAI update as uopt is already set to 90. --- ...plicableAcrossAllV3Deployments_20231116.sol | 18 ++---------------- ...RAXWhereApplicableAcrossAllV3Deployments.md | 1 - .../config.json | 16 +--------------- 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol index 6162567fb..a8e65f33f 100644 --- a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments_20231116.sol @@ -23,22 +23,8 @@ contract AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) { IAaveV3ConfigEngine.RateStrategyUpdate[] - memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2); rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ - asset: AaveV3EthereumAssets.DAI_UNDERLYING, - params: IV3RateStrategyFactory.RateStrategyParams({ - optimalUsageRatio: _bpsToRay(90_00), - baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, - variableRateSlope1: EngineFlags.KEEP_CURRENT, - variableRateSlope2: EngineFlags.KEEP_CURRENT, - stableRateSlope1: EngineFlags.KEEP_CURRENT, - stableRateSlope2: EngineFlags.KEEP_CURRENT, - baseStableRateOffset: EngineFlags.KEEP_CURRENT, - stableRateExcessOffset: EngineFlags.KEEP_CURRENT, - optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT - }) - }); - rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ asset: AaveV3EthereumAssets.USDT_UNDERLYING, params: IV3RateStrategyFactory.RateStrategyParams({ optimalUsageRatio: _bpsToRay(90_00), @@ -52,7 +38,7 @@ contract AaveV3Ethereum_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT }) }); - rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ asset: AaveV3EthereumAssets.FRAX_UNDERLYING, params: IV3RateStrategyFactory.RateStrategyParams({ optimalUsageRatio: _bpsToRay(90_00), diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md index cd29c0cfb..37260e466 100644 --- a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments.md @@ -15,7 +15,6 @@ A proposal to make RF and Uopt changes to stablecoins on all V3 deployments and | Market | Asset | Parameter | Current Value | Recommended Value | | ------------ | ----- | --------- | ------------- | ----------------- | | Ethereum v3 | USDT | Uopt | 80% | 90% | -| Ethereum v3 | DAI | Uopt | 80% | 90% | | Ethereum v3 | FRAX | Uopt | 80% | 90% | | Avalanche v3 | USDT | Uopt | 80% | 90% | | Avalanche v3 | DAI | Uopt | 80% | 90% | diff --git a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json index c10dde14d..b7719e93b 100644 --- a/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json +++ b/src/20231116_Multi_RaiseUoptTo90ForUSDCUSDTDAIFRAXWhereApplicableAcrossAllV3Deployments/config.json @@ -24,20 +24,6 @@ "AaveV3Ethereum": { "configs": { "RATE_UPDATE_V3": [ - { - "asset": "DAI", - "params": { - "optimalUtilizationRate": "_bpsToRay(90_00)", - "baseVariableBorrowRate": "EngineFlags.KEEP_CURRENT", - "variableRateSlope1": "EngineFlags.KEEP_CURRENT", - "variableRateSlope2": "EngineFlags.KEEP_CURRENT", - "stableRateSlope1": "EngineFlags.KEEP_CURRENT", - "stableRateSlope2": "EngineFlags.KEEP_CURRENT", - "baseStableRateOffset": "EngineFlags.KEEP_CURRENT", - "stableRateExcessOffset": "EngineFlags.KEEP_CURRENT", - "optimalStableToTotalDebtRatio": "EngineFlags.KEEP_CURRENT" - } - }, { "asset": "USDT", "params": { @@ -286,4 +272,4 @@ ] } } -} \ No newline at end of file +}