mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
refactored UserLogic
This commit is contained in:
parent
8df5182c59
commit
f9115b7030
|
@ -10,7 +10,7 @@ usePlugin('buidler-typechain');
|
||||||
usePlugin('solidity-coverage');
|
usePlugin('solidity-coverage');
|
||||||
usePlugin('@nomiclabs/buidler-waffle');
|
usePlugin('@nomiclabs/buidler-waffle');
|
||||||
usePlugin('@nomiclabs/buidler-etherscan');
|
usePlugin('@nomiclabs/buidler-etherscan');
|
||||||
usePlugin('buidler-gas-reporter');
|
//usePlugin('buidler-gas-reporter');
|
||||||
|
|
||||||
['misc'].forEach((folder) => {
|
['misc'].forEach((folder) => {
|
||||||
const tasksPath = path.join(__dirname, 'tasks', folder);
|
const tasksPath = path.join(__dirname, 'tasks', folder);
|
||||||
|
|
|
@ -12,7 +12,7 @@ import '../configuration/LendingPoolAddressesProvider.sol';
|
||||||
import '../tokenization/AToken.sol';
|
import '../tokenization/AToken.sol';
|
||||||
import '../libraries/WadRayMath.sol';
|
import '../libraries/WadRayMath.sol';
|
||||||
import '../libraries/ReserveLogic.sol';
|
import '../libraries/ReserveLogic.sol';
|
||||||
import '../libraries/UserLogic.sol';
|
import '../libraries/Helpers.sol';
|
||||||
import '../libraries/GenericLogic.sol';
|
import '../libraries/GenericLogic.sol';
|
||||||
import '../libraries/ValidationLogic.sol';
|
import '../libraries/ValidationLogic.sol';
|
||||||
import '../libraries/ReserveConfiguration.sol';
|
import '../libraries/ReserveConfiguration.sol';
|
||||||
|
@ -38,7 +38,6 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
||||||
using WadRayMath for uint256;
|
using WadRayMath for uint256;
|
||||||
using Address for address payable;
|
using Address for address payable;
|
||||||
using ReserveLogic for ReserveLogic.ReserveData;
|
using ReserveLogic for ReserveLogic.ReserveData;
|
||||||
using UserLogic for UserLogic.UserReserveData;
|
|
||||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||||
using UserConfiguration for UserConfiguration.Map;
|
using UserConfiguration for UserConfiguration.Map;
|
||||||
|
|
||||||
|
@ -419,7 +418,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
||||||
RepayLocalVars memory vars;
|
RepayLocalVars memory vars;
|
||||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||||
|
|
||||||
(vars.stableDebt, vars.variableDebt) = UserLogic.getUserCurrentDebt(_onBehalfOf, reserve);
|
(vars.stableDebt, vars.variableDebt) = Helpers.getUserCurrentDebt(_onBehalfOf, reserve);
|
||||||
|
|
||||||
vars.totalDebt = vars.stableDebt.add(vars.variableDebt);
|
vars.totalDebt = vars.stableDebt.add(vars.variableDebt);
|
||||||
|
|
||||||
|
@ -495,7 +494,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
||||||
function swapBorrowRateMode(address _reserve, uint256 _rateMode) external nonReentrant {
|
function swapBorrowRateMode(address _reserve, uint256 _rateMode) external nonReentrant {
|
||||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||||
|
|
||||||
(uint256 stableDebt, uint256 variableDebt) = UserLogic.getUserCurrentDebt(msg.sender, reserve);
|
(uint256 stableDebt, uint256 variableDebt) = Helpers.getUserCurrentDebt(msg.sender, reserve);
|
||||||
|
|
||||||
ReserveLogic.InterestRateMode rateMode = ReserveLogic.InterestRateMode(_rateMode);
|
ReserveLogic.InterestRateMode rateMode = ReserveLogic.InterestRateMode(_rateMode);
|
||||||
|
|
||||||
|
@ -867,8 +866,8 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
||||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||||
|
|
||||||
currentATokenBalance = IERC20(reserve.aTokenAddress).balanceOf(_user);
|
currentATokenBalance = IERC20(reserve.aTokenAddress).balanceOf(_user);
|
||||||
(currentStableDebt, currentVariableDebt) = UserLogic.getUserCurrentDebt(_user, reserve);
|
(currentStableDebt, currentVariableDebt) = Helpers.getUserCurrentDebt(_user, reserve);
|
||||||
(principalStableDebt, principalVariableDebt) = UserLogic.getUserPrincipalDebt(_user, reserve);
|
(principalStableDebt, principalVariableDebt) = Helpers.getUserPrincipalDebt(_user, reserve);
|
||||||
liquidityRate = reserve.currentLiquidityRate;
|
liquidityRate = reserve.currentLiquidityRate;
|
||||||
stableBorrowRate = IStableDebtToken(reserve.stableDebtTokenAddress).getUserStableRate(_user);
|
stableBorrowRate = IStableDebtToken(reserve.stableDebtTokenAddress).getUserStableRate(_user);
|
||||||
stableRateLastUpdated = IStableDebtToken(reserve.stableDebtTokenAddress).getUserLastUpdated(
|
stableRateLastUpdated = IStableDebtToken(reserve.stableDebtTokenAddress).getUserLastUpdated(
|
||||||
|
|
|
@ -16,7 +16,7 @@ import '../tokenization/interfaces/IVariableDebtToken.sol';
|
||||||
import '../libraries/WadRayMath.sol';
|
import '../libraries/WadRayMath.sol';
|
||||||
import '../interfaces/IPriceOracleGetter.sol';
|
import '../interfaces/IPriceOracleGetter.sol';
|
||||||
import '../libraries/GenericLogic.sol';
|
import '../libraries/GenericLogic.sol';
|
||||||
import '../libraries/UserLogic.sol';
|
import '../libraries/Helpers.sol';
|
||||||
import '../libraries/ReserveLogic.sol';
|
import '../libraries/ReserveLogic.sol';
|
||||||
import '../libraries/UniversalERC20.sol';
|
import '../libraries/UniversalERC20.sol';
|
||||||
import '../libraries/ReserveConfiguration.sol';
|
import '../libraries/ReserveConfiguration.sol';
|
||||||
|
@ -35,7 +35,6 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl
|
||||||
using PercentageMath for uint256;
|
using PercentageMath for uint256;
|
||||||
using Address for address;
|
using Address for address;
|
||||||
using ReserveLogic for ReserveLogic.ReserveData;
|
using ReserveLogic for ReserveLogic.ReserveData;
|
||||||
using UserLogic for UserLogic.UserReserveData;
|
|
||||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||||
using UserConfiguration for UserConfiguration.Map;
|
using UserConfiguration for UserConfiguration.Map;
|
||||||
|
|
||||||
|
@ -161,7 +160,7 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl
|
||||||
}
|
}
|
||||||
|
|
||||||
//if the user hasn't borrowed the specific currency defined by _reserve, it cannot be liquidated
|
//if the user hasn't borrowed the specific currency defined by _reserve, it cannot be liquidated
|
||||||
(vars.userStableDebt, vars.userVariableDebt) = UserLogic.getUserCurrentDebt(
|
(vars.userStableDebt, vars.userVariableDebt) = Helpers.getUserCurrentDebt(
|
||||||
_user,
|
_user,
|
||||||
principalReserve
|
principalReserve
|
||||||
);
|
);
|
||||||
|
|
|
@ -8,7 +8,6 @@ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||||
import {ReserveLogic} from './ReserveLogic.sol';
|
import {ReserveLogic} from './ReserveLogic.sol';
|
||||||
import {ReserveConfiguration} from './ReserveConfiguration.sol';
|
import {ReserveConfiguration} from './ReserveConfiguration.sol';
|
||||||
import {UserConfiguration} from './UserConfiguration.sol';
|
import {UserConfiguration} from './UserConfiguration.sol';
|
||||||
import {UserLogic} from './UserLogic.sol';
|
|
||||||
import {WadRayMath} from './WadRayMath.sol';
|
import {WadRayMath} from './WadRayMath.sol';
|
||||||
import {PercentageMath} from './PercentageMath.sol';
|
import {PercentageMath} from './PercentageMath.sol';
|
||||||
import '../interfaces/IPriceOracleGetter.sol';
|
import '../interfaces/IPriceOracleGetter.sol';
|
||||||
|
@ -22,7 +21,6 @@ import '@nomiclabs/buidler/console.sol';
|
||||||
*/
|
*/
|
||||||
library GenericLogic {
|
library GenericLogic {
|
||||||
using ReserveLogic for ReserveLogic.ReserveData;
|
using ReserveLogic for ReserveLogic.ReserveData;
|
||||||
using UserLogic for UserLogic.UserReserveData;
|
|
||||||
using SafeMath for uint256;
|
using SafeMath for uint256;
|
||||||
using WadRayMath for uint256;
|
using WadRayMath for uint256;
|
||||||
using PercentageMath for uint256;
|
using PercentageMath for uint256;
|
||||||
|
|
49
contracts/libraries/Helpers.sol
Normal file
49
contracts/libraries/Helpers.sol
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
// SPDX-License-Identifier: agpl-3.0
|
||||||
|
pragma solidity ^0.6.8;
|
||||||
|
|
||||||
|
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||||
|
import '../tokenization/base/DebtTokenBase.sol';
|
||||||
|
import './ReserveLogic.sol';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @title Helpers library
|
||||||
|
* @author Aave
|
||||||
|
* @notice Implements calculation helpers.
|
||||||
|
*/
|
||||||
|
library Helpers {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev fetches the user current stable and variable debt balances
|
||||||
|
* @param _user the user
|
||||||
|
* @param _reserve the reserve object
|
||||||
|
* @return the stable and variable debt balance
|
||||||
|
**/
|
||||||
|
function getUserCurrentDebt(address _user, ReserveLogic.ReserveData storage _reserve)
|
||||||
|
internal
|
||||||
|
view
|
||||||
|
returns (uint256, uint256)
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
IERC20(_reserve.stableDebtTokenAddress).balanceOf(_user),
|
||||||
|
IERC20(_reserve.variableDebtTokenAddress).balanceOf(_user)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev fetches the user principal stable and variable debt balances
|
||||||
|
* @param _user the user
|
||||||
|
* @param _reserve the reserve object
|
||||||
|
* @return the stable and variable debt balance
|
||||||
|
**/
|
||||||
|
function getUserPrincipalDebt(address _user, ReserveLogic.ReserveData storage _reserve)
|
||||||
|
internal
|
||||||
|
view
|
||||||
|
returns (uint256, uint256)
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
DebtTokenBase(_reserve.stableDebtTokenAddress).principalBalanceOf(_user),
|
||||||
|
DebtTokenBase(_reserve.variableDebtTokenAddress).principalBalanceOf(_user)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,7 +5,6 @@ import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
||||||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||||
|
|
||||||
import {ReserveLogic} from './ReserveLogic.sol';
|
import {ReserveLogic} from './ReserveLogic.sol';
|
||||||
import {UserLogic} from './UserLogic.sol';
|
|
||||||
import {WadRayMath} from './WadRayMath.sol';
|
import {WadRayMath} from './WadRayMath.sol';
|
||||||
|
|
||||||
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
||||||
|
|
|
@ -3,8 +3,6 @@ pragma solidity ^0.6.8;
|
||||||
|
|
||||||
import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
||||||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||||
|
|
||||||
import {UserLogic} from './UserLogic.sol';
|
|
||||||
import {MathUtils} from './MathUtils.sol';
|
import {MathUtils} from './MathUtils.sol';
|
||||||
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
||||||
import {UniversalERC20} from './UniversalERC20.sol';
|
import {UniversalERC20} from './UniversalERC20.sol';
|
||||||
|
@ -28,7 +26,6 @@ library ReserveLogic {
|
||||||
using WadRayMath for uint256;
|
using WadRayMath for uint256;
|
||||||
using UniversalERC20 for IERC20;
|
using UniversalERC20 for IERC20;
|
||||||
using Address for address;
|
using Address for address;
|
||||||
using UserLogic for UserLogic.UserReserveData;
|
|
||||||
using ReserveLogic for ReserveLogic.ReserveData;
|
using ReserveLogic for ReserveLogic.ReserveData;
|
||||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,7 @@ pragma solidity ^0.6.8;
|
||||||
|
|
||||||
import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
||||||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||||
|
|
||||||
import {UserLogic} from './UserLogic.sol';
|
|
||||||
import {WadRayMath} from './WadRayMath.sol';
|
import {WadRayMath} from './WadRayMath.sol';
|
||||||
|
|
||||||
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
||||||
import {IFeeProvider} from '../interfaces/IFeeProvider.sol';
|
import {IFeeProvider} from '../interfaces/IFeeProvider.sol';
|
||||||
|
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
// SPDX-License-Identifier: agpl-3.0
|
|
||||||
pragma solidity ^0.6.8;
|
|
||||||
|
|
||||||
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
|
||||||
|
|
||||||
import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
|
||||||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
|
||||||
import '../tokenization/base/DebtTokenBase.sol';
|
|
||||||
import './ReserveLogic.sol';
|
|
||||||
import './ReserveConfiguration.sol';
|
|
||||||
import './UserConfiguration.sol';
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @title UserLogic library
|
|
||||||
* @author Aave
|
|
||||||
* @notice Implements user specific logic.
|
|
||||||
*/
|
|
||||||
library UserLogic {
|
|
||||||
using SafeMath for uint256;
|
|
||||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
|
||||||
|
|
||||||
struct UserReserveData {
|
|
||||||
//defines if a specific deposit should or not be used as a collateral in borrows
|
|
||||||
UserConfiguration.Map configuration;
|
|
||||||
bool useAsCollateral;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev checks if a user is allowed to borrow at a stable rate
|
|
||||||
* @param _reserve the reserve address
|
|
||||||
* @param _user the user
|
|
||||||
* @param _amount the amount the the user wants to borrow
|
|
||||||
* @return true if the user is allowed to borrow at a stable rate, false otherwise
|
|
||||||
**/
|
|
||||||
|
|
||||||
function isAllowedToBorrowAtStable(
|
|
||||||
UserReserveData storage _user,
|
|
||||||
ReserveLogic.ReserveData storage _reserve,
|
|
||||||
address _userAddress,
|
|
||||||
uint256 _amount
|
|
||||||
) external view returns (bool) {
|
|
||||||
if (!_reserve.isStableBorrowRateEnabled) return false;
|
|
||||||
|
|
||||||
return
|
|
||||||
!_user.useAsCollateral ||
|
|
||||||
_reserve.configuration.getLtv() == 0 ||
|
|
||||||
_amount > IERC20(_reserve.aTokenAddress).balanceOf(_userAddress);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev fetches the user current stable and variable debt balances
|
|
||||||
* @param _user the user
|
|
||||||
* @param _reserve the reserve object
|
|
||||||
* @return the stable and variable debt balance
|
|
||||||
**/
|
|
||||||
function getUserCurrentDebt(address _user, ReserveLogic.ReserveData storage _reserve)
|
|
||||||
internal
|
|
||||||
view
|
|
||||||
returns (uint256, uint256)
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
IERC20(_reserve.stableDebtTokenAddress).balanceOf(_user),
|
|
||||||
IERC20(_reserve.variableDebtTokenAddress).balanceOf(_user)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev fetches the user principal stable and variable debt balances
|
|
||||||
* @param _user the user
|
|
||||||
* @param _reserve the reserve object
|
|
||||||
* @return the stable and variable debt balance
|
|
||||||
**/
|
|
||||||
function getUserPrincipalDebt(address _user, ReserveLogic.ReserveData storage _reserve)
|
|
||||||
internal
|
|
||||||
view
|
|
||||||
returns (uint256, uint256)
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
DebtTokenBase(_reserve.stableDebtTokenAddress).principalBalanceOf(_user),
|
|
||||||
DebtTokenBase(_reserve.variableDebtTokenAddress).principalBalanceOf(_user)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,7 +6,6 @@ import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
||||||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||||
|
|
||||||
import {ReserveLogic} from './ReserveLogic.sol';
|
import {ReserveLogic} from './ReserveLogic.sol';
|
||||||
import {UserLogic} from './UserLogic.sol';
|
|
||||||
import {GenericLogic} from './GenericLogic.sol';
|
import {GenericLogic} from './GenericLogic.sol';
|
||||||
import {WadRayMath} from './WadRayMath.sol';
|
import {WadRayMath} from './WadRayMath.sol';
|
||||||
import {PercentageMath} from './PercentageMath.sol';
|
import {PercentageMath} from './PercentageMath.sol';
|
||||||
|
@ -24,7 +23,6 @@ import '@nomiclabs/buidler/console.sol';
|
||||||
*/
|
*/
|
||||||
library ValidationLogic {
|
library ValidationLogic {
|
||||||
using ReserveLogic for ReserveLogic.ReserveData;
|
using ReserveLogic for ReserveLogic.ReserveData;
|
||||||
using UserLogic for UserLogic.UserReserveData;
|
|
||||||
using SafeMath for uint256;
|
using SafeMath for uint256;
|
||||||
using WadRayMath for uint256;
|
using WadRayMath for uint256;
|
||||||
using PercentageMath for uint256;
|
using PercentageMath for uint256;
|
||||||
|
|
|
@ -70,7 +70,7 @@
|
||||||
},
|
},
|
||||||
"PriceOracle": {
|
"PriceOracle": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0x85bdE212E66e2BAE510E44Ed59116c1eC712795b",
|
"address": "0xE4C10Db67595aF2Cb4166c8C274e0140f7E43059",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
},
|
},
|
||||||
"MockAggregator": {
|
"MockAggregator": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xAF6BA11790D1942625C0c2dA07da19AB63845cfF",
|
"address": "0xEC1C93A9f6a9e18E97784c76aC52053587FcDB89",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -90,7 +90,7 @@
|
||||||
},
|
},
|
||||||
"ChainlinkProxyPriceProvider": {
|
"ChainlinkProxyPriceProvider": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xD83D2773a7873ae2b5f8Fb92097e20a8C64F691E",
|
"address": "0x7B6C3e5486D9e6959441ab554A889099eed76290",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
},
|
},
|
||||||
"LendingRateOracle": {
|
"LendingRateOracle": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xf91aC1098F3b154671Ce83290114aaE45ac0225f",
|
"address": "0xD83D2773a7873ae2b5f8Fb92097e20a8C64F691E",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
},
|
},
|
||||||
"DefaultReserveInterestRateStrategy": {
|
"DefaultReserveInterestRateStrategy": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0x2dD8146Ad2138ac61F93E549f8F917927B47E28a",
|
"address": "0x63b9792E7A95e3aa037255E8cAa0Dfd76f7383e7",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
},
|
},
|
||||||
"TokenDistributor": {
|
"TokenDistributor": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xC5f7aC6895DcB76877E71db756433fB0E0478FEB"
|
"address": "0x1bb3d8FA7bDa74Af0D64d348a2545E7570863fA8"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
"address": "0xf2923EBa2C4AF250D93e8201Bc20a0096B3A8f89"
|
"address": "0xf2923EBa2C4AF250D93e8201Bc20a0096B3A8f89"
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
},
|
},
|
||||||
"InitializableAdminUpgradeabilityProxy": {
|
"InitializableAdminUpgradeabilityProxy": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xC5f7aC6895DcB76877E71db756433fB0E0478FEB",
|
"address": "0x1bb3d8FA7bDa74Af0D64d348a2545E7570863fA8",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
},
|
},
|
||||||
"MockFlashLoanReceiver": {
|
"MockFlashLoanReceiver": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0x24E420B42971372F060a93129846761F354Bc50B"
|
"address": "0xC5f7aC6895DcB76877E71db756433fB0E0478FEB"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
"address": "0x9D72c382e918491A463157Ea3e7633FE0F26F83d"
|
"address": "0x9D72c382e918491A463157Ea3e7633FE0F26F83d"
|
||||||
|
@ -172,7 +172,7 @@
|
||||||
},
|
},
|
||||||
"WalletBalanceProvider": {
|
"WalletBalanceProvider": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0x285671fF5C8172dE63cF5eA264B2e827aDBC6740",
|
"address": "0x51fa472EB89c046484B037B6125CF843C9d41b44",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -412,7 +412,7 @@
|
||||||
},
|
},
|
||||||
"AaveProtocolTestHelpers": {
|
"AaveProtocolTestHelpers": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d"
|
"address": "0x4b2c297ba5be42610994974b9543D56B864CA011"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
"address": "0x49CC1e6749f45e3BaB945B96c0d6723a606BDcDa"
|
"address": "0x49CC1e6749f45e3BaB945B96c0d6723a606BDcDa"
|
||||||
|
@ -420,7 +420,7 @@
|
||||||
},
|
},
|
||||||
"StableDebtToken": {
|
"StableDebtToken": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xBdFE372Bb5a0db801A1a17796EC5cfF2F30A714C",
|
"address": "0xc783bfC59158E888dA3E9c7768aaDC7a58ee7809",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
@ -430,7 +430,7 @@
|
||||||
},
|
},
|
||||||
"VariableDebtToken": {
|
"VariableDebtToken": {
|
||||||
"buidlerevm": {
|
"buidlerevm": {
|
||||||
"address": "0xD325d114a728C2114Bd33Ad47152f790f2a29c5c",
|
"address": "0xBdFE372Bb5a0db801A1a17796EC5cfF2F30A714C",
|
||||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
|
|
|
@ -118,7 +118,6 @@ const deployLibrary = async (libraryId: eContractid) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const linkLibrariesToArtifact = async (artifact: Artifact) => {
|
export const linkLibrariesToArtifact = async (artifact: Artifact) => {
|
||||||
const userLogic = await deployLibrary(eContractid.UserLogic);
|
|
||||||
const reserveLogic = await deployLibrary(eContractid.ReserveLogic);
|
const reserveLogic = await deployLibrary(eContractid.ReserveLogic);
|
||||||
|
|
||||||
const genericLogicArtifact = await readArtifact(
|
const genericLogicArtifact = await readArtifact(
|
||||||
|
@ -127,7 +126,6 @@ export const linkLibrariesToArtifact = async (artifact: Artifact) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, {
|
const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, {
|
||||||
[eContractid.UserLogic]: userLogic.address,
|
|
||||||
[eContractid.ReserveLogic]: reserveLogic.address,
|
[eContractid.ReserveLogic]: reserveLogic.address,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -144,7 +142,6 @@ export const linkLibrariesToArtifact = async (artifact: Artifact) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
const linkedValidationLogicByteCode = linkBytecode(validationLogicArtifact, {
|
const linkedValidationLogicByteCode = linkBytecode(validationLogicArtifact, {
|
||||||
[eContractid.UserLogic]: userLogic.address,
|
|
||||||
[eContractid.ReserveLogic]: reserveLogic.address,
|
[eContractid.ReserveLogic]: reserveLogic.address,
|
||||||
[eContractid.GenericLogic]: genericLogic.address,
|
[eContractid.GenericLogic]: genericLogic.address,
|
||||||
});
|
});
|
||||||
|
@ -157,7 +154,6 @@ export const linkLibrariesToArtifact = async (artifact: Artifact) => {
|
||||||
const validationLogic = await (await validationLogicFactory.deploy()).deployed();
|
const validationLogic = await (await validationLogicFactory.deploy()).deployed();
|
||||||
|
|
||||||
const linkedBytecode = linkBytecode(artifact, {
|
const linkedBytecode = linkBytecode(artifact, {
|
||||||
[eContractid.UserLogic]: userLogic.address,
|
|
||||||
[eContractid.ReserveLogic]: reserveLogic.address,
|
[eContractid.ReserveLogic]: reserveLogic.address,
|
||||||
[eContractid.GenericLogic]: genericLogic.address,
|
[eContractid.GenericLogic]: genericLogic.address,
|
||||||
[eContractid.ValidationLogic]: validationLogic.address,
|
[eContractid.ValidationLogic]: validationLogic.address,
|
||||||
|
|
|
@ -12,7 +12,7 @@ BigNumber.config({DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_DOWN});
|
||||||
|
|
||||||
const scenarioFolder = './test/helpers/scenarios/';
|
const scenarioFolder = './test/helpers/scenarios/';
|
||||||
|
|
||||||
const selectedScenarios: string[] = ['deposit.json','redeem.json','borrow-repay-stable.json', 'borrow-repay-variable.json'];
|
const selectedScenarios: string[] = [];
|
||||||
|
|
||||||
fs.readdirSync(scenarioFolder).forEach((file) => {
|
fs.readdirSync(scenarioFolder).forEach((file) => {
|
||||||
if (selectedScenarios.length > 0 && !selectedScenarios.includes(file)) return;
|
if (selectedScenarios.length > 0 && !selectedScenarios.includes(file)) return;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user