diff --git a/.assets/021926cd285ee1fba70b3acf461b0293ae08fb03.svg b/.assets/021926cd285ee1fba70b3acf461b0293ae08fb03.svg deleted file mode 100644 index bacea5dfe..000000000 --- a/.assets/021926cd285ee1fba70b3acf461b0293ae08fb03.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 65%Optimal 65% \ No newline at end of file diff --git a/.assets/0840a59c8c432cbe6f37694bbe31a2d331363c7b.svg b/.assets/0840a59c8c432cbe6f37694bbe31a2d331363c7b.svg new file mode 100644 index 000000000..7e173c7fa --- /dev/null +++ b/.assets/0840a59c8c432cbe6f37694bbe31a2d331363c7b.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/0d7fef836e3858d0db22265c3110d7ca043a7657.svg b/.assets/0d7fef836e3858d0db22265c3110d7ca043a7657.svg new file mode 100644 index 000000000..b7151ad28 --- /dev/null +++ b/.assets/0d7fef836e3858d0db22265c3110d7ca043a7657.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 45%Optimal 45% \ No newline at end of file diff --git a/.assets/0efb94ca8399a809f0604c48b7139249d813e785.svg b/.assets/0efb94ca8399a809f0604c48b7139249d813e785.svg deleted file mode 100644 index 7924b8fef..000000000 --- a/.assets/0efb94ca8399a809f0604c48b7139249d813e785.svg +++ /dev/null @@ -1 +0,0 @@ - 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/1571932d0fcbd41e429b19c18a080afc59cc51fe.svg b/.assets/1571932d0fcbd41e429b19c18a080afc59cc51fe.svg deleted file mode 100644 index 99fb7d999..000000000 --- a/.assets/1571932d0fcbd41e429b19c18a080afc59cc51fe.svg +++ /dev/null @@ -1 +0,0 @@ - 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/1a8c34e80e24e6ccaf0f1681a4f94fdcba67eb2c.svg b/.assets/1a8c34e80e24e6ccaf0f1681a4f94fdcba67eb2c.svg new file mode 100644 index 000000000..2d38b2c7a --- /dev/null +++ b/.assets/1a8c34e80e24e6ccaf0f1681a4f94fdcba67eb2c.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/1ee1814a06c37c32f0efd02a4fda97a8278b0714.svg b/.assets/1ee1814a06c37c32f0efd02a4fda97a8278b0714.svg deleted file mode 100644 index c61b9927f..000000000 --- a/.assets/1ee1814a06c37c32f0efd02a4fda97a8278b0714.svg +++ /dev/null @@ -1 +0,0 @@ - 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/2765736168100defb74c36ef37d1d25b6d8e6ab2.svg b/.assets/2765736168100defb74c36ef37d1d25b6d8e6ab2.svg new file mode 100644 index 000000000..c55b74d8f --- /dev/null +++ b/.assets/2765736168100defb74c36ef37d1d25b6d8e6ab2.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/2e987a4911a41c316461bd57acf38be5b6ae837b.svg b/.assets/2e987a4911a41c316461bd57acf38be5b6ae837b.svg deleted file mode 100644 index 889af50e1..000000000 --- a/.assets/2e987a4911a41c316461bd57acf38be5b6ae837b.svg +++ /dev/null @@ -1 +0,0 @@ - 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/330013c26457182fd9217e67c8443bffe9a1b607.svg b/.assets/330013c26457182fd9217e67c8443bffe9a1b607.svg deleted file mode 100644 index b85dc1a6e..000000000 --- a/.assets/330013c26457182fd9217e67c8443bffe9a1b607.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/42d7d49925c7332e1ea4d2798e5c76818cd4496f.svg b/.assets/42d7d49925c7332e1ea4d2798e5c76818cd4496f.svg deleted file mode 100644 index ac7c8a143..000000000 --- a/.assets/42d7d49925c7332e1ea4d2798e5c76818cd4496f.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 45%Optimal 45% \ No newline at end of file diff --git a/.assets/476ff20939889da0d22c72400271f9f8e240b721.svg b/.assets/476ff20939889da0d22c72400271f9f8e240b721.svg new file mode 100644 index 000000000..24c44b2c6 --- /dev/null +++ b/.assets/476ff20939889da0d22c72400271f9f8e240b721.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/4e8709042699525ed81e0dac3fda0c7777197541.svg b/.assets/4e8709042699525ed81e0dac3fda0c7777197541.svg new file mode 100644 index 000000000..6d1c68d7f --- /dev/null +++ b/.assets/4e8709042699525ed81e0dac3fda0c7777197541.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 50%Optimal 50% \ No newline at end of file diff --git a/.assets/512f54d63a2494f0efb20965bcc816e1ac4e20dc.svg b/.assets/512f54d63a2494f0efb20965bcc816e1ac4e20dc.svg new file mode 100644 index 000000000..1871ec1b6 --- /dev/null +++ b/.assets/512f54d63a2494f0efb20965bcc816e1ac4e20dc.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 65%Optimal 65% \ No newline at end of file diff --git a/.assets/53a7f61d5d21127368cc0bea20bad5a01ea1b315.svg b/.assets/53a7f61d5d21127368cc0bea20bad5a01ea1b315.svg new file mode 100644 index 000000000..46b2de123 --- /dev/null +++ b/.assets/53a7f61d5d21127368cc0bea20bad5a01ea1b315.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 45%Optimal 45% \ No newline at end of file diff --git a/.assets/560aedf1df6c1d7f2e113b0b9d519f23de386bd3.svg b/.assets/560aedf1df6c1d7f2e113b0b9d519f23de386bd3.svg deleted file mode 100644 index 58214672d..000000000 --- a/.assets/560aedf1df6c1d7f2e113b0b9d519f23de386bd3.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%Optimal 50%Optimal 50% \ No newline at end of file diff --git a/.assets/580220443634a43f0f202f2f55e802420e34aaef.svg b/.assets/580220443634a43f0f202f2f55e802420e34aaef.svg new file mode 100644 index 000000000..b170a3203 --- /dev/null +++ b/.assets/580220443634a43f0f202f2f55e802420e34aaef.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 1%Optimal 1% \ No newline at end of file diff --git a/.assets/5bbaf463ca5ee6f64b55fc3341caa8cbcee3dfaa.svg b/.assets/5bbaf463ca5ee6f64b55fc3341caa8cbcee3dfaa.svg deleted file mode 100644 index 9b3fea0bc..000000000 --- a/.assets/5bbaf463ca5ee6f64b55fc3341caa8cbcee3dfaa.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 75%Optimal 75% \ No newline at end of file diff --git a/.assets/5cc8da050368b3e9a8420d21fa866a16cd9b256b.svg b/.assets/5cc8da050368b3e9a8420d21fa866a16cd9b256b.svg new file mode 100644 index 000000000..2d7e24cb3 --- /dev/null +++ b/.assets/5cc8da050368b3e9a8420d21fa866a16cd9b256b.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%100%Optimal 70%Optimal 70% \ No newline at end of file diff --git a/.assets/704f19cf0e34dff3f9cc310e94fefbf076d4b4ee.svg b/.assets/704f19cf0e34dff3f9cc310e94fefbf076d4b4ee.svg deleted file mode 100644 index 2b883e106..000000000 --- a/.assets/704f19cf0e34dff3f9cc310e94fefbf076d4b4ee.svg +++ /dev/null @@ -1 +0,0 @@ - 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/9024b25803beaac85c9e1e00e50e08c212c3d6ee.svg b/.assets/9024b25803beaac85c9e1e00e50e08c212c3d6ee.svg new file mode 100644 index 000000000..f5bf393be --- /dev/null +++ b/.assets/9024b25803beaac85c9e1e00e50e08c212c3d6ee.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 65%Optimal 65% \ No newline at end of file diff --git a/.assets/b10a47386e954467cec43720ed9cf782b044323c.svg b/.assets/b10a47386e954467cec43720ed9cf782b044323c.svg new file mode 100644 index 000000000..24422e56b --- /dev/null +++ b/.assets/b10a47386e954467cec43720ed9cf782b044323c.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 1%Optimal 1% \ No newline at end of file diff --git a/.assets/bd20cf9450361f13f334b9c702978621478db3ef.svg b/.assets/bd20cf9450361f13f334b9c702978621478db3ef.svg new file mode 100644 index 000000000..4ae2e6a09 --- /dev/null +++ b/.assets/bd20cf9450361f13f334b9c702978621478db3ef.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/c415a8c57745a62d63e11134fe8acf5059377542.svg b/.assets/c415a8c57745a62d63e11134fe8acf5059377542.svg deleted file mode 100644 index f479e4b44..000000000 --- a/.assets/c415a8c57745a62d63e11134fe8acf5059377542.svg +++ /dev/null @@ -1 +0,0 @@ - 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/c68564d8f84cae803b5ce093e3c16a2320d839a3.svg b/.assets/c68564d8f84cae803b5ce093e3c16a2320d839a3.svg deleted file mode 100644 index 0bf7ca3fe..000000000 --- a/.assets/c68564d8f84cae803b5ce093e3c16a2320d839a3.svg +++ /dev/null @@ -1 +0,0 @@ - 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/ca980764f838d8ca4360a8d41134c2b88ecb7267.svg b/.assets/ca980764f838d8ca4360a8d41134c2b88ecb7267.svg new file mode 100644 index 000000000..fd7fd2d7b --- /dev/null +++ b/.assets/ca980764f838d8ca4360a8d41134c2b88ecb7267.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/cb915942068dba199ca11ffeb52b7307ca371150.svg b/.assets/cb915942068dba199ca11ffeb52b7307ca371150.svg deleted file mode 100644 index 2a07c91eb..000000000 --- a/.assets/cb915942068dba199ca11ffeb52b7307ca371150.svg +++ /dev/null @@ -1 +0,0 @@ - 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/cded74de0afe7038dd7aeafec3706fca30b9c4cb.svg b/.assets/cded74de0afe7038dd7aeafec3706fca30b9c4cb.svg new file mode 100644 index 000000000..f0e64bfa0 --- /dev/null +++ b/.assets/cded74de0afe7038dd7aeafec3706fca30b9c4cb.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 45%Optimal 45% \ No newline at end of file diff --git a/.assets/d3533b46a606ea3ecf5d2c9d4131c8d9d3d7fcfe.svg b/.assets/d3533b46a606ea3ecf5d2c9d4131c8d9d3d7fcfe.svg deleted file mode 100644 index 83b2a6954..000000000 --- a/.assets/d3533b46a606ea3ecf5d2c9d4131c8d9d3d7fcfe.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%100%200%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/d697dc9dd6b6e40ecb1ed1cd027e997e9d1a4cc0.svg b/.assets/d697dc9dd6b6e40ecb1ed1cd027e997e9d1a4cc0.svg deleted file mode 100644 index 4dcfaf825..000000000 --- a/.assets/d697dc9dd6b6e40ecb1ed1cd027e997e9d1a4cc0.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%500%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/dbeb3e57d4e28d7fd4b450d05caf6b3d30d3fd64.svg b/.assets/dbeb3e57d4e28d7fd4b450d05caf6b3d30d3fd64.svg new file mode 100644 index 000000000..82263d204 --- /dev/null +++ b/.assets/dbeb3e57d4e28d7fd4b450d05caf6b3d30d3fd64.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/e6957fe4c310ba51f499314c131f0977304a09d1.svg b/.assets/e6957fe4c310ba51f499314c131f0977304a09d1.svg deleted file mode 100644 index da37df2f5..000000000 --- a/.assets/e6957fe4c310ba51f499314c131f0977304a09d1.svg +++ /dev/null @@ -1 +0,0 @@ - Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/ed311be06517702c412391a895f26a4198836af6.svg b/.assets/ed311be06517702c412391a895f26a4198836af6.svg new file mode 100644 index 000000000..da360bbd0 --- /dev/null +++ b/.assets/ed311be06517702c412391a895f26a4198836af6.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%200%400%Optimal 45%Optimal 45% \ No newline at end of file diff --git a/.assets/faca7fdf8c83324f67a2ee404d914301ae9aae49.svg b/.assets/faca7fdf8c83324f67a2ee404d914301ae9aae49.svg new file mode 100644 index 000000000..209e35f30 --- /dev/null +++ b/.assets/faca7fdf8c83324f67a2ee404d914301ae9aae49.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/.gitmodules b/.gitmodules index 11a62babb..837cb4ae2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,3 @@ [submodule "lib/aave-address-book"] path = lib/aave-address-book url = https://github.com/bgd-labs/aave-address-book -[submodule "lib/governance-crosschain-bridges"] - path = lib/governance-crosschain-bridges - url = https://github.com/aave/governance-crosschain-bridges diff --git a/diffs/preTestV2RatesUpdates_postTestV2RatesUpdates.md b/diffs/preTestV2RatesUpdates_postTestV2RatesUpdates.md index be27e63b9..9893bd8fa 100644 --- a/diffs/preTestV2RatesUpdates_postTestV2RatesUpdates.md +++ b/diffs/preTestV2RatesUpdates_postTestV2RatesUpdates.md @@ -6,12 +6,12 @@ | description | value before | value after | | --- | --- | --- | -| interestRateStrategy | [0x8Cae0596bC1eD42dc3F04c4506cfe442b3E74e27](https://etherscan.io/address/0x8Cae0596bC1eD42dc3F04c4506cfe442b3E74e27) | [0xc76EF342898f1AE7E6C4632627Df683FAD8563DD](https://etherscan.io/address/0xc76EF342898f1AE7E6C4632627Df683FAD8563DD) | +| interestRateStrategy | [0xb72F23adE9b9980c2E731Ca504105fC860643619](https://etherscan.io/address/0xb72F23adE9b9980c2E731Ca504105fC860643619) | [0x7A297125a0Ea56cCC237Cb87b1Ab1F729353d4D2](https://etherscan.io/address/0x7A297125a0Ea56cCC237Cb87b1Ab1F729353d4D2) | | optimalUsageRatio | 90 % | 69 % | | maxExcessUsageRatio | 10 % | 31 % | -| variableRateSlope1 | 4 % | 42 % | +| variableRateSlope1 | 6 % | 42 % | | stableRateSlope1 | 2 % | 69 % | -| interestRate | ![before](/.assets/1ee1814a06c37c32f0efd02a4fda97a8278b0714.svg) | ![after](/.assets/ad67c5576b64e24c557a73a5bc9c67be904f53bb.svg) | +| interestRate | ![before](/.assets/faca7fdf8c83324f67a2ee404d914301ae9aae49.svg) | ![after](/.assets/ad67c5576b64e24c557a73a5bc9c67be904f53bb.svg) | ## Raw diff @@ -20,13 +20,13 @@ "reserves": { "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { "interestRateStrategy": { - "from": "0x8Cae0596bC1eD42dc3F04c4506cfe442b3E74e27", - "to": "0xc76EF342898f1AE7E6C4632627Df683FAD8563DD" + "from": "0xb72F23adE9b9980c2E731Ca504105fC860643619", + "to": "0x7A297125a0Ea56cCC237Cb87b1Ab1F729353d4D2" } } }, "strategies": { - "0xc76EF342898f1AE7E6C4632627Df683FAD8563DD": { + "0x7A297125a0Ea56cCC237Cb87b1Ab1F729353d4D2": { "from": null, "to": { "baseVariableBorrowRate": 0, diff --git a/lib/governance-crosschain-bridges b/lib/governance-crosschain-bridges deleted file mode 160000 index 57dd43969..000000000 --- a/lib/governance-crosschain-bridges +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 57dd43969a68eb076fdbeae2953b572534694986 diff --git a/remappings.txt b/remappings.txt index abcb66ce2..d564e7208 100644 --- a/remappings.txt +++ b/remappings.txt @@ -6,4 +6,3 @@ aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/ ds-test/=lib/forge-std/lib/ds-test/src/ forge-std/=lib/forge-std/src/ solidity-utils/=lib/solidity-utils/src/ -governance-crosschain-bridges/=lib/governance-crosschain-bridges/ diff --git a/reports/postTestV2RatesUpdates.json b/reports/postTestV2RatesUpdates.json index 6d5c8377d..d43ced055 100644 --- a/reports/postTestV2RatesUpdates.json +++ b/reports/postTestV2RatesUpdates.json @@ -1,13 +1,13 @@ { "chainId": 1, "poolConfig": { - "lendingPoolCollateralManager": "0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C", + "lendingPoolCollateralManager": "0x368e6441bB27159c6e8e6d3bbd9147BEcBA915E3", "oracle": "0xA50ba011c48153De246E5192C8f9258A2ba79Ca9", "pool": "0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9", "poolAddressesProvider": "0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5", "poolConfigurator": "0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756", - "poolConfiguratorImpl": "0x3a95Ee42f080ff7289C8B4a14EB483a8644d7521", - "poolImpl": "0xC6845a5C768BF8D7681249f8927877Efda425baf", + "poolConfiguratorImpl": "0x246ca67522dF5895cD6cf8807Ec161954ea1bA61", + "poolImpl": "0x085E34722e04567Df9E6d2c32e82fd74f3342e79", "protocolDataProvider": "0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d" }, "reserves": { @@ -17,22 +17,22 @@ "aTokenName": "Aave interest bearing TUSD", "aTokenSymbol": "aTUSD", "baseStableBorrowRate": 100000000000000000000000000, - "borrowingEnabled": true, + "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x6bcE15B789e537f3abA3C60CB183F0E8737f05eC", + "interestRateStrategy": "0xb70e28437Aec70a8cfE5240F54c463cF849bE17C", "isActive": true, - "isFrozen": false, - "liquidationBonus": 10500, - "liquidationThreshold": 8250, - "ltv": 8000, + "isFrozen": true, + "liquidationBonus": 11000, + "liquidationThreshold": 6500, + "ltv": 0, "oracle": "0x3886BA987236181D98F2401c507Fb8BeA7871dF2", "oracleDecimals": 18, "oracleDescription": "TUSD / ETH", - "oracleLatestAnswer": 610682580000000, - "reserveFactor": 500, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 401284370109943, + "reserveFactor": 9990, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x7f38d60D94652072b2C44a18c0e14A481EC3C0dd", - "stableDebtTokenImpl": "0x95Ce83DF0B8A45072D0330Cf5A1e0c8CAA43D192", + "stableDebtTokenImpl": "0x00C15a6aaF1e48763B53A9dc8D2077551BA45Fee", "stableDebtTokenName": "Aave stable debt bearing TUSD", "stableDebtTokenSymbol": "stableDebtTUSD", "symbol": "TUSD", @@ -45,13 +45,13 @@ }, "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919": { "aToken": "0xc9BC48c72154ef3e5425641a3c747242112a46AF", - "aTokenImpl": "0xB97Fa7A950B19C8Fe7d9bcD06909D3e67F20f16a", + "aTokenImpl": "0x2CDE0f77CF5d54e9417480a8611AA2fEcD56BbD9", "aTokenName": "Aave interest bearing RAI", "aTokenSymbol": "aRAI", "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xA7d4df837926cD55036175AfeF38395d56A64c22", + "interestRateStrategy": "0xc83cDb49F234EC6666D7857B3EAa1302b109394C", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -60,8 +60,8 @@ "oracle": "0x4ad7B025127e89263242aB68F0f9c4E5C033B489", "oracleDecimals": 18, "oracleDescription": "RAI / ETH", - "oracleLatestAnswer": 1711020815907047, - "reserveFactor": 2000, + "oracleLatestAnswer": 1172820903069477, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x9C72B8476C33AE214ee3e8C20F0bc28496a62032", "stableDebtTokenImpl": "0xf37E202E587c6f63FD70F35C24Eb7f818CC5d01A", @@ -83,15 +83,15 @@ "baseStableBorrowRate": 40000000000000000000000000, "borrowingEnabled": true, "decimals": 2, - "interestRateStrategy": "0x2893405d64a7Bc8Db02Fa617351a5399d59eCf8D", + "interestRateStrategy": "0x999F449fEAfaAd78CE5702A9ebc460633478D4a4", "isActive": true, "isFrozen": false, "liquidationBonus": 0, "liquidationThreshold": 0, "ltv": 0, "oracle": "0xEc6f4Cd64d28Ef32507e2dc399948aAe9Bbedd7e", - "oracleLatestAnswer": 610545521752085, - "reserveFactor": 1000, + "oracleLatestAnswer": 406781720021913, + "reserveFactor": 2000, "stableBorrowRateEnabled": false, "stableDebtToken": "0xf8aC64ec6Ff8E0028b37EB89772d21865321bCe0", "stableDebtTokenImpl": "0xEddC66EB4a0aD3be434cBb1c2E7d17cE805D7a28", @@ -113,20 +113,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xBdfC85b140edF1FeaFd6eD664027AA4C23b4A29F", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 7000, - "ltv": 6500, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x0d16d4528239e9ee52fa531af613AcdB23D88c94", "oracleDecimals": 18, "oracleDescription": "BAT / ETH", - "oracleLatestAnswer": 182276893023327, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 93749950000000, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x277f8676FAcf4dAA5a6EA38ba511B7F65AA02f9F", - "stableDebtTokenImpl": "0x917fd53da13EDCCE5c155a7dbC73E1e4DcCd4267", + "stableDebtTokenImpl": "0x49B6645a9aa05f1Be24893136100467276399470", "stableDebtTokenName": "Aave stable debt bearing BAT", "stableDebtTokenSymbol": "stableDebtBAT", "symbol": "BAT", @@ -145,20 +145,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x004fC239848D8A8d3304729b78ba81d73d83C99F", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 7500, - "ltv": 6150, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x82A44D92D6c329826dc557c5E1Be6ebeC5D5FeB9", "oracleDecimals": 18, "oracleDescription": "MANA / ETH", - "oracleLatestAnswer": 395309373203460, - "reserveFactor": 3500, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 178015486813397, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xD86C74eA2224f4B8591560652b50035E4e5c0a3b", - "stableDebtTokenImpl": "0x441c5CD55E9e3267D02F7b1b4D245AA1C61891c3", + "stableDebtTokenImpl": "0xe0bf71fF662e8bbeb911ACEa765f4b8be052F59b", "stableDebtTokenName": "Aave stable debt bearing MANA", "stableDebtTokenSymbol": "stableDebtMANA", "symbol": "MANA", @@ -177,17 +177,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xfd71623D7F41360aefE200de4f17E20A29e1d58C", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 6500, - "ltv": 5000, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x7c5d4F8345e66f68099581Db340cd65B078C41f4", "oracleDecimals": 18, "oracleDescription": "YFI / ETH", - "oracleLatestAnswer": 5686591566150553000, - "reserveFactor": 2000, + "oracleLatestAnswer": 3047678145187916000, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xca823F78C2Dd38993284bb42Ba9b14152082F7BD", "stableDebtTokenImpl": "0x802Bb38676B6E79C393a3E3EC73b8Af63578188a", @@ -209,17 +209,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xb2eD1eCE1c13455Ce9299d35D3B00358529f3Dc8", + "interestRateStrategy": "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10850, - "liquidationThreshold": 5000, - "ltv": 4000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x72AFAECF99C9d9C8215fF44C77B94B99C28741e8", "oracleDecimals": 18, "oracleDescription": "1INCH / ETH", - "oracleLatestAnswer": 349400000000000, - "reserveFactor": 2000, + "oracleLatestAnswer": 173342672736174, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x1278d6ED804d59d2d18a5Aa5638DfD591A79aF0a", "stableDebtTokenImpl": "0x9C2114Bf70774C36E9b8d6c790c9C14FF0d6799E", @@ -241,17 +241,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x9440aEc0795D7485e58bCF26622c2f4A681A9671", + "interestRateStrategy": "0xA12D7bB07379ad6de4497B80088e28D4C00932D1", "isActive": true, - "isFrozen": false, - "liquidationBonus": 10750, - "liquidationThreshold": 7000, - "ltv": 6500, + "isFrozen": true, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x029849bbc0b1d93b85a8b6190e979fd38F5760E2", "oracleDecimals": 18, "oracleDescription": "DPI / ETH", - "oracleLatestAnswer": 53042159775707955, - "reserveFactor": 2000, + "oracleLatestAnswer": 41364111962536074, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xa3953F07f389d719F99FC378ebDb9276177d8A6e", "stableDebtTokenImpl": "0x0f2d35d52a65c4CC98e345C3B478E75f7E4B9c2a", @@ -273,20 +273,20 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x24ABFac8dd8f270D752837fDFe3B3C735361f4eE", + "interestRateStrategy": "0x87cCa171a2125efca9868F9Bc1FfD7B7c80dC5a3", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10900, - "liquidationThreshold": 7700, - "ltv": 6500, + "liquidationThreshold": 2000, + "ltv": 0, "oracle": "0xD6aA3D25116d8dA79Ea0246c4826EB951872e02e", "oracleDecimals": 18, "oracleDescription": "UNI / ETH", - "oracleLatestAnswer": 3993507224186989, - "reserveFactor": 2000, + "oracleLatestAnswer": 2616213076346605, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xD939F7430dC8D5a427f156dE1012A56C18AcB6Aa", - "stableDebtTokenImpl": "0xe4759007A1E6014DD92EBB33A293e0dfE85A8Ffe", + "stableDebtTokenImpl": "0x54f514CA167e1fc19231dA9a48bB7AA6ffe4F10d", "stableDebtTokenName": "Aave stable debt bearing UNI", "stableDebtTokenSymbol": "stableDebtUNI", "symbol": "UNI", @@ -305,20 +305,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": true, "decimals": 8, - "interestRateStrategy": "0xf41E8F817e6C399d1AdE102059c454093b24f35B", + "interestRateStrategy": "0x32f3A6134590fc2d9440663d35a2F0a6265F04c4", "isActive": true, "isFrozen": false, "liquidationBonus": 10500, "liquidationThreshold": 8200, "ltv": 7200, - "oracle": "0xdeb288F737066589598e9214E782fa5A8eD689e8", + "oracle": "0xFD858c8bC5ac5e10f01018bC78471bb0DC392247", "oracleDecimals": 18, - "oracleDescription": "BTC / ETH", - "oracleLatestAnswer": 14363022524949910000, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleDescription": "wBTC/BTC/ETH", + "oracleLatestAnswer": 16842786004805376363, + "reserveFactor": 3000, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x51B039b9AFE64B78758f8Ef091211b5387eA717c", - "stableDebtTokenImpl": "0x6Ac108C4c3Fe7F4D367513F599Da1B9dF7c43433", + "stableDebtTokenImpl": "0x4f279f2046870F77cd9Ce63497f8A2D8689ef804", "stableDebtTokenName": "Aave stable debt bearing WBTC", "stableDebtTokenSymbol": "stableDebtWBTC", "symbol": "WBTC", @@ -337,20 +337,20 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x9B1e3C7483F0f21abFEaE3AeBC9b47b5f23f5bB0", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 6000, - "ltv": 5500, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x3147D7203354Dc06D9fd350c7a2437bcA92387a4", "oracleDecimals": 18, "oracleDescription": "REN / ETH", - "oracleLatestAnswer": 63713924764907, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 22610981899079, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x3356Ec1eFA75d9D150Da1EC7d944D9EDf73703B7", - "stableDebtTokenImpl": "0x7b3E7Aea49A5F5d2514B9317d4cF58f828Ac28C2", + "stableDebtTokenImpl": "0x6F4B277366e10F68003A0a65Ef8f118f3D60B67E", "stableDebtTokenName": "Aave stable debt bearing REN", "stableDebtTokenSymbol": "stableDebtREN", "symbol": "REN", @@ -369,7 +369,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x26D40544447F68a3De69005822195549934624B9", + "interestRateStrategy": "0xF1AafF9a4Da6Bf4Fb8fc18d39C8ffdafbAACce69", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -378,8 +378,8 @@ "oracle": "0x614715d2Af89E6EC99A233818275142cE88d1Cfd", "oracleDecimals": 18, "oracleDescription": "BUSD / ETH", - "oracleLatestAnswer": 607958172477733, - "reserveFactor": 1000, + "oracleLatestAnswer": 407750083706476, + "reserveFactor": 9990, "stableBorrowRateEnabled": false, "stableDebtToken": "0x4A7A63909A72D268b1D8a93a9395d098688e0e5C", "stableDebtTokenImpl": "0x8A36603a2a66182C9f1F81d22B7B95ff8DEeD432", @@ -401,17 +401,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x1dA981865AE7a0C838eFBF4C7DFecb5c7268E73A", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, "liquidationBonus": 10850, - "liquidationThreshold": 4500, - "ltv": 3500, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0xC9CbF687f43176B302F03f5e58470b77D07c61c6", "oracleDecimals": 18, "oracleDescription": "CVX / ETH", - "oracleLatestAnswer": 3742055994347318, - "reserveFactor": 2000, + "oracleLatestAnswer": 1179368876420195, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xB01Eb1cE1Da06179136D561766fc2d609C5F55Eb", "stableDebtTokenImpl": "0x10638C31Daeee246f0026f7174E1f30fB17010F5", @@ -435,18 +435,18 @@ "decimals": 18, "interestRateStrategy": "0xED6547b83276B076B771B88FcCbD68BDeDb3927f", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10700, - "liquidationThreshold": 8300, - "ltv": 7000, + "liquidationThreshold": 7400, + "ltv": 0, "oracle": "0xDC530D9457755926550b59e8ECcdaE7624181557", "oracleDecimals": 18, "oracleDescription": "LINK / ETH", - "oracleLatestAnswer": 4479000000000001, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 5916460000000000, + "reserveFactor": 3000, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xFB4AEc4Cc858F2539EBd3D37f2a43eAe5b15b98a", - "stableDebtTokenImpl": "0xAdc313f17a3e2180f609a45d7B381a45E2e88a9F", + "stableDebtTokenImpl": "0x1B80694AF3D4e617c747423f992F532B8baE098b", "stableDebtTokenName": "Aave stable debt bearing LINK", "stableDebtTokenSymbol": "stableDebtLINK", "symbol": "LINK", @@ -465,7 +465,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x3082D0a473385Ed2cbd1f16087ab8b7BF79f0355", + "interestRateStrategy": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -474,8 +474,8 @@ "oracle": "0x8e0b7e6062272B5eF4524250bFFF8e5Bd3497757", "oracleDecimals": 18, "oracleDescription": "SUSD / ETH", - "oracleLatestAnswer": 617138770830382, - "reserveFactor": 2000, + "oracleLatestAnswer": 407512114531422, + "reserveFactor": 3000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x30B0f7324feDF89d8eff397275F8983397eFe4af", "stableDebtTokenImpl": "0x49EfDDb938a77C78816eF9f9B7F811C16611FdFD", @@ -497,18 +497,18 @@ "baseStableBorrowRate": 100000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x545Ae1908B6F12e91E03B1DEC4F2e06D0570fE1b", + "interestRateStrategy": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96", "isActive": true, "isFrozen": false, "liquidationBonus": 0, "liquidationThreshold": 0, "ltv": 0, "oracle": "0x60c0b047133f696334a2b7f68af0b49d2F3D4F72", - "oracleLatestAnswer": 612368042872701, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 409761449002697, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x39f010127274b2dBdB770B45e1de54d974974526", - "stableDebtTokenImpl": "0x595c33538215DC4B092F35Afc85d904631263f4F", + "stableDebtTokenImpl": "0x1363602E58e25929A15bE194a3D505Fd6F8BE751", "stableDebtTokenName": "Aave stable debt bearing LUSD", "stableDebtTokenSymbol": "stableDebtLUSD", "symbol": "LUSD", @@ -527,7 +527,7 @@ "baseStableBorrowRate": 100000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xfffE32106A68aA3eD39CcCE673B646423EEaB62a", + "interestRateStrategy": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96", "isActive": true, "isFrozen": false, "liquidationBonus": 10400, @@ -536,11 +536,11 @@ "oracle": "0x773616E4d11A78F511299002da57A0a94577F1f4", "oracleDecimals": 18, "oracleDescription": "DAI / ETH", - "oracleLatestAnswer": 612859977965139, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 410105724359441, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x778A13D3eeb110A4f7bb6529F99c000119a08E92", - "stableDebtTokenImpl": "0xD23A44eB2db8AD0817c994D3533528C030279F7c", + "stableDebtTokenImpl": "0xb44Fe5fA7A8fcF508984bE58bA807A22343B4493", "stableDebtTokenName": "Aave stable debt bearing DAI", "stableDebtTokenSymbol": "stableDebtDAI", "symbol": "DAI", @@ -568,7 +568,7 @@ "oracle": "0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012", "oracleDecimals": 18, "oracleDescription": "AAVE / ETH", - "oracleLatestAnswer": 48505366244397695, + "oracleLatestAnswer": 39515306483330896, "reserveFactor": 0, "stableBorrowRateEnabled": false, "stableDebtToken": "0x079D6a3E844BcECf5720478A718Edb6575362C5f", @@ -591,7 +591,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xb0a73aC3B10980A598685d4631c83f5348F5D32c", + "interestRateStrategy": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -600,8 +600,8 @@ "oracle": "0x14d04Fff8D21bd62987a5cE9ce543d2F1edF5D3E", "oracleDecimals": 18, "oracleDescription": "FRAX / ETH", - "oracleLatestAnswer": 616977057978798, - "reserveFactor": 2000, + "oracleLatestAnswer": 409908731055814, + "reserveFactor": 3000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x3916e3B6c84b161df1b2733dFfc9569a1dA710c2", "stableDebtTokenImpl": "0x7E3Ddfceef69bEC3A38Fc9AE8D7A8c46D7788C6b", @@ -623,17 +623,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xb49034Ada4BE5c6Bb3823A623C6250267110b06b", + "interestRateStrategy": "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1", "isActive": true, "isFrozen": true, - "liquidationBonus": 10850, - "liquidationThreshold": 6500, - "ltv": 5000, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0xF05D9B6C08757EAcb1fbec18e36A1B7566a13DEB", "oracleDecimals": 18, "oracleDescription": "Calculated XSUSHI / ETH", - "oracleLatestAnswer": 1082567401549168, - "reserveFactor": 3500, + "oracleLatestAnswer": 565948785959684, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x73Bfb81D7dbA75C904f430eA8BAe82DB0D41187B", "stableDebtTokenImpl": "0x0fF2eC6F80F83A54746DB9b9ac7F40ADBEfb3dB4", @@ -655,7 +655,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x404d396fc42e20d14585A1a10Cd64BDdC6C6574A", + "interestRateStrategy": "0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -664,8 +664,8 @@ "oracle": "0x3a08ebBaB125224b7b6474384Ee39fBb247D2200", "oracleDecimals": 18, "oracleDescription": "PAX / ETH", - "oracleLatestAnswer": 616220194971251, - "reserveFactor": 1000, + "oracleLatestAnswer": 404325328035399, + "reserveFactor": 2000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x2387119bc85A74e0BBcbe190d80676CB16F10D4F", "stableDebtTokenImpl": "0x9C3440F4aACA3312b632bE4A07C0f97B15c31c8b", @@ -687,16 +687,16 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xF0bA2a8c12A2354c075b363765EAe825619bd490", + "interestRateStrategy": "0x795dC59EA6472Dfa4298A454C6E8Dcb005643A13", "isActive": true, "isFrozen": true, - "liquidationBonus": 10650, - "liquidationThreshold": 7500, - "ltv": 6500, - "oracle": "0x7F0D2c2838c6AC24443d13e23d99490017bDe370", + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, + "oracle": "0xac3AF0f4A52C577Cc2C241dF51a01FDe3D06D93B", "oracleDecimals": 18, - "oracleDescription": "FEI / ETH", - "oracleLatestAnswer": 613596576602952, + "oracleDescription": "0.95/USD/ETH", + "oracleLatestAnswer": 386442634020817, "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xd89cF9E8A858F8B4b31Faf793505e112d6c17449", @@ -719,20 +719,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xE3a3DE71B827cB73663A24cDB6243bA7F986cC3b", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10750, - "liquidationThreshold": 6700, - "ltv": 6200, + "liquidationThreshold": 1800, + "ltv": 0, "oracle": "0x24551a8Fb2A7211A25a17B1481f043A8a8adC7f2", "oracleDecimals": 18, "oracleDescription": "MKR / ETH", - "oracleLatestAnswer": 480035982884287950, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 796683976379186900, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xC01C8E4b12a89456a9fD4e4e75B72546Bf53f0B5", - "stableDebtTokenImpl": "0x20f9027c5092739C58250CF456642E8e3D4dBEd5", + "stableDebtTokenImpl": "0xC4CFCE0b16199818Ad942a87902C9172ba005022", "stableDebtTokenName": "Aave stable debt bearing MKR", "stableDebtTokenSymbol": "stableDebtMKR", "symbol": "MKR", @@ -751,7 +751,7 @@ "baseStableBorrowRate": 90000000000000000000000000, "borrowingEnabled": true, "decimals": 6, - "interestRateStrategy": "0xc76EF342898f1AE7E6C4632627Df683FAD8563DD", + "interestRateStrategy": "0x7A297125a0Ea56cCC237Cb87b1Ab1F729353d4D2", "isActive": true, "isFrozen": false, "liquidationBonus": 10450, @@ -760,11 +760,11 @@ "oracle": "0x986b5E1e1755e3C2440e960477f25201B0a8bbD4", "oracleDecimals": 18, "oracleDescription": "USDC / ETH", - "oracleLatestAnswer": 611599789718562, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 407011754295958, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xE4922afAB0BbaDd8ab2a88E0C79d884Ad337fcA6", - "stableDebtTokenImpl": "0x3b2a77058a1Eb4403a90b94585FaB16Bc512E703", + "stableDebtTokenImpl": "0x8DFF7Fda82976452b6FB957F549944e7af7A3e6F", "stableDebtTokenName": "Aave stable debt bearing USDC", "stableDebtTokenSymbol": "stableDebtUSDC", "symbol": "USDC", @@ -783,17 +783,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xCc92073dDe8aE03bAA1812AC5cF22e69b5E76914", + "interestRateStrategy": "0xB2D822cAdb9040F3164829BC34e41a93cA3E01e5", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10750, - "liquidationThreshold": 6200, - "ltv": 4600, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x79291A9d692Df95334B1a0B3B4AE6bC606782f8c", "oracleDecimals": 18, "oracleDescription": "SNX / ETH", - "oracleLatestAnswer": 1778640000000000, - "reserveFactor": 3500, + "oracleLatestAnswer": 1356003312337918, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x8575c8ae70bDB71606A53AeA1c6789cB0fBF3166", "stableDebtTokenImpl": "0x42321d7f519E9Bf2163B7B1685D379BC07A59C38", @@ -823,10 +823,10 @@ "ltv": 8250, "oracle": "0x0000000000000000000000000000000000000000", "oracleLatestAnswer": 1000000000000000000, - "reserveFactor": 1500, - "stableBorrowRateEnabled": true, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x4e977830ba4bd783C0BB7F15d3e243f73FF57121", - "stableDebtTokenImpl": "0xA558EA1A875f8b576f0728d32C39f62158e49b92", + "stableDebtTokenImpl": "0xEd14b4E51B04d4d0211474a721F77C0817166c2f", "stableDebtTokenName": "Aave stable debt bearing WETH", "stableDebtTokenSymbol": "stableDebtWETH", "symbol": "WETH", @@ -845,15 +845,15 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xb2eD1eCE1c13455Ce9299d35D3B00358529f3Dc8", + "interestRateStrategy": "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10800, - "liquidationThreshold": 5700, - "ltv": 4700, + "liquidationThreshold": 2400, + "ltv": 0, "oracle": "0xd4641b75015E6536E8102D98479568D05D7123Db", - "oracleLatestAnswer": 9738201071945762, - "reserveFactor": 2000, + "oracleLatestAnswer": 8618752070239292, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x34441FFD1948E49dC7a607882D0c38Efd0083815", "stableDebtTokenImpl": "0x5746b5b6650Dd8d9B1d9D1bbf5E7f23e9761183F", @@ -875,7 +875,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 9, - "interestRateStrategy": "0x84d1FaD9559b8AC1Fda17d073B8542c8Fb6986dd", + "interestRateStrategy": "0xB2D822cAdb9040F3164829BC34e41a93cA3E01e5", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -884,8 +884,8 @@ "oracle": "0x492575FDD11a0fCf2C6C719867890a7648d526eB", "oracleDecimals": 18, "oracleDescription": "AMPL / ETH", - "oracleLatestAnswer": 620918820133552, - "reserveFactor": 1000, + "oracleLatestAnswer": 450300119588682, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x18152C9f77DAdc737006e9430dB913159645fa87", "stableDebtTokenImpl": "0x0e8f4fc4c261d454b13C74507Bce8C38AA990361", @@ -916,7 +916,7 @@ "oracle": "0x0606Be69451B1C9861Ac6b3626b99093b713E801", "oracleDecimals": 18, "oracleDescription": "FIL / ETH", - "oracleLatestAnswer": 4020977447693813, + "oracleLatestAnswer": 2287773603726078, "reserveFactor": 3500, "stableBorrowRateEnabled": false, "stableDebtToken": "0xcAad05C49E14075077915cB5C820EB3245aFb950", @@ -939,17 +939,17 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xE3a3DE71B827cB73663A24cDB6243bA7F986cC3b", + "interestRateStrategy": "0x35FE8C9924718f286463e659be35b4122eEe907F", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10800, - "liquidationThreshold": 5800, - "ltv": 5200, + "liquidationThreshold": 1800, + "ltv": 0, "oracle": "0x8a12Be339B0cD1829b91Adc01977caa5E9ac121e", "oracleDecimals": 18, "oracleDescription": "CRV / ETH", - "oracleLatestAnswer": 621505942576524, - "reserveFactor": 2000, + "oracleLatestAnswer": 209322011170661, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x9288059a74f589C919c7Cf1Db433251CdFEB874B", "stableDebtTokenImpl": "0x288672D311Da6edC89765204A6d309701e7289d4", @@ -971,20 +971,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x1a4babC0e20d892167792AC79618273711afD3e7", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 6500, - "ltv": 5500, + "liquidationBonus": 11000, + "liquidationThreshold": 1200, + "ltv": 0, "oracle": "0x2Da4983a622a8498bb1a21FaE9D8F6C664939962", "oracleDecimals": 18, "oracleDescription": "ZRX / ETH", - "oracleLatestAnswer": 161308174808789, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 128582334580025, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x071B4323a24E73A5afeEbe34118Cd21B8FAAF7C3", - "stableDebtTokenImpl": "0x42a87BF47B5eFD11fa9Ddd5321BF9Aa502233b74", + "stableDebtTokenImpl": "0xffaCA447191d8196C8Cf96E5912b732063DE4307", "stableDebtTokenName": "Aave stable debt bearing ZRX", "stableDebtTokenSymbol": "stableDebtZRX", "symbol": "ZRX", @@ -1003,20 +1003,20 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x4a4fb6B26e7F516594b7242240039EA8FAAc897a", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10600, - "liquidationThreshold": 6700, - "ltv": 6000, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x24D9aB51950F3d62E9144fdC2f3135DAA6Ce8D1B", "oracleDecimals": 18, "oracleDescription": "ENJ / ETH", - "oracleLatestAnswer": 292880000000000, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 118685890000000, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x943DcCA156b5312Aa24c1a08769D67FEce4ac14C", - "stableDebtTokenImpl": "0x8286288f3c454b51DfC70bd0d6918220428B0741", + "stableDebtTokenImpl": "0x0fB427f800C5E39E7d8029e19F515300d4bb22C2", "stableDebtTokenName": "Aave stable debt bearing ENJ", "stableDebtTokenSymbol": "stableDebtENJ", "symbol": "ENJ", @@ -1035,7 +1035,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 6, - "interestRateStrategy": "0x0dEDCaE8Eb22A2EFB597aBde1834173C47Cff186", + "interestRateStrategy": "0xc83cDb49F234EC6666D7857B3EAa1302b109394C", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -1044,8 +1044,8 @@ "oracle": "0xa20623070413d42a5C01Db2c8111640DD7A5A03a", "oracleDecimals": 18, "oracleDescription": "UST / ETH", - "oracleLatestAnswer": 16780133340039, - "reserveFactor": 2000, + "oracleLatestAnswer": 11773404322311, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x7FDbfB0412700D94403c42cA3CAEeeA183F07B26", "stableDebtTokenImpl": "0x107ed1832647436a0D39F09e65f4aA920242C0BB", @@ -1073,10 +1073,10 @@ "liquidationBonus": 10700, "liquidationThreshold": 8300, "ltv": 7200, - "oracle": "0x86392dC19c0b719886221c78AB11eb8Cf5c52812", + "oracle": "0xADE6CBA6c45aa8E9d0337cAc3D2619eabc39D901", "oracleDecimals": 18, - "oracleDescription": "STETH / ETH", - "oracleLatestAnswer": 998251120000000000, + "oracleDescription": "stETH/ETH", + "oracleLatestAnswer": 1000000000000000000, "reserveFactor": 1000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x66457616Dd8489dF5D0AFD8678F4A260088aAF55", @@ -1099,17 +1099,17 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x04c28D6fE897859153eA753f986cc249Bf064f71", + "interestRateStrategy": "0xb873ec463CAC50112B0e14d060fbc4192406279f", "isActive": true, "isFrozen": true, "liquidationBonus": 10800, - "liquidationThreshold": 7000, - "ltv": 6500, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0xC1438AA3823A6Ba0C159CfA8D98dF5A994bA120b", "oracleDecimals": 18, "oracleDescription": "BAL / ETH", - "oracleLatestAnswer": 4377483727566084, - "reserveFactor": 2000, + "oracleLatestAnswer": 1617911746672069, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xe569d31590307d05DA3812964F1eDd551D665a0b", "stableDebtTokenImpl": "0x58571484BD57a87E359e46F82dFa9D13087b24a0", @@ -1125,13 +1125,13 @@ }, "0xdAC17F958D2ee523a2206206994597C13D831ec7": { "aToken": "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811", - "aTokenImpl": "0x3F06560cfB7af6E6B5102c358f679DE5150b3b4C", + "aTokenImpl": "0x9651F64Bd77550691EB2AeEb58188CB67F005902", "aTokenName": "Aave interest bearing USDT", "aTokenSymbol": "aUSDT", "baseStableBorrowRate": 100000000000000000000000000, "borrowingEnabled": true, "decimals": 6, - "interestRateStrategy": "0x33DeAc0861FD6a9235b86172AA939E79085c6f52", + "interestRateStrategy": "0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -1140,11 +1140,11 @@ "oracle": "0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46", "oracleDecimals": 18, "oracleDescription": "USDT / ETH", - "oracleLatestAnswer": 611767949789453, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 406945750062059, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xe91D55AB2240594855aBd11b3faAE801Fd4c4687", - "stableDebtTokenImpl": "0x9d4578c813D69745092a4F951753ed2B28056279", + "stableDebtTokenImpl": "0xC61262D6ad449AC09B4087f46391Dd9A26b5888B", "stableDebtTokenName": "Aave stable debt bearing USDT", "stableDebtTokenSymbol": "stableDebtUSDT", "symbol": "USDT", @@ -1163,20 +1163,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xFDBDa42D2aC1bfbbc10555eb255De8387b8977C4", + "interestRateStrategy": "0xeB65a3163Fd8900F4fE9a044e18966706b69A74D", "isActive": true, "isFrozen": true, "liquidationBonus": 11000, - "liquidationThreshold": 7000, - "ltv": 6000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x656c0544eF4C98A6a98491833A89204Abb045d6b", "oracleDecimals": 18, "oracleDescription": "KNC / ETH", - "oracleLatestAnswer": 522346316958437, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 250135580000000, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x9915dfb872778B2890a117DA1F35F335eb06B54f", - "stableDebtTokenImpl": "0xf818B175353F023E3EC1A098d040778b835897c7", + "stableDebtTokenImpl": "0x22a8FD718924ab2f9dd4D0326DD8ab99Ef21D0b3", "stableDebtTokenName": "Aave stable debt bearing KNC", "stableDebtTokenSymbol": "stableDebtKNC", "symbol": "KNC", @@ -1189,87 +1189,24 @@ } }, "strategies": { - "0x004fC239848D8A8d3304729b78ba81d73d83C99F": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0x04c28D6fE897859153eA753f986cc249Bf064f71": { - "baseVariableBorrowRate": 30000000000000000000000000, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 140000000000000000000000000, - "variableRateSlope2": 1500000000000000000000000000 - }, - "0x0dEDCaE8Eb22A2EFB597aBde1834173C47Cff186": { + "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 - }, - "0x1a4babC0e20d892167792AC79618273711afD3e7": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 60000000000000000000000000, + "variableRateSlope2": 1000000000000000000000000000 }, - "0x1dA981865AE7a0C838eFBF4C7DFecb5c7268E73A": { - "baseVariableBorrowRate": 0, + "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 550000000000000000000000000, "optimalUsageRatio": 450000000000000000000000000, "stableRateSlope1": 100000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0x24ABFac8dd8f270D752837fDFe3B3C735361f4eE": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 120000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0x26D40544447F68a3De69005822195549934624B9": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0x2893405d64a7Bc8Db02Fa617351a5399d59eCf8D": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 40000000000000000000000000, - "stableRateSlope2": 1000000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0x3082D0a473385Ed2cbd1f16087ab8b7BF79f0355": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, "0x311C866D55456e465e314A3E9830276B438A73f0": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 0, @@ -1279,121 +1216,94 @@ "variableRateSlope1": 0, "variableRateSlope2": 0 }, - "0x33DeAc0861FD6a9235b86172AA939E79085c6f52": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 - }, - "0x404d396fc42e20d14585A1a10Cd64BDdC6C6574A": { + "0x32f3A6134590fc2d9440663d35a2F0a6265F04c4": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 100000000000000000000000000, - "optimalUsageRatio": 900000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, + "maxExcessUsageRatio": 350000000000000000000000000, + "optimalUsageRatio": 650000000000000000000000000, + "stableRateSlope1": 100000000000000000000000000, + "stableRateSlope2": 3000000000000000000000000000, "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 600000000000000000000000000 + "variableRateSlope2": 3000000000000000000000000000 }, - "0x4a4fb6B26e7F516594b7242240039EA8FAAc897a": { - "baseVariableBorrowRate": 0, + "0x35FE8C9924718f286463e659be35b4122eEe907F": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 550000000000000000000000000, "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, + "stableRateSlope1": 170000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0x545Ae1908B6F12e91E03B1DEC4F2e06D0570fE1b": { + "0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 60000000000000000000000000, "variableRateSlope2": 750000000000000000000000000 }, - "0x6bcE15B789e537f3abA3C60CB183F0E8737f05eC": { + "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 550000000000000000000000000, + "optimalUsageRatio": 450000000000000000000000000, + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 0, + "variableRateSlope2": 3000000000000000000000000000 + }, + "0x795dC59EA6472Dfa4298A454C6E8Dcb005643A13": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, + "maxExcessUsageRatio": 990000000000000000000000000, + "optimalUsageRatio": 10000000000000000000000000, "stableRateSlope1": 20000000000000000000000000, "stableRateSlope2": 1000000000000000000000000000, "variableRateSlope1": 40000000000000000000000000, "variableRateSlope2": 1000000000000000000000000000 }, - "0x84d1FaD9559b8AC1Fda17d073B8542c8Fb6986dd": { - "baseVariableBorrowRate": 10000000000000000000000000, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 20000000000000000000000000, - "variableRateSlope2": 7500000000000000000000000000 - }, - "0x8Cae0596bC1eD42dc3F04c4506cfe442b3E74e27": { + "0x7A297125a0Ea56cCC237Cb87b1Ab1F729353d4D2": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 100000000000000000000000000, - "optimalUsageRatio": 900000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, + "maxExcessUsageRatio": 310000000000000000000000000, + "optimalUsageRatio": 690000000000000000000000000, + "stableRateSlope1": 690000000000000000000000000, "stableRateSlope2": 600000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, + "variableRateSlope1": 420000000000000000000000000, "variableRateSlope2": 600000000000000000000000000 }, - "0x9440aEc0795D7485e58bCF26622c2f4A681A9671": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 500000000000000000000000000, - "optimalUsageRatio": 500000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0x9B1e3C7483F0f21abFEaE3AeBC9b47b5f23f5bB0": { - "baseVariableBorrowRate": 0, + "0x87cCa171a2125efca9868F9Bc1FfD7B7c80dC5a3": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 550000000000000000000000000, "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, + "stableRateSlope1": 120000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0xA7d4df837926cD55036175AfeF38395d56A64c22": { + "0x999F449fEAfaAd78CE5702A9ebc460633478D4a4": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 + "maxExcessUsageRatio": 300000000000000000000000000, + "optimalUsageRatio": 700000000000000000000000000, + "stableRateSlope1": 40000000000000000000000000, + "stableRateSlope2": 1000000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, + "variableRateSlope2": 1500000000000000000000000000 }, - "0xBdfC85b140edF1FeaFd6eD664027AA4C23b4A29F": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "0xA12D7bB07379ad6de4497B80088e28D4C00932D1": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 500000000000000000000000000, + "optimalUsageRatio": 500000000000000000000000000, + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0xCc92073dDe8aE03bAA1812AC5cF22e69b5E76914": { - "baseVariableBorrowRate": 30000000000000000000000000, + "0xB2D822cAdb9040F3164829BC34e41a93cA3E01e5": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, "stableRateSlope1": 0, "stableRateSlope2": 0, - "variableRateSlope1": 120000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0xE3a3DE71B827cB73663A24cDB6243bA7F986cC3b": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, "0xED6547b83276B076B771B88FcCbD68BDeDb3927f": { @@ -1405,49 +1315,58 @@ "variableRateSlope1": 70000000000000000000000000, "variableRateSlope2": 3000000000000000000000000000 }, - "0xF0bA2a8c12A2354c075b363765EAe825619bd490": { + "0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, "stableRateSlope1": 20000000000000000000000000, "stableRateSlope2": 1000000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, "variableRateSlope2": 1000000000000000000000000000 }, - "0xFDBDa42D2aC1bfbbc10555eb255De8387b8977C4": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 350000000000000000000000000, - "optimalUsageRatio": 650000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, + "0xF1AafF9a4Da6Bf4Fb8fc18d39C8ffdafbAACce69": { + "baseVariableBorrowRate": 1000000000000000000000000000, + "maxExcessUsageRatio": 990000000000000000000000000, + "optimalUsageRatio": 10000000000000000000000000, + "stableRateSlope1": 700000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 80000000000000000000000000, + "variableRateSlope1": 700000000000000000000000000, "variableRateSlope2": 3000000000000000000000000000 }, - "0xb0a73aC3B10980A598685d4631c83f5348F5D32c": { + "0xab7f8ca781C736EB624A9E321cd043F8E6292C96": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 40000000000000000000000000, + "stableRateSlope1": 20000000000000000000000000, + "stableRateSlope2": 750000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, "variableRateSlope2": 750000000000000000000000000 }, - "0xb2eD1eCE1c13455Ce9299d35D3B00358529f3Dc8": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 70000000000000000000000000, + "0xb70e28437Aec70a8cfE5240F54c463cF849bE17C": { + "baseVariableBorrowRate": 1000000000000000000000000000, + "maxExcessUsageRatio": 990000000000000000000000000, + "optimalUsageRatio": 10000000000000000000000000, + "stableRateSlope1": 700000000000000000000000000, + "stableRateSlope2": 3000000000000000000000000000, + "variableRateSlope1": 700000000000000000000000000, "variableRateSlope2": 3000000000000000000000000000 }, - "0xb49034Ada4BE5c6Bb3823A623C6250267110b06b": { + "0xb72F23adE9b9980c2E731Ca504105fC860643619": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 70000000000000000000000000, + "maxExcessUsageRatio": 100000000000000000000000000, + "optimalUsageRatio": 900000000000000000000000000, + "stableRateSlope1": 20000000000000000000000000, + "stableRateSlope2": 600000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, + "variableRateSlope2": 600000000000000000000000000 + }, + "0xb873ec463CAC50112B0e14d060fbc4192406279f": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 200000000000000000000000000, + "optimalUsageRatio": 800000000000000000000000000, + "stableRateSlope1": 220000000000000000000000000, + "stableRateSlope2": 1500000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, "0xb8975328Aa52c00B9Ec1e11e518C4900f2e6C62a": { @@ -1459,14 +1378,14 @@ "variableRateSlope1": 38000000000000000000000000, "variableRateSlope2": 800000000000000000000000000 }, - "0xc76EF342898f1AE7E6C4632627Df683FAD8563DD": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 310000000000000000000000000, - "optimalUsageRatio": 690000000000000000000000000, - "stableRateSlope1": 690000000000000000000000000, - "stableRateSlope2": 600000000000000000000000000, - "variableRateSlope1": 420000000000000000000000000, - "variableRateSlope2": 600000000000000000000000000 + "0xc83cDb49F234EC6666D7857B3EAa1302b109394C": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 200000000000000000000000000, + "optimalUsageRatio": 800000000000000000000000000, + "stableRateSlope1": 20000000000000000000000000, + "stableRateSlope2": 750000000000000000000000000, + "variableRateSlope1": 0, + "variableRateSlope2": 3000000000000000000000000000 }, "0xd4cA26F2496195C4F886D464D8578368236bB747": { "baseVariableBorrowRate": 0, @@ -1477,22 +1396,13 @@ "variableRateSlope1": 0, "variableRateSlope2": 0 }, - "0xf41E8F817e6C399d1AdE102059c454093b24f35B": { - "baseVariableBorrowRate": 0, + "0xeB65a3163Fd8900F4fE9a044e18966706b69A74D": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 350000000000000000000000000, "optimalUsageRatio": 650000000000000000000000000, "stableRateSlope1": 100000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 80000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0xfd71623D7F41360aefE200de4f17E20A29e1d58C": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, "0xff04ed5f7a6C3a0F1e5Ea20617F8C6f513D5A77c": { @@ -1503,15 +1413,6 @@ "stableRateSlope2": 0, "variableRateSlope1": 80000000000000000000000000, "variableRateSlope2": 2000000000000000000000000000 - }, - "0xfffE32106A68aA3eD39CcCE673B646423EEaB62a": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 } } } \ No newline at end of file diff --git a/reports/preTestV2RatesUpdates.json b/reports/preTestV2RatesUpdates.json index 3f8b841ee..3a9215577 100644 --- a/reports/preTestV2RatesUpdates.json +++ b/reports/preTestV2RatesUpdates.json @@ -1,13 +1,13 @@ { "chainId": 1, "poolConfig": { - "lendingPoolCollateralManager": "0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C", + "lendingPoolCollateralManager": "0x368e6441bB27159c6e8e6d3bbd9147BEcBA915E3", "oracle": "0xA50ba011c48153De246E5192C8f9258A2ba79Ca9", "pool": "0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9", "poolAddressesProvider": "0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5", "poolConfigurator": "0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756", - "poolConfiguratorImpl": "0x3a95Ee42f080ff7289C8B4a14EB483a8644d7521", - "poolImpl": "0xC6845a5C768BF8D7681249f8927877Efda425baf", + "poolConfiguratorImpl": "0x246ca67522dF5895cD6cf8807Ec161954ea1bA61", + "poolImpl": "0x085E34722e04567Df9E6d2c32e82fd74f3342e79", "protocolDataProvider": "0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d" }, "reserves": { @@ -17,22 +17,22 @@ "aTokenName": "Aave interest bearing TUSD", "aTokenSymbol": "aTUSD", "baseStableBorrowRate": 100000000000000000000000000, - "borrowingEnabled": true, + "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x6bcE15B789e537f3abA3C60CB183F0E8737f05eC", + "interestRateStrategy": "0xb70e28437Aec70a8cfE5240F54c463cF849bE17C", "isActive": true, - "isFrozen": false, - "liquidationBonus": 10500, - "liquidationThreshold": 8250, - "ltv": 8000, + "isFrozen": true, + "liquidationBonus": 11000, + "liquidationThreshold": 6500, + "ltv": 0, "oracle": "0x3886BA987236181D98F2401c507Fb8BeA7871dF2", "oracleDecimals": 18, "oracleDescription": "TUSD / ETH", - "oracleLatestAnswer": 610682580000000, - "reserveFactor": 500, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 401284370109943, + "reserveFactor": 9990, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x7f38d60D94652072b2C44a18c0e14A481EC3C0dd", - "stableDebtTokenImpl": "0x95Ce83DF0B8A45072D0330Cf5A1e0c8CAA43D192", + "stableDebtTokenImpl": "0x00C15a6aaF1e48763B53A9dc8D2077551BA45Fee", "stableDebtTokenName": "Aave stable debt bearing TUSD", "stableDebtTokenSymbol": "stableDebtTUSD", "symbol": "TUSD", @@ -45,13 +45,13 @@ }, "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919": { "aToken": "0xc9BC48c72154ef3e5425641a3c747242112a46AF", - "aTokenImpl": "0xB97Fa7A950B19C8Fe7d9bcD06909D3e67F20f16a", + "aTokenImpl": "0x2CDE0f77CF5d54e9417480a8611AA2fEcD56BbD9", "aTokenName": "Aave interest bearing RAI", "aTokenSymbol": "aRAI", "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xA7d4df837926cD55036175AfeF38395d56A64c22", + "interestRateStrategy": "0xc83cDb49F234EC6666D7857B3EAa1302b109394C", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -60,8 +60,8 @@ "oracle": "0x4ad7B025127e89263242aB68F0f9c4E5C033B489", "oracleDecimals": 18, "oracleDescription": "RAI / ETH", - "oracleLatestAnswer": 1711020815907047, - "reserveFactor": 2000, + "oracleLatestAnswer": 1172820903069477, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x9C72B8476C33AE214ee3e8C20F0bc28496a62032", "stableDebtTokenImpl": "0xf37E202E587c6f63FD70F35C24Eb7f818CC5d01A", @@ -83,15 +83,15 @@ "baseStableBorrowRate": 40000000000000000000000000, "borrowingEnabled": true, "decimals": 2, - "interestRateStrategy": "0x2893405d64a7Bc8Db02Fa617351a5399d59eCf8D", + "interestRateStrategy": "0x999F449fEAfaAd78CE5702A9ebc460633478D4a4", "isActive": true, "isFrozen": false, "liquidationBonus": 0, "liquidationThreshold": 0, "ltv": 0, "oracle": "0xEc6f4Cd64d28Ef32507e2dc399948aAe9Bbedd7e", - "oracleLatestAnswer": 610545521752085, - "reserveFactor": 1000, + "oracleLatestAnswer": 406781720021913, + "reserveFactor": 2000, "stableBorrowRateEnabled": false, "stableDebtToken": "0xf8aC64ec6Ff8E0028b37EB89772d21865321bCe0", "stableDebtTokenImpl": "0xEddC66EB4a0aD3be434cBb1c2E7d17cE805D7a28", @@ -113,20 +113,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xBdfC85b140edF1FeaFd6eD664027AA4C23b4A29F", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 7000, - "ltv": 6500, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x0d16d4528239e9ee52fa531af613AcdB23D88c94", "oracleDecimals": 18, "oracleDescription": "BAT / ETH", - "oracleLatestAnswer": 182276893023327, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 93749950000000, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x277f8676FAcf4dAA5a6EA38ba511B7F65AA02f9F", - "stableDebtTokenImpl": "0x917fd53da13EDCCE5c155a7dbC73E1e4DcCd4267", + "stableDebtTokenImpl": "0x49B6645a9aa05f1Be24893136100467276399470", "stableDebtTokenName": "Aave stable debt bearing BAT", "stableDebtTokenSymbol": "stableDebtBAT", "symbol": "BAT", @@ -145,20 +145,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x004fC239848D8A8d3304729b78ba81d73d83C99F", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 7500, - "ltv": 6150, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x82A44D92D6c329826dc557c5E1Be6ebeC5D5FeB9", "oracleDecimals": 18, "oracleDescription": "MANA / ETH", - "oracleLatestAnswer": 395309373203460, - "reserveFactor": 3500, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 178015486813397, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xD86C74eA2224f4B8591560652b50035E4e5c0a3b", - "stableDebtTokenImpl": "0x441c5CD55E9e3267D02F7b1b4D245AA1C61891c3", + "stableDebtTokenImpl": "0xe0bf71fF662e8bbeb911ACEa765f4b8be052F59b", "stableDebtTokenName": "Aave stable debt bearing MANA", "stableDebtTokenSymbol": "stableDebtMANA", "symbol": "MANA", @@ -177,17 +177,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xfd71623D7F41360aefE200de4f17E20A29e1d58C", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 6500, - "ltv": 5000, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x7c5d4F8345e66f68099581Db340cd65B078C41f4", "oracleDecimals": 18, "oracleDescription": "YFI / ETH", - "oracleLatestAnswer": 5686591566150553000, - "reserveFactor": 2000, + "oracleLatestAnswer": 3047678145187916000, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xca823F78C2Dd38993284bb42Ba9b14152082F7BD", "stableDebtTokenImpl": "0x802Bb38676B6E79C393a3E3EC73b8Af63578188a", @@ -209,17 +209,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xb2eD1eCE1c13455Ce9299d35D3B00358529f3Dc8", + "interestRateStrategy": "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10850, - "liquidationThreshold": 5000, - "ltv": 4000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x72AFAECF99C9d9C8215fF44C77B94B99C28741e8", "oracleDecimals": 18, "oracleDescription": "1INCH / ETH", - "oracleLatestAnswer": 349400000000000, - "reserveFactor": 2000, + "oracleLatestAnswer": 173342672736174, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x1278d6ED804d59d2d18a5Aa5638DfD591A79aF0a", "stableDebtTokenImpl": "0x9C2114Bf70774C36E9b8d6c790c9C14FF0d6799E", @@ -241,17 +241,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x9440aEc0795D7485e58bCF26622c2f4A681A9671", + "interestRateStrategy": "0xA12D7bB07379ad6de4497B80088e28D4C00932D1", "isActive": true, - "isFrozen": false, - "liquidationBonus": 10750, - "liquidationThreshold": 7000, - "ltv": 6500, + "isFrozen": true, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x029849bbc0b1d93b85a8b6190e979fd38F5760E2", "oracleDecimals": 18, "oracleDescription": "DPI / ETH", - "oracleLatestAnswer": 53042159775707955, - "reserveFactor": 2000, + "oracleLatestAnswer": 41364111962536074, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xa3953F07f389d719F99FC378ebDb9276177d8A6e", "stableDebtTokenImpl": "0x0f2d35d52a65c4CC98e345C3B478E75f7E4B9c2a", @@ -273,20 +273,20 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x24ABFac8dd8f270D752837fDFe3B3C735361f4eE", + "interestRateStrategy": "0x87cCa171a2125efca9868F9Bc1FfD7B7c80dC5a3", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10900, - "liquidationThreshold": 7700, - "ltv": 6500, + "liquidationThreshold": 2000, + "ltv": 0, "oracle": "0xD6aA3D25116d8dA79Ea0246c4826EB951872e02e", "oracleDecimals": 18, "oracleDescription": "UNI / ETH", - "oracleLatestAnswer": 3993507224186989, - "reserveFactor": 2000, + "oracleLatestAnswer": 2616213076346605, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xD939F7430dC8D5a427f156dE1012A56C18AcB6Aa", - "stableDebtTokenImpl": "0xe4759007A1E6014DD92EBB33A293e0dfE85A8Ffe", + "stableDebtTokenImpl": "0x54f514CA167e1fc19231dA9a48bB7AA6ffe4F10d", "stableDebtTokenName": "Aave stable debt bearing UNI", "stableDebtTokenSymbol": "stableDebtUNI", "symbol": "UNI", @@ -305,20 +305,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": true, "decimals": 8, - "interestRateStrategy": "0xf41E8F817e6C399d1AdE102059c454093b24f35B", + "interestRateStrategy": "0x32f3A6134590fc2d9440663d35a2F0a6265F04c4", "isActive": true, "isFrozen": false, "liquidationBonus": 10500, "liquidationThreshold": 8200, "ltv": 7200, - "oracle": "0xdeb288F737066589598e9214E782fa5A8eD689e8", + "oracle": "0xFD858c8bC5ac5e10f01018bC78471bb0DC392247", "oracleDecimals": 18, - "oracleDescription": "BTC / ETH", - "oracleLatestAnswer": 14363022524949910000, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleDescription": "wBTC/BTC/ETH", + "oracleLatestAnswer": 16842786004805376363, + "reserveFactor": 3000, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x51B039b9AFE64B78758f8Ef091211b5387eA717c", - "stableDebtTokenImpl": "0x6Ac108C4c3Fe7F4D367513F599Da1B9dF7c43433", + "stableDebtTokenImpl": "0x4f279f2046870F77cd9Ce63497f8A2D8689ef804", "stableDebtTokenName": "Aave stable debt bearing WBTC", "stableDebtTokenSymbol": "stableDebtWBTC", "symbol": "WBTC", @@ -337,20 +337,20 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x9B1e3C7483F0f21abFEaE3AeBC9b47b5f23f5bB0", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 6000, - "ltv": 5500, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x3147D7203354Dc06D9fd350c7a2437bcA92387a4", "oracleDecimals": 18, "oracleDescription": "REN / ETH", - "oracleLatestAnswer": 63713924764907, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 22610981899079, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x3356Ec1eFA75d9D150Da1EC7d944D9EDf73703B7", - "stableDebtTokenImpl": "0x7b3E7Aea49A5F5d2514B9317d4cF58f828Ac28C2", + "stableDebtTokenImpl": "0x6F4B277366e10F68003A0a65Ef8f118f3D60B67E", "stableDebtTokenName": "Aave stable debt bearing REN", "stableDebtTokenSymbol": "stableDebtREN", "symbol": "REN", @@ -369,7 +369,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x26D40544447F68a3De69005822195549934624B9", + "interestRateStrategy": "0xF1AafF9a4Da6Bf4Fb8fc18d39C8ffdafbAACce69", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -378,8 +378,8 @@ "oracle": "0x614715d2Af89E6EC99A233818275142cE88d1Cfd", "oracleDecimals": 18, "oracleDescription": "BUSD / ETH", - "oracleLatestAnswer": 607958172477733, - "reserveFactor": 1000, + "oracleLatestAnswer": 407750083706476, + "reserveFactor": 9990, "stableBorrowRateEnabled": false, "stableDebtToken": "0x4A7A63909A72D268b1D8a93a9395d098688e0e5C", "stableDebtTokenImpl": "0x8A36603a2a66182C9f1F81d22B7B95ff8DEeD432", @@ -401,17 +401,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x1dA981865AE7a0C838eFBF4C7DFecb5c7268E73A", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, "liquidationBonus": 10850, - "liquidationThreshold": 4500, - "ltv": 3500, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0xC9CbF687f43176B302F03f5e58470b77D07c61c6", "oracleDecimals": 18, "oracleDescription": "CVX / ETH", - "oracleLatestAnswer": 3742055994347318, - "reserveFactor": 2000, + "oracleLatestAnswer": 1179368876420195, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xB01Eb1cE1Da06179136D561766fc2d609C5F55Eb", "stableDebtTokenImpl": "0x10638C31Daeee246f0026f7174E1f30fB17010F5", @@ -435,18 +435,18 @@ "decimals": 18, "interestRateStrategy": "0xED6547b83276B076B771B88FcCbD68BDeDb3927f", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10700, - "liquidationThreshold": 8300, - "ltv": 7000, + "liquidationThreshold": 7400, + "ltv": 0, "oracle": "0xDC530D9457755926550b59e8ECcdaE7624181557", "oracleDecimals": 18, "oracleDescription": "LINK / ETH", - "oracleLatestAnswer": 4479000000000001, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 5916460000000000, + "reserveFactor": 3000, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xFB4AEc4Cc858F2539EBd3D37f2a43eAe5b15b98a", - "stableDebtTokenImpl": "0xAdc313f17a3e2180f609a45d7B381a45E2e88a9F", + "stableDebtTokenImpl": "0x1B80694AF3D4e617c747423f992F532B8baE098b", "stableDebtTokenName": "Aave stable debt bearing LINK", "stableDebtTokenSymbol": "stableDebtLINK", "symbol": "LINK", @@ -465,7 +465,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x3082D0a473385Ed2cbd1f16087ab8b7BF79f0355", + "interestRateStrategy": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -474,8 +474,8 @@ "oracle": "0x8e0b7e6062272B5eF4524250bFFF8e5Bd3497757", "oracleDecimals": 18, "oracleDescription": "SUSD / ETH", - "oracleLatestAnswer": 617138770830382, - "reserveFactor": 2000, + "oracleLatestAnswer": 407512114531422, + "reserveFactor": 3000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x30B0f7324feDF89d8eff397275F8983397eFe4af", "stableDebtTokenImpl": "0x49EfDDb938a77C78816eF9f9B7F811C16611FdFD", @@ -497,18 +497,18 @@ "baseStableBorrowRate": 100000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x545Ae1908B6F12e91E03B1DEC4F2e06D0570fE1b", + "interestRateStrategy": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96", "isActive": true, "isFrozen": false, "liquidationBonus": 0, "liquidationThreshold": 0, "ltv": 0, "oracle": "0x60c0b047133f696334a2b7f68af0b49d2F3D4F72", - "oracleLatestAnswer": 612368042872701, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 409761449002697, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x39f010127274b2dBdB770B45e1de54d974974526", - "stableDebtTokenImpl": "0x595c33538215DC4B092F35Afc85d904631263f4F", + "stableDebtTokenImpl": "0x1363602E58e25929A15bE194a3D505Fd6F8BE751", "stableDebtTokenName": "Aave stable debt bearing LUSD", "stableDebtTokenSymbol": "stableDebtLUSD", "symbol": "LUSD", @@ -527,7 +527,7 @@ "baseStableBorrowRate": 100000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xfffE32106A68aA3eD39CcCE673B646423EEaB62a", + "interestRateStrategy": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96", "isActive": true, "isFrozen": false, "liquidationBonus": 10400, @@ -536,11 +536,11 @@ "oracle": "0x773616E4d11A78F511299002da57A0a94577F1f4", "oracleDecimals": 18, "oracleDescription": "DAI / ETH", - "oracleLatestAnswer": 612859977965139, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 410105724359441, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x778A13D3eeb110A4f7bb6529F99c000119a08E92", - "stableDebtTokenImpl": "0xD23A44eB2db8AD0817c994D3533528C030279F7c", + "stableDebtTokenImpl": "0xb44Fe5fA7A8fcF508984bE58bA807A22343B4493", "stableDebtTokenName": "Aave stable debt bearing DAI", "stableDebtTokenSymbol": "stableDebtDAI", "symbol": "DAI", @@ -568,7 +568,7 @@ "oracle": "0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012", "oracleDecimals": 18, "oracleDescription": "AAVE / ETH", - "oracleLatestAnswer": 48505366244397695, + "oracleLatestAnswer": 39515306483330896, "reserveFactor": 0, "stableBorrowRateEnabled": false, "stableDebtToken": "0x079D6a3E844BcECf5720478A718Edb6575362C5f", @@ -591,7 +591,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xb0a73aC3B10980A598685d4631c83f5348F5D32c", + "interestRateStrategy": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -600,8 +600,8 @@ "oracle": "0x14d04Fff8D21bd62987a5cE9ce543d2F1edF5D3E", "oracleDecimals": 18, "oracleDescription": "FRAX / ETH", - "oracleLatestAnswer": 616977057978798, - "reserveFactor": 2000, + "oracleLatestAnswer": 409908731055814, + "reserveFactor": 3000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x3916e3B6c84b161df1b2733dFfc9569a1dA710c2", "stableDebtTokenImpl": "0x7E3Ddfceef69bEC3A38Fc9AE8D7A8c46D7788C6b", @@ -623,17 +623,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xb49034Ada4BE5c6Bb3823A623C6250267110b06b", + "interestRateStrategy": "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1", "isActive": true, "isFrozen": true, - "liquidationBonus": 10850, - "liquidationThreshold": 6500, - "ltv": 5000, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0xF05D9B6C08757EAcb1fbec18e36A1B7566a13DEB", "oracleDecimals": 18, "oracleDescription": "Calculated XSUSHI / ETH", - "oracleLatestAnswer": 1082567401549168, - "reserveFactor": 3500, + "oracleLatestAnswer": 565948785959684, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x73Bfb81D7dbA75C904f430eA8BAe82DB0D41187B", "stableDebtTokenImpl": "0x0fF2eC6F80F83A54746DB9b9ac7F40ADBEfb3dB4", @@ -655,7 +655,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x404d396fc42e20d14585A1a10Cd64BDdC6C6574A", + "interestRateStrategy": "0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -664,8 +664,8 @@ "oracle": "0x3a08ebBaB125224b7b6474384Ee39fBb247D2200", "oracleDecimals": 18, "oracleDescription": "PAX / ETH", - "oracleLatestAnswer": 616220194971251, - "reserveFactor": 1000, + "oracleLatestAnswer": 404325328035399, + "reserveFactor": 2000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x2387119bc85A74e0BBcbe190d80676CB16F10D4F", "stableDebtTokenImpl": "0x9C3440F4aACA3312b632bE4A07C0f97B15c31c8b", @@ -687,16 +687,16 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xF0bA2a8c12A2354c075b363765EAe825619bd490", + "interestRateStrategy": "0x795dC59EA6472Dfa4298A454C6E8Dcb005643A13", "isActive": true, "isFrozen": true, - "liquidationBonus": 10650, - "liquidationThreshold": 7500, - "ltv": 6500, - "oracle": "0x7F0D2c2838c6AC24443d13e23d99490017bDe370", + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, + "oracle": "0xac3AF0f4A52C577Cc2C241dF51a01FDe3D06D93B", "oracleDecimals": 18, - "oracleDescription": "FEI / ETH", - "oracleLatestAnswer": 613596576602952, + "oracleDescription": "0.95/USD/ETH", + "oracleLatestAnswer": 386442634020817, "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xd89cF9E8A858F8B4b31Faf793505e112d6c17449", @@ -719,20 +719,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xE3a3DE71B827cB73663A24cDB6243bA7F986cC3b", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10750, - "liquidationThreshold": 6700, - "ltv": 6200, + "liquidationThreshold": 1800, + "ltv": 0, "oracle": "0x24551a8Fb2A7211A25a17B1481f043A8a8adC7f2", "oracleDecimals": 18, "oracleDescription": "MKR / ETH", - "oracleLatestAnswer": 480035982884287950, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 796683976379186900, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xC01C8E4b12a89456a9fD4e4e75B72546Bf53f0B5", - "stableDebtTokenImpl": "0x20f9027c5092739C58250CF456642E8e3D4dBEd5", + "stableDebtTokenImpl": "0xC4CFCE0b16199818Ad942a87902C9172ba005022", "stableDebtTokenName": "Aave stable debt bearing MKR", "stableDebtTokenSymbol": "stableDebtMKR", "symbol": "MKR", @@ -751,7 +751,7 @@ "baseStableBorrowRate": 90000000000000000000000000, "borrowingEnabled": true, "decimals": 6, - "interestRateStrategy": "0x8Cae0596bC1eD42dc3F04c4506cfe442b3E74e27", + "interestRateStrategy": "0xb72F23adE9b9980c2E731Ca504105fC860643619", "isActive": true, "isFrozen": false, "liquidationBonus": 10450, @@ -760,11 +760,11 @@ "oracle": "0x986b5E1e1755e3C2440e960477f25201B0a8bbD4", "oracleDecimals": 18, "oracleDescription": "USDC / ETH", - "oracleLatestAnswer": 611599789718562, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 407011754295958, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xE4922afAB0BbaDd8ab2a88E0C79d884Ad337fcA6", - "stableDebtTokenImpl": "0x3b2a77058a1Eb4403a90b94585FaB16Bc512E703", + "stableDebtTokenImpl": "0x8DFF7Fda82976452b6FB957F549944e7af7A3e6F", "stableDebtTokenName": "Aave stable debt bearing USDC", "stableDebtTokenSymbol": "stableDebtUSDC", "symbol": "USDC", @@ -783,17 +783,17 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xCc92073dDe8aE03bAA1812AC5cF22e69b5E76914", + "interestRateStrategy": "0xB2D822cAdb9040F3164829BC34e41a93cA3E01e5", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10750, - "liquidationThreshold": 6200, - "ltv": 4600, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x79291A9d692Df95334B1a0B3B4AE6bC606782f8c", "oracleDecimals": 18, "oracleDescription": "SNX / ETH", - "oracleLatestAnswer": 1778640000000000, - "reserveFactor": 3500, + "oracleLatestAnswer": 1356003312337918, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x8575c8ae70bDB71606A53AeA1c6789cB0fBF3166", "stableDebtTokenImpl": "0x42321d7f519E9Bf2163B7B1685D379BC07A59C38", @@ -823,10 +823,10 @@ "ltv": 8250, "oracle": "0x0000000000000000000000000000000000000000", "oracleLatestAnswer": 1000000000000000000, - "reserveFactor": 1500, - "stableBorrowRateEnabled": true, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x4e977830ba4bd783C0BB7F15d3e243f73FF57121", - "stableDebtTokenImpl": "0xA558EA1A875f8b576f0728d32C39f62158e49b92", + "stableDebtTokenImpl": "0xEd14b4E51B04d4d0211474a721F77C0817166c2f", "stableDebtTokenName": "Aave stable debt bearing WETH", "stableDebtTokenSymbol": "stableDebtWETH", "symbol": "WETH", @@ -845,15 +845,15 @@ "baseStableBorrowRate": 0, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xb2eD1eCE1c13455Ce9299d35D3B00358529f3Dc8", + "interestRateStrategy": "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10800, - "liquidationThreshold": 5700, - "ltv": 4700, + "liquidationThreshold": 2400, + "ltv": 0, "oracle": "0xd4641b75015E6536E8102D98479568D05D7123Db", - "oracleLatestAnswer": 9738201071945762, - "reserveFactor": 2000, + "oracleLatestAnswer": 8618752070239292, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x34441FFD1948E49dC7a607882D0c38Efd0083815", "stableDebtTokenImpl": "0x5746b5b6650Dd8d9B1d9D1bbf5E7f23e9761183F", @@ -875,7 +875,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 9, - "interestRateStrategy": "0x84d1FaD9559b8AC1Fda17d073B8542c8Fb6986dd", + "interestRateStrategy": "0xB2D822cAdb9040F3164829BC34e41a93cA3E01e5", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -884,8 +884,8 @@ "oracle": "0x492575FDD11a0fCf2C6C719867890a7648d526eB", "oracleDecimals": 18, "oracleDescription": "AMPL / ETH", - "oracleLatestAnswer": 620918820133552, - "reserveFactor": 1000, + "oracleLatestAnswer": 450300119588682, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x18152C9f77DAdc737006e9430dB913159645fa87", "stableDebtTokenImpl": "0x0e8f4fc4c261d454b13C74507Bce8C38AA990361", @@ -916,7 +916,7 @@ "oracle": "0x0606Be69451B1C9861Ac6b3626b99093b713E801", "oracleDecimals": 18, "oracleDescription": "FIL / ETH", - "oracleLatestAnswer": 4020977447693813, + "oracleLatestAnswer": 2287773603726078, "reserveFactor": 3500, "stableBorrowRateEnabled": false, "stableDebtToken": "0xcAad05C49E14075077915cB5C820EB3245aFb950", @@ -939,17 +939,17 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0xE3a3DE71B827cB73663A24cDB6243bA7F986cC3b", + "interestRateStrategy": "0x35FE8C9924718f286463e659be35b4122eEe907F", "isActive": true, - "isFrozen": false, + "isFrozen": true, "liquidationBonus": 10800, - "liquidationThreshold": 5800, - "ltv": 5200, + "liquidationThreshold": 1800, + "ltv": 0, "oracle": "0x8a12Be339B0cD1829b91Adc01977caa5E9ac121e", "oracleDecimals": 18, "oracleDescription": "CRV / ETH", - "oracleLatestAnswer": 621505942576524, - "reserveFactor": 2000, + "oracleLatestAnswer": 209322011170661, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x9288059a74f589C919c7Cf1Db433251CdFEB874B", "stableDebtTokenImpl": "0x288672D311Da6edC89765204A6d309701e7289d4", @@ -971,20 +971,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x1a4babC0e20d892167792AC79618273711afD3e7", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10750, - "liquidationThreshold": 6500, - "ltv": 5500, + "liquidationBonus": 11000, + "liquidationThreshold": 1200, + "ltv": 0, "oracle": "0x2Da4983a622a8498bb1a21FaE9D8F6C664939962", "oracleDecimals": 18, "oracleDescription": "ZRX / ETH", - "oracleLatestAnswer": 161308174808789, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 128582334580025, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x071B4323a24E73A5afeEbe34118Cd21B8FAAF7C3", - "stableDebtTokenImpl": "0x42a87BF47B5eFD11fa9Ddd5321BF9Aa502233b74", + "stableDebtTokenImpl": "0xffaCA447191d8196C8Cf96E5912b732063DE4307", "stableDebtTokenName": "Aave stable debt bearing ZRX", "stableDebtTokenSymbol": "stableDebtZRX", "symbol": "ZRX", @@ -1003,20 +1003,20 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0x4a4fb6B26e7F516594b7242240039EA8FAAc897a", + "interestRateStrategy": "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069", "isActive": true, "isFrozen": true, - "liquidationBonus": 10600, - "liquidationThreshold": 6700, - "ltv": 6000, + "liquidationBonus": 11000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x24D9aB51950F3d62E9144fdC2f3135DAA6Ce8D1B", "oracleDecimals": 18, "oracleDescription": "ENJ / ETH", - "oracleLatestAnswer": 292880000000000, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 118685890000000, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x943DcCA156b5312Aa24c1a08769D67FEce4ac14C", - "stableDebtTokenImpl": "0x8286288f3c454b51DfC70bd0d6918220428B0741", + "stableDebtTokenImpl": "0x0fB427f800C5E39E7d8029e19F515300d4bb22C2", "stableDebtTokenName": "Aave stable debt bearing ENJ", "stableDebtTokenSymbol": "stableDebtENJ", "symbol": "ENJ", @@ -1035,7 +1035,7 @@ "baseStableBorrowRate": 0, "borrowingEnabled": true, "decimals": 6, - "interestRateStrategy": "0x0dEDCaE8Eb22A2EFB597aBde1834173C47Cff186", + "interestRateStrategy": "0xc83cDb49F234EC6666D7857B3EAa1302b109394C", "isActive": true, "isFrozen": true, "liquidationBonus": 0, @@ -1044,8 +1044,8 @@ "oracle": "0xa20623070413d42a5C01Db2c8111640DD7A5A03a", "oracleDecimals": 18, "oracleDescription": "UST / ETH", - "oracleLatestAnswer": 16780133340039, - "reserveFactor": 2000, + "oracleLatestAnswer": 11773404322311, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0x7FDbfB0412700D94403c42cA3CAEeeA183F07B26", "stableDebtTokenImpl": "0x107ed1832647436a0D39F09e65f4aA920242C0BB", @@ -1073,10 +1073,10 @@ "liquidationBonus": 10700, "liquidationThreshold": 8300, "ltv": 7200, - "oracle": "0x86392dC19c0b719886221c78AB11eb8Cf5c52812", + "oracle": "0xADE6CBA6c45aa8E9d0337cAc3D2619eabc39D901", "oracleDecimals": 18, - "oracleDescription": "STETH / ETH", - "oracleLatestAnswer": 998251120000000000, + "oracleDescription": "stETH/ETH", + "oracleLatestAnswer": 1000000000000000000, "reserveFactor": 1000, "stableBorrowRateEnabled": false, "stableDebtToken": "0x66457616Dd8489dF5D0AFD8678F4A260088aAF55", @@ -1099,17 +1099,17 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": false, "decimals": 18, - "interestRateStrategy": "0x04c28D6fE897859153eA753f986cc249Bf064f71", + "interestRateStrategy": "0xb873ec463CAC50112B0e14d060fbc4192406279f", "isActive": true, "isFrozen": true, "liquidationBonus": 10800, - "liquidationThreshold": 7000, - "ltv": 6500, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0xC1438AA3823A6Ba0C159CfA8D98dF5A994bA120b", "oracleDecimals": 18, "oracleDescription": "BAL / ETH", - "oracleLatestAnswer": 4377483727566084, - "reserveFactor": 2000, + "oracleLatestAnswer": 1617911746672069, + "reserveFactor": 9900, "stableBorrowRateEnabled": false, "stableDebtToken": "0xe569d31590307d05DA3812964F1eDd551D665a0b", "stableDebtTokenImpl": "0x58571484BD57a87E359e46F82dFa9D13087b24a0", @@ -1125,13 +1125,13 @@ }, "0xdAC17F958D2ee523a2206206994597C13D831ec7": { "aToken": "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811", - "aTokenImpl": "0x3F06560cfB7af6E6B5102c358f679DE5150b3b4C", + "aTokenImpl": "0x9651F64Bd77550691EB2AeEb58188CB67F005902", "aTokenName": "Aave interest bearing USDT", "aTokenSymbol": "aUSDT", "baseStableBorrowRate": 100000000000000000000000000, "borrowingEnabled": true, "decimals": 6, - "interestRateStrategy": "0x33DeAc0861FD6a9235b86172AA939E79085c6f52", + "interestRateStrategy": "0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99", "isActive": true, "isFrozen": false, "liquidationBonus": 0, @@ -1140,11 +1140,11 @@ "oracle": "0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46", "oracleDecimals": 18, "oracleDescription": "USDT / ETH", - "oracleLatestAnswer": 611767949789453, - "reserveFactor": 1000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 406945750062059, + "reserveFactor": 2500, + "stableBorrowRateEnabled": false, "stableDebtToken": "0xe91D55AB2240594855aBd11b3faAE801Fd4c4687", - "stableDebtTokenImpl": "0x9d4578c813D69745092a4F951753ed2B28056279", + "stableDebtTokenImpl": "0xC61262D6ad449AC09B4087f46391Dd9A26b5888B", "stableDebtTokenName": "Aave stable debt bearing USDT", "stableDebtTokenSymbol": "stableDebtUSDT", "symbol": "USDT", @@ -1163,20 +1163,20 @@ "baseStableBorrowRate": 30000000000000000000000000, "borrowingEnabled": true, "decimals": 18, - "interestRateStrategy": "0xFDBDa42D2aC1bfbbc10555eb255De8387b8977C4", + "interestRateStrategy": "0xeB65a3163Fd8900F4fE9a044e18966706b69A74D", "isActive": true, "isFrozen": true, "liquidationBonus": 11000, - "liquidationThreshold": 7000, - "ltv": 6000, + "liquidationThreshold": 5, + "ltv": 0, "oracle": "0x656c0544eF4C98A6a98491833A89204Abb045d6b", "oracleDecimals": 18, "oracleDescription": "KNC / ETH", - "oracleLatestAnswer": 522346316958437, - "reserveFactor": 2000, - "stableBorrowRateEnabled": true, + "oracleLatestAnswer": 250135580000000, + "reserveFactor": 9900, + "stableBorrowRateEnabled": false, "stableDebtToken": "0x9915dfb872778B2890a117DA1F35F335eb06B54f", - "stableDebtTokenImpl": "0xf818B175353F023E3EC1A098d040778b835897c7", + "stableDebtTokenImpl": "0x22a8FD718924ab2f9dd4D0326DD8ab99Ef21D0b3", "stableDebtTokenName": "Aave stable debt bearing KNC", "stableDebtTokenSymbol": "stableDebtKNC", "symbol": "KNC", @@ -1189,87 +1189,24 @@ } }, "strategies": { - "0x004fC239848D8A8d3304729b78ba81d73d83C99F": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0x04c28D6fE897859153eA753f986cc249Bf064f71": { - "baseVariableBorrowRate": 30000000000000000000000000, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 140000000000000000000000000, - "variableRateSlope2": 1500000000000000000000000000 - }, - "0x0dEDCaE8Eb22A2EFB597aBde1834173C47Cff186": { + "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 - }, - "0x1a4babC0e20d892167792AC79618273711afD3e7": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 60000000000000000000000000, + "variableRateSlope2": 1000000000000000000000000000 }, - "0x1dA981865AE7a0C838eFBF4C7DFecb5c7268E73A": { - "baseVariableBorrowRate": 0, + "0x2c206fa2127aB7f1CE3dc987daf683Ed5B9CF069": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 550000000000000000000000000, "optimalUsageRatio": 450000000000000000000000000, "stableRateSlope1": 100000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0x24ABFac8dd8f270D752837fDFe3B3C735361f4eE": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 120000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0x26D40544447F68a3De69005822195549934624B9": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0x2893405d64a7Bc8Db02Fa617351a5399d59eCf8D": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 40000000000000000000000000, - "stableRateSlope2": 1000000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0x3082D0a473385Ed2cbd1f16087ab8b7BF79f0355": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, "0x311C866D55456e465e314A3E9830276B438A73f0": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 0, @@ -1279,121 +1216,85 @@ "variableRateSlope1": 0, "variableRateSlope2": 0 }, - "0x33DeAc0861FD6a9235b86172AA939E79085c6f52": { + "0x32f3A6134590fc2d9440663d35a2F0a6265F04c4": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 - }, - "0x404d396fc42e20d14585A1a10Cd64BDdC6C6574A": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 100000000000000000000000000, - "optimalUsageRatio": 900000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, + "maxExcessUsageRatio": 350000000000000000000000000, + "optimalUsageRatio": 650000000000000000000000000, + "stableRateSlope1": 100000000000000000000000000, + "stableRateSlope2": 3000000000000000000000000000, "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 600000000000000000000000000 + "variableRateSlope2": 3000000000000000000000000000 }, - "0x4a4fb6B26e7F516594b7242240039EA8FAAc897a": { - "baseVariableBorrowRate": 0, + "0x35FE8C9924718f286463e659be35b4122eEe907F": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 550000000000000000000000000, "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, + "stableRateSlope1": 170000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0x545Ae1908B6F12e91E03B1DEC4F2e06D0570fE1b": { + "0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 60000000000000000000000000, "variableRateSlope2": 750000000000000000000000000 }, - "0x6bcE15B789e537f3abA3C60CB183F0E8737f05eC": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 1000000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0x84d1FaD9559b8AC1Fda17d073B8542c8Fb6986dd": { - "baseVariableBorrowRate": 10000000000000000000000000, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, + "0x6855E5544Cd803BF24c9612b3F12C009116B0ee1": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 550000000000000000000000000, + "optimalUsageRatio": 450000000000000000000000000, "stableRateSlope1": 0, "stableRateSlope2": 0, - "variableRateSlope1": 20000000000000000000000000, - "variableRateSlope2": 7500000000000000000000000000 + "variableRateSlope1": 0, + "variableRateSlope2": 3000000000000000000000000000 }, - "0x8Cae0596bC1eD42dc3F04c4506cfe442b3E74e27": { + "0x795dC59EA6472Dfa4298A454C6E8Dcb005643A13": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 100000000000000000000000000, - "optimalUsageRatio": 900000000000000000000000000, + "maxExcessUsageRatio": 990000000000000000000000000, + "optimalUsageRatio": 10000000000000000000000000, "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 600000000000000000000000000, + "stableRateSlope2": 1000000000000000000000000000, "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 600000000000000000000000000 - }, - "0x9440aEc0795D7485e58bCF26622c2f4A681A9671": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 500000000000000000000000000, - "optimalUsageRatio": 500000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 70000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 + "variableRateSlope2": 1000000000000000000000000000 }, - "0x9B1e3C7483F0f21abFEaE3AeBC9b47b5f23f5bB0": { - "baseVariableBorrowRate": 0, + "0x87cCa171a2125efca9868F9Bc1FfD7B7c80dC5a3": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 550000000000000000000000000, "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, + "stableRateSlope1": 120000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0xA7d4df837926cD55036175AfeF38395d56A64c22": { + "0x999F449fEAfaAd78CE5702A9ebc460633478D4a4": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 + "maxExcessUsageRatio": 300000000000000000000000000, + "optimalUsageRatio": 700000000000000000000000000, + "stableRateSlope1": 40000000000000000000000000, + "stableRateSlope2": 1000000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, + "variableRateSlope2": 1500000000000000000000000000 }, - "0xBdfC85b140edF1FeaFd6eD664027AA4C23b4A29F": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "0xA12D7bB07379ad6de4497B80088e28D4C00932D1": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 500000000000000000000000000, + "optimalUsageRatio": 500000000000000000000000000, + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, - "0xCc92073dDe8aE03bAA1812AC5cF22e69b5E76914": { - "baseVariableBorrowRate": 30000000000000000000000000, + "0xB2D822cAdb9040F3164829BC34e41a93cA3E01e5": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, "stableRateSlope1": 0, "stableRateSlope2": 0, - "variableRateSlope1": 120000000000000000000000000, - "variableRateSlope2": 1000000000000000000000000000 - }, - "0xE3a3DE71B827cB73663A24cDB6243bA7F986cC3b": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, "0xED6547b83276B076B771B88FcCbD68BDeDb3927f": { @@ -1405,49 +1306,58 @@ "variableRateSlope1": 70000000000000000000000000, "variableRateSlope2": 3000000000000000000000000000 }, - "0xF0bA2a8c12A2354c075b363765EAe825619bd490": { + "0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, "stableRateSlope1": 20000000000000000000000000, "stableRateSlope2": 1000000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, "variableRateSlope2": 1000000000000000000000000000 }, - "0xFDBDa42D2aC1bfbbc10555eb255De8387b8977C4": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 350000000000000000000000000, - "optimalUsageRatio": 650000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, + "0xF1AafF9a4Da6Bf4Fb8fc18d39C8ffdafbAACce69": { + "baseVariableBorrowRate": 1000000000000000000000000000, + "maxExcessUsageRatio": 990000000000000000000000000, + "optimalUsageRatio": 10000000000000000000000000, + "stableRateSlope1": 700000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 80000000000000000000000000, + "variableRateSlope1": 700000000000000000000000000, "variableRateSlope2": 3000000000000000000000000000 }, - "0xb0a73aC3B10980A598685d4631c83f5348F5D32c": { + "0xab7f8ca781C736EB624A9E321cd043F8E6292C96": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 200000000000000000000000000, "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 40000000000000000000000000, + "stableRateSlope1": 20000000000000000000000000, + "stableRateSlope2": 750000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, "variableRateSlope2": 750000000000000000000000000 }, - "0xb2eD1eCE1c13455Ce9299d35D3B00358529f3Dc8": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 70000000000000000000000000, + "0xb70e28437Aec70a8cfE5240F54c463cF849bE17C": { + "baseVariableBorrowRate": 1000000000000000000000000000, + "maxExcessUsageRatio": 990000000000000000000000000, + "optimalUsageRatio": 10000000000000000000000000, + "stableRateSlope1": 700000000000000000000000000, + "stableRateSlope2": 3000000000000000000000000000, + "variableRateSlope1": 700000000000000000000000000, "variableRateSlope2": 3000000000000000000000000000 }, - "0xb49034Ada4BE5c6Bb3823A623C6250267110b06b": { + "0xb72F23adE9b9980c2E731Ca504105fC860643619": { "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 0, - "stableRateSlope2": 0, - "variableRateSlope1": 70000000000000000000000000, + "maxExcessUsageRatio": 100000000000000000000000000, + "optimalUsageRatio": 900000000000000000000000000, + "stableRateSlope1": 20000000000000000000000000, + "stableRateSlope2": 600000000000000000000000000, + "variableRateSlope1": 60000000000000000000000000, + "variableRateSlope2": 600000000000000000000000000 + }, + "0xb873ec463CAC50112B0e14d060fbc4192406279f": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 200000000000000000000000000, + "optimalUsageRatio": 800000000000000000000000000, + "stableRateSlope1": 220000000000000000000000000, + "stableRateSlope2": 1500000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, "0xb8975328Aa52c00B9Ec1e11e518C4900f2e6C62a": { @@ -1459,6 +1369,15 @@ "variableRateSlope1": 38000000000000000000000000, "variableRateSlope2": 800000000000000000000000000 }, + "0xc83cDb49F234EC6666D7857B3EAa1302b109394C": { + "baseVariableBorrowRate": 200000000000000000000000000, + "maxExcessUsageRatio": 200000000000000000000000000, + "optimalUsageRatio": 800000000000000000000000000, + "stableRateSlope1": 20000000000000000000000000, + "stableRateSlope2": 750000000000000000000000000, + "variableRateSlope1": 0, + "variableRateSlope2": 3000000000000000000000000000 + }, "0xd4cA26F2496195C4F886D464D8578368236bB747": { "baseVariableBorrowRate": 0, "maxExcessUsageRatio": 550000000000000000000000000, @@ -1468,22 +1387,13 @@ "variableRateSlope1": 0, "variableRateSlope2": 0 }, - "0xf41E8F817e6C399d1AdE102059c454093b24f35B": { - "baseVariableBorrowRate": 0, + "0xeB65a3163Fd8900F4fE9a044e18966706b69A74D": { + "baseVariableBorrowRate": 200000000000000000000000000, "maxExcessUsageRatio": 350000000000000000000000000, "optimalUsageRatio": 650000000000000000000000000, "stableRateSlope1": 100000000000000000000000000, "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 80000000000000000000000000, - "variableRateSlope2": 3000000000000000000000000000 - }, - "0xfd71623D7F41360aefE200de4f17E20A29e1d58C": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 550000000000000000000000000, - "optimalUsageRatio": 450000000000000000000000000, - "stableRateSlope1": 100000000000000000000000000, - "stableRateSlope2": 3000000000000000000000000000, - "variableRateSlope1": 70000000000000000000000000, + "variableRateSlope1": 0, "variableRateSlope2": 3000000000000000000000000000 }, "0xff04ed5f7a6C3a0F1e5Ea20617F8C6f513D5A77c": { @@ -1494,15 +1404,6 @@ "stableRateSlope2": 0, "variableRateSlope1": 80000000000000000000000000, "variableRateSlope2": 2000000000000000000000000000 - }, - "0xfffE32106A68aA3eD39CcCE673B646423EEaB62a": { - "baseVariableBorrowRate": 0, - "maxExcessUsageRatio": 200000000000000000000000000, - "optimalUsageRatio": 800000000000000000000000000, - "stableRateSlope1": 20000000000000000000000000, - "stableRateSlope2": 750000000000000000000000000, - "variableRateSlope1": 40000000000000000000000000, - "variableRateSlope2": 750000000000000000000000000 } } } \ No newline at end of file diff --git a/scripts/CrosschainForwarders.s.sol b/scripts/CrosschainForwarders.s.sol deleted file mode 100644 index a4fd05b76..000000000 --- a/scripts/CrosschainForwarders.s.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import '../src/ScriptUtils.sol'; -import {CrosschainForwarderPolygon} from '../src/crosschainforwarders/CrosschainForwarderPolygon.sol'; -import {CrosschainForwarderOptimism} from '../src/crosschainforwarders/CrosschainForwarderOptimism.sol'; -import {CrosschainForwarderArbitrum} from '../src/crosschainforwarders/CrosschainForwarderArbitrum.sol'; -import {CrosschainForwarderMetis} from '../src/crosschainforwarders/CrosschainForwarderMetis.sol'; - -contract DeployPol is EthereumScript { - function run() external broadcast { - new CrosschainForwarderPolygon(); - } -} - -contract DeployOpt is EthereumScript { - function run() external broadcast { - new CrosschainForwarderOptimism(); - } -} - -contract DeployArb is EthereumScript { - function run() external broadcast { - new CrosschainForwarderArbitrum(); - } -} - -contract DeployMet is EthereumScript { - function run() external broadcast { - new CrosschainForwarderMetis(); - } -} diff --git a/src/AaveHelpers.sol b/src/AaveHelpers.sol deleted file mode 100644 index a41e99ef9..000000000 --- a/src/AaveHelpers.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity >=0.7.5 <0.9.0; - -import {GovHelpers, AaveGovernanceV2} from './GovHelpers.sol'; -import {ProxyHelpers} from './ProxyHelpers.sol'; -import {ProtocolV3TestBase} from './ProtocolV3TestBase.sol'; diff --git a/src/GovHelpers.sol b/src/GovHelpers.sol deleted file mode 100644 index 564a486c7..000000000 --- a/src/GovHelpers.sol +++ /dev/null @@ -1,579 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity >=0.7.5 <0.9.0; -pragma abicoder v2; - -import {Vm} from 'forge-std/Vm.sol'; -import {console2} from 'forge-std/console2.sol'; -import {IpfsUtils} from './IpfsUtils.sol'; -import {AaveGovernanceV2, IAaveGovernanceV2, IExecutorWithTimelock} from 'aave-address-book/AaveGovernanceV2.sol'; -import {IPoolAddressesProvider} from 'aave-address-book/AaveV3.sol'; -import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol'; -import {AaveV3Harmony} from 'aave-address-book/AaveV3Harmony.sol'; -import {AaveV3Fantom} from 'aave-address-book/AaveV3Fantom.sol'; -import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; -import {ProxyHelpers} from './ProxyHelpers.sol'; -import {ChainIds} from './ChainIds.sol'; -import {StorageHelpers} from './StorageHelpers.sol'; - -interface CommonExecutor { - /** - * @dev Execute the ActionsSet - * @param actionsSetId id of the ActionsSet to execute - **/ - function execute(uint256 actionsSetId) external payable; -} - -interface IProposalValidator { - /** - * @dev Get voting duration constant value - * @return the voting duration value in seconds - **/ - function VOTING_DURATION() external view returns (uint256); -} - -library GovHelpers { - error ExecutorNotFound(); - error LongBytesNotSupportedYet(); - - struct Payload { - address target; - uint256 value; - string signature; - bytes callData; - bool withDelegatecall; - } - - function ipfsHashFile(Vm vm, string memory filePath) internal returns (bytes32) { - return IpfsUtils.ipfsHashFile(vm, filePath, false); - } - - function buildMainnet(address payloadAddress) internal pure returns (Payload memory) { - require(payloadAddress != address(0), 'NON_ZERO_TARGET'); - require( - payloadAddress != AaveGovernanceV2.CROSSCHAIN_FORWARDER_OPTIMISM && - payloadAddress != AaveGovernanceV2.CROSSCHAIN_FORWARDER_METIS && - payloadAddress != AaveGovernanceV2.CROSSCHAIN_FORWARDER_ARBITRUM && - payloadAddress != AaveGovernanceV2.CROSSCHAIN_FORWARDER_POLYGON && - payloadAddress != AaveGovernanceV2.CROSSCHAIN_FORWARDER_BASE, - 'PAYLOAD_CANT_BE_FORWARDER' - ); - - return - Payload({ - target: payloadAddress, - signature: 'execute()', - callData: '', - value: 0, - withDelegatecall: true - }); - } - - function buildOptimism(address payloadAddress) internal pure returns (Payload memory) { - return - _buildL2({ - forwarder: AaveGovernanceV2.CROSSCHAIN_FORWARDER_OPTIMISM, - payloadAddress: payloadAddress - }); - } - - function buildArbitrum(address payloadAddress) internal pure returns (Payload memory) { - return - _buildL2({ - forwarder: AaveGovernanceV2.CROSSCHAIN_FORWARDER_ARBITRUM, - payloadAddress: payloadAddress - }); - } - - function buildPolygon(address payloadAddress) internal pure returns (Payload memory) { - return - _buildL2({ - forwarder: AaveGovernanceV2.CROSSCHAIN_FORWARDER_POLYGON, - payloadAddress: payloadAddress - }); - } - - function buildMetis(address payloadAddress) internal pure returns (Payload memory) { - return - _buildL2({ - forwarder: AaveGovernanceV2.CROSSCHAIN_FORWARDER_METIS, - payloadAddress: payloadAddress - }); - } - - function buildBase(address payloadAddress) internal pure returns (Payload memory) { - return - _buildL2({ - forwarder: AaveGovernanceV2.CROSSCHAIN_FORWARDER_BASE, - payloadAddress: payloadAddress - }); - } - - function _buildL2( - address forwarder, - address payloadAddress - ) private pure returns (Payload memory) { - require(payloadAddress != address(0), 'NON_ZERO_TARGET'); - return - Payload({ - target: forwarder, - value: 0, - signature: 'execute(address)', - callData: abi.encode(payloadAddress), - withDelegatecall: true - }); - } - - function createProposal(Payload[] memory payloads, bytes32 ipfsHash) internal returns (uint256) { - return _createProposal(AaveGovernanceV2.SHORT_EXECUTOR, payloads, ipfsHash, false); - } - - function createProposal( - Payload[] memory payloads, - bytes32 ipfsHash, - bool emitLog - ) internal returns (uint256) { - return _createProposal(AaveGovernanceV2.SHORT_EXECUTOR, payloads, ipfsHash, emitLog); - } - - function createProposal( - Payload[] memory payloads, - bytes32 ipfsHash, - address executor - ) internal returns (uint256) { - return _createProposal(executor, payloads, ipfsHash, false); - } - - function createProposal( - Payload[] memory payloads, - bytes32 ipfsHash, - bool emitLog, - address executor - ) internal returns (uint256) { - return _createProposal(executor, payloads, ipfsHash, emitLog); - } - - function _createProposal( - address executor, - Payload[] memory payloads, - bytes32 ipfsHash, - bool emitLog - ) private returns (uint256) { - require(block.chainid == ChainIds.MAINNET, 'MAINNET_ONLY'); - require(payloads.length != 0, 'MINIMUM_ONE_PAYLOAD'); - require(ipfsHash != bytes32(0), 'NON_ZERO_IPFS_HASH'); - - address[] memory targets = new address[](payloads.length); - uint256[] memory values = new uint256[](payloads.length); - string[] memory signatures = new string[](payloads.length); - bytes[] memory calldatas = new bytes[](payloads.length); - bool[] memory withDelegatecalls = new bool[](payloads.length); - for (uint256 i = 0; i < payloads.length; i++) { - require(payloads[i].target != address(0), 'NON_ZERO_TARGET'); - targets[i] = payloads[i].target; - signatures[i] = payloads[i].signature; - calldatas[i] = payloads[i].callData; - values[i] = payloads[i].value; - withDelegatecalls[i] = payloads[i].withDelegatecall; - } - - if (emitLog) { - console2.logBytes( - abi.encodeWithSelector( - AaveGovernanceV2.GOV.create.selector, - IExecutorWithTimelock(executor), - targets, - values, - signatures, - calldatas, - withDelegatecalls, - ipfsHash - ) - ); - } - - return - AaveGovernanceV2.GOV.create( - IExecutorWithTimelock(executor), - targets, - values, - signatures, - calldatas, - withDelegatecalls, - ipfsHash - ); - } - - /** - * @dev Impersonate the ecosystem reserve and creates the proposal. - */ - function createTestProposal( - Vm vm, - Payload[] memory payloads, - address executor - ) internal returns (uint256) { - vm.deal(MiscEthereum.ECOSYSTEM_RESERVE, 1 ether); - vm.startPrank(MiscEthereum.ECOSYSTEM_RESERVE); - uint256 proposalId = _createProposal(executor, payloads, bytes32('test'), false); - vm.stopPrank(); - return proposalId; - } - - function passVoteAndExecute(Vm vm, uint256 proposalId) internal { - passVoteAndQueue(vm, proposalId); - uint256 executionTime = AaveGovernanceV2.GOV.getProposalById(proposalId).executionTime; - vm.warp(executionTime + 1); - AaveGovernanceV2.GOV.execute(proposalId); - } - - function passVoteAndQueue(Vm vm, uint256 proposalId) internal { - passVote(vm, proposalId); - AaveGovernanceV2.GOV.queue(proposalId); - } - - /** - * Alter storage slots so the proposal passes - */ - function passVote(Vm vm, uint256 proposalId) internal { - uint256 power = 5000000 ether; - vm.roll(block.number + 1); - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(uint256(keccak256(abi.encode(proposalId, 0x4))) + 11), - bytes32(power) - ); - uint256 endBlock = AaveGovernanceV2.GOV.getProposalById(proposalId).endBlock; - vm.roll(endBlock + 1); - } - - /** - * @dev executes latest actionset on a l2 executor - * @param vm Vm instance passed down from test - */ - function executeLatestActionSet(Vm vm, address executor) internal { - uint256 proposalCount = uint256(vm.load(executor, bytes32(uint256(5)))); - executeActionSet(vm, proposalCount - 1, executor); - } - - /** - * @dev executes specified actionset on a l2 executor - * @param vm Vm instance passed down from test - * @param actionSetId id of actionset to execute - */ - function executeActionSet(Vm vm, uint256 actionSetId, address executor) internal { - uint256 proposalBaseSlot = StorageHelpers.getStorageSlotUintMapping(6, actionSetId); - vm.store(executor, bytes32(proposalBaseSlot + 5), bytes32(block.timestamp)); - CommonExecutor(executor).execute(actionSetId); - } - - /** - * @dev executes specified payloadAddress on a specified executor via delegatecall - * @notice this method accepts arbitrary executors (guardians and executors) - * @param vm Vm instance passed down from test - * @param executor address of the executor - * @param payloadAddress address of payload to execute - */ - function executePayload(Vm vm, address payloadAddress, address executor) internal { - if ( - block.chainid == ChainIds.MAINNET && - (executor == AaveGovernanceV2.SHORT_EXECUTOR || executor == AaveGovernanceV2.LONG_EXECUTOR) - ) { - Payload[] memory proposals = new Payload[](1); - proposals[0] = Payload({ - target: payloadAddress, - signature: 'execute()', - callData: '', - withDelegatecall: true, - value: 0 - }); - uint256 proposalId = _queueProposalToL1ExecutorStorage(vm, executor, proposals); - AaveGovernanceV2.GOV.execute(proposalId); - } else if (_isKnownL2Executor(executor)) { - Payload[] memory proposals = new Payload[](1); - proposals[0] = Payload({ - target: payloadAddress, - signature: 'execute()', - callData: '', - withDelegatecall: true, - value: 0 - }); - uint256 proposalId = _queueProposalToL2ExecutorStorage(vm, executor, proposals); - CommonExecutor(executor).execute(proposalId); - } else { - MockExecutor mockExecutor = new MockExecutor(); - vm.etch(executor, address(mockExecutor).code); - MockExecutor(executor).execute(payloadAddress); - } - } - - /** - * @notice Executor storage is the same on all l2s - * @param vm vm - * @param params proposal - */ - function _queueProposalToL2ExecutorStorage( - Vm vm, - address l2Executor, - Payload[] memory params - ) internal returns (uint256) { - // count is stored in slot 5 - uint256 proposalCount = uint256(vm.load(l2Executor, bytes32(uint256(5)))); - // bump counter by 1 - vm.store(l2Executor, bytes32(uint256(5)), bytes32(proposalCount + 1)); - - // set storage array sizes - // actionSetSlot - uint256 proposalBaseSlot = StorageHelpers.getStorageSlotUintMapping(6, proposalCount); - // targets - vm.store(l2Executor, bytes32(proposalBaseSlot), bytes32(params.length)); - // values - vm.store(l2Executor, bytes32(proposalBaseSlot + 1), bytes32(params.length)); - // signatures - vm.store(l2Executor, bytes32(proposalBaseSlot + 2), bytes32(params.length)); - // calldatas - vm.store(l2Executor, bytes32(proposalBaseSlot + 3), bytes32(params.length)); - // withDelegateCalls - vm.store(l2Executor, bytes32(proposalBaseSlot + 4), bytes32(params.length)); - - // store actual values - for (uint256 i = 0; i < params.length; i++) { - // targets - vm.store( - l2Executor, - bytes32(StorageHelpers.arrLocation(proposalBaseSlot, i, 1)), - bytes32(uint256(uint160(params[i].target))) - ); - // values - vm.store( - l2Executor, - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 1, i, 1)), - bytes32(0) - ); - // signatures - if (bytes(params[i].signature).length > 31) revert LongBytesNotSupportedYet(); - vm.store( - l2Executor, - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 2, i, 1)), - bytes32( - bytes.concat( - bytes31(bytes(params[i].signature)), - bytes1(uint8(bytes(params[i].signature).length * 2)) - ) - ) - ); - // calldatas - if (params[i].callData.length > 31) revert LongBytesNotSupportedYet(); - vm.store( - l2Executor, - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 3, i, 1)), - bytes32( - bytes.concat( - bytes31(bytes(params[i].callData)), - bytes1(uint8(bytes(params[i].callData).length * 2)) - ) - ) - ); - // withDelegateCalls - vm.store( - l2Executor, - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 4, i, 1)), - bytes32(uint256(1)) - ); - } - // executiontime - vm.store(l2Executor, bytes32(proposalBaseSlot + 5), bytes32(block.timestamp)); - return proposalCount; - } - - /** - * @notice Creates a proposal via storage overwrites - * @param vm vm - * @param params proposal - */ - function _queueProposalToL1ExecutorStorage( - Vm vm, - address l1Executor, - Payload[] memory params - ) internal returns (uint256) { - // struct Proposal { - // uint256 id; // 0 - // address creator; // 1 - // IExecutorWithTimelock executor; // 2 - // address[] targets; // 3 - // uint256[] values; // 4 - // string[] signatures; // 5 - // bytes[] calldatas; // 6 - // bool[] withDelegatecalls; // 7 - // uint256 startBlock; // 8 - // uint256 endBlock; // 9 - // uint256 executionTime; // 10 - // uint256 forVotes; // 11 - // uint256 againstVotes; // 12 - // bool executed; // 13 0-8 - // bool canceled; // 13 9-16 - // address strategy; // 13 16-176 - // bytes32 ipfsHash; // 14 - // mapping(address => Vote) votes; // 15 - // } - // count is stored in slot 5 - uint256 proposalCount = uint256(vm.load(address(AaveGovernanceV2.GOV), bytes32(uint256(3)))); - // bump counter by 1 - vm.store(address(AaveGovernanceV2.GOV), bytes32(uint256(3)), bytes32(proposalCount + 1)); - - // set storage array sizes - // proposals - uint256 proposalBaseSlot = StorageHelpers.getStorageSlotUintMapping(4, proposalCount); - // id - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot), bytes32(proposalCount)); - // creator - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(proposalBaseSlot + 1), - bytes32(uint256(uint160(msg.sender))) - ); - // executor - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(proposalBaseSlot + 2), - bytes32(uint256(uint160(l1Executor))) - ); - // targets - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot + 3), bytes32(params.length)); - // values - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot + 4), bytes32(params.length)); - // signatures - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot + 5), bytes32(params.length)); - // calldatas - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot + 6), bytes32(params.length)); - // withDelegateCalls - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot + 7), bytes32(params.length)); - // block math - uint256 dalay = AaveGovernanceV2.GOV.getVotingDelay(); // (blocks) delay in voting blocks before voting can happen - uint256 duration = IProposalValidator(l1Executor).VOTING_DURATION(); // (blocks) duration of the voting - uint256 executionTime = block.timestamp; - // @dev the block timings are not accurate, but enough to satisfy execution - // startBlock - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(proposalBaseSlot + 8), - bytes32(block.number - (dalay + duration)) - ); - // endBlock - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(proposalBaseSlot + 9), - bytes32(block.number - 1) - ); - // executionTime - vm.store(address(AaveGovernanceV2.GOV), bytes32(proposalBaseSlot + 10), bytes32(executionTime)); - // forVotes - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(proposalBaseSlot + 11), - bytes32(uint256(15_000_000 ether)) // TODO: calculate needed amount - ); - // strategy - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(proposalBaseSlot + 13), - bytes32(uint256(uint160(AaveGovernanceV2.GOV.getGovernanceStrategy())) << 16) - ); - // store actual values - for (uint256 i = 0; i < params.length; i++) { - bytes32 queueHash = keccak256( - abi.encode( - params[i].target, - 0, - params[i].signature, - params[i].callData, - executionTime, - true - ) - ); - // queue hash on executor - vm.store( - l1Executor, - bytes32( - StorageHelpers.getStorageSlotBytes32Mapping( - // the mapping slot is 3 on short and 7 on long - l1Executor == AaveGovernanceV2.SHORT_EXECUTOR ? 3 : 7, - queueHash - ) - ), - bytes32(uint256(1)) - ); - // targets - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 3, i, 1)), - bytes32(uint256(uint160(params[i].target))) - ); - // values - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 4, i, 1)), - bytes32(0) - ); - // signatures - if (bytes(params[i].signature).length > 31) revert LongBytesNotSupportedYet(); - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 5, i, 1)), - bytes32( - bytes.concat( - bytes31(bytes(params[i].signature)), - bytes1(uint8(bytes(params[i].signature).length * 2)) - ) - ) - ); - // calldatas - if (params[i].callData.length > 31) revert LongBytesNotSupportedYet(); - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 6, i, 1)), - bytes32( - bytes.concat( - bytes31(bytes(params[i].callData)), - bytes1(uint8(bytes(params[i].callData).length * 2)) - ) - ) - ); - // withDelegateCalls - vm.store( - address(AaveGovernanceV2.GOV), - bytes32(StorageHelpers.arrLocation(proposalBaseSlot + 7, i, 1)), - bytes32(uint256(1)) - ); - } - return proposalCount; - } - - function _isKnownL2Executor(address executor) internal view returns (bool) { - if (executor == AaveGovernanceV2.OPTIMISM_BRIDGE_EXECUTOR && block.chainid == ChainIds.OPTIMISM) - return true; - if (executor == AaveGovernanceV2.POLYGON_BRIDGE_EXECUTOR && block.chainid == ChainIds.POLYGON) - return true; - if (executor == AaveGovernanceV2.METIS_BRIDGE_EXECUTOR && block.chainid == ChainIds.METIS) - return true; - if (executor == AaveGovernanceV2.ARBITRUM_BRIDGE_EXECUTOR && block.chainid == ChainIds.ARBITRUM) - return true; - if (executor == AaveGovernanceV2.BASE_BRIDGE_EXECUTOR && block.chainid == ChainIds.BASE) - return true; - // not a l2, but following same interface & stroage - if (executor == AaveGovernanceV2.ARC_TIMELOCK && block.chainid == ChainIds.MAINNET) return true; - return false; - } -} - -/** - * @dev Mock contract which allows performing a delegatecall to `execute` - * Intended to be used as replacement for L2 admins/executors to mock governance/gnosis execution. - */ -contract MockExecutor { - /** - * @notice Non-standard functionality used to skip governance and just execute a payload. - */ - function execute(address payload) public { - (bool success, ) = payload.delegatecall(abi.encodeWithSignature('execute()')); - require(success, 'PROPOSAL_EXECUTION_FAILED'); - } -} diff --git a/src/GovV3Helpers.sol b/src/GovV3Helpers.sol index 5a3f8ea8a..a879c66ab 100644 --- a/src/GovV3Helpers.sol +++ b/src/GovV3Helpers.sol @@ -23,47 +23,8 @@ import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; import {Address} from 'solidity-utils/contracts/oz-common/Address.sol'; import {StorageHelpers} from './StorageHelpers.sol'; import {ProxyHelpers} from './ProxyHelpers.sol'; -import {GovHelpers, IAaveGovernanceV2} from './GovHelpers.sol'; import {Create2Utils} from './ScriptUtils.sol'; -interface IGovernance_V2_5 { - /** - * @notice emitted when gas limit gets updated - * @param gasLimit the new gas limit - */ - event GasLimitUpdated(uint256 indexed gasLimit); - - /** - * @notice method to get the CrossChainController contract address of the currently deployed address - * @return address of CrossChainController contract - */ - function CROSS_CHAIN_CONTROLLER() external view returns (address); - - /** - * @notice method to get the name of the contract - * @return name string - */ - function NAME() external view returns (string memory); - - /** - * @notice method to get the gas limit used on destination chain to execute bridged message - * @return gas limit - * @dev this gas limit is assuming that the messages to forward are only payload execution messages - */ - function GAS_LIMIT() external view returns (uint256); - - /** - * @notice method to send a payload to execution chain - * @param payload object with the information needed for execution - */ - function forwardPayloadForExecution(PayloadsControllerUtils.Payload memory payload) external; - - /** - * @notice method to initialize governance v2.5 - */ - function initialize() external; -} - library GovV3Helpers { error CannotFindPayload(); error CannotFindPayloadsController(); @@ -588,37 +549,6 @@ library GovV3Helpers { GovernanceV3Ethereum.GOVERNANCE.executeProposal(proposalId); } - function build2_5Payload( - PayloadsControllerUtils.Payload memory payload - ) internal returns (GovHelpers.Payload memory) { - return - GovHelpers.Payload({ - target: address(GovernanceV3Ethereum.GOVERNANCE), - value: 0, - signature: 'forwardPayloadForExecution((uint256,uint8,address,uint40))', - callData: abi.encode(payload), - withDelegatecall: false - }); - } - - // temporarily patched create proposal for governance v2.5 - function createProposal2_5( - Vm vm, - PayloadsControllerUtils.Payload[] memory payloads, - bytes32 ipfsHash - ) internal returns (uint256) { - require(block.chainid == ChainIds.MAINNET, 'MAINNET_ONLY'); - require(payloads.length != 0, 'MINIMUM_ONE_PAYLOAD'); - require(ipfsHash != bytes32(0), 'NON_ZERO_IPFS_HASH'); - - generateProposalPreviewLink(vm, payloads, ipfsHash, address(0)); - GovHelpers.Payload[] memory gov2Payloads = new GovHelpers.Payload[](payloads.length); - for (uint256 i = 0; i < payloads.length; i++) { - gov2Payloads[i] = build2_5Payload(payloads[i]); - } - return GovHelpers.createProposal(gov2Payloads, ipfsHash, true); - } - /** * @dev creates a proposal with a single payload * @param vm Vm diff --git a/src/crosschainforwarders/CrosschainForwarderArbitrum.sol b/src/crosschainforwarders/CrosschainForwarderArbitrum.sol deleted file mode 100644 index 9c0aa56f2..000000000 --- a/src/crosschainforwarders/CrosschainForwarderArbitrum.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; -import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol'; -import {IInbox} from 'governance-crosschain-bridges/contracts/dependencies/arbitrum/interfaces/IInbox.sol'; -import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol'; - -/** - * @title A generic executor for proposals targeting the arbitrum v3 pool - * @author BGD Labs - * @notice You can **only** use this executor when the arbitrum payload has a `execute()` signature without parameters - * @notice You can **only** use this executor when the arbitrum payload is expected to be executed via `DELEGATECALL` - * @notice This contract assumes to be called via AAVE Governance V2 - * @notice This contract will assume the SHORT_EXECUTOR will be topped up with enough funds to fund the short executor - * @dev This executor is a generic wrapper to be used with Arbitrum Inbox (https://developer.offchainlabs.com/arbos/l1-to-l2-messaging) - * It encodes a parameterless `execute()` with delegate calls and a specified target. - * This encoded abi is then send to the Inbox to be synced executed on the arbitrum network. - * Once synced the ARBITRUM_BRIDGE_EXECUTOR will queue the execution of the payload. - */ -contract CrosschainForwarderArbitrum { - IInbox public constant INBOX = IInbox(0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f); - address public constant ARBITRUM_BRIDGE_EXECUTOR = AaveGovernanceV2.ARBITRUM_BRIDGE_EXECUTOR; - address public constant ARBITRUM_GUARDIAN = 0xbbd9f90699c1FA0D7A65870D241DD1f1217c96Eb; - - // amount of gwei to overpay on basefee for fast submission - uint256 public constant BASE_FEE_MARGIN = 10 gwei; - - /** - * @dev calculateRetryableSubmissionFee on `0x00000000000000000000000000000000000000C8` for a queue call with 1 slot will yield a constant gasLimit of `429478` - * To account for some margin we rounded up to 450000 - */ - uint256 public constant L2_GAS_LIMIT = 450000; - - /** - * @dev There is currently no oracle on L1 exposing gasPrice of arbitrum. Therefore we overpay by assuming 1 gwei (10x of current price). - */ - uint256 public constant L2_MAX_FEE_PER_GAS = 1 gwei; - - /** - * @dev returns the amount of gas needed for submitting the ticket - * @param bytesLength the payload bytes length (usually 580) - * @return uint256 maxSubmissionFee needed on L2 with BASE_FEE_MARGIN - * @return uint256 estimated L2 redepmption fee - */ - function getRequiredGas(uint256 bytesLength) public view returns (uint256, uint256) { - return ( - INBOX.calculateRetryableSubmissionFee(bytesLength, block.basefee + BASE_FEE_MARGIN), - L2_GAS_LIMIT * L2_MAX_FEE_PER_GAS - ); - } - - /** - * @dev checks if the short executor is topped up with enough eth for proposal execution - * with current basefee - * @param bytesLength the payload bytes length (usually 580) - * @return bool indicating if the SHORT_EXECUTOR has sufficient funds - * @return uint256 the gas required for ticket creation and redemption - */ - function hasSufficientGasForExecution(uint256 bytesLength) public view returns (bool, uint256) { - (uint256 maxSubmission, uint256 maxRedemption) = getRequiredGas(bytesLength); - uint256 requiredGas = maxSubmission + maxRedemption; - return (AaveGovernanceV2.SHORT_EXECUTOR.balance >= requiredGas, requiredGas); - } - - /** - * @dev encodes the queue call which is forwarded to arbitrum - * @param l2PayloadContract the address of the arbitrum payload - */ - function getEncodedPayload(address l2PayloadContract) public pure returns (bytes memory) { - address[] memory targets = new address[](1); - targets[0] = l2PayloadContract; - uint256[] memory values = new uint256[](1); - values[0] = 0; - string[] memory signatures = new string[](1); - signatures[0] = 'execute()'; - bytes[] memory calldatas = new bytes[](1); - calldatas[0] = ''; - bool[] memory withDelegatecalls = new bool[](1); - withDelegatecalls[0] = true; - return - abi.encodeWithSelector( - IL2BridgeExecutor.queue.selector, - targets, - values, - signatures, - calldatas, - withDelegatecalls - ); - } - - /** - * @dev this function will be executed once the proposal passes the mainnet vote. - * @param l2PayloadContract the arbitrum contract containing the `execute()` signature. - */ - function execute(address l2PayloadContract) public { - bytes memory queue = getEncodedPayload(l2PayloadContract); - (uint256 maxSubmission, uint256 maxRedemption) = getRequiredGas(queue.length); - INBOX.unsafeCreateRetryableTicket{value: maxSubmission + maxRedemption}( - ARBITRUM_BRIDGE_EXECUTOR, - 0, // l2CallValue - maxSubmission, // maxSubmissionCost - address(ARBITRUM_BRIDGE_EXECUTOR), // excessFeeRefundAddress - address(ARBITRUM_GUARDIAN), // callValueRefundAddress - L2_GAS_LIMIT, // gasLimit - L2_MAX_FEE_PER_GAS, // maxFeePerGas - queue - ); - } -} diff --git a/src/crosschainforwarders/CrosschainForwarderMetis.sol b/src/crosschainforwarders/CrosschainForwarderMetis.sol deleted file mode 100644 index 965dcb139..000000000 --- a/src/crosschainforwarders/CrosschainForwarderMetis.sol +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; -import {ICrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol'; -import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol'; - -/** - * @title A generic executor for proposals targeting the metis v3 pool - * @author BGD Labs - * @notice You can **only** use this executor when the metis payload has a `execute()` signature without parameters - * @notice You can **only** use this executor when the metis payload is expected to be executed via `DELEGATECALL` - * @notice The L2CrossDomainMessenger can **only** queue an action on metis with up to a max gas which is specified in `MAX_GAS_LIMIT`. - * It encodes and sends via the L2CrossDomainMessenger a message to queue for execution an action on L2, in the Aave METIS_BRIDGE_EXECUTOR. - */ -contract CrosschainForwarderMetis { - /** - * @dev The L1 Cross Domain Messenger contract sends messages from L1 to L2, and relays messages - * from L2 onto L1. In this contract it's used by the governance SHORT_EXECUTOR to send the encoded L2 queuing over the bridge. - */ - address public constant L1_CROSS_DOMAIN_MESSENGER_ADDRESS = - 0x081D1101855bD523bA69A9794e0217F0DB6323ff; - - /** - * @dev The metis bridge executor is a L2 governance execution contract. - * This contract allows queuing of proposals by allow listed addresses (in this case the L1 short executor). - * https://andromeda-explorer.metis.io/address/0x8EC77963068474a45016938Deb95E603Ca82a029 - */ - address public constant METIS_BRIDGE_EXECUTOR = AaveGovernanceV2.METIS_BRIDGE_EXECUTOR; - - /** - * @dev The gas limit of the queue transaction by the L2CrossDomainMessenger on L2. - * The limit seems reasonable considering the queue transaction, as all gas limits are prepaid. - */ - uint32 public constant MAX_GAS_LIMIT = 5_000_000; - - /** - * @dev this function will be executed once the proposal passes the mainnet vote. - * @param l2PayloadContract the metis contract containing the `execute()` signature. - */ - function execute(address l2PayloadContract) public { - address[] memory targets = new address[](1); - targets[0] = l2PayloadContract; - uint256[] memory values = new uint256[](1); - values[0] = 0; - string[] memory signatures = new string[](1); - signatures[0] = 'execute()'; - bytes[] memory calldatas = new bytes[](1); - calldatas[0] = ''; - bool[] memory withDelegatecalls = new bool[](1); - withDelegatecalls[0] = true; - - bytes memory queue = abi.encodeWithSelector( - IL2BridgeExecutor.queue.selector, - targets, - values, - signatures, - calldatas, - withDelegatecalls - ); - ICrossDomainMessenger(L1_CROSS_DOMAIN_MESSENGER_ADDRESS).sendMessage( - METIS_BRIDGE_EXECUTOR, - queue, - MAX_GAS_LIMIT - ); - } -} diff --git a/src/crosschainforwarders/CrosschainForwarderOptimism.sol b/src/crosschainforwarders/CrosschainForwarderOptimism.sol deleted file mode 100644 index fca432e82..000000000 --- a/src/crosschainforwarders/CrosschainForwarderOptimism.sol +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {ICrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol'; -import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol'; - -interface ICanonicalTransactionChain { - function enqueueL2GasPrepaid() external view returns (uint256); -} - -/** - * @title A generic executor for proposals targeting the optimism v3 pool - * @author BGD Labs - * @notice You can **only** use this executor when the optimism payload has a `execute()` signature without parameters - * @notice You can **only** use this executor when the optimism payload is expected to be executed via `DELEGATECALL` - * @notice You can **only** execute payloads on optimism with up to prepayed gas which is specified in `enqueueL2GasPrepaid` gas. - * Prepaid gas is the maximum gas covered by the bridge without additional payment. - * @dev This executor is a generic wrapper to be used with Optimism CrossDomainMessenger (https://etherscan.io/address/0x25ace71c97b33cc4729cf772ae268934f7ab5fa1) - * It encodes and sends via the L2CrossDomainMessenger a message to queue for execution an action on L2, in the Aave OPTIMISM_BRIDGE_EXECUTOR. - */ -contract CrosschainForwarderOptimism { - /** - * @dev The L1 Cross Domain Messenger contract sends messages from L1 to L2, and relays messages - * from L2 onto L1. In this contract it's used by the governance SHORT_EXECUTOR to send the encoded L2 queuing over the bridge. - */ - address public constant L1_CROSS_DOMAIN_MESSENGER_ADDRESS = - 0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1; - - /** - * @dev The optimism bridge executor is a L2 governance execution contract. - * This contract allows queuing of proposals by allow listed addresses (in this case the L1 short executor). - * https://optimistic.etherscan.io/address/0x7d9103572bE58FfE99dc390E8246f02dcAe6f611 - */ - address public constant OPTIMISM_BRIDGE_EXECUTOR = 0x7d9103572bE58FfE99dc390E8246f02dcAe6f611; - - /** - * @dev The CTC contract is an append only log of transactions which must be applied to the rollup state. - * It also holds configurations like the currently prepayed amount of gas which is what this contract is utilizing. - * https://etherscan.io/address/0x5e4e65926ba27467555eb562121fac00d24e9dd2#code - */ - ICanonicalTransactionChain public constant CANONICAL_TRANSACTION_CHAIN = - ICanonicalTransactionChain(0x5E4e65926BA27467555EB562121fac00D24E9dD2); - - /** - * @dev this function will be executed once the proposal passes the mainnet vote. - * @param l2PayloadContract the optimism contract containing the `execute()` signature. - */ - function execute(address l2PayloadContract) public { - address[] memory targets = new address[](1); - targets[0] = l2PayloadContract; - uint256[] memory values = new uint256[](1); - values[0] = 0; - string[] memory signatures = new string[](1); - signatures[0] = 'execute()'; - bytes[] memory calldatas = new bytes[](1); - calldatas[0] = ''; - bool[] memory withDelegatecalls = new bool[](1); - withDelegatecalls[0] = true; - - bytes memory queue = abi.encodeWithSelector( - IL2BridgeExecutor.queue.selector, - targets, - values, - signatures, - calldatas, - withDelegatecalls - ); - ICrossDomainMessenger(L1_CROSS_DOMAIN_MESSENGER_ADDRESS).sendMessage( - OPTIMISM_BRIDGE_EXECUTOR, - queue, - uint32(CANONICAL_TRANSACTION_CHAIN.enqueueL2GasPrepaid()) - ); - } -} diff --git a/src/crosschainforwarders/CrosschainForwarderPolygon.sol b/src/crosschainforwarders/CrosschainForwarderPolygon.sol deleted file mode 100644 index 1ada02d6c..000000000 --- a/src/crosschainforwarders/CrosschainForwarderPolygon.sol +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IFxStateSender} from 'governance-crosschain-bridges/contracts/dependencies/polygon/fxportal/FxRoot.sol'; - -/** - * @title A generic executor for proposals targeting the polygon v3 pool - * @author BGD Labs - * @notice You can **only** use this executor when the polygon payload has a `execute()` signature without parameters - * @notice You can **only** use this executor when the polygon payload is expected to be executed via `DELEGATECALL` - * @dev This executor is a generic wrapper to be used with FX bridges (https://github.com/fx-portal/contracts) - * It encodes a parameterless `execute()` with delegate calls and a specified target. - * This encoded abi is then send to the FX-root to be synced to the FX-child on the polygon network. - * Once synced the POLYGON_BRIDGE_EXECUTOR will queue the execution of the payload. - */ -contract CrosschainForwarderPolygon { - address public constant FX_ROOT_ADDRESS = 0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2; - address public constant POLYGON_BRIDGE_EXECUTOR = 0xdc9A35B16DB4e126cFeDC41322b3a36454B1F772; - - /** - * @dev this function will be executed once the proposal passes the mainnet vote. - * @param l2PayloadContract the polygon contract containing the `execute()` signature. - */ - function execute(address l2PayloadContract) public { - address[] memory targets = new address[](1); - targets[0] = l2PayloadContract; - uint256[] memory values = new uint256[](1); - values[0] = 0; - string[] memory signatures = new string[](1); - signatures[0] = 'execute()'; - bytes[] memory calldatas = new bytes[](1); - calldatas[0] = ''; - bool[] memory withDelegatecalls = new bool[](1); - withDelegatecalls[0] = true; - - bytes memory actions = abi.encode(targets, values, signatures, calldatas, withDelegatecalls); - IFxStateSender(FX_ROOT_ADDRESS).sendMessageToChild(POLYGON_BRIDGE_EXECUTOR, actions); - } -} diff --git a/src/crosschainforwarders/README.md b/src/crosschainforwarders/README.md deleted file mode 100644 index 7d5d866b6..000000000 --- a/src/crosschainforwarders/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# CrosschainForwarder - -## About - -To simplify the process of creating a cross-chain proposal this repository contains opinionated `CrosschainForwarder` contracts for `Polygon`, `Optimism`, `Metis` and `Arbitrum` abstracting away the complexity of bridging & cross-chain gas calculations. -All the forwarders follow the same pattern. They expect a payload to be deployed on L2 and to be executed with a parameterless `execute()` signature and via `DELEGATECALL`. - -![visualization](./bridge-listing.png) - -### Polygon - -For a proposal to be executed on Polygon it needs to pass a mainnet governance proposal that sends an encoded payload via `sendMessageToChild(address,bytes)` on [FX_ROOT](https://etherscan.io/address/0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2#code)(mainnet) to [FX_CHILD](https://polygonscan.com/address/0x8397259c983751DAf40400790063935a11afa28a#code)(Polygon). -Once the state is synced to `FX_CHILD` on Polygon network it will queue the payload on [POLYGON_BRIDGE_EXECUTOR](https://polygonscan.com/address/0xdc9A35B16DB4e126cFeDC41322b3a36454B1F772#code). - -### Optimism - -For a proposal to be executed on Optimism it needs to pass a mainnet governance proposal that sends an encoded payload via `sendMessage(address,bytes,uint32)` on [L1_CROSS_DOMAIN_MESSENGER](https://etherscan.io/address/0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1)(mainnet) to [L2_CROSS_DOMAIN_MESSENGER](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000007#code)(Optimism). -Once the state is `L2_CROSS_DOMAIN_MESSENGER` on Optimism it will queue the payload on [OPTIMISM_BRIDGE_EXECUTOR](https://optimistic.etherscan.io/address/0x7d9103572bE58FfE99dc390E8246f02dcAe6f611). - -### Metis - -Similar to Optimism, for a proposal to be executed on Metis it needs to pass a mainnet governance proposal that sends an encoded payload via `sendMessage(address,bytes,uint32)` on [L1_CROSS_DOMAIN_MESSENGER](https://etherscan.io/address/0x081D1101855bD523bA69A9794e0217F0DB6323ff)(mainnet) to [L2_CROSS_DOMAIN_MESSENGER](https://andromeda-explorer.metis.io/address/0x4200000000000000000000000000000000000007)(Metis). -Once the state is `L2_CROSS_DOMAIN_MESSENGER` on Metis it will queue the payload on [METIS_BRIDGE_EXECUTOR](https://andromeda-explorer.metis.io/address/0x8EC77963068474a45016938Deb95E603Ca82a029). - -Caveat: Opposed to the other messenger like on Optimism, using the Metis messenger requires a whitelist by the Metis team. The [SHORT_EXECUTOR](https://etherscan.io/address/0xEE56e2B3D491590B5b31738cC34d5232F378a8D5) has been whitelisted to use the messenger. Also, the gas to queue the payload by the messenger has been hardcoded to 5 million, which seems reasonable considering the queue transaction. Unlike Optimism, the Metis messenger has no limit on gas, and everything is prepaid. - -### Arbitrum - -For a proposal to be executed on Arbitrum it needs to pass a mainnet governance proposal that sends an encoded payload via `unsafeCreateRetryableTicket{value: uint256}(address,uint256,uint256,address,address,uint256,uint256,bytes)` on [INBOX](https://etherscan.io/address/0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f)(mainnet). The Arbitrum bridge will then call the bridged calldata via the L2_ALIAS of the mainnet `msg.sender` (in this case is the aliased mainnet governance executor) which will queue the payload on [ARBITRUM_BRIDGE_EXECUTOR](https://arbiscan.io/address/0x7d9103572bE58FfE99dc390E8246f02dcAe6f611). - -Caveat: Opposed to the other bridges, Arbitrum inbox bridge requires you to supply some gas. -For simplicity the `CrosschainForwarderArbitrum` expects some eth to be available on the [SHORT_EXECUTOR](https://etherscan.io/address/0xEE56e2B3D491590B5b31738cC34d5232F378a8D5). -You can check if you need to top-up the SHORT_EXECUTOR by calling `getRequiredGas(580)` on the `CrosschainForwarderArbitrum`. - -## Deployed addresses - -### Forwarders - -- [CrosschainForwarderPolygon](https://etherscan.io/address/0x158a6bc04f0828318821bae797f50b0a1299d45b#code) -- [CrosschainForwarderOptimism](https://etherscan.io/address/0x5f5c02875a8e9b5a26fbd09040abcfdeb2aa6711#code) -- [CrosschainForwarderMetis](https://etherscan.io/address/0x2fE52eF191F0BE1D98459BdaD2F1d3160336C08f#code) -- [CrosschainForwarderArbitrum](https://etherscan.io/address/0x2e2B1F112C4D79A9D22464F0D345dE9b792705f1#code) - -## References - -- [PolygonBridge: FxRoot](https://etherscan.io/address/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2#code) -- [PolygonBridge: PolygonBridgeExecutor](https://polygonscan.com/address/0xdc9A35B16DB4e126cFeDC41322b3a36454B1F772#code) - -- [OptimismBridge: L1CrossDomainMessenger](https://etherscan.io/address/0x25ace71c97b33cc4729cf772ae268934f7ab5fa1#readProxyContract) -- [OptimismBridge: OptimismBridgeExecutor](https://optimistic.etherscan.io/address/0x7d9103572be58ffe99dc390e8246f02dcae6f611#code) - -- [MetisBridge: L1CrossDomainMessenger](https://etherscan.io/address/0x081D1101855bD523bA69A9794e0217F0DB6323ff#code) -- [MetisBridge: MetisBridgeExecutor](https://andromeda-explorer.metis.io/address/0x8EC77963068474a45016938Deb95E603Ca82a029/contracts#address-tabs) - -- [ArbitrumBridge: Inbox](https://etherscan.io/address/0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f#code) -- [ArtitrumBridge: ArbitrumBridgeExecutor](https://arbiscan.io/address/0x7d9103572be58ffe99dc390e8246f02dcae6f611#code) - -- [aave crosschain-bridge repository](https://github.com/aave/governance-crosschain-bridges#polygon-governance-bridge) -- [first ever Polygon bridge proposal](https://github.com/pakim249CAL/Polygon-Asset-Deployment-Generic-Executor) diff --git a/src/crosschainforwarders/bridge-listing.png b/src/crosschainforwarders/bridge-listing.png deleted file mode 100644 index 2ffb59451..000000000 Binary files a/src/crosschainforwarders/bridge-listing.png and /dev/null differ diff --git a/tests/GovV3Test.t.sol b/tests/GovV3Test.t.sol index 845ff6452..2e94480dd 100644 --- a/tests/GovV3Test.t.sol +++ b/tests/GovV3Test.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.0; import 'forge-std/Test.sol'; import {IVotingMachineWithProofs, GovV3Helpers, PayloadsControllerUtils, IPayloadsControllerCore, GovV3StorageHelpers, IGovernanceCore} from '../src/GovV3Helpers.sol'; -import {GovHelpers} from '../src/GovHelpers.sol'; import {ProtocolV3TestBase} from '../src/ProtocolV3TestBase.sol'; import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol'; diff --git a/tests/crosschainforwarders/ArbitrumCrossChainForwarderTest.t.sol b/tests/crosschainforwarders/ArbitrumCrossChainForwarderTest.t.sol deleted file mode 100644 index c6301ca72..000000000 --- a/tests/crosschainforwarders/ArbitrumCrossChainForwarderTest.t.sol +++ /dev/null @@ -1,151 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import 'forge-std/Test.sol'; -import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; -import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol'; -import {AaveGovernanceV2, IExecutorWithTimelock} from 'aave-address-book/AaveGovernanceV2.sol'; -import {AddressAliasHelper} from 'governance-crosschain-bridges/contracts/dependencies/arbitrum/AddressAliasHelper.sol'; -import {IInbox} from 'governance-crosschain-bridges/contracts/dependencies/arbitrum/interfaces/IInbox.sol'; -import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol'; -import {GovHelpers} from '../../src/GovHelpers.sol'; -import {ProtocolV3TestBase, ReserveConfig, ReserveTokens, IERC20} from '../../src/ProtocolV3TestBase.sol'; -import {ProtocolV3TestBase, ReserveConfig} from '../../src/ProtocolV3TestBase.sol'; -import {CrosschainForwarderArbitrum} from '../../src/crosschainforwarders/CrosschainForwarderArbitrum.sol'; -import {PayloadWithEmit} from '../mocks/PayloadWithEmit.sol'; - -/** - * This test covers syncing between mainnet and arbitrum. - */ -contract ArbitrumCrossChainForwarderTest is ProtocolV3TestBase { - event TestEvent(); - - // the identifiers of the forks - uint256 mainnetFork; - uint256 arbitrumFork; - - PayloadWithEmit public payloadWithEmit; - - IInbox public constant INBOX = IInbox(0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f); - - address public constant ARBITRUM_BRIDGE_EXECUTOR = AaveGovernanceV2.ARBITRUM_BRIDGE_EXECUTOR; - - uint256 public constant MESSAGE_LENGTH = 580; - - CrosschainForwarderArbitrum public forwarder; - - function setUp() public { - mainnetFork = vm.createSelectFork(vm.rpcUrl('mainnet'), 16128510); - forwarder = new CrosschainForwarderArbitrum(); - arbitrumFork = vm.createSelectFork(vm.rpcUrl('arbitrum'), 76261612); - payloadWithEmit = new PayloadWithEmit(); - } - - // utility to transform memory to calldata so array range access is available - function _cutBytes(bytes calldata input) public pure returns (bytes calldata) { - return input[64:]; - } - - function testHasSufficientGas() public { - vm.selectFork(mainnetFork); - assertEq(AaveGovernanceV2.SHORT_EXECUTOR.balance, 0); - (bool hasEnoughGasBefore, ) = forwarder.hasSufficientGasForExecution(580); - assertEq(hasEnoughGasBefore, false); - deal(address(AaveGovernanceV2.SHORT_EXECUTOR), 0.001 ether); - (bool hasEnoughGasAfter, ) = forwarder.hasSufficientGasForExecution(580); - assertEq(hasEnoughGasAfter, true); - } - - function testgetGetMaxSubmissionCost() public { - vm.selectFork(mainnetFork); - (uint256 maxSubmission, ) = forwarder.getRequiredGas(580); - assertGt(maxSubmission, 0); - } - - function testProposalE2E() public { - // assumes the short exec will be topped up with some eth to pay for l2 fee - vm.selectFork(mainnetFork); - deal(address(AaveGovernanceV2.SHORT_EXECUTOR), 0.001 ether); - - // 1. create l1 proposal - vm.startPrank(MiscEthereum.ECOSYSTEM_RESERVE); - GovHelpers.Payload[] memory payloads = new GovHelpers.Payload[](1); - payloads[0] = GovHelpers.Payload({ - target: address(forwarder), - value: 0, - signature: 'execute(address)', - callData: abi.encode(address(payloadWithEmit)), - withDelegatecall: true - }); - - uint256 proposalId = GovHelpers.createProposal( - payloads, - 0xec9d2289ab7db9bfbf2b0f2dd41ccdc0a4003e9e0d09e40dee09095145c63fb5 - ); - vm.stopPrank(); - - // 2. execute proposal and record logs so we can extract the emitted StateSynced event - vm.recordLogs(); - bytes memory payload = forwarder.getEncodedPayload(address(payloadWithEmit)); - - (uint256 maxSubmission, ) = forwarder.getRequiredGas(580); - // check ticket is created correctly - vm.expectCall( - address(INBOX), - abi.encodeCall( - IInbox.unsafeCreateRetryableTicket, - ( - ARBITRUM_BRIDGE_EXECUTOR, - 0, - maxSubmission, - forwarder.ARBITRUM_BRIDGE_EXECUTOR(), - forwarder.ARBITRUM_GUARDIAN(), - forwarder.L2_GAS_LIMIT(), - forwarder.L2_MAX_FEE_PER_GAS(), - payload - ) - ) - ); - GovHelpers.passVoteAndExecute(vm, proposalId); - - // check events are emitted correctly - Vm.Log[] memory entries = vm.getRecordedLogs(); - assertEq(keccak256('InboxMessageDelivered(uint256,bytes)'), entries[3].topics[0]); - // uint256 messageId = uint256(entries[3].topics[1]); - ( - address to, - uint256 callvalue, - uint256 value, - uint256 maxSubmissionCost, - address excessFeeRefundAddress, - address callValueRefundAddress, - uint256 maxGas, - uint256 gasPriceBid, - uint256 length - ) = abi.decode( - this._cutBytes(entries[3].data), - (address, uint256, uint256, uint256, address, address, uint256, uint256, uint256) - ); - assertEq(callvalue, 0); - assertEq(value > 0, true); - assertEq(maxSubmissionCost > 0, true); - assertEq(to, ARBITRUM_BRIDGE_EXECUTOR); - assertEq(excessFeeRefundAddress, ARBITRUM_BRIDGE_EXECUTOR); - assertEq(callValueRefundAddress, forwarder.ARBITRUM_GUARDIAN()); - assertEq(maxGas, forwarder.L2_GAS_LIMIT()); - assertEq(gasPriceBid, forwarder.L2_MAX_FEE_PER_GAS()); - assertEq(length, 580); - - // 3. mock the queuing on l2 with the data emitted on InboxMessageDelivered - vm.selectFork(arbitrumFork); - vm.startPrank(AddressAliasHelper.applyL1ToL2Alias(AaveGovernanceV2.SHORT_EXECUTOR)); - - (bool success, ) = ARBITRUM_BRIDGE_EXECUTOR.call(payload); - assertEq(success, true); - vm.stopPrank(); - // 4. execute the proposal - vm.expectEmit(true, true, true, true); - emit TestEvent(); - GovHelpers.executeLatestActionSet(vm, ARBITRUM_BRIDGE_EXECUTOR); - } -} diff --git a/tests/crosschainforwarders/MetisCrossChainForwarderTest.t.sol b/tests/crosschainforwarders/MetisCrossChainForwarderTest.t.sol deleted file mode 100644 index 9b59fb8e2..000000000 --- a/tests/crosschainforwarders/MetisCrossChainForwarderTest.t.sol +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import 'forge-std/Test.sol'; -import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; -import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; -import {IL2CrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/IL2CrossDomainMessenger.sol'; -import {GovHelpers} from '../../src/GovHelpers.sol'; -import {ProtocolV3TestBase} from '../../src/ProtocolV3TestBase.sol'; -import {CrosschainForwarderMetis} from '../../src/crosschainforwarders/CrosschainForwarderMetis.sol'; -import {PayloadWithEmit} from '../mocks/PayloadWithEmit.sol'; - -/** - * This test covers syncing between mainnet and metis. - */ -contract MetisCrossChainForwarderTest is ProtocolV3TestBase { - event TestEvent(); - // the identifiers of the forks - uint256 mainnetFork; - uint256 metisFork; - - address public constant METIS_BRIDGE_EXECUTOR = AaveGovernanceV2.METIS_BRIDGE_EXECUTOR; - - IL2CrossDomainMessenger public OVM_L2_CROSS_DOMAIN_MESSENGER = - IL2CrossDomainMessenger(0x4200000000000000000000000000000000000007); - - PayloadWithEmit public payloadWithEmit; - - CrosschainForwarderMetis public forwarder; - - function setUp() public { - mainnetFork = vm.createSelectFork(vm.rpcUrl('mainnet'), 17093477); - forwarder = new CrosschainForwarderMetis(); - metisFork = vm.createSelectFork(vm.rpcUrl('metis'), 5428548); - payloadWithEmit = new PayloadWithEmit(); - } - - function testProposalE2E() public { - // 1. create l1 proposal - vm.selectFork(mainnetFork); - vm.startPrank(MiscEthereum.ECOSYSTEM_RESERVE); - GovHelpers.Payload[] memory payloads = new GovHelpers.Payload[](1); - payloads[0] = GovHelpers.Payload({ - target: address(forwarder), - value: 0, - signature: 'execute(address)', - callData: abi.encode(address(payloadWithEmit)), - withDelegatecall: true - }); - - uint256 proposalId = GovHelpers.createProposal(payloads, 'ipfs'); - vm.stopPrank(); - - // 2. execute proposal and record logs so we can extract the emitted StateSynced event - vm.recordLogs(); - GovHelpers.passVoteAndExecute(vm, proposalId); - Vm.Log[] memory entries = vm.getRecordedLogs(); - assertEq( - keccak256('SentMessage(address,address,bytes,uint256,uint256,uint256)'), - entries[3].topics[0] - ); - assertEq(address(uint160(uint256(entries[3].topics[1]))), METIS_BRIDGE_EXECUTOR); - (address sender, bytes memory message, uint256 nonce) = abi.decode( - entries[3].data, - (address, bytes, uint256) - ); - - // 3. mock the receive on l2 with the data emitted on StateSynced - vm.selectFork(metisFork); - vm.startPrank(0x192E1101855bD523Ba69a9794e0217f0Db633510); // AddressAliasHelper.applyL1ToL2Alias on L1_CROSS_DOMAIN_MESSENGER_ADDRESS - OVM_L2_CROSS_DOMAIN_MESSENGER.relayMessage(METIS_BRIDGE_EXECUTOR, sender, message, nonce); - vm.stopPrank(); - - // 4. execute proposal on l2 - vm.expectEmit(true, true, true, true); - emit TestEvent(); - GovHelpers.executeLatestActionSet(vm, METIS_BRIDGE_EXECUTOR); - } -} diff --git a/tests/crosschainforwarders/OptimismCrossChainForwarderTest.t.sol b/tests/crosschainforwarders/OptimismCrossChainForwarderTest.t.sol deleted file mode 100644 index 982a70c33..000000000 --- a/tests/crosschainforwarders/OptimismCrossChainForwarderTest.t.sol +++ /dev/null @@ -1,81 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import 'forge-std/Test.sol'; -import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; -import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol'; -import {AaveGovernanceV2, IExecutorWithTimelock} from 'aave-address-book/AaveGovernanceV2.sol'; -import {AddressAliasHelper} from 'governance-crosschain-bridges/contracts/dependencies/arbitrum/AddressAliasHelper.sol'; -import {IL2CrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/IL2CrossDomainMessenger.sol'; -import {GovHelpers} from '../../src/GovHelpers.sol'; -import {ProtocolV3TestBase, ReserveConfig, ReserveTokens, IERC20} from '../../src/ProtocolV3TestBase.sol'; -import {CrosschainForwarderOptimism} from '../../src/crosschainforwarders/CrosschainForwarderOptimism.sol'; -import {PayloadWithEmit} from '../mocks/PayloadWithEmit.sol'; - -/** - * This test covers syncing between mainnet and optimism. - */ -contract OptimismCrossChainForwarderTest is ProtocolV3TestBase { - event TestEvent(); - // the identifiers of the forks - uint256 mainnetFork; - uint256 optimismFork; - - address public constant OPTIMISM_BRIDGE_EXECUTOR = AaveGovernanceV2.OPTIMISM_BRIDGE_EXECUTOR; - - IL2CrossDomainMessenger public OVM_L2_CROSS_DOMAIN_MESSENGER = - IL2CrossDomainMessenger(0x4200000000000000000000000000000000000007); - - PayloadWithEmit public payloadWithEmit; - - CrosschainForwarderOptimism public forwarder; - - function setUp() public { - mainnetFork = vm.createSelectFork(vm.rpcUrl('mainnet'), 15783218); - forwarder = new CrosschainForwarderOptimism(); - optimismFork = vm.createSelectFork(vm.rpcUrl('optimism'), 30264427); - payloadWithEmit = new PayloadWithEmit(); - } - - function testProposalE2E() public { - // 1. create l1 proposal - vm.selectFork(mainnetFork); - vm.startPrank(MiscEthereum.ECOSYSTEM_RESERVE); - GovHelpers.Payload[] memory payloads = new GovHelpers.Payload[](1); - payloads[0] = GovHelpers.Payload({ - value: 0, - withDelegatecall: true, - target: address(forwarder), - signature: 'execute(address)', - callData: abi.encode(address(payloadWithEmit)) - }); - - uint256 proposalId = GovHelpers.createProposal( - payloads, - 0x7ecafb3b0b7e418336cccb0c82b3e25944011bf11e41f8dc541841da073fe4f1 - ); - vm.stopPrank(); - - // 2. execute proposal and record logs so we can extract the emitted StateSynced event - vm.recordLogs(); - GovHelpers.passVoteAndExecute(vm, proposalId); - Vm.Log[] memory entries = vm.getRecordedLogs(); - assertEq(keccak256('SentMessage(address,address,bytes,uint256,uint256)'), entries[3].topics[0]); - assertEq(address(uint160(uint256(entries[3].topics[1]))), OPTIMISM_BRIDGE_EXECUTOR); - (address sender, bytes memory message, uint256 nonce) = abi.decode( - entries[3].data, - (address, bytes, uint256) - ); - - // 3. mock the receive on l2 with the data emitted on StateSynced - vm.selectFork(optimismFork); - vm.startPrank(0x36BDE71C97B33Cc4729cf772aE268934f7AB70B2); // AddressAliasHelper.applyL1ToL2Alias on L1_CROSS_DOMAIN_MESSENGER_ADDRESS - OVM_L2_CROSS_DOMAIN_MESSENGER.relayMessage(OPTIMISM_BRIDGE_EXECUTOR, sender, message, nonce); - vm.stopPrank(); - - // 4. execute proposal on l2 - vm.expectEmit(true, true, true, true); - emit TestEvent(); - GovHelpers.executeLatestActionSet(vm, OPTIMISM_BRIDGE_EXECUTOR); - } -} diff --git a/tests/crosschainforwarders/PolygonCrossChainForwarderTest.t.sol b/tests/crosschainforwarders/PolygonCrossChainForwarderTest.t.sol deleted file mode 100644 index c0059134f..000000000 --- a/tests/crosschainforwarders/PolygonCrossChainForwarderTest.t.sol +++ /dev/null @@ -1,86 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import 'forge-std/Test.sol'; -import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; -import {AaveV3Polygon} from 'aave-address-book/AaveV3Polygon.sol'; -import {AaveGovernanceV2, IExecutorWithTimelock} from 'aave-address-book/AaveGovernanceV2.sol'; -import {IStateReceiver} from 'governance-crosschain-bridges/contracts/dependencies/polygon/fxportal/FxChild.sol'; -import {GovHelpers} from '../../src/GovHelpers.sol'; -import {ProtocolV3TestBase, ReserveConfig, ReserveTokens, IERC20} from '../../src/ProtocolV3TestBase.sol'; -import {CrosschainForwarderPolygon} from '../../src/crosschainforwarders/CrosschainForwarderPolygon.sol'; -import {PayloadWithEmit} from '../mocks/PayloadWithEmit.sol'; - -/** - * This test covers syncing between mainnet and polygon. - */ -contract PolygonCrossChainForwarderTest is ProtocolV3TestBase { - event TestEvent(); - // the identifiers of the forks - uint256 mainnetFork; - uint256 polygonFork; - - address public constant BRIDGE_ADMIN = 0x0000000000000000000000000000000000001001; - - address public constant FX_CHILD_ADDRESS = 0x8397259c983751DAf40400790063935a11afa28a; - - address public constant POLYGON_BRIDGE_EXECUTOR = AaveGovernanceV2.POLYGON_BRIDGE_EXECUTOR; - - PayloadWithEmit public payloadWithEmit; - - CrosschainForwarderPolygon public forwarder; - - function setUp() public { - mainnetFork = vm.createSelectFork(vm.rpcUrl('mainnet'), 15275388); - forwarder = new CrosschainForwarderPolygon(); - polygonFork = vm.createSelectFork(vm.rpcUrl('polygon'), 31507646); - payloadWithEmit = new PayloadWithEmit(); - } - - // utility to transform memory to calldata so array range access is available - function _cutBytes(bytes calldata input) public pure returns (bytes calldata) { - return input[64:]; - } - - function testProposalE2E() public { - // 1. create l1 proposal - vm.selectFork(mainnetFork); - vm.startPrank(MiscEthereum.ECOSYSTEM_RESERVE); - GovHelpers.Payload[] memory payloads = new GovHelpers.Payload[](1); - payloads[0] = GovHelpers.Payload({ - value: 0, - withDelegatecall: true, - target: address(forwarder), - signature: 'execute(address)', - callData: abi.encode(address(payloadWithEmit)) - }); - - uint256 proposalId = GovHelpers.createProposal( - payloads, - 0xf6e50d5a3f824f5ab4ffa15fb79f4fa1871b8bf7af9e9b32c1aaaa9ea633006d - ); - vm.stopPrank(); - - // 2. execute proposal and record logs so we can extract the emitted StateSynced event - vm.recordLogs(); - GovHelpers.passVoteAndExecute(vm, proposalId); - - Vm.Log[] memory entries = vm.getRecordedLogs(); - assertEq(keccak256('StateSynced(uint256,address,bytes)'), entries[2].topics[0]); - assertEq(address(uint160(uint256(entries[2].topics[2]))), FX_CHILD_ADDRESS); - - // 3. mock the receive on l2 with the data emitted on StateSynced - vm.selectFork(polygonFork); - vm.startPrank(BRIDGE_ADMIN); - IStateReceiver(FX_CHILD_ADDRESS).onStateReceive( - uint256(entries[2].topics[1]), - this._cutBytes(entries[2].data) - ); - vm.stopPrank(); - - // 4. Forward time & execute proposal - vm.expectEmit(true, true, true, true); - emit TestEvent(); - GovHelpers.executeLatestActionSet(vm, POLYGON_BRIDGE_EXECUTOR); - } -} diff --git a/tests/v2-config-engine/AaveV2ConfigEngineTest.t.sol b/tests/v2-config-engine/AaveV2ConfigEngineTest.t.sol index 7d87b2b58..97b7e700d 100644 --- a/tests/v2-config-engine/AaveV2ConfigEngineTest.t.sol +++ b/tests/v2-config-engine/AaveV2ConfigEngineTest.t.sol @@ -7,16 +7,14 @@ import {DeployV2EngineEthLib} from '../../scripts/AaveV2ConfigEngine.s.sol'; import {DeployV2RatesFactoryEthLib} from '../../scripts/V2RateStrategyFactory.s.sol'; import {AaveV2Ethereum} from 'aave-address-book/AaveAddressBook.sol'; import {AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; -import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; import {IV2RateStrategyFactory} from '../../src/v2-config-engine/IV2RateStrategyFactory.sol'; -import {GovHelpers} from '../../src/GovHelpers.sol'; import '../../src/ProtocolV2TestBase.sol'; contract AaveV2ConfigEngineTest is ProtocolV2TestBase { using stdStorage for StdStorage; function testV2RateStrategiesUpdates() public { - vm.createSelectFork(vm.rpcUrl('mainnet'), 16727659); + vm.createSelectFork(vm.rpcUrl('mainnet'), 19036639); (address ratesFactory, ) = DeployV2RatesFactoryEthLib.deploy(); IAaveV2ConfigEngine engine = IAaveV2ConfigEngine(DeployV2EngineEthLib.deploy(ratesFactory)); @@ -32,7 +30,7 @@ contract AaveV2ConfigEngineTest is ProtocolV2TestBase { createConfigurationSnapshot('preTestV2RatesUpdates', AaveV2Ethereum.POOL); - GovHelpers.executePayload(vm, address(payload), AaveGovernanceV2.SHORT_EXECUTOR); + executePayload(vm, address(payload)); createConfigurationSnapshot('postTestV2RatesUpdates', AaveV2Ethereum.POOL); diff --git a/tests/v3-config-engine/AaveV3ConfigEngineGauntletProposal.t.sol b/tests/v3-config-engine/AaveV3ConfigEngineGauntletProposal.t.sol deleted file mode 100644 index d81ac6560..000000000 --- a/tests/v3-config-engine/AaveV3ConfigEngineGauntletProposal.t.sol +++ /dev/null @@ -1,103 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import 'forge-std/Test.sol'; - -import {AaveV3Polygon, AaveV3PolygonAssets} from 'aave-address-book/AaveV3Polygon.sol'; -import {AaveV3Avalanche, AaveV3AvalancheAssets} from 'aave-address-book/AaveV3Avalanche.sol'; -import {AaveV3Optimism, AaveV3OptimismAssets} from 'aave-address-book/AaveV3Optimism.sol'; -import {AaveV3Arbitrum, AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol'; -import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol'; -import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; -import {IAaveV3ConfigEngine} from '../../src/v3-config-engine/IAaveV3ConfigEngine.sol'; -import {AaveV3PolygonRatesUpdates070322} from '../mocks/gauntlet-updates/AaveV3PolygonRatesUpdates070322.sol'; -import {AaveV3AvalancheRatesUpdates070322} from '../mocks/gauntlet-updates/AaveV3AvalancheRatesUpdates070322.sol'; -import {AaveV3OptimismRatesUpdates070322} from '../mocks/gauntlet-updates/AaveV3OptimismRatesUpdates070322.sol'; -import {AaveV3ArbitrumRatesUpdates070322} from '../mocks/gauntlet-updates/AaveV3ArbitrumRatesUpdates070322.sol'; -import {DeployEnginePolLib, DeployEngineEthLib, DeployEngineAvaLib, DeployEngineOptLib, DeployEngineArbLib} from '../../scripts/AaveV3ConfigEngine.s.sol'; -import {GovHelpers} from '../../src/GovHelpers.sol'; -import '../../src/ProtocolV3TestBase.sol'; - -contract AaveV3PolygonConfigEngineRatesTest is ProtocolV3TestBase { - using stdStorage for StdStorage; - - function setUp() public { - vm.createSelectFork(vm.rpcUrl('polygon'), 40074125); - } - - function testEngine() public { - IAaveV3ConfigEngine engine = IAaveV3ConfigEngine(0xE202F2fc4b6A37Ba53cfD15bE42a762A645FCA07); - AaveV3PolygonRatesUpdates070322 payload = new AaveV3PolygonRatesUpdates070322(engine); - - createConfigurationSnapshot('preTestEnginePolV3Gauntlet', AaveV3Polygon.POOL); - - GovHelpers.executePayload(vm, address(payload), AaveGovernanceV2.POLYGON_BRIDGE_EXECUTOR); - - createConfigurationSnapshot('postTestEnginePolV3Gauntlet', AaveV3Polygon.POOL); - - diffReports('preTestEnginePolV3Gauntlet', 'postTestEnginePolV3Gauntlet'); - } -} - -contract AaveV3AvalancheConfigEngineRatesTest is ProtocolV3TestBase { - using stdStorage for StdStorage; - - function setUp() public { - vm.createSelectFork(vm.rpcUrl('avalanche'), 27134232); - } - - function testEngine() public { - IAaveV3ConfigEngine engine = IAaveV3ConfigEngine(0x49581e5575F49263f556b91daf8fb41D7854D94B); - AaveV3AvalancheRatesUpdates070322 payload = new AaveV3AvalancheRatesUpdates070322(engine); - - createConfigurationSnapshot('preTestEngineAvaV3Gauntlet', AaveV3Avalanche.POOL); - - GovHelpers.executePayload(vm, address(payload), 0xa35b76E4935449E33C56aB24b23fcd3246f13470); // Aave Avalanche's Guardian - - createConfigurationSnapshot('postTestEngineAvaV3Gauntlet', AaveV3Avalanche.POOL); - - diffReports('preTestEngineAvaV3Gauntlet', 'postTestEngineAvaV3Gauntlet'); - } -} - -contract AaveV3OptimismConfigEngineRatesTest is ProtocolV3TestBase { - using stdStorage for StdStorage; - - function setUp() public { - vm.createSelectFork(vm.rpcUrl('optimism'), 79074228); - } - - function testEngine() public { - IAaveV3ConfigEngine engine = IAaveV3ConfigEngine(0x7A9A9c14B35E58ffa1cC84aB421acE0FdcD289E3); - AaveV3OptimismRatesUpdates070322 payload = new AaveV3OptimismRatesUpdates070322(engine); - - createConfigurationSnapshot('preTestEngineOptV3Gauntlet', AaveV3Optimism.POOL); - - GovHelpers.executePayload(vm, address(payload), AaveGovernanceV2.OPTIMISM_BRIDGE_EXECUTOR); - - createConfigurationSnapshot('postTestEngineOptV3Gauntlet', AaveV3Optimism.POOL); - - diffReports('preTestEngineOptV3Gauntlet', 'postTestEngineOptV3Gauntlet'); - } -} - -contract AaveV3ArbitrumConfigEngineRatesTest is ProtocolV3TestBase { - using stdStorage for StdStorage; - - function setUp() public { - vm.createSelectFork(vm.rpcUrl('arbitrum'), 67634819); - } - - function testEngine() public { - IAaveV3ConfigEngine engine = IAaveV3ConfigEngine(0x0EfdfC1A940DE4E7E6acC9Bb801481f81B17fd20); - AaveV3ArbitrumRatesUpdates070322 payload = new AaveV3ArbitrumRatesUpdates070322(engine); - - createConfigurationSnapshot('preTestEngineArbV3Gauntlet', AaveV3Arbitrum.POOL); - - GovHelpers.executePayload(vm, address(payload), AaveGovernanceV2.ARBITRUM_BRIDGE_EXECUTOR); - - createConfigurationSnapshot('postTestEngineArbV3Gauntlet', AaveV3Arbitrum.POOL); - - diffReports('preTestEngineArbV3Gauntlet', 'postTestEngineArbV3Gauntlet'); - } -}