mirror of
https://github.com/Instadapp/dsa-polygon-migration.git
synced 2024-07-29 22:27:58 +00:00
Minor changes
This commit is contained in:
parent
4fd8768f84
commit
d82b74dd77
|
@ -18,9 +18,11 @@ import {
|
||||||
} from "./interfaces.sol";
|
} from "./interfaces.sol";
|
||||||
|
|
||||||
abstract contract Helpers is DSMath, Stores, Variables {
|
abstract contract Helpers is DSMath, Stores, Variables {
|
||||||
|
using SafeERC20 for IERC20;
|
||||||
|
|
||||||
function _paybackBehalfOne(AaveInterface aave, address token, uint amt, uint rateMode, address user) private {
|
function _paybackBehalfOne(AaveInterface aave, address token, uint amt, uint rateMode, address user) private {
|
||||||
aave.repay(token, amt, rateMode, user);
|
address _token = token == ethAddr ? wethAddr : token;
|
||||||
|
aave.repay(_token, amt, rateMode, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _PaybackStable(
|
function _PaybackStable(
|
||||||
|
@ -69,16 +71,17 @@ abstract contract Helpers is DSMath, Stores, Variables {
|
||||||
|
|
||||||
totalBorrow[i] = add(stableBorrow[i], variableBorrow[i]);
|
totalBorrow[i] = add(stableBorrow[i], variableBorrow[i]);
|
||||||
if (totalBorrow[i] > 0) {
|
if (totalBorrow[i] > 0) {
|
||||||
IERC20(_token).approve(address(aave), totalBorrow[i]); // TODO: Approval is to Aave address of atokens address?
|
IERC20(_token).safeApprove(address(aave), totalBorrow[i]);
|
||||||
}
|
}
|
||||||
aave.borrow(_token, totalBorrow[i], 2, 3088, address(this)); // TODO: Borrowing debt to payback
|
aave.borrow(_token, totalBorrow[i], 2, 3288, address(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getAtokens(address dsa, AaveInterface aave, address[] memory supplyTokens, uint[] memory supplyAmts) internal returns (uint[] memory finalAmts) {
|
function _getAtokens(address dsa, AaveInterface aave, address[] memory supplyTokens, uint[] memory supplyAmts) internal returns (uint[] memory finalAmts) {
|
||||||
for (uint i = 0; i < supplyTokens.length; i++) {
|
for (uint i = 0; i < supplyTokens.length; i++) {
|
||||||
require(isSupportedToken[supplyTokens[i]], "token-not-enabled");
|
require(isSupportedToken[supplyTokens[i]], "token-not-enabled");
|
||||||
(address _aToken, ,) = aaveData.getReserveTokensAddresses(supplyTokens[i]);
|
address _token = supplyTokens[i] == ethAddr ? wethAddr : supplyTokens[i];
|
||||||
|
(address _aToken, ,) = aaveData.getReserveTokensAddresses(_token);
|
||||||
ATokenInterface aTokenContract = ATokenInterface(_aToken);
|
ATokenInterface aTokenContract = ATokenInterface(_aToken);
|
||||||
uint _finalAmt;
|
uint _finalAmt;
|
||||||
if (supplyAmts[i] == uint(-1)) {
|
if (supplyAmts[i] == uint(-1)) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ contract LiquidityResolver is Helpers, Events {
|
||||||
tokenContract.safeTransferFrom(msg.sender, address(this), _amt);
|
tokenContract.safeTransferFrom(msg.sender, address(this), _amt);
|
||||||
}
|
}
|
||||||
|
|
||||||
tokenContract.approve(address(aave),_amt);
|
tokenContract.safeApprove(address(aave),_amt);
|
||||||
aave.deposit(_token, _amt, address(this), 3288);
|
aave.deposit(_token, _amt, address(this), 3288);
|
||||||
|
|
||||||
_amts[i] = _amt;
|
_amts[i] = _amt;
|
||||||
|
@ -92,7 +92,8 @@ contract LiquidityResolver is Helpers, Events {
|
||||||
for (uint256 i = 0; i < _length; i++) {
|
for (uint256 i = 0; i < _length; i++) {
|
||||||
require(isSupportedToken[tokens[i]], "token-not-enabled");
|
require(isSupportedToken[tokens[i]], "token-not-enabled");
|
||||||
uint _amt = amts[i];
|
uint _amt = amts[i];
|
||||||
address _token = tokens[i];
|
bool isEth = tokens[i] == ethAddr;
|
||||||
|
address _token = isEth ? wethAddr : tokens[i];
|
||||||
uint maxAmt = deposits[msg.sender][_token];
|
uint maxAmt = deposits[msg.sender][_token];
|
||||||
|
|
||||||
if (_amt > maxAmt) {
|
if (_amt > maxAmt) {
|
||||||
|
@ -101,10 +102,16 @@ contract LiquidityResolver is Helpers, Events {
|
||||||
|
|
||||||
deposits[msg.sender][_token] = sub(maxAmt, _amt);
|
deposits[msg.sender][_token] = sub(maxAmt, _amt);
|
||||||
|
|
||||||
if (_token == ethAddr) {
|
if (isEth) {
|
||||||
TokenInterface _tokenContract = TokenInterface(wethAddr);
|
TokenInterface _tokenContract = TokenInterface(wethAddr);
|
||||||
uint _ethBal = address(this).balance;
|
uint _ethBal = address(this).balance;
|
||||||
uint _tknBal = _tokenContract.balanceOf(address(this));
|
uint _tknBal = _tokenContract.balanceOf(address(this));
|
||||||
|
if (_ethBal > _amt) {
|
||||||
|
msg.sender.call{value: _amt}("");
|
||||||
|
_amts[i] = _amt;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ((_ethBal + _tknBal) < _amt) {
|
if ((_ethBal + _tknBal) < _amt) {
|
||||||
aave.withdraw(wethAddr, sub(_amt, (_tknBal + _ethBal)), address(this));
|
aave.withdraw(wethAddr, sub(_amt, (_tknBal + _ethBal)), address(this));
|
||||||
}
|
}
|
||||||
|
@ -144,7 +151,7 @@ contract LiquidityResolver is Helpers, Events {
|
||||||
IERC20 _tokenContract = IERC20(_token);
|
IERC20 _tokenContract = IERC20(_token);
|
||||||
uint _tokenBal = _tokenContract.balanceOf(address(this));
|
uint _tokenBal = _tokenContract.balanceOf(address(this));
|
||||||
if (_tokenBal > 0) {
|
if (_tokenBal > 0) {
|
||||||
_tokenContract.approve(address(this), _tokenBal);
|
_tokenContract.safeApprove(address(this), _tokenBal);
|
||||||
aave.deposit(_token, _tokenBal, address(this), 3288);
|
aave.deposit(_token, _tokenBal, address(this), 3288);
|
||||||
}
|
}
|
||||||
(
|
(
|
||||||
|
@ -155,17 +162,17 @@ contract LiquidityResolver is Helpers, Events {
|
||||||
if (supplyBal != 0 && borrowBal != 0) {
|
if (supplyBal != 0 && borrowBal != 0) {
|
||||||
if (supplyBal > borrowBal) {
|
if (supplyBal > borrowBal) {
|
||||||
aave.withdraw(_token, borrowBal, address(this)); // TODO: fail because of not enough withdrawing capacity?
|
aave.withdraw(_token, borrowBal, address(this)); // TODO: fail because of not enough withdrawing capacity?
|
||||||
IERC20(_token).approve(address(aave), borrowBal);
|
IERC20(_token).safeApprove(address(aave), borrowBal);
|
||||||
aave.repay(_token, borrowBal, 2, address(this));
|
aave.repay(_token, borrowBal, 2, address(this));
|
||||||
} else {
|
} else {
|
||||||
aave.withdraw(_token, supplyBal, address(this)); // TODO: fail because of not enough withdrawing capacity?
|
aave.withdraw(_token, supplyBal, address(this)); // TODO: fail because of not enough withdrawing capacity?
|
||||||
IERC20(_token).approve(address(aave), supplyBal);
|
IERC20(_token).safeApprove(address(aave), supplyBal);
|
||||||
aave.repay(_token, supplyBal, 2, address(this));
|
aave.repay(_token, supplyBal, 2, address(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (uint i = 0; i < _tokens.length; i++) {
|
for (uint i = 0; i < _tokens.length; i++) {
|
||||||
aave.withdraw(_tokens[i], _amts[i], address(this));
|
aave.withdraw(_token, _amts[i], address(this));
|
||||||
// TODO: transfer to polygon's receiver address "polygonReceiver"
|
// TODO: transfer to polygon's receiver address "polygonReceiver"
|
||||||
isPositionSafe();
|
isPositionSafe();
|
||||||
}
|
}
|
||||||
|
@ -206,7 +213,6 @@ contract MigrateResolver is LiquidityResolver {
|
||||||
AaveData memory data;
|
AaveData memory data;
|
||||||
|
|
||||||
data.borrowTokens = _data.borrowTokens;
|
data.borrowTokens = _data.borrowTokens;
|
||||||
data.borrowAmts = _data.stableBorrowAmts;
|
|
||||||
data.supplyAmts = totalSupplies;
|
data.supplyAmts = totalSupplies;
|
||||||
data.supplyTokens = _data.supplyTokens;
|
data.supplyTokens = _data.supplyTokens;
|
||||||
data.targetDsa = _data.targetDsa;
|
data.targetDsa = _data.targetDsa;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user