Merge pull request #231 from Instadapp/aave-v3-native-token-bug-fixes

bug fixes: native token conversion in some spells
This commit is contained in:
0xPradyuman 2022-06-14 19:44:06 +05:30 committed by GitHub
commit b0a9c6f833
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 71 additions and 40 deletions

View File

@ -390,9 +390,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isEth = tokens[i] == ethAddr;
if (getCollateralBalance(token) > 0 && !getIsColl(token)) { address _token = isEth ? wethAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, true);
if (getCollateralBalance(_token) > 0 && !getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, true);
} }
} }
@ -416,9 +418,10 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isEth = tokens[i] == ethAddr;
if (getCollateralBalance(token) > 0 && getIsColl(token)) { address _token = isEth ? wethAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, false); if (getCollateralBalance(_token) > 0 && getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, false);
} }
} }
@ -441,8 +444,11 @@ abstract contract AaveResolver is Events, Helpers {
uint256 currentRateMode = rateMode == 1 ? 2 : 1; uint256 currentRateMode = rateMode == 1 ? 2 : 1;
if (getPaybackBalance(token, currentRateMode) > 0) { bool isEth = token == ethAddr;
aave.swapBorrowRateMode(token, rateMode); address _token = isEth ? wethAddr : token;
if (getPaybackBalance(_token, currentRateMode) > 0) {
aave.swapBorrowRateMode(_token, rateMode);
} }
_eventName = "LogSwapRateMode(address,uint256)"; _eventName = "LogSwapRateMode(address,uint256)";

View File

@ -390,9 +390,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isAVAX = tokens[i] == avaxAddr;
if (getCollateralBalance(token) > 0 && !getIsColl(token)) { address _token = isAVAX ? wavaxAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, true);
if (getCollateralBalance(_token) > 0 && !getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, true);
} }
} }
@ -416,9 +418,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isAVAX = tokens[i] == avaxAddr;
if (getCollateralBalance(token) > 0 && getIsColl(token)) { address _token = isAVAX ? wavaxAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, false);
if (getCollateralBalance(_token) > 0 && getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, false);
} }
} }
@ -441,8 +445,11 @@ abstract contract AaveResolver is Events, Helpers {
uint256 currentRateMode = rateMode == 1 ? 2 : 1; uint256 currentRateMode = rateMode == 1 ? 2 : 1;
if (getPaybackBalance(token, currentRateMode) > 0) { bool isAVAX = token == avaxAddr;
aave.swapBorrowRateMode(token, rateMode); address _token = isAVAX ? wavaxAddr : token;
if (getPaybackBalance(_token, currentRateMode) > 0) {
aave.swapBorrowRateMode(_token, rateMode);
} }
_eventName = "LogSwapRateMode(address,uint256)"; _eventName = "LogSwapRateMode(address,uint256)";

View File

@ -390,9 +390,10 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isFTM = tokens[i] == ftmAddr;
if (getCollateralBalance(token) > 0 && !getIsColl(token)) { address _token = isFTM ? wftmAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, true); if (getCollateralBalance(_token) > 0 && !getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, true);
} }
} }
@ -416,9 +417,10 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isFTM = tokens[i] == ftmAddr;
if (getCollateralBalance(token) > 0 && getIsColl(token)) { address _token = isFTM ? wftmAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, false); if (getCollateralBalance(_token) > 0 && getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, false);
} }
} }
@ -440,9 +442,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
uint256 currentRateMode = rateMode == 1 ? 2 : 1; uint256 currentRateMode = rateMode == 1 ? 2 : 1;
bool isFTM = token == ftmAddr;
address _token = isFTM ? wftmAddr : token;
if (getPaybackBalance(token, currentRateMode) > 0) { if (getPaybackBalance(_token, currentRateMode) > 0) {
aave.swapBorrowRateMode(token, rateMode); aave.swapBorrowRateMode(_token, rateMode);
} }
_eventName = "LogSwapRateMode(address,uint256)"; _eventName = "LogSwapRateMode(address,uint256)";

View File

@ -390,9 +390,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isEth = tokens[i] == ethAddr;
if (getCollateralBalance(token) > 0 && !getIsColl(token)) { address _token = isEth ? wethAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, true);
if (getCollateralBalance(_token) > 0 && !getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, true);
} }
} }
@ -416,9 +418,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isEth = tokens[i] == ethAddr;
if (getCollateralBalance(token) > 0 && getIsColl(token)) { address _token = isEth ? wethAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, false);
if (getCollateralBalance(_token) > 0 && getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, false);
} }
} }
@ -441,8 +445,11 @@ abstract contract AaveResolver is Events, Helpers {
uint256 currentRateMode = rateMode == 1 ? 2 : 1; uint256 currentRateMode = rateMode == 1 ? 2 : 1;
if (getPaybackBalance(token, currentRateMode) > 0) { bool isEth = token == ethAddr;
aave.swapBorrowRateMode(token, rateMode); address _token = isEth ? wethAddr : token;
if (getPaybackBalance(_token, currentRateMode) > 0) {
aave.swapBorrowRateMode(_token, rateMode);
} }
_eventName = "LogSwapRateMode(address,uint256)"; _eventName = "LogSwapRateMode(address,uint256)";

View File

@ -390,9 +390,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isMatic = tokens[i] == maticAddr;
if (getCollateralBalance(token) > 0 && !getIsColl(token)) { address _token = isMatic ? wmaticAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, true);
if (getCollateralBalance(_token) > 0 && !getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, true);
} }
} }
@ -416,9 +418,11 @@ abstract contract AaveResolver is Events, Helpers {
AaveInterface aave = AaveInterface(aaveProvider.getPool()); AaveInterface aave = AaveInterface(aaveProvider.getPool());
for (uint256 i = 0; i < _length; i++) { for (uint256 i = 0; i < _length; i++) {
address token = tokens[i]; bool isMatic = tokens[i] == maticAddr;
if (getCollateralBalance(token) > 0 && getIsColl(token)) { address _token = isMatic ? wmaticAddr : tokens[i];
aave.setUserUseReserveAsCollateral(token, false);
if (getCollateralBalance(_token) > 0 && getIsColl(_token)) {
aave.setUserUseReserveAsCollateral(_token, false);
} }
} }
@ -441,8 +445,11 @@ abstract contract AaveResolver is Events, Helpers {
uint256 currentRateMode = rateMode == 1 ? 2 : 1; uint256 currentRateMode = rateMode == 1 ? 2 : 1;
if (getPaybackBalance(token, currentRateMode) > 0) { bool isMatic = token == maticAddr;
aave.swapBorrowRateMode(token, rateMode); address _token = isMatic ? wmaticAddr : token;
if (getPaybackBalance(_token, currentRateMode) > 0) {
aave.swapBorrowRateMode(_token, rateMode);
} }
_eventName = "LogSwapRateMode(address,uint256)"; _eventName = "LogSwapRateMode(address,uint256)";