diff --git a/.assets/03014f6d7e563bf95e08a254d6612c2a1779bb37.svg b/.assets/03014f6d7e563bf95e08a254d6612c2a1779bb37.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/03014f6d7e563bf95e08a254d6612c2a1779bb37.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.assets/162508ac28f40ef80345b6a915655e49cab178f5.svg b/.assets/162508ac28f40ef80345b6a915655e49cab178f5.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/162508ac28f40ef80345b6a915655e49cab178f5.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/18b03d6f60b9750d02983796033f924a6d918d81.svg b/.assets/18b03d6f60b9750d02983796033f924a6d918d81.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/18b03d6f60b9750d02983796033f924a6d918d81.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/1a2d00464fd0707711f315bbce0579c505aef532.svg b/.assets/1a2d00464fd0707711f315bbce0579c505aef532.svg
deleted file mode 100644
index a64e70f4b..000000000
--- a/.assets/1a2d00464fd0707711f315bbce0579c505aef532.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/1b4c8cf52b3cfc10e92a52e04f08a3ec2809eb88.svg b/.assets/1b4c8cf52b3cfc10e92a52e04f08a3ec2809eb88.svg
deleted file mode 100644
index 92d00d0ae..000000000
--- a/.assets/1b4c8cf52b3cfc10e92a52e04f08a3ec2809eb88.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/1baf85e415bd720bc42ec928d822cffbd4236d90.svg b/.assets/1baf85e415bd720bc42ec928d822cffbd4236d90.svg
deleted file mode 100644
index abbc7c84e..000000000
--- a/.assets/1baf85e415bd720bc42ec928d822cffbd4236d90.svg
+++ /dev/null
@@ -1 +0,0 @@
- Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 90%Optimal 90%
\ No newline at end of file
diff --git a/.assets/1d6c5171b782bed1b660027d0e32763551b52b0b.svg b/.assets/1d6c5171b782bed1b660027d0e32763551b52b0b.svg
deleted file mode 100644
index f9b4dae23..000000000
--- a/.assets/1d6c5171b782bed1b660027d0e32763551b52b0b.svg
+++ /dev/null
@@ -1 +0,0 @@
- Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%100%200%Optimal 40%Optimal 40%
\ No newline at end of file
diff --git a/.assets/1ea1ebb4deb19f90dccb93ec71cdbb222e6987e6.svg b/.assets/1ea1ebb4deb19f90dccb93ec71cdbb222e6987e6.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/1ea1ebb4deb19f90dccb93ec71cdbb222e6987e6.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/1ead2b84ed46bdafcda42d716eb6cd8f54bd190f.svg b/.assets/1ead2b84ed46bdafcda42d716eb6cd8f54bd190f.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/1ead2b84ed46bdafcda42d716eb6cd8f54bd190f.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/249bca66f2e25caf04da3e3bc7e387fbf24599b2.svg b/.assets/249bca66f2e25caf04da3e3bc7e387fbf24599b2.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/249bca66f2e25caf04da3e3bc7e387fbf24599b2.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/2dd6d84168e4068a40122f647020c27ee3e36ed1.svg b/.assets/2dd6d84168e4068a40122f647020c27ee3e36ed1.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/2dd6d84168e4068a40122f647020c27ee3e36ed1.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/35549d646391f9a4cf4c3ec310ca8af022895f36.svg b/.assets/35549d646391f9a4cf4c3ec310ca8af022895f36.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/35549d646391f9a4cf4c3ec310ca8af022895f36.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/36854462871fe9c2159f93144e1db3723476a00a.svg b/.assets/36854462871fe9c2159f93144e1db3723476a00a.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/36854462871fe9c2159f93144e1db3723476a00a.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/41494af0da6f85cabec3c980938db6fcf8b6171f.svg b/.assets/41494af0da6f85cabec3c980938db6fcf8b6171f.svg
new file mode 100644
index 000000000..0694abc70
--- /dev/null
+++ b/.assets/41494af0da6f85cabec3c980938db6fcf8b6171f.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/4973bf64778f4a833728753fe06f9a2fb49bb83a.svg b/.assets/4973bf64778f4a833728753fe06f9a2fb49bb83a.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/4973bf64778f4a833728753fe06f9a2fb49bb83a.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/5509c191e41e4e07dfee46916075efd0ef72e575.svg b/.assets/5509c191e41e4e07dfee46916075efd0ef72e575.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/5509c191e41e4e07dfee46916075efd0ef72e575.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/59123f839c4a9ef1d4a2dab92414c51edb0dd440.svg b/.assets/59123f839c4a9ef1d4a2dab92414c51edb0dd440.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/59123f839c4a9ef1d4a2dab92414c51edb0dd440.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/5a3279c8e6dd036533d94165c42801655131ad2e.svg b/.assets/5a3279c8e6dd036533d94165c42801655131ad2e.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/5a3279c8e6dd036533d94165c42801655131ad2e.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/63d85ef2aae018346bf4ae5d47f0f379ee834a81.svg b/.assets/63d85ef2aae018346bf4ae5d47f0f379ee834a81.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/63d85ef2aae018346bf4ae5d47f0f379ee834a81.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/653491e29dfd224a05277bc1dd2ade1ec791ab18.svg b/.assets/653491e29dfd224a05277bc1dd2ade1ec791ab18.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/653491e29dfd224a05277bc1dd2ade1ec791ab18.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/6d01fe056a30aeab26b9f5ef5c945c6afece8779.svg b/.assets/6d01fe056a30aeab26b9f5ef5c945c6afece8779.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/6d01fe056a30aeab26b9f5ef5c945c6afece8779.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/6f633d9077d080479568e5342fc14c4507401d2f.svg b/.assets/6f633d9077d080479568e5342fc14c4507401d2f.svg
new file mode 100644
index 000000000..2dded68e4
--- /dev/null
+++ b/.assets/6f633d9077d080479568e5342fc14c4507401d2f.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%150%uOptimal 77%uOptimal 77%
\ No newline at end of file
diff --git a/.assets/71713b8fe82177533a16dd37178324b412bce932.svg b/.assets/71713b8fe82177533a16dd37178324b412bce932.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/71713b8fe82177533a16dd37178324b412bce932.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/7298d269e8a08139605b2434246d84d4bb597ec1.svg b/.assets/7298d269e8a08139605b2434246d84d4bb597ec1.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/7298d269e8a08139605b2434246d84d4bb597ec1.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/730507b18b304c390bc2dc9b1602d2b79381b52b.svg b/.assets/730507b18b304c390bc2dc9b1602d2b79381b52b.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/730507b18b304c390bc2dc9b1602d2b79381b52b.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/782488a1b7ee691f80006e3fec1034d79c974a26.svg b/.assets/782488a1b7ee691f80006e3fec1034d79c974a26.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/782488a1b7ee691f80006e3fec1034d79c974a26.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/7f413eb19d11867ae3d39aafa81ed63fb6ea66f6.svg b/.assets/7f413eb19d11867ae3d39aafa81ed63fb6ea66f6.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/7f413eb19d11867ae3d39aafa81ed63fb6ea66f6.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/802730c9c60fb74762e8fc4694ca1350269e22c2.svg b/.assets/802730c9c60fb74762e8fc4694ca1350269e22c2.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/802730c9c60fb74762e8fc4694ca1350269e22c2.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/815175152675989ae95d4f77c383a7d32c223e20.svg b/.assets/815175152675989ae95d4f77c383a7d32c223e20.svg
new file mode 100644
index 000000000..0694abc70
--- /dev/null
+++ b/.assets/815175152675989ae95d4f77c383a7d32c223e20.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/8222c8999b36025f914c1bb8a02deb5adfd09c70.svg b/.assets/8222c8999b36025f914c1bb8a02deb5adfd09c70.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/8222c8999b36025f914c1bb8a02deb5adfd09c70.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/857e4e2fbb6d6dc9100be9ba3b6b134c59ad974b.svg b/.assets/857e4e2fbb6d6dc9100be9ba3b6b134c59ad974b.svg
new file mode 100644
index 000000000..988e727ad
--- /dev/null
+++ b/.assets/857e4e2fbb6d6dc9100be9ba3b6b134c59ad974b.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 80%uOptimal 80%
\ No newline at end of file
diff --git a/.assets/93485682d175032cac8fb5ae7a1c774f7aa5759c.svg b/.assets/93485682d175032cac8fb5ae7a1c774f7aa5759c.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/93485682d175032cac8fb5ae7a1c774f7aa5759c.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/9566c6dd3a1bea1498b3908b4be8b94c971a839d.svg b/.assets/9566c6dd3a1bea1498b3908b4be8b94c971a839d.svg
new file mode 100644
index 000000000..4c7586db1
--- /dev/null
+++ b/.assets/9566c6dd3a1bea1498b3908b4be8b94c971a839d.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 71%uOptimal 71%
\ No newline at end of file
diff --git a/.assets/973f0be01f7b244858ae3b53b46574f4a94ae9e0.svg b/.assets/973f0be01f7b244858ae3b53b46574f4a94ae9e0.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/973f0be01f7b244858ae3b53b46574f4a94ae9e0.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/9837d1a05e27d501bad08ceebf887c7a78cfecbf.svg b/.assets/9837d1a05e27d501bad08ceebf887c7a78cfecbf.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/9837d1a05e27d501bad08ceebf887c7a78cfecbf.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/a3ef299385ac1124f7cfc5453c8e559b4d9229d6.svg b/.assets/a3ef299385ac1124f7cfc5453c8e559b4d9229d6.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/a3ef299385ac1124f7cfc5453c8e559b4d9229d6.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/aa506162e1d3af58a3c1e97ae0dacf0152daf986.svg b/.assets/aa506162e1d3af58a3c1e97ae0dacf0152daf986.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/aa506162e1d3af58a3c1e97ae0dacf0152daf986.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/ad5d77509bc0670471c898f81b8247410aaa1df4.svg b/.assets/ad5d77509bc0670471c898f81b8247410aaa1df4.svg
new file mode 100644
index 000000000..150a67977
--- /dev/null
+++ b/.assets/ad5d77509bc0670471c898f81b8247410aaa1df4.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%100%200%uOptimal 52%uOptimal 52%
\ No newline at end of file
diff --git a/.assets/b0829ff1636279f61942026054feca6f0539bf99.svg b/.assets/b0829ff1636279f61942026054feca6f0539bf99.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/b0829ff1636279f61942026054feca6f0539bf99.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/b2302f89365f5c7a915d77a2d396103d9d630a4e.svg b/.assets/b2302f89365f5c7a915d77a2d396103d9d630a4e.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/b2302f89365f5c7a915d77a2d396103d9d630a4e.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/b262ffb8e1738773ae155739d430077a79451a55.svg b/.assets/b262ffb8e1738773ae155739d430077a79451a55.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/b262ffb8e1738773ae155739d430077a79451a55.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/b3320f3f9b903ba15a3afef70a06f01029f0ac26.svg b/.assets/b3320f3f9b903ba15a3afef70a06f01029f0ac26.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/b3320f3f9b903ba15a3afef70a06f01029f0ac26.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/bab87e261ce14178066782517b478b20a088e4a8.svg b/.assets/bab87e261ce14178066782517b478b20a088e4a8.svg
new file mode 100644
index 000000000..0694abc70
--- /dev/null
+++ b/.assets/bab87e261ce14178066782517b478b20a088e4a8.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/bd3c2469546fb86c1fca744d14fda357059d800c.svg b/.assets/bd3c2469546fb86c1fca744d14fda357059d800c.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/bd3c2469546fb86c1fca744d14fda357059d800c.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/c3b1571e65a2211f7a0d9bc13633a228b24e8311.svg b/.assets/c3b1571e65a2211f7a0d9bc13633a228b24e8311.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/c3b1571e65a2211f7a0d9bc13633a228b24e8311.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/c798f2ae6cd66d545a480539679ef1147397b830.svg b/.assets/c798f2ae6cd66d545a480539679ef1147397b830.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/c798f2ae6cd66d545a480539679ef1147397b830.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/ca4cf56d4a2589f2dfcd6e849a2c7551a972a3ad.svg b/.assets/ca4cf56d4a2589f2dfcd6e849a2c7551a972a3ad.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/ca4cf56d4a2589f2dfcd6e849a2c7551a972a3ad.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/cf73103fe1d4acaf6476fbbdd55f6dd32d91e9cb.svg b/.assets/cf73103fe1d4acaf6476fbbdd55f6dd32d91e9cb.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/cf73103fe1d4acaf6476fbbdd55f6dd32d91e9cb.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/d00cf5b75abfc0d4bae00c4577b8c380da1c9c3f.svg b/.assets/d00cf5b75abfc0d4bae00c4577b8c380da1c9c3f.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/d00cf5b75abfc0d4bae00c4577b8c380da1c9c3f.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/d65fc1c821399427e01bc830bfb9f62b080e1cf4.svg b/.assets/d65fc1c821399427e01bc830bfb9f62b080e1cf4.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/d65fc1c821399427e01bc830bfb9f62b080e1cf4.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/d6ad097e8f4a004470304f7d1ae07dc3c242b121.svg b/.assets/d6ad097e8f4a004470304f7d1ae07dc3c242b121.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/d6ad097e8f4a004470304f7d1ae07dc3c242b121.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/e60c240a1aee12ae0d74072cf2946402382bc43f.svg b/.assets/e60c240a1aee12ae0d74072cf2946402382bc43f.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/e60c240a1aee12ae0d74072cf2946402382bc43f.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/e92d58267609e07263b6342ae7c2e05fdc7e84b7.svg b/.assets/e92d58267609e07263b6342ae7c2e05fdc7e84b7.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/e92d58267609e07263b6342ae7c2e05fdc7e84b7.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/e94f5c80815f2711734095b0eadafd2e3b09ef4b.svg b/.assets/e94f5c80815f2711734095b0eadafd2e3b09ef4b.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/e94f5c80815f2711734095b0eadafd2e3b09ef4b.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/ee650e2faae2d5566154a1aff322be3b91a5cd57.svg b/.assets/ee650e2faae2d5566154a1aff322be3b91a5cd57.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/ee650e2faae2d5566154a1aff322be3b91a5cd57.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/ef55117ceefbc6d6d810e0e5578a4a7e9f292aae.svg b/.assets/ef55117ceefbc6d6d810e0e5578a4a7e9f292aae.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/ef55117ceefbc6d6d810e0e5578a4a7e9f292aae.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/f162feff755824776af6c5dc36827e8ad2a9c67d.svg b/.assets/f162feff755824776af6c5dc36827e8ad2a9c67d.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/f162feff755824776af6c5dc36827e8ad2a9c67d.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/f23f96fab886586256a20855ce2dd7a1566267f0.svg b/.assets/f23f96fab886586256a20855ce2dd7a1566267f0.svg
new file mode 100644
index 000000000..6fedc0f3b
--- /dev/null
+++ b/.assets/f23f96fab886586256a20855ce2dd7a1566267f0.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%20%40%60%80%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/f2f95a4b4513a29b7ce19c748925854dd8f0c741.svg b/.assets/f2f95a4b4513a29b7ce19c748925854dd8f0c741.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/f2f95a4b4513a29b7ce19c748925854dd8f0c741.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/f97fde975a340ec20a967916a1754eee7309d36f.svg b/.assets/f97fde975a340ec20a967916a1754eee7309d36f.svg
new file mode 100644
index 000000000..a1ee31b76
--- /dev/null
+++ b/.assets/f97fde975a340ec20a967916a1754eee7309d36f.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/fa415d85cf3a2a1b266d8754e0257240f664acf4.svg b/.assets/fa415d85cf3a2a1b266d8754e0257240f664acf4.svg
new file mode 100644
index 000000000..0694abc70
--- /dev/null
+++ b/.assets/fa415d85cf3a2a1b266d8754e0257240f664acf4.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 90%uOptimal 90%
\ No newline at end of file
diff --git a/.assets/facf081bdcfeedc751f6987ba20c1f591aa3d9ae.svg b/.assets/facf081bdcfeedc751f6987ba20c1f591aa3d9ae.svg
new file mode 100644
index 000000000..ce9a14432
--- /dev/null
+++ b/.assets/facf081bdcfeedc751f6987ba20c1f591aa3d9ae.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%50%100%uOptimal 80%uOptimal 80%
\ No newline at end of file
diff --git a/.assets/fb0786b31c3f97e0469558c2f0243123d139fd29.svg b/.assets/fb0786b31c3f97e0469558c2f0243123d139fd29.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/fb0786b31c3f97e0469558c2f0243123d139fd29.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/fe86520732db368b1c64316a02dd2c54289f98a1.svg b/.assets/fe86520732db368b1c64316a02dd2c54289f98a1.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/fe86520732db368b1c64316a02dd2c54289f98a1.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/fee6cda63ae61ef578b581e2e081791148973f1c.svg b/.assets/fee6cda63ae61ef578b581e2e081791148973f1c.svg
new file mode 100644
index 000000000..dda81d20f
--- /dev/null
+++ b/.assets/fee6cda63ae61ef578b581e2e081791148973f1c.svg
@@ -0,0 +1,3 @@
+The deployment could not be found on Vercel.
+
+DEPLOYMENT_NOT_FOUND
diff --git a/.assets/ff6afa53063e923502967d99a4191110108e0d3c.svg b/.assets/ff6afa53063e923502967d99a4191110108e0d3c.svg
new file mode 100644
index 000000000..671189bf6
--- /dev/null
+++ b/.assets/ff6afa53063e923502967d99a4191110108e0d3c.svg
@@ -0,0 +1 @@
+ Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%100%200%300%uOptimal 45%uOptimal 45%
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 2f08fc492..fa038decb 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,11 +1,13 @@
{
"cSpell.words": [
"Aave",
+ "Arbitrum",
"bgdlabs",
+ "Borrowable",
"Certora",
- "Arbitrum",
+ "EURS",
"Flashloanable",
- "Borrowable",
+ "GUSD",
"stablecoins",
"usecase"
]
diff --git a/diffs/AaveV2Avalanche_StablecoinIRUpdates_20240322_before_AaveV2Avalanche_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV2Avalanche_StablecoinIRUpdates_20240322_before_AaveV2Avalanche_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..5521af413
--- /dev/null
+++ b/diffs/AaveV2Avalanche_StablecoinIRUpdates_20240322_before_AaveV2Avalanche_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,86 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDC.e ([0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664](https://snowscan.xyz/address/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xa7C0f85c626761eDD0875549aD09E8d3f5446695](https://snowscan.xyz/address/0xa7C0f85c626761eDD0875549aD09E8d3f5446695) | [0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4](https://snowscan.xyz/address/0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/ae7612ca9dd768ff3aee2f745910dc0a19e5fa71.svg) | ![after](/.assets/857e4e2fbb6d6dc9100be9ba3b6b134c59ad974b.svg) |
+
+#### USDT.e ([0xc7198437980c041c805A1EDcbA50c1Ce5db95118](https://snowscan.xyz/address/0xc7198437980c041c805A1EDcbA50c1Ce5db95118))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xa7C0f85c626761eDD0875549aD09E8d3f5446695](https://snowscan.xyz/address/0xa7C0f85c626761eDD0875549aD09E8d3f5446695) | [0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4](https://snowscan.xyz/address/0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/ae7612ca9dd768ff3aee2f745910dc0a19e5fa71.svg) | ![after](/.assets/857e4e2fbb6d6dc9100be9ba3b6b134c59ad974b.svg) |
+
+#### DAI.e ([0xd586E7F844cEa2F87f50152665BCbc2C279D8d70](https://snowscan.xyz/address/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xa7C0f85c626761eDD0875549aD09E8d3f5446695](https://snowscan.xyz/address/0xa7C0f85c626761eDD0875549aD09E8d3f5446695) | [0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4](https://snowscan.xyz/address/0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/ae7612ca9dd768ff3aee2f745910dc0a19e5fa71.svg) | ![after](/.assets/857e4e2fbb6d6dc9100be9ba3b6b134c59ad974b.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664": {
+ "interestRateStrategy": {
+ "from": "0xa7C0f85c626761eDD0875549aD09E8d3f5446695",
+ "to": "0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4"
+ }
+ },
+ "0xc7198437980c041c805A1EDcbA50c1Ce5db95118": {
+ "interestRateStrategy": {
+ "from": "0xa7C0f85c626761eDD0875549aD09E8d3f5446695",
+ "to": "0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4"
+ }
+ },
+ "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": {
+ "interestRateStrategy": {
+ "from": "0xa7C0f85c626761eDD0875549aD09E8d3f5446695",
+ "to": "0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4"
+ }
+ }
+ },
+ "strategies": {
+ "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664": {
+ "address": {
+ "from": "0xa7C0f85c626761eDD0875549aD09E8d3f5446695",
+ "to": "0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xc7198437980c041c805A1EDcbA50c1Ce5db95118": {
+ "address": {
+ "from": "0xa7C0f85c626761eDD0875549aD09E8d3f5446695",
+ "to": "0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": {
+ "address": {
+ "from": "0xa7C0f85c626761eDD0875549aD09E8d3f5446695",
+ "to": "0xb1f13B58D6a3B1aEdB211Db58D9e42d28D09DbF4"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV2Ethereum_StablecoinIRUpdates_20240322_before_AaveV2Ethereum_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV2Ethereum_StablecoinIRUpdates_20240322_before_AaveV2Ethereum_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..3af4df096
--- /dev/null
+++ b/diffs/AaveV2Ethereum_StablecoinIRUpdates_20240322_before_AaveV2Ethereum_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,206 @@
+## Reserve changes
+
+### Reserve altered
+
+#### GUSD ([0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd](https://etherscan.io/address/0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x999F449fEAfaAd78CE5702A9ebc460633478D4a4](https://etherscan.io/address/0x999F449fEAfaAd78CE5702A9ebc460633478D4a4) | [0xfA4dEC495522ea25f617113fA0633a5BeCD4918E](https://etherscan.io/address/0xfA4dEC495522ea25f617113fA0633a5BeCD4918E) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/a87a80755f2166782391624ad468a1446bf0b13d.svg) | ![after](/.assets/c798f2ae6cd66d545a480539679ef1147397b830.svg) |
+
+#### sUSD ([0x57Ab1ec28D129707052df4dF418D58a2D46d5f51](https://etherscan.io/address/0x57Ab1ec28D129707052df4dF418D58a2D46d5f51))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE](https://etherscan.io/address/0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE) | [0xBbE678b3E03E885B477f97af40671c1182582aD4](https://etherscan.io/address/0xBbE678b3E03E885B477f97af40671c1182582aD4) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/ce67cec9fdb677d2a0aadbe4d1ab201dfa660e57.svg) | ![after](/.assets/d6ad097e8f4a004470304f7d1ae07dc3c242b121.svg) |
+
+#### LUSD ([0x5f98805A4E8be255a32880FDeC7F6728C6568bA0](https://etherscan.io/address/0x5f98805A4E8be255a32880FDeC7F6728C6568bA0))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xab7f8ca781C736EB624A9E321cd043F8E6292C96](https://etherscan.io/address/0xab7f8ca781C736EB624A9E321cd043F8E6292C96) | [0x13828736b5e2CcF7811A2012ff9eB3e685a815b2](https://etherscan.io/address/0x13828736b5e2CcF7811A2012ff9eB3e685a815b2) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/162b720585663968afe7fc152291b9068b0e7e2a.svg) | ![after](/.assets/1aacc27adfcd690db39f0bb5d47ab2aca7da4b9f.svg) |
+
+#### DAI ([0x6B175474E89094C44Da98b954EedeAC495271d0F](https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xab7f8ca781C736EB624A9E321cd043F8E6292C96](https://etherscan.io/address/0xab7f8ca781C736EB624A9E321cd043F8E6292C96) | [0x13828736b5e2CcF7811A2012ff9eB3e685a815b2](https://etherscan.io/address/0x13828736b5e2CcF7811A2012ff9eB3e685a815b2) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/162b720585663968afe7fc152291b9068b0e7e2a.svg) | ![after](/.assets/1aacc27adfcd690db39f0bb5d47ab2aca7da4b9f.svg) |
+
+#### FRAX ([0x853d955aCEf822Db058eb8505911ED77F175b99e](https://etherscan.io/address/0x853d955aCEf822Db058eb8505911ED77F175b99e))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE](https://etherscan.io/address/0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE) | [0xBbE678b3E03E885B477f97af40671c1182582aD4](https://etherscan.io/address/0xBbE678b3E03E885B477f97af40671c1182582aD4) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/ce67cec9fdb677d2a0aadbe4d1ab201dfa660e57.svg) | ![after](/.assets/d6ad097e8f4a004470304f7d1ae07dc3c242b121.svg) |
+
+#### USDP ([0x8E870D67F660D95d5be530380D0eC0bd388289E1](https://etherscan.io/address/0x8E870D67F660D95d5be530380D0eC0bd388289E1))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15](https://etherscan.io/address/0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15) | [0x6a39D2996326853Fed73a69F51EC50C941624500](https://etherscan.io/address/0x6a39D2996326853Fed73a69F51EC50C941624500) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/f81f17d43b2be15fb98af31960a68c94692b6cb4.svg) | ![after](/.assets/d00cf5b75abfc0d4bae00c4577b8c380da1c9c3f.svg) |
+
+#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xb72F23adE9b9980c2E731Ca504105fC860643619](https://etherscan.io/address/0xb72F23adE9b9980c2E731Ca504105fC860643619) | [0x6959f4a661FDF1f3405CaDd56d0Af73a4b082Cb2](https://etherscan.io/address/0x6959f4a661FDF1f3405CaDd56d0Af73a4b082Cb2) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/3f55f2c949040cc13cee0d8a8329ed5bb280d3d3.svg) | ![after](/.assets/18b03d6f60b9750d02983796033f924a6d918d81.svg) |
+
+#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99](https://etherscan.io/address/0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99) | [0x65A3De6d805c2A25A8E53e69da6A5a11848f25b3](https://etherscan.io/address/0x65A3De6d805c2A25A8E53e69da6A5a11848f25b3) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/ff2b0e4a102e0124ddc975718bccf3d3a6c8dc9b.svg) | ![after](/.assets/facf081bdcfeedc751f6987ba20c1f591aa3d9ae.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd": {
+ "interestRateStrategy": {
+ "from": "0x999F449fEAfaAd78CE5702A9ebc460633478D4a4",
+ "to": "0xfA4dEC495522ea25f617113fA0633a5BeCD4918E"
+ }
+ },
+ "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51": {
+ "interestRateStrategy": {
+ "from": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE",
+ "to": "0xBbE678b3E03E885B477f97af40671c1182582aD4"
+ }
+ },
+ "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0": {
+ "interestRateStrategy": {
+ "from": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96",
+ "to": "0x13828736b5e2CcF7811A2012ff9eB3e685a815b2"
+ }
+ },
+ "0x6B175474E89094C44Da98b954EedeAC495271d0F": {
+ "interestRateStrategy": {
+ "from": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96",
+ "to": "0x13828736b5e2CcF7811A2012ff9eB3e685a815b2"
+ }
+ },
+ "0x853d955aCEf822Db058eb8505911ED77F175b99e": {
+ "interestRateStrategy": {
+ "from": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE",
+ "to": "0xBbE678b3E03E885B477f97af40671c1182582aD4"
+ }
+ },
+ "0x8E870D67F660D95d5be530380D0eC0bd388289E1": {
+ "interestRateStrategy": {
+ "from": "0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15",
+ "to": "0x6a39D2996326853Fed73a69F51EC50C941624500"
+ }
+ },
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": {
+ "interestRateStrategy": {
+ "from": "0xb72F23adE9b9980c2E731Ca504105fC860643619",
+ "to": "0x6959f4a661FDF1f3405CaDd56d0Af73a4b082Cb2"
+ }
+ },
+ "0xdAC17F958D2ee523a2206206994597C13D831ec7": {
+ "interestRateStrategy": {
+ "from": "0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99",
+ "to": "0x65A3De6d805c2A25A8E53e69da6A5a11848f25b3"
+ }
+ }
+ },
+ "strategies": {
+ "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd": {
+ "address": {
+ "from": "0x999F449fEAfaAd78CE5702A9ebc460633478D4a4",
+ "to": "0xfA4dEC495522ea25f617113fA0633a5BeCD4918E"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51": {
+ "address": {
+ "from": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE",
+ "to": "0xBbE678b3E03E885B477f97af40671c1182582aD4"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0": {
+ "address": {
+ "from": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96",
+ "to": "0x13828736b5e2CcF7811A2012ff9eB3e685a815b2"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x6B175474E89094C44Da98b954EedeAC495271d0F": {
+ "address": {
+ "from": "0xab7f8ca781C736EB624A9E321cd043F8E6292C96",
+ "to": "0x13828736b5e2CcF7811A2012ff9eB3e685a815b2"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x853d955aCEf822Db058eb8505911ED77F175b99e": {
+ "address": {
+ "from": "0x28fc7a5F0e7652B6f5E398F5E656A3eB36a1F3DE",
+ "to": "0xBbE678b3E03E885B477f97af40671c1182582aD4"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x8E870D67F660D95d5be530380D0eC0bd388289E1": {
+ "address": {
+ "from": "0x40a76E018dd4aFe1391F51f0C8c8E4eA70476e15",
+ "to": "0x6a39D2996326853Fed73a69F51EC50C941624500"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": {
+ "address": {
+ "from": "0xb72F23adE9b9980c2E731Ca504105fC860643619",
+ "to": "0x6959f4a661FDF1f3405CaDd56d0Af73a4b082Cb2"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xdAC17F958D2ee523a2206206994597C13D831ec7": {
+ "address": {
+ "from": "0xF02EC9CA513ca505f0F5347E7D784Fa6165F8a99",
+ "to": "0x65A3De6d805c2A25A8E53e69da6A5a11848f25b3"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV2Polygon_StablecoinIRUpdates_20240322_before_AaveV2Polygon_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV2Polygon_StablecoinIRUpdates_20240322_before_AaveV2Polygon_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..01a7d0ce3
--- /dev/null
+++ b/diffs/AaveV2Polygon_StablecoinIRUpdates_20240322_before_AaveV2Polygon_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,86 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDC ([0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174](https://polygonscan.com/address/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x2ad5a608a920E7061ccE38955C89A7c3F4c0aba7](https://polygonscan.com/address/0x2ad5a608a920E7061ccE38955C89A7c3F4c0aba7) | [0x40648f731198AD8ba5757a0bE5DaDaE034ffCf76](https://polygonscan.com/address/0x40648f731198AD8ba5757a0bE5DaDaE034ffCf76) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/9fdcab76edd6660f763ee400838c013faa920e39.svg) | ![after](/.assets/6f633d9077d080479568e5342fc14c4507401d2f.svg) |
+
+#### DAI ([0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063](https://polygonscan.com/address/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xa966adA364E0491520a1235aAA9cf15E08c1Db05](https://polygonscan.com/address/0xa966adA364E0491520a1235aAA9cf15E08c1Db05) | [0xc4d392a7Bfe01E80A07272F5D8a34D49E9cce966](https://polygonscan.com/address/0xc4d392a7Bfe01E80A07272F5D8a34D49E9cce966) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/b8393c809f8dfba89d4623793fa1650416ce5b8b.svg) | ![after](/.assets/9566c6dd3a1bea1498b3908b4be8b94c971a839d.svg) |
+
+#### USDT ([0xc2132D05D31c914a87C6611C10748AEb04B58e8F](https://polygonscan.com/address/0xc2132D05D31c914a87C6611C10748AEb04B58e8F))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x7892E4Db4C172e7Af389677c04c42eE3F8Fd5447](https://polygonscan.com/address/0x7892E4Db4C172e7Af389677c04c42eE3F8Fd5447) | [0x1233847129541c166ad585FaC0727CcBF6cf28eC](https://polygonscan.com/address/0x1233847129541c166ad585FaC0727CcBF6cf28eC) |
+| variableRateSlope1 | 6 % | 12 % |
+| interestRate | ![before](/.assets/7b1a62c7a431a1f0b3ef48d0c3eb32be510352d0.svg) | ![after](/.assets/ad5d77509bc0670471c898f81b8247410aaa1df4.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
+ "interestRateStrategy": {
+ "from": "0x2ad5a608a920E7061ccE38955C89A7c3F4c0aba7",
+ "to": "0x40648f731198AD8ba5757a0bE5DaDaE034ffCf76"
+ }
+ },
+ "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": {
+ "interestRateStrategy": {
+ "from": "0xa966adA364E0491520a1235aAA9cf15E08c1Db05",
+ "to": "0xc4d392a7Bfe01E80A07272F5D8a34D49E9cce966"
+ }
+ },
+ "0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
+ "interestRateStrategy": {
+ "from": "0x7892E4Db4C172e7Af389677c04c42eE3F8Fd5447",
+ "to": "0x1233847129541c166ad585FaC0727CcBF6cf28eC"
+ }
+ }
+ },
+ "strategies": {
+ "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
+ "address": {
+ "from": "0x2ad5a608a920E7061ccE38955C89A7c3F4c0aba7",
+ "to": "0x40648f731198AD8ba5757a0bE5DaDaE034ffCf76"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": {
+ "address": {
+ "from": "0xa966adA364E0491520a1235aAA9cf15E08c1Db05",
+ "to": "0xc4d392a7Bfe01E80A07272F5D8a34D49E9cce966"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
+ "address": {
+ "from": "0x7892E4Db4C172e7Af389677c04c42eE3F8Fd5447",
+ "to": "0x1233847129541c166ad585FaC0727CcBF6cf28eC"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Arbitrum_StablecoinIRUpdates_20240322_before_AaveV3Arbitrum_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Arbitrum_StablecoinIRUpdates_20240322_before_AaveV3Arbitrum_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..d9c24a282
--- /dev/null
+++ b/diffs/AaveV3Arbitrum_StablecoinIRUpdates_20240322_before_AaveV3Arbitrum_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,246 @@
+## Reserve changes
+
+### Reserve altered
+
+#### FRAX ([0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F](https://arbiscan.io/address/0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://arbiscan.io/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) | [0xd56eE97960b1b2953e751151Fd84888cF3F3b521](https://arbiscan.io/address/0xd56eE97960b1b2953e751151Fd84888cF3F3b521) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/471bf36a0704f0fb8e9dd43041d549e5e7198527.svg) | ![after](/.assets/802730c9c60fb74762e8fc4694ca1350269e22c2.svg) |
+
+#### MAI ([0x3F56e0c36d275367b8C502090EDF38289b3dEa0d](https://arbiscan.io/address/0x3F56e0c36d275367b8C502090EDF38289b3dEa0d))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xc77576b02D74BBF9CdC26F3B86FD09d134416df2](https://arbiscan.io/address/0xc77576b02D74BBF9CdC26F3B86FD09d134416df2) | [0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1](https://arbiscan.io/address/0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/5316fd25bc1be6cb09428d8c78d63243d4723c48.svg) | ![after](/.assets/fe86520732db368b1c64316a02dd2c54289f98a1.svg) |
+
+#### LUSD ([0x93b346b6BC2548dA6A1E7d98E9a421B42541425b](https://arbiscan.io/address/0x93b346b6BC2548dA6A1E7d98E9a421B42541425b))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260](https://arbiscan.io/address/0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260) | [0x7448ABeD12d8538efC115af4a417e3d1367180fc](https://arbiscan.io/address/0x7448ABeD12d8538efC115af4a417e3d1367180fc) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/dc936825b052222d6d3ba80110bf44c7c8d27b10.svg) | ![after](/.assets/93485682d175032cac8fb5ae7a1c774f7aa5759c.svg) |
+
+#### EURS ([0xD22a58f79e9481D1a88e00c343885A588b34b68B](https://arbiscan.io/address/0xD22a58f79e9481D1a88e00c343885A588b34b68B))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xCbDC7D7984D7AD59434f0B1999D2006898C40f9A](https://arbiscan.io/address/0xCbDC7D7984D7AD59434f0B1999D2006898C40f9A) | [0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d](https://arbiscan.io/address/0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/6054f48e56c94cd70dffba623df52b47094cb156.svg) | ![after](/.assets/35549d646391f9a4cf4c3ec310ca8af022895f36.svg) |
+
+#### DAI ([0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1](https://arbiscan.io/address/0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://arbiscan.io/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) | [0xd56eE97960b1b2953e751151Fd84888cF3F3b521](https://arbiscan.io/address/0xd56eE97960b1b2953e751151Fd84888cF3F3b521) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/471bf36a0704f0fb8e9dd43041d549e5e7198527.svg) | ![after](/.assets/802730c9c60fb74762e8fc4694ca1350269e22c2.svg) |
+
+#### USDC ([0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8](https://arbiscan.io/address/0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1](https://arbiscan.io/address/0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1) | [0xa8C12113DB50549A1E36FD25982C88B69A0007E0](https://arbiscan.io/address/0xa8C12113DB50549A1E36FD25982C88B69A0007E0) |
+| variableRateSlope1 | 7 % | 12 % |
+| baseStableBorrowRate | 8 % | 13 % |
+| interestRate | ![before](/.assets/7387a2f081b5c6aaea817fa3774fd472edbae392.svg) | ![after](/.assets/bab87e261ce14178066782517b478b20a088e4a8.svg) |
+
+#### USDT ([0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9](https://arbiscan.io/address/0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://arbiscan.io/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) | [0xd56eE97960b1b2953e751151Fd84888cF3F3b521](https://arbiscan.io/address/0xd56eE97960b1b2953e751151Fd84888cF3F3b521) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/471bf36a0704f0fb8e9dd43041d549e5e7198527.svg) | ![after](/.assets/802730c9c60fb74762e8fc4694ca1350269e22c2.svg) |
+
+#### USDC ([0xaf88d065e77c8cC2239327C5EDb3A432268e5831](https://arbiscan.io/address/0xaf88d065e77c8cC2239327C5EDb3A432268e5831))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x06B1Ec378618EA736a65395eA5CAB69A2410493B](https://arbiscan.io/address/0x06B1Ec378618EA736a65395eA5CAB69A2410493B) | [0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f](https://arbiscan.io/address/0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/e18a415b118acfcc7864c3e185449673148c205b.svg) | ![after](/.assets/1ea1ebb4deb19f90dccb93ec71cdbb222e6987e6.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F": {
+ "interestRateStrategy": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ }
+ },
+ "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d": {
+ "interestRateStrategy": {
+ "from": "0xc77576b02D74BBF9CdC26F3B86FD09d134416df2",
+ "to": "0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1"
+ }
+ },
+ "0x93b346b6BC2548dA6A1E7d98E9a421B42541425b": {
+ "interestRateStrategy": {
+ "from": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260",
+ "to": "0x7448ABeD12d8538efC115af4a417e3d1367180fc"
+ }
+ },
+ "0xD22a58f79e9481D1a88e00c343885A588b34b68B": {
+ "interestRateStrategy": {
+ "from": "0xCbDC7D7984D7AD59434f0B1999D2006898C40f9A",
+ "to": "0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d"
+ }
+ },
+ "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": {
+ "interestRateStrategy": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ }
+ },
+ "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8": {
+ "interestRateStrategy": {
+ "from": "0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1",
+ "to": "0xa8C12113DB50549A1E36FD25982C88B69A0007E0"
+ }
+ },
+ "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": {
+ "interestRateStrategy": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ }
+ },
+ "0xaf88d065e77c8cC2239327C5EDb3A432268e5831": {
+ "interestRateStrategy": {
+ "from": "0x06B1Ec378618EA736a65395eA5CAB69A2410493B",
+ "to": "0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f"
+ }
+ }
+ },
+ "strategies": {
+ "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F": {
+ "address": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d": {
+ "address": {
+ "from": "0xc77576b02D74BBF9CdC26F3B86FD09d134416df2",
+ "to": "0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x93b346b6BC2548dA6A1E7d98E9a421B42541425b": {
+ "address": {
+ "from": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260",
+ "to": "0x7448ABeD12d8538efC115af4a417e3d1367180fc"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xD22a58f79e9481D1a88e00c343885A588b34b68B": {
+ "address": {
+ "from": "0xCbDC7D7984D7AD59434f0B1999D2006898C40f9A",
+ "to": "0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": {
+ "address": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8": {
+ "address": {
+ "from": "0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1",
+ "to": "0xa8C12113DB50549A1E36FD25982C88B69A0007E0"
+ },
+ "baseStableBorrowRate": {
+ "from": "80000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "70000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": {
+ "address": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xaf88d065e77c8cC2239327C5EDb3A432268e5831": {
+ "address": {
+ "from": "0x06B1Ec378618EA736a65395eA5CAB69A2410493B",
+ "to": "0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Avalanche_StablecoinIRUpdates_20240322_before_AaveV3Avalanche_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Avalanche_StablecoinIRUpdates_20240322_before_AaveV3Avalanche_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..46a221dfd
--- /dev/null
+++ b/diffs/AaveV3Avalanche_StablecoinIRUpdates_20240322_before_AaveV3Avalanche_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,159 @@
+## Reserve changes
+
+### Reserve altered
+
+#### MAI ([0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b](https://snowscan.xyz/address/0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xD61ca03Eac0352090f45bE50403F7B17d20E11F2](https://snowscan.xyz/address/0xD61ca03Eac0352090f45bE50403F7B17d20E11F2) | [0x049E42fe40368384d04bC10f8494Ea6FD164442a](https://snowscan.xyz/address/0x049E42fe40368384d04bC10f8494Ea6FD164442a) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/f47524384ab6225b87778689e3c6d8287a38de2b.svg) | ![after](/.assets/ff6afa53063e923502967d99a4191110108e0d3c.svg) |
+
+#### USDt ([0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7](https://snowscan.xyz/address/0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e](https://snowscan.xyz/address/0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e) | [0x41365f2aC2D19c3B4Bc691007d314aba80af3669](https://snowscan.xyz/address/0x41365f2aC2D19c3B4Bc691007d314aba80af3669) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/ef89d610edf6a8e63ac63c8bc807752accdabb0c.svg) | ![after](/.assets/1ead2b84ed46bdafcda42d716eb6cd8f54bd190f.svg) |
+
+#### USDC ([0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E](https://snowscan.xyz/address/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x3832311560d3B457E9cC35e5b8e06EB167D8c17D](https://snowscan.xyz/address/0x3832311560d3B457E9cC35e5b8e06EB167D8c17D) | [0xf895e42505E48E3aa83fa41994CBd8d1D006C42B](https://snowscan.xyz/address/0xf895e42505E48E3aa83fa41994CBd8d1D006C42B) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/5982fe691bdce75fb16101b23ef8815d0953520a.svg) | ![after](/.assets/6d01fe056a30aeab26b9f5ef5c945c6afece8779.svg) |
+
+#### FRAX ([0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64](https://snowscan.xyz/address/0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e](https://snowscan.xyz/address/0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e) | [0x41365f2aC2D19c3B4Bc691007d314aba80af3669](https://snowscan.xyz/address/0x41365f2aC2D19c3B4Bc691007d314aba80af3669) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/ef89d610edf6a8e63ac63c8bc807752accdabb0c.svg) | ![after](/.assets/1ead2b84ed46bdafcda42d716eb6cd8f54bd190f.svg) |
+
+#### DAI.e ([0xd586E7F844cEa2F87f50152665BCbc2C279D8d70](https://snowscan.xyz/address/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e](https://snowscan.xyz/address/0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e) | [0x41365f2aC2D19c3B4Bc691007d314aba80af3669](https://snowscan.xyz/address/0x41365f2aC2D19c3B4Bc691007d314aba80af3669) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/ef89d610edf6a8e63ac63c8bc807752accdabb0c.svg) | ![after](/.assets/1ead2b84ed46bdafcda42d716eb6cd8f54bd190f.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b": {
+ "interestRateStrategy": {
+ "from": "0xD61ca03Eac0352090f45bE50403F7B17d20E11F2",
+ "to": "0x049E42fe40368384d04bC10f8494Ea6FD164442a"
+ }
+ },
+ "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7": {
+ "interestRateStrategy": {
+ "from": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e",
+ "to": "0x41365f2aC2D19c3B4Bc691007d314aba80af3669"
+ }
+ },
+ "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E": {
+ "interestRateStrategy": {
+ "from": "0x3832311560d3B457E9cC35e5b8e06EB167D8c17D",
+ "to": "0xf895e42505E48E3aa83fa41994CBd8d1D006C42B"
+ }
+ },
+ "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64": {
+ "interestRateStrategy": {
+ "from": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e",
+ "to": "0x41365f2aC2D19c3B4Bc691007d314aba80af3669"
+ }
+ },
+ "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": {
+ "interestRateStrategy": {
+ "from": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e",
+ "to": "0x41365f2aC2D19c3B4Bc691007d314aba80af3669"
+ }
+ }
+ },
+ "strategies": {
+ "0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b": {
+ "address": {
+ "from": "0xD61ca03Eac0352090f45bE50403F7B17d20E11F2",
+ "to": "0x049E42fe40368384d04bC10f8494Ea6FD164442a"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7": {
+ "address": {
+ "from": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e",
+ "to": "0x41365f2aC2D19c3B4Bc691007d314aba80af3669"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E": {
+ "address": {
+ "from": "0x3832311560d3B457E9cC35e5b8e06EB167D8c17D",
+ "to": "0xf895e42505E48E3aa83fa41994CBd8d1D006C42B"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64": {
+ "address": {
+ "from": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e",
+ "to": "0x41365f2aC2D19c3B4Bc691007d314aba80af3669"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": {
+ "address": {
+ "from": "0x6D6D3b7FC50999bf20dE5CC8e0F63AFD18B95f0e",
+ "to": "0x41365f2aC2D19c3B4Bc691007d314aba80af3669"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3BNB_StablecoinIRUpdates_20240322_before_AaveV3BNB_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3BNB_StablecoinIRUpdates_20240322_before_AaveV3BNB_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..18901eaff
--- /dev/null
+++ b/diffs/AaveV3BNB_StablecoinIRUpdates_20240322_before_AaveV3BNB_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,101 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDT ([0x55d398326f99059fF775485246999027B3197955](https://bscscan.com/address/0x55d398326f99059fF775485246999027B3197955))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xA60d98d1e7C1b5C186c181152AE7412C38ABaC94](https://bscscan.com/address/0xA60d98d1e7C1b5C186c181152AE7412C38ABaC94) | [0x7aD646053aE2A184971dc952Cc680a5a5a0cFB8a](https://bscscan.com/address/0x7aD646053aE2A184971dc952Cc680a5a5a0cFB8a) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/9a2d8ed48d646e3c752ce9f8afc7d70cedc3acaf.svg) | ![after](/.assets/36854462871fe9c2159f93144e1db3723476a00a.svg) |
+
+#### USDC ([0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d](https://bscscan.com/address/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x786c9fF899805fa0813C77CD3228C0e857664E78](https://bscscan.com/address/0x786c9fF899805fa0813C77CD3228C0e857664E78) | [0x0C8c4DbEB2dfA2a3770a54450E9937725D2d3D24](https://bscscan.com/address/0x0C8c4DbEB2dfA2a3770a54450E9937725D2d3D24) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/d96c11a19e37534df160331280d004c75b2fc23a.svg) | ![after](/.assets/782488a1b7ee691f80006e3fec1034d79c974a26.svg) |
+
+#### FDUSD ([0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409](https://bscscan.com/address/0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xDFFD9CDd2eC42099D7086Ff76938C111022014D0](https://bscscan.com/address/0xDFFD9CDd2eC42099D7086Ff76938C111022014D0) | [0xBE6Af4cD3097424BcF5C5BeC3bcEc2017DBCaA86](https://bscscan.com/address/0xBE6Af4cD3097424BcF5C5BeC3bcEc2017DBCaA86) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 9 % | 15 % |
+| interestRate | ![before](/.assets/911a3480b9f792f655a3ba52d4db6447055ff426.svg) | ![after](/.assets/ef55117ceefbc6d6d810e0e5578a4a7e9f292aae.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x55d398326f99059fF775485246999027B3197955": {
+ "interestRateStrategy": {
+ "from": "0xA60d98d1e7C1b5C186c181152AE7412C38ABaC94",
+ "to": "0x7aD646053aE2A184971dc952Cc680a5a5a0cFB8a"
+ }
+ },
+ "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d": {
+ "interestRateStrategy": {
+ "from": "0x786c9fF899805fa0813C77CD3228C0e857664E78",
+ "to": "0x0C8c4DbEB2dfA2a3770a54450E9937725D2d3D24"
+ }
+ },
+ "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409": {
+ "interestRateStrategy": {
+ "from": "0xDFFD9CDd2eC42099D7086Ff76938C111022014D0",
+ "to": "0xBE6Af4cD3097424BcF5C5BeC3bcEc2017DBCaA86"
+ }
+ }
+ },
+ "strategies": {
+ "0x55d398326f99059fF775485246999027B3197955": {
+ "address": {
+ "from": "0xA60d98d1e7C1b5C186c181152AE7412C38ABaC94",
+ "to": "0x7aD646053aE2A184971dc952Cc680a5a5a0cFB8a"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d": {
+ "address": {
+ "from": "0x786c9fF899805fa0813C77CD3228C0e857664E78",
+ "to": "0x0C8c4DbEB2dfA2a3770a54450E9937725D2d3D24"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409": {
+ "address": {
+ "from": "0xDFFD9CDd2eC42099D7086Ff76938C111022014D0",
+ "to": "0xBE6Af4cD3097424BcF5C5BeC3bcEc2017DBCaA86"
+ },
+ "baseStableBorrowRate": {
+ "from": "90000000000000000000000000",
+ "to": "150000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Base_StablecoinIRUpdates_20240322_before_AaveV3Base_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Base_StablecoinIRUpdates_20240322_before_AaveV3Base_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..fe39af337
--- /dev/null
+++ b/diffs/AaveV3Base_StablecoinIRUpdates_20240322_before_AaveV3Base_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,72 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDC ([0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913](https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x136848FdaedEB56245bE0e61E28A3CB8c0B45CaA](https://basescan.org/address/0x136848FdaedEB56245bE0e61E28A3CB8c0B45CaA) | [0xcbF65e0708961Da6Dd3F1A4e1cE17D97D1E8C29A](https://basescan.org/address/0xcbF65e0708961Da6Dd3F1A4e1cE17D97D1E8C29A) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 6 % | 12 % |
+| interestRate | ![before](/.assets/44bd6c5258c27248fabcd09a99dec757454c2a7e.svg) | ![after](/.assets/2dd6d84168e4068a40122f647020c27ee3e36ed1.svg) |
+
+#### USDbC ([0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA](https://basescan.org/address/0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xDBea12F69D3Fcb4Be9FD14dd450AAe2B2a3d4de7](https://basescan.org/address/0xDBea12F69D3Fcb4Be9FD14dd450AAe2B2a3d4de7) | [0x64163263753A9610a391A5D0276ae94B0d42fB75](https://basescan.org/address/0x64163263753A9610a391A5D0276ae94B0d42fB75) |
+| variableRateSlope1 | 7 % | 12 % |
+| baseStableBorrowRate | 8 % | 13 % |
+| interestRate | ![before](/.assets/d79d8eb0abd33ffb877708fe07140ce5c8503360.svg) | ![after](/.assets/41494af0da6f85cabec3c980938db6fcf8b6171f.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": {
+ "interestRateStrategy": {
+ "from": "0x136848FdaedEB56245bE0e61E28A3CB8c0B45CaA",
+ "to": "0xcbF65e0708961Da6Dd3F1A4e1cE17D97D1E8C29A"
+ }
+ },
+ "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": {
+ "interestRateStrategy": {
+ "from": "0xDBea12F69D3Fcb4Be9FD14dd450AAe2B2a3d4de7",
+ "to": "0x64163263753A9610a391A5D0276ae94B0d42fB75"
+ }
+ }
+ },
+ "strategies": {
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": {
+ "address": {
+ "from": "0x136848FdaedEB56245bE0e61E28A3CB8c0B45CaA",
+ "to": "0xcbF65e0708961Da6Dd3F1A4e1cE17D97D1E8C29A"
+ },
+ "baseStableBorrowRate": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": {
+ "address": {
+ "from": "0xDBea12F69D3Fcb4Be9FD14dd450AAe2B2a3d4de7",
+ "to": "0x64163263753A9610a391A5D0276ae94B0d42fB75"
+ },
+ "baseStableBorrowRate": {
+ "from": "80000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "70000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Ethereum_StablecoinIRUpdates_20240322_before_AaveV3Ethereum_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Ethereum_StablecoinIRUpdates_20240322_before_AaveV3Ethereum_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..cbc412f65
--- /dev/null
+++ b/diffs/AaveV3Ethereum_StablecoinIRUpdates_20240322_before_AaveV3Ethereum_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,247 @@
+## Reserve changes
+
+### Reserve altered
+
+#### LUSD ([0x5f98805A4E8be255a32880FDeC7F6728C6568bA0](https://etherscan.io/address/0x5f98805A4E8be255a32880FDeC7F6728C6568bA0))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260](https://etherscan.io/address/0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260) | [0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1](https://etherscan.io/address/0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/dc936825b052222d6d3ba80110bf44c7c8d27b10.svg) | ![after](/.assets/d65fc1c821399427e01bc830bfb9f62b080e1cf4.svg) |
+
+#### DAI ([0x6B175474E89094C44Da98b954EedeAC495271d0F](https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://etherscan.io/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) | [0xa8C12113DB50549A1E36FD25982C88B69A0007E0](https://etherscan.io/address/0xa8C12113DB50549A1E36FD25982C88B69A0007E0) |
+| optimalUsageRatio | 90 % | 92 % |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| maxExcessUsageRatio | 10 % | 8 % |
+| interestRate | ![before](/.assets/471bf36a0704f0fb8e9dd43041d549e5e7198527.svg) | ![after](/.assets/fb0786b31c3f97e0469558c2f0243123d139fd29.svg) |
+
+#### PYUSD ([0x6c3ea9036406852006290770BEdFcAbA0e23A0e8](https://etherscan.io/address/0x6c3ea9036406852006290770BEdFcAbA0e23A0e8))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514](https://etherscan.io/address/0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514) | [0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f](https://etherscan.io/address/0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 9 % | 15 % |
+| interestRate | ![before](/.assets/c907af8377a5e8ffda3acd3fe2ac6aee00eff4ae.svg) | ![after](/.assets/0d46815e8ed0eae8be98be6dac2c0a98c0d89e11.svg) |
+
+#### FRAX ([0x853d955aCEf822Db058eb8505911ED77F175b99e](https://etherscan.io/address/0x853d955aCEf822Db058eb8505911ED77F175b99e))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://etherscan.io/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) | [0x7448ABeD12d8538efC115af4a417e3d1367180fc](https://etherscan.io/address/0x7448ABeD12d8538efC115af4a417e3d1367180fc) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/471bf36a0704f0fb8e9dd43041d549e5e7198527.svg) | ![after](/.assets/ca4cf56d4a2589f2dfcd6e849a2c7551a972a3ad.svg) |
+
+#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1](https://etherscan.io/address/0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1) | [0xd56eE97960b1b2953e751151Fd84888cF3F3b521](https://etherscan.io/address/0xd56eE97960b1b2953e751151Fd84888cF3F3b521) |
+| optimalUsageRatio | 90 % | 92 % |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| maxExcessUsageRatio | 10 % | 8 % |
+| interestRate | ![before](/.assets/cf8cdad86320a216fb48759e63e01741a6ed442d.svg) | ![after](/.assets/0ec2865085d427ed04e5a2f5d75e7885ac1517e2.svg) |
+
+#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xc77576b02D74BBF9CdC26F3B86FD09d134416df2](https://etherscan.io/address/0xc77576b02D74BBF9CdC26F3B86FD09d134416df2) | [0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d](https://etherscan.io/address/0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d) |
+| optimalUsageRatio | 90 % | 92 % |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| maxExcessUsageRatio | 10 % | 8 % |
+| interestRate | ![before](/.assets/2278f5a715be21ce4c1a7931f606c4a368fe286b.svg) | ![after](/.assets/f162feff755824776af6c5dc36827e8ad2a9c67d.svg) |
+
+#### crvUSD ([0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E](https://etherscan.io/address/0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x44CaDF6E49895640D9De85ac01d97D44429Ad0A4](https://etherscan.io/address/0x44CaDF6E49895640D9De85ac01d97D44429Ad0A4) | [0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f](https://etherscan.io/address/0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f) |
+| variableRateSlope1 | 5 % | 12 % |
+| baseStableBorrowRate | 8 % | 15 % |
+| interestRate | ![before](/.assets/964205bd85f6f4e4de171c694a4116a90a534cac.svg) | ![after](/.assets/0d46815e8ed0eae8be98be6dac2c0a98c0d89e11.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0": {
+ "interestRateStrategy": {
+ "from": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260",
+ "to": "0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1"
+ }
+ },
+ "0x6B175474E89094C44Da98b954EedeAC495271d0F": {
+ "interestRateStrategy": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xa8C12113DB50549A1E36FD25982C88B69A0007E0"
+ }
+ },
+ "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8": {
+ "interestRateStrategy": {
+ "from": "0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514",
+ "to": "0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f"
+ }
+ },
+ "0x853d955aCEf822Db058eb8505911ED77F175b99e": {
+ "interestRateStrategy": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0x7448ABeD12d8538efC115af4a417e3d1367180fc"
+ }
+ },
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": {
+ "interestRateStrategy": {
+ "from": "0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ }
+ },
+ "0xdAC17F958D2ee523a2206206994597C13D831ec7": {
+ "interestRateStrategy": {
+ "from": "0xc77576b02D74BBF9CdC26F3B86FD09d134416df2",
+ "to": "0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d"
+ }
+ },
+ "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E": {
+ "interestRateStrategy": {
+ "from": "0x44CaDF6E49895640D9De85ac01d97D44429Ad0A4",
+ "to": "0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f"
+ }
+ }
+ },
+ "strategies": {
+ "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0": {
+ "address": {
+ "from": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260",
+ "to": "0xb96c569Ceb49440731DdD5D8c5E6DA3538f1CBF1"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x6B175474E89094C44Da98b954EedeAC495271d0F": {
+ "address": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0xa8C12113DB50549A1E36FD25982C88B69A0007E0"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "maxExcessUsageRatio": {
+ "from": "100000000000000000000000000",
+ "to": "80000000000000000000000000"
+ },
+ "optimalUsageRatio": {
+ "from": "900000000000000000000000000",
+ "to": "920000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8": {
+ "address": {
+ "from": "0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514",
+ "to": "0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f"
+ },
+ "baseStableBorrowRate": {
+ "from": "90000000000000000000000000",
+ "to": "150000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x853d955aCEf822Db058eb8505911ED77F175b99e": {
+ "address": {
+ "from": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237",
+ "to": "0x7448ABeD12d8538efC115af4a417e3d1367180fc"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": {
+ "address": {
+ "from": "0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1",
+ "to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "maxExcessUsageRatio": {
+ "from": "100000000000000000000000000",
+ "to": "80000000000000000000000000"
+ },
+ "optimalUsageRatio": {
+ "from": "900000000000000000000000000",
+ "to": "920000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xdAC17F958D2ee523a2206206994597C13D831ec7": {
+ "address": {
+ "from": "0xc77576b02D74BBF9CdC26F3B86FD09d134416df2",
+ "to": "0xc7b53C7d24164FB78F57Ea3b5d056bD2E541013d"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "maxExcessUsageRatio": {
+ "from": "100000000000000000000000000",
+ "to": "80000000000000000000000000"
+ },
+ "optimalUsageRatio": {
+ "from": "900000000000000000000000000",
+ "to": "920000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E": {
+ "address": {
+ "from": "0x44CaDF6E49895640D9De85ac01d97D44429Ad0A4",
+ "to": "0xaEc90D2516c79F8Ae7165574a41EC4dF2631b36f"
+ },
+ "baseStableBorrowRate": {
+ "from": "80000000000000000000000000",
+ "to": "150000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "50000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Gnosis_StablecoinIRUpdates_20240322_before_AaveV3Gnosis_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Gnosis_StablecoinIRUpdates_20240322_before_AaveV3Gnosis_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..1567c0740
--- /dev/null
+++ b/diffs/AaveV3Gnosis_StablecoinIRUpdates_20240322_before_AaveV3Gnosis_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,101 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDC ([0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83](https://gnosisscan.io/address/0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xE74CD4ADF9103370144c327457bd294753E2E856](https://gnosisscan.io/address/0xE74CD4ADF9103370144c327457bd294753E2E856) | [0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e](https://gnosisscan.io/address/0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/f4b1b8f3a89d9f171e1de97ae32be0c4decc7291.svg) | ![after](/.assets/63d85ef2aae018346bf4ae5d47f0f379ee834a81.svg) |
+
+#### EURe ([0xcB444e90D8198415266c6a2724b7900fb12FC56E](https://gnosisscan.io/address/0xcB444e90D8198415266c6a2724b7900fb12FC56E))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x6c3b7e7B8b9609D57C70C3F630228F979EAbb450](https://gnosisscan.io/address/0x6c3b7e7B8b9609D57C70C3F630228F979EAbb450) | [0x5c5eC8bf67a83d9d703DCB755B1e8D1e72Fa89E3](https://gnosisscan.io/address/0x5c5eC8bf67a83d9d703DCB755B1e8D1e72Fa89E3) |
+| variableRateSlope1 | 4 % | 12 % |
+| baseStableBorrowRate | 5 % | 13 % |
+| interestRate | ![before](/.assets/79d2d01632de8f7a1295d120d64fe0b8930a59f2.svg) | ![after](/.assets/f2f95a4b4513a29b7ce19c748925854dd8f0c741.svg) |
+
+#### WXDAI ([0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d](https://gnosisscan.io/address/0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xE74CD4ADF9103370144c327457bd294753E2E856](https://gnosisscan.io/address/0xE74CD4ADF9103370144c327457bd294753E2E856) | [0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e](https://gnosisscan.io/address/0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/f4b1b8f3a89d9f171e1de97ae32be0c4decc7291.svg) | ![after](/.assets/63d85ef2aae018346bf4ae5d47f0f379ee834a81.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83": {
+ "interestRateStrategy": {
+ "from": "0xE74CD4ADF9103370144c327457bd294753E2E856",
+ "to": "0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e"
+ }
+ },
+ "0xcB444e90D8198415266c6a2724b7900fb12FC56E": {
+ "interestRateStrategy": {
+ "from": "0x6c3b7e7B8b9609D57C70C3F630228F979EAbb450",
+ "to": "0x5c5eC8bf67a83d9d703DCB755B1e8D1e72Fa89E3"
+ }
+ },
+ "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d": {
+ "interestRateStrategy": {
+ "from": "0xE74CD4ADF9103370144c327457bd294753E2E856",
+ "to": "0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e"
+ }
+ }
+ },
+ "strategies": {
+ "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83": {
+ "address": {
+ "from": "0xE74CD4ADF9103370144c327457bd294753E2E856",
+ "to": "0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xcB444e90D8198415266c6a2724b7900fb12FC56E": {
+ "address": {
+ "from": "0x6c3b7e7B8b9609D57C70C3F630228F979EAbb450",
+ "to": "0x5c5eC8bf67a83d9d703DCB755B1e8D1e72Fa89E3"
+ },
+ "baseStableBorrowRate": {
+ "from": "50000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "40000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d": {
+ "address": {
+ "from": "0xE74CD4ADF9103370144c327457bd294753E2E856",
+ "to": "0xBAbaB9202855F1c3FC943F0d032eAb4847A92D7e"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Metis_StablecoinIRUpdates_20240322_before_AaveV3Metis_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Metis_StablecoinIRUpdates_20240322_before_AaveV3Metis_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..c15d3e2bc
--- /dev/null
+++ b/diffs/AaveV3Metis_StablecoinIRUpdates_20240322_before_AaveV3Metis_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,5 @@
+## Raw diff
+
+```json
+{}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Optimism_StablecoinIRUpdates_20240322_before_AaveV3Optimism_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Optimism_StablecoinIRUpdates_20240322_before_AaveV3Optimism_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..c1f24be4b
--- /dev/null
+++ b/diffs/AaveV3Optimism_StablecoinIRUpdates_20240322_before_AaveV3Optimism_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,217 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDC ([0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85](https://optimistic.etherscan.io/address/0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xb83d1B74e1D917d4a95C1e9392f6c639932F444C](https://optimistic.etherscan.io/address/0xb83d1B74e1D917d4a95C1e9392f6c639932F444C) | [0x2b5F720fBA11EeB5f2213FdF06Be9f7fB0ad1C48](https://optimistic.etherscan.io/address/0x2b5F720fBA11EeB5f2213FdF06Be9f7fB0ad1C48) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/674d17a62ee62a3043e08a86f4469e4fede11d3a.svg) | ![after](/.assets/f23f96fab886586256a20855ce2dd7a1566267f0.svg) |
+
+#### USDC ([0x7F5c764cBc14f9669B88837ca1490cCa17c31607](https://optimistic.etherscan.io/address/0x7F5c764cBc14f9669B88837ca1490cCa17c31607))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x769EbC5106bF09D9A665CCb691e1907612b57F16](https://optimistic.etherscan.io/address/0x769EbC5106bF09D9A665CCb691e1907612b57F16) | [0xdd5ee22CC6CbbB41518871D95558B648a3551b54](https://optimistic.etherscan.io/address/0xdd5ee22CC6CbbB41518871D95558B648a3551b54) |
+| variableRateSlope1 | 7 % | 12 % |
+| baseStableBorrowRate | 8 % | 13 % |
+| interestRate | ![before](/.assets/30004f8456edabc18f0ed307b8a79983ab437388.svg) | ![after](/.assets/fa415d85cf3a2a1b266d8754e0257240f664acf4.svg) |
+
+#### sUSD ([0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9](https://optimistic.etherscan.io/address/0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x424883C7dD9Bd129BC346A65E8455CDe9fC0c43C](https://optimistic.etherscan.io/address/0x424883C7dD9Bd129BC346A65E8455CDe9fC0c43C) | [0xD1c2f0F2C7F6A40C8047eee410C800c3d1435D16](https://optimistic.etherscan.io/address/0xD1c2f0F2C7F6A40C8047eee410C800c3d1435D16) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/4c96597d8e0f135353f37321358e767ebe5eb8a8.svg) | ![after](/.assets/0bc8f7175811834d25e2182574a0dfeb42e8738c.svg) |
+
+#### USDT ([0x94b008aA00579c1307B0EF2c499aD98a8ce58e58](https://optimistic.etherscan.io/address/0x94b008aA00579c1307B0EF2c499aD98a8ce58e58))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xd5CA18a70189309664e34FB8150799ff13722308](https://optimistic.etherscan.io/address/0xd5CA18a70189309664e34FB8150799ff13722308) | [0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f](https://optimistic.etherscan.io/address/0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/19d720ba733a698f9e5c8714853876f8759c351e.svg) | ![after](/.assets/f97fde975a340ec20a967916a1754eee7309d36f.svg) |
+
+#### DAI ([0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1](https://optimistic.etherscan.io/address/0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xd5CA18a70189309664e34FB8150799ff13722308](https://optimistic.etherscan.io/address/0xd5CA18a70189309664e34FB8150799ff13722308) | [0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f](https://optimistic.etherscan.io/address/0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/19d720ba733a698f9e5c8714853876f8759c351e.svg) | ![after](/.assets/f97fde975a340ec20a967916a1754eee7309d36f.svg) |
+
+#### LUSD ([0xc40F949F8a4e094D1b49a23ea9241D289B7b2819](https://optimistic.etherscan.io/address/0xc40F949F8a4e094D1b49a23ea9241D289B7b2819))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x5F58C62077b667370879D6580a59f47C30f96a74](https://optimistic.etherscan.io/address/0x5F58C62077b667370879D6580a59f47C30f96a74) | [0xcf3136a52e6a01C482EdA64d3F0242dc3DBAFa47](https://optimistic.etherscan.io/address/0xcf3136a52e6a01C482EdA64d3F0242dc3DBAFa47) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/c497f28ccdc8a6ebf9dd8ec6980e1e7268cd5b81.svg) | ![after](/.assets/e60c240a1aee12ae0d74072cf2946402382bc43f.svg) |
+
+#### MAI ([0xdFA46478F9e5EA86d57387849598dbFB2e964b02](https://optimistic.etherscan.io/address/0xdFA46478F9e5EA86d57387849598dbFB2e964b02))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x8e3dC8151C46e0547045Ef57a82798CDF91adB4A](https://optimistic.etherscan.io/address/0x8e3dC8151C46e0547045Ef57a82798CDF91adB4A) | [0x4Fb9B5c02EC681499BD3B3a88683E15aaBDe6288](https://optimistic.etherscan.io/address/0x4Fb9B5c02EC681499BD3B3a88683E15aaBDe6288) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/a5e6f9a25baf55329b920758daa560c5b8cfd350.svg) | ![after](/.assets/5a3279c8e6dd036533d94165c42801655131ad2e.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85": {
+ "interestRateStrategy": {
+ "from": "0xb83d1B74e1D917d4a95C1e9392f6c639932F444C",
+ "to": "0x2b5F720fBA11EeB5f2213FdF06Be9f7fB0ad1C48"
+ }
+ },
+ "0x7F5c764cBc14f9669B88837ca1490cCa17c31607": {
+ "interestRateStrategy": {
+ "from": "0x769EbC5106bF09D9A665CCb691e1907612b57F16",
+ "to": "0xdd5ee22CC6CbbB41518871D95558B648a3551b54"
+ }
+ },
+ "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9": {
+ "interestRateStrategy": {
+ "from": "0x424883C7dD9Bd129BC346A65E8455CDe9fC0c43C",
+ "to": "0xD1c2f0F2C7F6A40C8047eee410C800c3d1435D16"
+ }
+ },
+ "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58": {
+ "interestRateStrategy": {
+ "from": "0xd5CA18a70189309664e34FB8150799ff13722308",
+ "to": "0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f"
+ }
+ },
+ "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": {
+ "interestRateStrategy": {
+ "from": "0xd5CA18a70189309664e34FB8150799ff13722308",
+ "to": "0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f"
+ }
+ },
+ "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819": {
+ "interestRateStrategy": {
+ "from": "0x5F58C62077b667370879D6580a59f47C30f96a74",
+ "to": "0xcf3136a52e6a01C482EdA64d3F0242dc3DBAFa47"
+ }
+ },
+ "0xdFA46478F9e5EA86d57387849598dbFB2e964b02": {
+ "interestRateStrategy": {
+ "from": "0x8e3dC8151C46e0547045Ef57a82798CDF91adB4A",
+ "to": "0x4Fb9B5c02EC681499BD3B3a88683E15aaBDe6288"
+ }
+ }
+ },
+ "strategies": {
+ "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85": {
+ "address": {
+ "from": "0xb83d1B74e1D917d4a95C1e9392f6c639932F444C",
+ "to": "0x2b5F720fBA11EeB5f2213FdF06Be9f7fB0ad1C48"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x7F5c764cBc14f9669B88837ca1490cCa17c31607": {
+ "address": {
+ "from": "0x769EbC5106bF09D9A665CCb691e1907612b57F16",
+ "to": "0xdd5ee22CC6CbbB41518871D95558B648a3551b54"
+ },
+ "baseStableBorrowRate": {
+ "from": "80000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "70000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9": {
+ "address": {
+ "from": "0x424883C7dD9Bd129BC346A65E8455CDe9fC0c43C",
+ "to": "0xD1c2f0F2C7F6A40C8047eee410C800c3d1435D16"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58": {
+ "address": {
+ "from": "0xd5CA18a70189309664e34FB8150799ff13722308",
+ "to": "0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": {
+ "address": {
+ "from": "0xd5CA18a70189309664e34FB8150799ff13722308",
+ "to": "0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819": {
+ "address": {
+ "from": "0x5F58C62077b667370879D6580a59f47C30f96a74",
+ "to": "0xcf3136a52e6a01C482EdA64d3F0242dc3DBAFa47"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xdFA46478F9e5EA86d57387849598dbFB2e964b02": {
+ "address": {
+ "from": "0x8e3dC8151C46e0547045Ef57a82798CDF91adB4A",
+ "to": "0x4Fb9B5c02EC681499BD3B3a88683E15aaBDe6288"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Polygon_StablecoinIRUpdates_20240322_before_AaveV3Polygon_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Polygon_StablecoinIRUpdates_20240322_before_AaveV3Polygon_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..a67f78a0f
--- /dev/null
+++ b/diffs/AaveV3Polygon_StablecoinIRUpdates_20240322_before_AaveV3Polygon_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,217 @@
+## Reserve changes
+
+### Reserve altered
+
+#### USDC ([0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174](https://polygonscan.com/address/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x588b62C84533232E3A881e096E5D639Fa754F093](https://polygonscan.com/address/0x588b62C84533232E3A881e096E5D639Fa754F093) | [0xc77576b02D74BBF9CdC26F3B86FD09d134416df2](https://polygonscan.com/address/0xc77576b02D74BBF9CdC26F3B86FD09d134416df2) |
+| variableRateSlope1 | 7 % | 12 % |
+| baseStableBorrowRate | 8 % | 13 % |
+| interestRate | ![before](/.assets/8dca23d950316194bae32289f94123f87abf1dcf.svg) | ![after](/.assets/815175152675989ae95d4f77c383a7d32c223e20.svg) |
+
+#### USDC ([0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359](https://polygonscan.com/address/0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1](https://polygonscan.com/address/0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1) | [0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514](https://polygonscan.com/address/0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 6 % | 12 % |
+| interestRate | ![before](/.assets/72490a8918cee95a56717e7d3753cce611ac1805.svg) | ![after](/.assets/03014f6d7e563bf95e08a254d6612c2a1779bb37.svg) |
+
+#### jEUR ([0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c](https://polygonscan.com/address/0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4](https://polygonscan.com/address/0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4) | [0x06B1Ec378618EA736a65395eA5CAB69A2410493B](https://polygonscan.com/address/0x06B1Ec378618EA736a65395eA5CAB69A2410493B) |
+| variableRateSlope1 | 4 % | 12 % |
+| baseStableBorrowRate | 5 % | 13 % |
+| interestRate | ![before](/.assets/1baf85e415bd720bc42ec928d822cffbd4236d90.svg) | ![after](/.assets/120b3346a2da5456c1e5eeb7876b093ce7188e35.svg) |
+
+#### DAI ([0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063](https://polygonscan.com/address/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477](https://polygonscan.com/address/0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477) | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://polygonscan.com/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/9b7be685a38f661247e12c171aa7c6e605f7a547.svg) | ![after](/.assets/249bca66f2e25caf04da3e3bc7e387fbf24599b2.svg) |
+
+#### EURA ([0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4](https://polygonscan.com/address/0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://polygonscan.com/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) | [0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260](https://polygonscan.com/address/0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260) |
+| variableRateSlope1 | 4 % | 12 % |
+| baseStableBorrowRate | 5 % | 13 % |
+| interestRate | ![before](/.assets/8a10dd458958b063af4177af8f709f1971c58974.svg) | ![after](/.assets/973f0be01f7b244858ae3b53b46574f4a94ae9e0.svg) |
+
+#### EURS ([0xE111178A87A3BFf0c8d18DECBa5798827539Ae99](https://polygonscan.com/address/0xE111178A87A3BFf0c8d18DECBa5798827539Ae99))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x8F183Ee74C790CB558232a141099b316D6C8Ba6E](https://polygonscan.com/address/0x8F183Ee74C790CB558232a141099b316D6C8Ba6E) | [0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260](https://polygonscan.com/address/0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/8f84201aa8a64dd4068a65bba6c43cc7622ae5b8.svg) | ![after](/.assets/973f0be01f7b244858ae3b53b46574f4a94ae9e0.svg) |
+
+#### USDT ([0xc2132D05D31c914a87C6611C10748AEb04B58e8F](https://polygonscan.com/address/0xc2132D05D31c914a87C6611C10748AEb04B58e8F))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477](https://polygonscan.com/address/0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477) | [0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237](https://polygonscan.com/address/0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/9b7be685a38f661247e12c171aa7c6e605f7a547.svg) | ![after](/.assets/249bca66f2e25caf04da3e3bc7e387fbf24599b2.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
+ "interestRateStrategy": {
+ "from": "0x588b62C84533232E3A881e096E5D639Fa754F093",
+ "to": "0xc77576b02D74BBF9CdC26F3B86FD09d134416df2"
+ }
+ },
+ "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359": {
+ "interestRateStrategy": {
+ "from": "0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1",
+ "to": "0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514"
+ }
+ },
+ "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c": {
+ "interestRateStrategy": {
+ "from": "0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4",
+ "to": "0x06B1Ec378618EA736a65395eA5CAB69A2410493B"
+ }
+ },
+ "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": {
+ "interestRateStrategy": {
+ "from": "0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477",
+ "to": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237"
+ }
+ },
+ "0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4": {
+ "interestRateStrategy": {
+ "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D",
+ "to": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260"
+ }
+ },
+ "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99": {
+ "interestRateStrategy": {
+ "from": "0x8F183Ee74C790CB558232a141099b316D6C8Ba6E",
+ "to": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260"
+ }
+ },
+ "0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
+ "interestRateStrategy": {
+ "from": "0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477",
+ "to": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237"
+ }
+ }
+ },
+ "strategies": {
+ "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
+ "address": {
+ "from": "0x588b62C84533232E3A881e096E5D639Fa754F093",
+ "to": "0xc77576b02D74BBF9CdC26F3B86FD09d134416df2"
+ },
+ "baseStableBorrowRate": {
+ "from": "80000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "70000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359": {
+ "address": {
+ "from": "0x642a8DAcC59b73491Dcaa3BCeF046D660901fCc1",
+ "to": "0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514"
+ },
+ "baseStableBorrowRate": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c": {
+ "address": {
+ "from": "0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4",
+ "to": "0x06B1Ec378618EA736a65395eA5CAB69A2410493B"
+ },
+ "baseStableBorrowRate": {
+ "from": "50000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "40000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": {
+ "address": {
+ "from": "0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477",
+ "to": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4": {
+ "address": {
+ "from": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D",
+ "to": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260"
+ },
+ "baseStableBorrowRate": {
+ "from": "50000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "40000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99": {
+ "address": {
+ "from": "0x8F183Ee74C790CB558232a141099b316D6C8Ba6E",
+ "to": "0xC0B875907514131C2Fd43f0FBf59EdaB84C7e260"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ },
+ "0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
+ "address": {
+ "from": "0xaDbdb3d6B51151e4CDF32e4050B6F03D2bfB6477",
+ "to": "0x2402C25e7E45b1466c53Ef7766AAd878A4CbC237"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/diffs/AaveV3Scroll_StablecoinIRUpdates_20240322_before_AaveV3Scroll_StablecoinIRUpdates_20240322_after.md b/diffs/AaveV3Scroll_StablecoinIRUpdates_20240322_before_AaveV3Scroll_StablecoinIRUpdates_20240322_after.md
new file mode 100644
index 000000000..a98b235fe
--- /dev/null
+++ b/diffs/AaveV3Scroll_StablecoinIRUpdates_20240322_before_AaveV3Scroll_StablecoinIRUpdates_20240322_after.md
@@ -0,0 +1,43 @@
+## Reserve changes
+
+### Reserves altered
+
+#### USDC ([0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4](https://scrollscan.com/address/0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4))
+
+| description | value before | value after |
+| --- | --- | --- |
+| interestRateStrategy | [0x9205B37978aC983A297dFB53b3f3D2cCC7DDDADa](https://scrollscan.com/address/0x9205B37978aC983A297dFB53b3f3D2cCC7DDDADa) | [0x39FA62444F4716f64253aEAc4509Ad32DE8D67B2](https://scrollscan.com/address/0x39FA62444F4716f64253aEAc4509Ad32DE8D67B2) |
+| variableRateSlope1 | 6 % | 12 % |
+| baseStableBorrowRate | 7 % | 13 % |
+| interestRate | ![before](/.assets/3dae2b4f6923d155de327323b76840893e8fe017.svg) | ![after](/.assets/71713b8fe82177533a16dd37178324b412bce932.svg) |
+
+## Raw diff
+
+```json
+{
+ "reserves": {
+ "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4": {
+ "interestRateStrategy": {
+ "from": "0x9205B37978aC983A297dFB53b3f3D2cCC7DDDADa",
+ "to": "0x39FA62444F4716f64253aEAc4509Ad32DE8D67B2"
+ }
+ }
+ },
+ "strategies": {
+ "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4": {
+ "address": {
+ "from": "0x9205B37978aC983A297dFB53b3f3D2cCC7DDDADa",
+ "to": "0x39FA62444F4716f64253aEAc4509Ad32DE8D67B2"
+ },
+ "baseStableBorrowRate": {
+ "from": "70000000000000000000000000",
+ "to": "130000000000000000000000000"
+ },
+ "variableRateSlope1": {
+ "from": "60000000000000000000000000",
+ "to": "120000000000000000000000000"
+ }
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/lib/aave-helpers b/lib/aave-helpers
index ffdfec57e..e716f3291 160000
--- a/lib/aave-helpers
+++ b/lib/aave-helpers
@@ -1 +1 @@
-Subproject commit ffdfec57ed1b7f90afbcdb108efc1141e91bc479
+Subproject commit e716f32915a2fc1e3b7bf6ccdf913efb8b8ace96
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..3f3497209
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV2AvalancheAssets} from 'aave-address-book/AaveV2Avalanche.sol';
+import {AaveV2PayloadAvalanche} from 'aave-helpers/v2-config-engine/AaveV2PayloadAvalanche.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol';
+import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV2Avalanche_StablecoinIRUpdates_20240322 is AaveV2PayloadAvalanche {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV2ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV2ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV2ConfigEngine.RateStrategyUpdate[](3);
+ rateStrategies[0] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2AvalancheAssets.USDCe_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2AvalancheAssets.USDTe_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2AvalancheAssets.DAIe_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..fadb74302
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV2Avalanche} from 'aave-address-book/AaveV2Avalanche.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol';
+import {AaveV2Avalanche_StablecoinIRUpdates_20240322} from './AaveV2Avalanche_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV2Avalanche_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV2Avalanche_StablecoinIRUpdates_20240322
+ */
+contract AaveV2Avalanche_StablecoinIRUpdates_20240322_Test is ProtocolV2TestBase {
+ AaveV2Avalanche_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('avalanche'), 43233162);
+ proposal = new AaveV2Avalanche_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV2Avalanche_StablecoinIRUpdates_20240322',
+ AaveV2Avalanche.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..2b3a4a1a0
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol';
+import {AaveV2PayloadEthereum} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereum.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol';
+import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV2Ethereum_StablecoinIRUpdates_20240322 is AaveV2PayloadEthereum {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV2ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV2ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV2ConfigEngine.RateStrategyUpdate[](8);
+ rateStrategies[0] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.USDT_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.DAI_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.sUSD_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[3] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.USDC_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[4] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.GUSD_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[5] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.USDP_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[6] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.FRAX_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[7] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2EthereumAssets.LUSD_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..fea352d99
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV2Ethereum} from 'aave-address-book/AaveV2Ethereum.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol';
+import {AaveV2Ethereum_StablecoinIRUpdates_20240322} from './AaveV2Ethereum_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV2Ethereum_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV2Ethereum_StablecoinIRUpdates_20240322
+ */
+contract AaveV2Ethereum_StablecoinIRUpdates_20240322_Test is ProtocolV2TestBase {
+ AaveV2Ethereum_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('mainnet'), 19490769);
+ proposal = new AaveV2Ethereum_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV2Ethereum_StablecoinIRUpdates_20240322',
+ AaveV2Ethereum.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..b7930ffa3
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV2PolygonAssets} from 'aave-address-book/AaveV2Polygon.sol';
+import {AaveV2PayloadPolygon} from 'aave-helpers/v2-config-engine/AaveV2PayloadPolygon.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol';
+import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV2Polygon_StablecoinIRUpdates_20240322 is AaveV2PayloadPolygon {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV2ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV2ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV2ConfigEngine.RateStrategyUpdate[](3);
+ rateStrategies[0] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2PolygonAssets.USDC_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2PolygonAssets.USDT_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV2ConfigEngine.RateStrategyUpdate({
+ asset: AaveV2PolygonAssets.DAI_UNDERLYING,
+ params: IV2RateStrategyFactory.RateStrategyParams({
+ optimalUtilizationRate: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..eaa9c8aa6
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV2Polygon} from 'aave-address-book/AaveV2Polygon.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol';
+import {AaveV2Polygon_StablecoinIRUpdates_20240322} from './AaveV2Polygon_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV2Polygon_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV2Polygon_StablecoinIRUpdates_20240322
+ */
+contract AaveV2Polygon_StablecoinIRUpdates_20240322_Test is ProtocolV2TestBase {
+ AaveV2Polygon_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('polygon'), 54954318);
+ proposal = new AaveV2Polygon_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV2Polygon_StablecoinIRUpdates_20240322',
+ AaveV2Polygon.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..9f5e66d2d
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol';
+import {AaveV3PayloadArbitrum} from 'aave-helpers/v3-config-engine/AaveV3PayloadArbitrum.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Arbitrum_StablecoinIRUpdates_20240322 is AaveV3PayloadArbitrum {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](8);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.DAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.USDT_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.EURS_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.MAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.LUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.USDCn_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[7] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ArbitrumAssets.FRAX_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..3adf51a47
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Arbitrum_StablecoinIRUpdates_20240322} from './AaveV3Arbitrum_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Arbitrum_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Arbitrum_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Arbitrum_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Arbitrum_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('arbitrum'), 193053541);
+ proposal = new AaveV3Arbitrum_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV3Arbitrum_StablecoinIRUpdates_20240322',
+ AaveV3Arbitrum.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..c796d6cc8
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3AvalancheAssets} from 'aave-address-book/AaveV3Avalanche.sol';
+import {AaveV3PayloadAvalanche} from 'aave-helpers/v3-config-engine/AaveV3PayloadAvalanche.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Avalanche_StablecoinIRUpdates_20240322 is AaveV3PayloadAvalanche {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](5);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3AvalancheAssets.DAIe_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3AvalancheAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3AvalancheAssets.USDt_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3AvalancheAssets.FRAX_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3AvalancheAssets.MAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..9132e9dac
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Avalanche_StablecoinIRUpdates_20240322} from './AaveV3Avalanche_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Avalanche_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Avalanche_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Avalanche_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Avalanche_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('avalanche'), 43233259);
+ proposal = new AaveV3Avalanche_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV3Avalanche_StablecoinIRUpdates_20240322',
+ AaveV3Avalanche.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..ea1b07974
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3BNBAssets} from 'aave-address-book/AaveV3BNB.sol';
+import {AaveV3PayloadBNB} from 'aave-helpers/v3-config-engine/AaveV3PayloadBNB.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3BNB_StablecoinIRUpdates_20240322 is AaveV3PayloadBNB {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3BNBAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3BNBAssets.USDT_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3BNBAssets.FDUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..2b0cff04f
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3BNB} from 'aave-address-book/AaveV3BNB.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3BNB_StablecoinIRUpdates_20240322} from './AaveV3BNB_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3BNB_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3BNB_StablecoinIRUpdates_20240322
+ */
+contract AaveV3BNB_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3BNB_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('bnb'), 37194140);
+ proposal = new AaveV3BNB_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest('AaveV3BNB_StablecoinIRUpdates_20240322', AaveV3BNB.POOL, address(proposal));
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..4e473f765
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3BaseAssets} from 'aave-address-book/AaveV3Base.sol';
+import {AaveV3PayloadBase} from 'aave-helpers/v3-config-engine/AaveV3PayloadBase.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Base_StablecoinIRUpdates_20240322 is AaveV3PayloadBase {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3BaseAssets.USDbC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3BaseAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..b9cf67120
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Base} from 'aave-address-book/AaveV3Base.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Base_StablecoinIRUpdates_20240322} from './AaveV3Base_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Base_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Base_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Base_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Base_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('base'), 12164516);
+ proposal = new AaveV3Base_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest('AaveV3Base_StablecoinIRUpdates_20240322', AaveV3Base.POOL, address(proposal));
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..ec17fe063
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol';
+import {AaveV3PayloadEthereum} from 'aave-helpers/v3-config-engine/AaveV3PayloadEthereum.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Ethereum_StablecoinIRUpdates_20240322 is AaveV3PayloadEthereum {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](7);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: _bpsToRay(92_00),
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.DAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: _bpsToRay(92_00),
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.USDT_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: _bpsToRay(92_00),
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.LUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.FRAX_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.crvUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3EthereumAssets.PYUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..0f3a9e84f
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Ethereum_StablecoinIRUpdates_20240322} from './AaveV3Ethereum_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Ethereum_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Ethereum_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Ethereum_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Ethereum_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('mainnet'), 19490783);
+ proposal = new AaveV3Ethereum_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV3Ethereum_StablecoinIRUpdates_20240322',
+ AaveV3Ethereum.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..7b097c425
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3GnosisAssets} from 'aave-address-book/AaveV3Gnosis.sol';
+import {AaveV3PayloadGnosis} from 'aave-helpers/v3-config-engine/AaveV3PayloadGnosis.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Gnosis_StablecoinIRUpdates_20240322 is AaveV3PayloadGnosis {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3GnosisAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3GnosisAssets.WXDAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3GnosisAssets.EURe_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..143f61b05
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Gnosis} from 'aave-address-book/AaveV3Gnosis.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Gnosis_StablecoinIRUpdates_20240322} from './AaveV3Gnosis_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Gnosis_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Gnosis_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Gnosis_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Gnosis_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('gnosis'), 33059799);
+ proposal = new AaveV3Gnosis_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest('AaveV3Gnosis_StablecoinIRUpdates_20240322', AaveV3Gnosis.POOL, address(proposal));
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..8636b8428
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3OptimismAssets} from 'aave-address-book/AaveV3Optimism.sol';
+import {AaveV3PayloadOptimism} from 'aave-helpers/v3-config-engine/AaveV3PayloadOptimism.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Optimism_StablecoinIRUpdates_20240322 is AaveV3PayloadOptimism {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](7);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.DAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.USDT_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.sUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.LUSD_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.MAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3OptimismAssets.USDCn_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..3313568f8
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Optimism_StablecoinIRUpdates_20240322} from './AaveV3Optimism_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Optimism_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Optimism_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Optimism_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Optimism_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('optimism'), 117759733);
+ proposal = new AaveV3Optimism_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV3Optimism_StablecoinIRUpdates_20240322',
+ AaveV3Optimism.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..712da6f2a
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3PolygonAssets} from 'aave-address-book/AaveV3Polygon.sol';
+import {AaveV3PayloadPolygon} from 'aave-helpers/v3-config-engine/AaveV3PayloadPolygon.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Polygon_StablecoinIRUpdates_20240322 is AaveV3PayloadPolygon {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](7);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.DAI_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.USDT_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.EURS_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.jEUR_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.EURA_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+ rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3PolygonAssets.USDCn_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..6865cc5f8
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Polygon} from 'aave-address-book/AaveV3Polygon.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Polygon_StablecoinIRUpdates_20240322} from './AaveV3Polygon_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Polygon_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Polygon_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Polygon_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Polygon_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('polygon'), 54954371);
+ proposal = new AaveV3Polygon_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest(
+ 'AaveV3Polygon_StablecoinIRUpdates_20240322',
+ AaveV3Polygon.POOL,
+ address(proposal)
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.sol
new file mode 100644
index 000000000..4634dc818
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.sol
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3ScrollAssets} from 'aave-address-book/AaveV3Scroll.sol';
+import {AaveV3PayloadScroll} from 'aave-helpers/v3-config-engine/AaveV3PayloadScroll.sol';
+import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
+import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
+import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
+
+/**
+ * @title Stablecoin IR Updates
+ * @author Chaos Labs, ACI
+ * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d
+ * - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864
+ */
+contract AaveV3Scroll_StablecoinIRUpdates_20240322 is AaveV3PayloadScroll {
+ function rateStrategiesUpdates()
+ public
+ pure
+ override
+ returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
+ {
+ IAaveV3ConfigEngine.RateStrategyUpdate[]
+ memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1);
+ rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
+ asset: AaveV3ScrollAssets.USDC_UNDERLYING,
+ params: IV3RateStrategyFactory.RateStrategyParams({
+ optimalUsageRatio: EngineFlags.KEEP_CURRENT,
+ baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
+ variableRateSlope1: _bpsToRay(12_00),
+ variableRateSlope2: EngineFlags.KEEP_CURRENT,
+ stableRateSlope1: EngineFlags.KEEP_CURRENT,
+ stableRateSlope2: EngineFlags.KEEP_CURRENT,
+ baseStableRateOffset: EngineFlags.KEEP_CURRENT,
+ stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
+ optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
+ })
+ });
+
+ return rateStrategies;
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.t.sol b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.t.sol
new file mode 100644
index 000000000..4bfe89ce3
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.t.sol
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol';
+
+import 'forge-std/Test.sol';
+import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/ProtocolV3TestBase.sol';
+import {AaveV3Scroll_StablecoinIRUpdates_20240322} from './AaveV3Scroll_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Test for AaveV3Scroll_StablecoinIRUpdates_20240322
+ * command: make test-contract filter=AaveV3Scroll_StablecoinIRUpdates_20240322
+ */
+contract AaveV3Scroll_StablecoinIRUpdates_20240322_Test is ProtocolV3TestBase {
+ AaveV3Scroll_StablecoinIRUpdates_20240322 internal proposal;
+
+ function setUp() public {
+ vm.createSelectFork(vm.rpcUrl('scroll'), 4339602);
+ proposal = new AaveV3Scroll_StablecoinIRUpdates_20240322();
+ }
+
+ /**
+ * @dev executes the generic test suite including e2e and config snapshots
+ */
+ function test_defaultProposalExecution() public {
+ defaultTest('AaveV3Scroll_StablecoinIRUpdates_20240322', AaveV3Scroll.POOL, address(proposal));
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates.md b/src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates.md
new file mode 100644
index 000000000..6f06db15e
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates.md
@@ -0,0 +1,34 @@
+---
+title: "Stablecoin IR Updates"
+author: "Chaos Labs, ACI"
+discussions: "https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864"
+snapshot: "https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d"
+---
+
+## Simple Summary
+
+A proposal to increase stablecoin Interest Rate parameters across all Aave deployments.
+
+## Motivation
+
+To adapt to the current market conditions and optimize the utilization of stablecoins on Aave, we propose to update the Interest Rate parameters of stablecoins across all Aave deployments.
+
+This will help to maintain the competitiveness of Aave's stablecoin markets and ensure that the interest rates are aligned with the market conditions.
+
+This will also increase Aave DAO revenue by increasing the utilization of stablecoins and cost of borrowing them.
+
+## Specification
+
+This AIP update the Slope1 parameters of Aave stablecoins to 12%.
+It also increase the uOptimal parameter of DAI, USDC & USDT assets to 92% on the ETH V3 Pool.
+
+## References
+
+- Implementation: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.sol), [AaveV2Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.sol), [AaveV2Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Metis_StablecoinIRUpdates_20240322.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.sol)
+- Tests: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV2Ethereum_StablecoinIRUpdates_20240322.t.sol), [AaveV2Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV2Polygon_StablecoinIRUpdates_20240322.t.sol), [AaveV2Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV2Avalanche_StablecoinIRUpdates_20240322.t.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Ethereum_StablecoinIRUpdates_20240322.t.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Polygon_StablecoinIRUpdates_20240322.t.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Avalanche_StablecoinIRUpdates_20240322.t.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Optimism_StablecoinIRUpdates_20240322.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Arbitrum_StablecoinIRUpdates_20240322.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Metis_StablecoinIRUpdates_20240322.t.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Base_StablecoinIRUpdates_20240322.t.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Gnosis_StablecoinIRUpdates_20240322.t.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3Scroll_StablecoinIRUpdates_20240322.t.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240322_Multi_StablecoinIRUpdates/AaveV3BNB_StablecoinIRUpdates_20240322.t.sol)
+- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d)
+- [Discussion](https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864)
+
+## Copyright
+
+Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
diff --git a/src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol b/src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol
new file mode 100644
index 000000000..3e2e43d95
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol
@@ -0,0 +1,319 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol';
+import {EthereumScript, PolygonScript, AvalancheScript, OptimismScript, ArbitrumScript, BaseScript, GnosisScript, ScrollScript, BNBScript} from 'aave-helpers/ScriptUtils.sol';
+import {AaveV2Ethereum_StablecoinIRUpdates_20240322} from './AaveV2Ethereum_StablecoinIRUpdates_20240322.sol';
+import {AaveV2Polygon_StablecoinIRUpdates_20240322} from './AaveV2Polygon_StablecoinIRUpdates_20240322.sol';
+import {AaveV2Avalanche_StablecoinIRUpdates_20240322} from './AaveV2Avalanche_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Ethereum_StablecoinIRUpdates_20240322} from './AaveV3Ethereum_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Polygon_StablecoinIRUpdates_20240322} from './AaveV3Polygon_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Avalanche_StablecoinIRUpdates_20240322} from './AaveV3Avalanche_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Optimism_StablecoinIRUpdates_20240322} from './AaveV3Optimism_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Arbitrum_StablecoinIRUpdates_20240322} from './AaveV3Arbitrum_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Base_StablecoinIRUpdates_20240322} from './AaveV3Base_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Gnosis_StablecoinIRUpdates_20240322} from './AaveV3Gnosis_StablecoinIRUpdates_20240322.sol';
+import {AaveV3Scroll_StablecoinIRUpdates_20240322} from './AaveV3Scroll_StablecoinIRUpdates_20240322.sol';
+import {AaveV3BNB_StablecoinIRUpdates_20240322} from './AaveV3BNB_StablecoinIRUpdates_20240322.sol';
+
+/**
+ * @dev Deploy Ethereum
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployEthereum chain=mainnet
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/1/run-latest.json
+ */
+contract DeployEthereum is EthereumScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV2Ethereum_StablecoinIRUpdates_20240322).creationCode
+ );
+ address payload1 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Ethereum_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](2);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+ actions[1] = GovV3Helpers.buildAction(payload1);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Polygon
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployPolygon chain=polygon
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/137/run-latest.json
+ */
+contract DeployPolygon is PolygonScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV2Polygon_StablecoinIRUpdates_20240322).creationCode
+ );
+ address payload1 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Polygon_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](2);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+ actions[1] = GovV3Helpers.buildAction(payload1);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Avalanche
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployAvalanche chain=avalanche
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/43114/run-latest.json
+ */
+contract DeployAvalanche is AvalancheScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV2Avalanche_StablecoinIRUpdates_20240322).creationCode
+ );
+ address payload1 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Avalanche_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](2);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+ actions[1] = GovV3Helpers.buildAction(payload1);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Optimism
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployOptimism chain=optimism
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/10/run-latest.json
+ */
+contract DeployOptimism is OptimismScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Optimism_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Arbitrum
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployArbitrum chain=arbitrum
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/42161/run-latest.json
+ */
+contract DeployArbitrum is ArbitrumScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Arbitrum_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Base
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployBase chain=base
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/8453/run-latest.json
+ */
+contract DeployBase is BaseScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Base_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Gnosis
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployGnosis chain=gnosis
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/100/run-latest.json
+ */
+contract DeployGnosis is GnosisScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Gnosis_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy Scroll
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployScroll chain=scroll
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/534352/run-latest.json
+ */
+contract DeployScroll is ScrollScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV3Scroll_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Deploy BNB
+ * deploy-command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:DeployBNB chain=bnb
+ * verify-command: npx catapulta-verify -b broadcast/StablecoinIRUpdates_20240322.s.sol/56/run-latest.json
+ */
+contract DeployBNB is BNBScript {
+ function run() external broadcast {
+ // deploy payloads
+ address payload0 = GovV3Helpers.deployDeterministic(
+ type(AaveV3BNB_StablecoinIRUpdates_20240322).creationCode
+ );
+
+ // compose action
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actions = new IPayloadsControllerCore.ExecutionAction[](1);
+ actions[0] = GovV3Helpers.buildAction(payload0);
+
+ // register action at payloadsController
+ GovV3Helpers.createPayload(actions);
+ }
+}
+
+/**
+ * @dev Create Proposal
+ * command: make deploy-ledger contract=src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates_20240322.s.sol:CreateProposal chain=mainnet
+ */
+contract CreateProposal is EthereumScript {
+ function run() external {
+ // create payloads
+ PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](9);
+
+ // compose actions for validation
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](2);
+ actionsEthereum[0] = GovV3Helpers.buildAction(
+ type(AaveV2Ethereum_StablecoinIRUpdates_20240322).creationCode
+ );
+ actionsEthereum[1] = GovV3Helpers.buildAction(
+ type(AaveV3Ethereum_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsPolygon = new IPayloadsControllerCore.ExecutionAction[](2);
+ actionsPolygon[0] = GovV3Helpers.buildAction(
+ type(AaveV2Polygon_StablecoinIRUpdates_20240322).creationCode
+ );
+ actionsPolygon[1] = GovV3Helpers.buildAction(
+ type(AaveV3Polygon_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[1] = GovV3Helpers.buildPolygonPayload(vm, actionsPolygon);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsAvalanche = new IPayloadsControllerCore.ExecutionAction[](2);
+ actionsAvalanche[0] = GovV3Helpers.buildAction(
+ type(AaveV2Avalanche_StablecoinIRUpdates_20240322).creationCode
+ );
+ actionsAvalanche[1] = GovV3Helpers.buildAction(
+ type(AaveV3Avalanche_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[2] = GovV3Helpers.buildAvalanchePayload(vm, actionsAvalanche);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsOptimism = new IPayloadsControllerCore.ExecutionAction[](1);
+ actionsOptimism[0] = GovV3Helpers.buildAction(
+ type(AaveV3Optimism_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[3] = GovV3Helpers.buildOptimismPayload(vm, actionsOptimism);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsArbitrum = new IPayloadsControllerCore.ExecutionAction[](1);
+ actionsArbitrum[0] = GovV3Helpers.buildAction(
+ type(AaveV3Arbitrum_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[4] = GovV3Helpers.buildArbitrumPayload(vm, actionsArbitrum);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsBase = new IPayloadsControllerCore.ExecutionAction[](1);
+ actionsBase[0] = GovV3Helpers.buildAction(
+ type(AaveV3Base_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[5] = GovV3Helpers.buildBasePayload(vm, actionsBase);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsGnosis = new IPayloadsControllerCore.ExecutionAction[](1);
+ actionsGnosis[0] = GovV3Helpers.buildAction(
+ type(AaveV3Gnosis_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[6] = GovV3Helpers.buildGnosisPayload(vm, actionsGnosis);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsScroll = new IPayloadsControllerCore.ExecutionAction[](1);
+ actionsScroll[0] = GovV3Helpers.buildAction(
+ type(AaveV3Scroll_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[7] = GovV3Helpers.buildScrollPayload(vm, actionsScroll);
+
+ IPayloadsControllerCore.ExecutionAction[]
+ memory actionsBNB = new IPayloadsControllerCore.ExecutionAction[](1);
+ actionsBNB[0] = GovV3Helpers.buildAction(
+ type(AaveV3BNB_StablecoinIRUpdates_20240322).creationCode
+ );
+ payloads[8] = GovV3Helpers.buildBNBPayload(vm, actionsBNB);
+
+ // create proposal
+ vm.startBroadcast();
+ GovV3Helpers.createProposal(
+ vm,
+ payloads,
+ GovV3Helpers.ipfsHashFile(vm, 'src/20240322_Multi_StablecoinIRUpdates/StablecoinIRUpdates.md')
+ );
+ }
+}
diff --git a/src/20240322_Multi_StablecoinIRUpdates/config.ts b/src/20240322_Multi_StablecoinIRUpdates/config.ts
new file mode 100644
index 000000000..f373243e9
--- /dev/null
+++ b/src/20240322_Multi_StablecoinIRUpdates/config.ts
@@ -0,0 +1,888 @@
+import {ConfigFile} from '../../generator/types';
+export const config: ConfigFile = {
+ rootOptions: {
+ configFile: 'src/20240322_Multi_StablecoinIRUpdates/config.ts',
+ pools: [
+ 'AaveV2Ethereum',
+ 'AaveV2Polygon',
+ 'AaveV2Avalanche',
+ 'AaveV3Ethereum',
+ 'AaveV3Polygon',
+ 'AaveV3Avalanche',
+ 'AaveV3Optimism',
+ 'AaveV3Arbitrum',
+ 'AaveV3Base',
+ 'AaveV3Gnosis',
+ 'AaveV3Scroll',
+ 'AaveV3BNB',
+ ],
+ title: 'Stablecoin IR Updates',
+ shortName: 'StablecoinIRUpdates',
+ date: '20240322',
+ author: 'Chaos Labs, ACI',
+ discussion:
+ 'https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3/16864',
+ snapshot:
+ 'https://snapshot.org/#/aave.eth/proposal/0xe2dd228640c3cad93f5418c40c4b5743b3c6c85aa0aae9eee53cbdbca2ed5c2d',
+ },
+ poolOptions: {
+ AaveV2Ethereum: {
+ configs: {
+ RATE_UPDATE_V2: [
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'DAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'sUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'GUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'USDP',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'FRAX',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ {
+ asset: 'LUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 19490769},
+ },
+ AaveV2Polygon: {
+ configs: {
+ RATE_UPDATE_V2: [
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'DAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 54954318},
+ },
+ AaveV2Avalanche: {
+ configs: {
+ RATE_UPDATE_V2: [
+ {
+ asset: 'USDCe',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDTe',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'DAIe',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 43233162},
+ },
+ AaveV3Ethereum: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '92',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'DAI',
+ params: {
+ optimalUtilizationRate: '92',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '92',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'LUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'FRAX',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'crvUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'PYUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 19490783},
+ },
+ AaveV3Polygon: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'DAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'EURS',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'jEUR',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'EURA',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDCn',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 54954371},
+ },
+ AaveV3Avalanche: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'DAIe',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDt',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'FRAX',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'MAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 43233259},
+ },
+ AaveV3Optimism: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'DAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'sUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'LUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'MAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDCn',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 117759733},
+ },
+ AaveV3Arbitrum: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'DAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'EURS',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'MAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'LUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDCn',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'FRAX',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 193053541},
+ },
+ AaveV3Base: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'USDbC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 12164516},
+ },
+ AaveV3Gnosis: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'WXDAI',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'EURe',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 33059799},
+ },
+ AaveV3Scroll: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 4339602},
+ },
+ AaveV3BNB: {
+ configs: {
+ RATE_UPDATE_V3: [
+ {
+ asset: 'USDC',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'USDT',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ {
+ asset: 'FDUSD',
+ params: {
+ optimalUtilizationRate: '',
+ baseVariableBorrowRate: '',
+ variableRateSlope1: '12',
+ variableRateSlope2: '',
+ stableRateSlope1: '',
+ stableRateSlope2: '',
+ baseStableRateOffset: '',
+ stableRateExcessOffset: '',
+ optimalStableToTotalDebtRatio: '',
+ },
+ },
+ ],
+ },
+ cache: {blockNumber: 37194140},
+ },
+ },
+};