mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
Updated parameters mapping
This commit is contained in:
parent
77faf4774b
commit
fa60f03d8d
|
@ -10,6 +10,7 @@ usePlugin('buidler-typechain');
|
|||
usePlugin('solidity-coverage');
|
||||
usePlugin('@nomiclabs/buidler-waffle');
|
||||
usePlugin('@nomiclabs/buidler-etherscan');
|
||||
usePlugin('buidler-gas-reporter');
|
||||
|
||||
['misc'].forEach((folder) => {
|
||||
const tasksPath = path.join(__dirname, 'tasks', folder);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: agpl-3.0
|
||||
pragma solidity ^0.6.8;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import '@openzeppelin/contracts/math/SafeMath.sol';
|
||||
import '@openzeppelin/contracts/utils/ReentrancyGuard.sol';
|
||||
|
@ -14,6 +15,7 @@ import '../libraries/ReserveLogic.sol';
|
|||
import '../libraries/UserLogic.sol';
|
||||
import '../libraries/GenericLogic.sol';
|
||||
import '../libraries/ValidationLogic.sol';
|
||||
import '../libraries/ReserveConfiguration.sol';
|
||||
import '../libraries/UniversalERC20.sol';
|
||||
import '../tokenization/interfaces/IStableDebtToken.sol';
|
||||
import '../tokenization/interfaces/IVariableDebtToken.sol';
|
||||
|
@ -36,6 +38,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
using Address for address payable;
|
||||
using ReserveLogic for ReserveLogic.ReserveData;
|
||||
using UserLogic for UserLogic.UserReserveData;
|
||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||
|
||||
//main configuration parameters
|
||||
uint256 private constant REBALANCE_DOWN_RATE_DELTA = (1e27) / 5;
|
||||
|
@ -336,7 +339,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
uint256 amountInETH = IPriceOracleGetter(addressesProvider.getPriceOracle())
|
||||
.getAssetPrice(_reserve)
|
||||
.mul(_amount)
|
||||
.div(10**reserve.decimals); //price is in ether
|
||||
.div(10**reserve.configuration.getDecimals()); //price is in ether
|
||||
|
||||
ValidationLogic.validateBorrow(
|
||||
reserve,
|
||||
|
@ -743,16 +746,16 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
|
||||
return (
|
||||
reserve.decimals,
|
||||
reserve.baseLTVasCollateral,
|
||||
reserve.liquidationThreshold,
|
||||
reserve.liquidationBonus,
|
||||
reserve.configuration.getDecimals(),
|
||||
reserve.configuration.getLtv(),
|
||||
reserve.configuration.getLiquidationThreshold(),
|
||||
reserve.configuration.getLiquidationBonus(),
|
||||
reserve.interestRateStrategyAddress,
|
||||
reserve.usageAsCollateralEnabled,
|
||||
reserve.borrowingEnabled,
|
||||
reserve.isStableBorrowRateEnabled,
|
||||
reserve.isActive,
|
||||
reserve.isFreezed
|
||||
reserve.configuration.getLtv() != 0,
|
||||
reserve.configuration.getBorrowingEnabled(),
|
||||
reserve.configuration.getStableRateBorrowingEnabled(),
|
||||
reserve.configuration.getActive(),
|
||||
reserve.configuration.getFreezed()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -811,7 +814,6 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
returns (
|
||||
uint256 totalCollateralETH,
|
||||
uint256 totalBorrowsETH,
|
||||
uint256 totalFeesETH,
|
||||
uint256 availableBorrowsETH,
|
||||
uint256 currentLiquidationThreshold,
|
||||
uint256 ltv,
|
||||
|
@ -821,7 +823,6 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
(
|
||||
totalCollateralETH,
|
||||
totalBorrowsETH,
|
||||
totalFeesETH,
|
||||
ltv,
|
||||
currentLiquidationThreshold,
|
||||
healthFactor
|
||||
|
@ -836,9 +837,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
availableBorrowsETH = GenericLogic.calculateAvailableBorrowsETH(
|
||||
totalCollateralETH,
|
||||
totalBorrowsETH,
|
||||
totalFeesETH,
|
||||
ltv,
|
||||
address(feeProvider)
|
||||
ltv
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -885,7 +884,6 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
* @dev initializes a reserve
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _aTokenAddress the address of the overlying aToken contract
|
||||
* @param _decimals the decimals of the reserve currency
|
||||
* @param _interestRateStrategyAddress the address of the interest rate strategy contract
|
||||
**/
|
||||
function initReserve(
|
||||
|
@ -893,14 +891,12 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
address _aTokenAddress,
|
||||
address _stableDebtAddress,
|
||||
address _variableDebtAddress,
|
||||
uint256 _decimals,
|
||||
address _interestRateStrategyAddress
|
||||
) external onlyLendingPoolConfigurator {
|
||||
reserves[_reserve].init(
|
||||
_aTokenAddress,
|
||||
_stableDebtAddress,
|
||||
_variableDebtAddress,
|
||||
_decimals,
|
||||
_interestRateStrategyAddress
|
||||
);
|
||||
addReserveToListInternal(_reserve);
|
||||
|
@ -919,142 +915,19 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable {
|
|||
reserves[_reserve].interestRateStrategyAddress = _rateStrategyAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev enables borrowing on a reserve. Also sets the stable rate borrowing
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _stableBorrowRateEnabled true if the stable rate needs to be enabled, false otherwise
|
||||
**/
|
||||
|
||||
function setReserveBorrowingEnabled(
|
||||
address _reserve,
|
||||
bool _borrowingEnabled,
|
||||
bool _stableBorrowRateEnabled
|
||||
) external onlyLendingPoolConfigurator {
|
||||
if (_borrowingEnabled) {
|
||||
reserves[_reserve].enableBorrowing(_stableBorrowRateEnabled);
|
||||
} else {
|
||||
reserves[_reserve].disableBorrowing();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev enables a reserve to be used as collateral
|
||||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function enableReserveAsCollateral(
|
||||
address _reserve,
|
||||
uint256 _baseLTVasCollateral,
|
||||
uint256 _liquidationThreshold,
|
||||
uint256 _liquidationBonus
|
||||
) external onlyLendingPoolConfigurator {
|
||||
reserves[_reserve].enableAsCollateral(
|
||||
_baseLTVasCollateral,
|
||||
_liquidationThreshold,
|
||||
_liquidationBonus
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev disables a reserve to be used as collateral
|
||||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function disableReserveAsCollateral(address _reserve) external onlyLendingPoolConfigurator {
|
||||
reserves[_reserve].disableAsCollateral();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev enable the stable borrow rate mode on a reserve
|
||||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function setReserveStableBorrowRateEnabled(address _reserve, bool _enabled)
|
||||
function setConfiguration(address _reserve, uint256 _configuration)
|
||||
external
|
||||
onlyLendingPoolConfigurator
|
||||
{
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
reserve.isStableBorrowRateEnabled = _enabled;
|
||||
reserves[_reserve].configuration.data = _configuration;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev activates a reserve
|
||||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function setReserveActive(address _reserve, bool _active) external onlyLendingPoolConfigurator {
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
|
||||
if (!_active) {
|
||||
reserve.isActive = false;
|
||||
} else {
|
||||
require(
|
||||
reserve.lastLiquidityCumulativeIndex > 0 && reserve.lastVariableBorrowCumulativeIndex > 0,
|
||||
'Reserve has not been initialized yet'
|
||||
);
|
||||
reserve.isActive = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice allows the configurator to freeze the reserve.
|
||||
* A freezed reserve does not allow any action apart from repay, redeem, liquidationCall, rebalance.
|
||||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function setReserveFreeze(address _reserve, bool _isFreezed)
|
||||
function getConfiguration(address _reserve)
|
||||
external
|
||||
onlyLendingPoolConfigurator
|
||||
view
|
||||
returns (ReserveConfiguration.Map memory)
|
||||
{
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
reserve.isFreezed = _isFreezed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice allows the configurator to update the loan to value of a reserve
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _ltv the new loan to value
|
||||
**/
|
||||
function setReserveBaseLTVasCollateral(address _reserve, uint256 _ltv)
|
||||
external
|
||||
onlyLendingPoolConfigurator
|
||||
{
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
reserve.baseLTVasCollateral = _ltv;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice allows the configurator to update the liquidation threshold of a reserve
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _threshold the new liquidation threshold
|
||||
**/
|
||||
function setReserveLiquidationThreshold(address _reserve, uint256 _threshold)
|
||||
external
|
||||
onlyLendingPoolConfigurator
|
||||
{
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
reserve.liquidationThreshold = _threshold;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice allows the configurator to update the liquidation bonus of a reserve
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _bonus the new liquidation bonus
|
||||
**/
|
||||
function setReserveLiquidationBonus(address _reserve, uint256 _bonus)
|
||||
external
|
||||
onlyLendingPoolConfigurator
|
||||
{
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
reserve.liquidationBonus = _bonus;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice allows the configurator to update the reserve decimals
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _decimals the decimals of the reserve
|
||||
**/
|
||||
function setReserveDecimals(address _reserve, uint256 _decimals)
|
||||
external
|
||||
onlyLendingPoolConfigurator
|
||||
{
|
||||
ReserveLogic.ReserveData storage reserve = reserves[_reserve];
|
||||
reserve.decimals = _decimals;
|
||||
return reserves[_reserve].configuration;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
// SPDX-License-Identifier: agpl-3.0
|
||||
pragma solidity ^0.6.8;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import '@openzeppelin/contracts/math/SafeMath.sol';
|
||||
|
||||
import '../interfaces/IERC20Detailed.sol';
|
||||
import '../libraries/openzeppelin-upgradeability/VersionedInitializable.sol';
|
||||
import '../libraries/ReserveConfiguration.sol';
|
||||
import '../configuration/LendingPoolAddressesProvider.sol';
|
||||
import '../tokenization/AToken.sol';
|
||||
|
||||
|
@ -12,11 +14,12 @@ import '../tokenization/AToken.sol';
|
|||
* @title LendingPoolConfigurator contract
|
||||
* @author Aave
|
||||
* @notice Executes configuration methods on the LendingPoolCore contract. Allows to enable/disable reserves,
|
||||
* and set different protocol parameters.
|
||||
* and LiquidationThreshold different protocol parameters.
|
||||
**/
|
||||
|
||||
contract LendingPoolConfigurator is VersionedInitializable {
|
||||
using SafeMath for uint256;
|
||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||
|
||||
/**
|
||||
* @dev emitted when a reserve is initialized.
|
||||
|
@ -135,6 +138,8 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
event ReserveInterestRateStrategyChanged(address _reserve, address _strategy);
|
||||
|
||||
LendingPoolAddressesProvider public poolAddressesProvider;
|
||||
LendingPool public pool;
|
||||
|
||||
/**
|
||||
* @dev only the lending pool manager can call functions affected by this modifier
|
||||
**/
|
||||
|
@ -154,6 +159,7 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
|
||||
function initialize(LendingPoolAddressesProvider _poolAddressesProvider) public initializer {
|
||||
poolAddressesProvider = _poolAddressesProvider;
|
||||
pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -210,15 +216,23 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
_aTokenSymbol
|
||||
);
|
||||
|
||||
LendingPool(payable(poolAddressesProvider.getLendingPool())).initReserve(
|
||||
pool.initReserve(
|
||||
_reserve,
|
||||
address(aTokenInstance),
|
||||
_stableDebtTokenAddress,
|
||||
_variableDebtTokenAddress,
|
||||
_underlyingAssetDecimals,
|
||||
_interestRateStrategyAddress
|
||||
);
|
||||
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setDecimals(_underlyingAssetDecimals);
|
||||
|
||||
currentConfig.setActive(true);
|
||||
currentConfig.setFreezed(false);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveInitialized(_reserve, address(aTokenInstance), _interestRateStrategyAddress);
|
||||
}
|
||||
|
||||
|
@ -231,8 +245,13 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
external
|
||||
onlyLendingPoolManager
|
||||
{
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveBorrowingEnabled(_reserve, _stableBorrowRateEnabled, true);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setBorrowingEnabled(true);
|
||||
currentConfig.setStableRateBorrowingEnabled(_stableBorrowRateEnabled);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit BorrowingEnabledOnReserve(_reserve, _stableBorrowRateEnabled);
|
||||
}
|
||||
|
||||
|
@ -241,8 +260,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function disableBorrowingOnReserve(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveBorrowingEnabled(_reserve, false, false);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setBorrowingEnabled(false);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
emit BorrowingDisabledOnReserve(_reserve);
|
||||
}
|
||||
|
||||
|
@ -259,13 +281,14 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
uint256 _liquidationThreshold,
|
||||
uint256 _liquidationBonus
|
||||
) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.enableReserveAsCollateral(
|
||||
_reserve,
|
||||
_baseLTVasCollateral,
|
||||
_liquidationThreshold,
|
||||
_liquidationBonus
|
||||
);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setLtv(_baseLTVasCollateral);
|
||||
currentConfig.setLiquidationThreshold(_liquidationThreshold);
|
||||
currentConfig.setLiquidationBonus(_liquidationBonus);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveEnabledAsCollateral(
|
||||
_reserve,
|
||||
_baseLTVasCollateral,
|
||||
|
@ -279,8 +302,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function disableReserveAsCollateral(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.disableReserveAsCollateral(_reserve);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setLtv(0);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveDisabledAsCollateral(_reserve);
|
||||
}
|
||||
|
@ -290,8 +316,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function enableReserveStableRate(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveStableBorrowRateEnabled(_reserve, true);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setStableRateBorrowingEnabled(true);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit StableRateEnabledOnReserve(_reserve);
|
||||
}
|
||||
|
@ -301,8 +330,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function disableReserveStableRate(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveStableBorrowRateEnabled(_reserve, false);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setStableRateBorrowingEnabled(false);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit StableRateDisabledOnReserve(_reserve);
|
||||
}
|
||||
|
@ -312,8 +344,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function activateReserve(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveActive(_reserve, true);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setActive(true);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveActivated(_reserve);
|
||||
}
|
||||
|
@ -323,7 +358,6 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function deactivateReserve(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
(
|
||||
uint256 availableLiquidity,
|
||||
uint256 totalBorrowsStable,
|
||||
|
@ -340,7 +374,12 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
availableLiquidity == 0 && totalBorrowsStable == 0 && totalBorrowsVariable == 0,
|
||||
'The liquidity of the reserve needs to be 0'
|
||||
);
|
||||
pool.setReserveActive(_reserve, false);
|
||||
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setActive(false);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveDeactivated(_reserve);
|
||||
}
|
||||
|
@ -350,8 +389,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function freezeReserve(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveFreeze(_reserve, true);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setFreezed(true);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveFreezed(_reserve);
|
||||
}
|
||||
|
@ -361,8 +403,11 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
**/
|
||||
function unfreezeReserve(address _reserve) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveFreeze(_reserve, false);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setFreezed(false);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveUnfreezed(_reserve);
|
||||
}
|
||||
|
@ -372,12 +417,13 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
* @param _ltv the new value for the loan to value
|
||||
**/
|
||||
function setReserveBaseLTVasCollateral(address _reserve, uint256 _ltv)
|
||||
external
|
||||
onlyLendingPoolManager
|
||||
{
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveBaseLTVasCollateral(_reserve, _ltv);
|
||||
function setLtv(address _reserve, uint256 _ltv) external onlyLendingPoolManager {
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setLtv(_ltv);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveBaseLtvChanged(_reserve, _ltv);
|
||||
}
|
||||
|
||||
|
@ -386,12 +432,16 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
* @param _threshold the new value for the liquidation threshold
|
||||
**/
|
||||
function setReserveLiquidationThreshold(address _reserve, uint256 _threshold)
|
||||
function setLiquidationThreshold(address _reserve, uint256 _threshold)
|
||||
external
|
||||
onlyLendingPoolManager
|
||||
{
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveLiquidationThreshold(_reserve, _threshold);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setLiquidationThreshold(_threshold);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveLiquidationThresholdChanged(_reserve, _threshold);
|
||||
}
|
||||
|
||||
|
@ -400,12 +450,13 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _reserve the address of the reserve
|
||||
* @param _bonus the new value for the liquidation bonus
|
||||
**/
|
||||
function setReserveLiquidationBonus(address _reserve, uint256 _bonus)
|
||||
external
|
||||
onlyLendingPoolManager
|
||||
{
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveLiquidationBonus(_reserve, _bonus);
|
||||
function setLiquidationBonus(address _reserve, uint256 _bonus) external onlyLendingPoolManager {
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setLiquidationBonus(_bonus);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveLiquidationBonusChanged(_reserve, _bonus);
|
||||
}
|
||||
|
||||
|
@ -415,8 +466,12 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
* @param _decimals the new number of decimals
|
||||
**/
|
||||
function setReserveDecimals(address _reserve, uint256 _decimals) external onlyLendingPoolManager {
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveDecimals(_reserve, _decimals);
|
||||
ReserveConfiguration.Map memory currentConfig = pool.getConfiguration(_reserve);
|
||||
|
||||
currentConfig.setDecimals(_decimals);
|
||||
|
||||
pool.setConfiguration(_reserve, currentConfig.data);
|
||||
|
||||
emit ReserveDecimalsChanged(_reserve, _decimals);
|
||||
}
|
||||
|
||||
|
@ -429,7 +484,6 @@ contract LendingPoolConfigurator is VersionedInitializable {
|
|||
external
|
||||
onlyLendingPoolManager
|
||||
{
|
||||
LendingPool pool = LendingPool(payable(poolAddressesProvider.getLendingPool()));
|
||||
pool.setReserveInterestRateStrategyAddress(_reserve, _rateStrategyAddress);
|
||||
emit ReserveInterestRateStrategyChanged(_reserve, _rateStrategyAddress);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import '../libraries/GenericLogic.sol';
|
|||
import '../libraries/UserLogic.sol';
|
||||
import '../libraries/ReserveLogic.sol';
|
||||
import '../libraries/UniversalERC20.sol';
|
||||
import '../libraries/ReserveConfiguration.sol';
|
||||
|
||||
/**
|
||||
* @title LendingPoolLiquidationManager contract
|
||||
|
@ -32,6 +33,7 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl
|
|||
using Address for address;
|
||||
using ReserveLogic for ReserveLogic.ReserveData;
|
||||
using UserLogic for UserLogic.UserReserveData;
|
||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||
|
||||
LendingPoolAddressesProvider public addressesProvider;
|
||||
IFeeProvider feeProvider;
|
||||
|
@ -124,7 +126,7 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl
|
|||
|
||||
LiquidationCallLocalVars memory vars;
|
||||
|
||||
(, , , , , vars.healthFactor) = GenericLogic.calculateUserAccountData(
|
||||
(, , , , vars.healthFactor) = GenericLogic.calculateUserAccountData(
|
||||
_user,
|
||||
reserves,
|
||||
usersReserveData,
|
||||
|
@ -150,7 +152,7 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl
|
|||
}
|
||||
|
||||
vars.isCollateralEnabled =
|
||||
collateralReserve.usageAsCollateralEnabled &&
|
||||
collateralReserve.configuration.getLiquidationThreshold() > 0 &&
|
||||
userCollateral.useAsCollateral;
|
||||
|
||||
//if _collateral isn't enabled as collateral by _user, it cannot be liquidated
|
||||
|
@ -316,9 +318,11 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl
|
|||
|
||||
vars.collateralPrice = oracle.getAssetPrice(_collateralAddress);
|
||||
vars.principalCurrencyPrice = oracle.getAssetPrice(_principalAddress);
|
||||
vars.liquidationBonus = _collateralReserve.liquidationBonus;
|
||||
vars.principalDecimals = _principalReserve.decimals;
|
||||
vars.collateralDecimals = _collateralReserve.decimals;
|
||||
|
||||
(, , vars.liquidationBonus, vars.collateralDecimals) = _collateralReserve
|
||||
.configuration
|
||||
.getParams();
|
||||
vars.principalDecimals = _principalReserve.configuration.getDecimals();
|
||||
|
||||
//this is the maximum possible amount of the selected collateral that can be liquidated, given the
|
||||
//max amount of principal currency that is available for liquidation.
|
||||
|
|
|
@ -5,6 +5,7 @@ import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
|
|||
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
||||
|
||||
import {ReserveLogic} from './ReserveLogic.sol';
|
||||
import {ReserveConfiguration} from './ReserveConfiguration.sol';
|
||||
import {UserLogic} from './UserLogic.sol';
|
||||
import {WadRayMath} from './WadRayMath.sol';
|
||||
|
||||
|
@ -22,14 +23,15 @@ library GenericLogic {
|
|||
using UserLogic for UserLogic.UserReserveData;
|
||||
using SafeMath for uint256;
|
||||
using WadRayMath for uint256;
|
||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||
|
||||
uint256 public constant HEALTH_FACTOR_LIQUIDATION_THRESHOLD = 1e18;
|
||||
|
||||
struct balanceDecreaseAllowedLocalVars {
|
||||
uint256 decimals;
|
||||
uint256 ltv;
|
||||
uint256 collateralBalanceETH;
|
||||
uint256 borrowBalanceETH;
|
||||
uint256 totalFeesETH;
|
||||
uint256 currentLiquidationThreshold;
|
||||
uint256 reserveLiquidationThreshold;
|
||||
uint256 amountToDecreaseETH;
|
||||
|
@ -40,7 +42,8 @@ library GenericLogic {
|
|||
}
|
||||
|
||||
/**
|
||||
* @dev check if a specific balance decrease is allowed (i.e. doesn't bring the user borrow position health factor under HEALTH_FACTOR_LIQUIDATION_THRESHOLD)
|
||||
* @dev check if a specific balance decrease is allowed
|
||||
* (i.e. doesn't bring the user borrow position health factor under HEALTH_FACTOR_LIQUIDATION_THRESHOLD)
|
||||
* @param _reserve the address of the reserve
|
||||
* @param _user the address of the user
|
||||
* @param _amount the amount to decrease
|
||||
|
@ -58,17 +61,15 @@ library GenericLogic {
|
|||
// Usage of a memory struct of vars to avoid "Stack too deep" errors due to local variables
|
||||
balanceDecreaseAllowedLocalVars memory vars;
|
||||
|
||||
if (
|
||||
!_reservesData[_reserve].usageAsCollateralEnabled ||
|
||||
!_usersData[_user][_reserve].useAsCollateral
|
||||
) {
|
||||
(vars.ltv, , , vars.decimals) = _reservesData[_reserve].configuration.getParams();
|
||||
|
||||
if (vars.ltv == 0 || !_usersData[_user][_reserve].useAsCollateral) {
|
||||
return true; //if reserve is not used as collateral, no reasons to block the transfer
|
||||
}
|
||||
|
||||
(
|
||||
vars.collateralBalanceETH,
|
||||
vars.borrowBalanceETH,
|
||||
vars.totalFeesETH,
|
||||
,
|
||||
vars.currentLiquidationThreshold,
|
||||
|
||||
|
@ -79,7 +80,7 @@ library GenericLogic {
|
|||
}
|
||||
|
||||
vars.amountToDecreaseETH = IPriceOracleGetter(_oracle).getAssetPrice(_reserve).mul(_amount).div(
|
||||
10**_reservesData[_reserve].decimals
|
||||
10**vars.decimals
|
||||
);
|
||||
|
||||
vars.collateralBalancefterDecrease = vars.collateralBalanceETH.sub(vars.amountToDecreaseETH);
|
||||
|
@ -98,7 +99,6 @@ library GenericLogic {
|
|||
uint256 healthFactorAfterDecrease = calculateHealthFactorFromBalances(
|
||||
vars.collateralBalancefterDecrease,
|
||||
vars.borrowBalanceETH,
|
||||
vars.totalFeesETH,
|
||||
vars.liquidationThresholdAfterDecrease
|
||||
);
|
||||
|
||||
|
@ -110,17 +110,17 @@ library GenericLogic {
|
|||
uint256 tokenUnit;
|
||||
uint256 compoundedLiquidityBalance;
|
||||
uint256 compoundedBorrowBalance;
|
||||
uint256 reserveDecimals;
|
||||
uint256 baseLtv;
|
||||
uint256 decimals;
|
||||
uint256 ltv;
|
||||
uint256 liquidationThreshold;
|
||||
uint256 originationFee;
|
||||
uint256 i;
|
||||
uint256 healthFactor;
|
||||
uint256 totalCollateralBalanceETH;
|
||||
uint256 totalBorrowBalanceETH;
|
||||
uint256 totalFeesETH;
|
||||
uint256 currentLtv;
|
||||
uint256 currentLiquidationThreshold;
|
||||
uint256 avgLtv;
|
||||
uint256 avgLiquidationThreshold;
|
||||
uint256 reservesLength;
|
||||
bool healthFactorBelowThreshold;
|
||||
address currentReserveAddress;
|
||||
bool usageAsCollateralEnabled;
|
||||
|
@ -151,13 +151,13 @@ library GenericLogic {
|
|||
uint256,
|
||||
uint256,
|
||||
uint256,
|
||||
uint256,
|
||||
uint256
|
||||
)
|
||||
{
|
||||
CalculateUserAccountDataVars memory vars;
|
||||
|
||||
for (vars.i = 0; vars.i < _reserves.length; vars.i++) {
|
||||
vars.reservesLength = _reserves.length;
|
||||
for (vars.i = 0; vars.i < vars.reservesLength; vars.i++) {
|
||||
vars.currentReserveAddress = _reserves[vars.i];
|
||||
|
||||
ReserveLogic.ReserveData storage currentReserve = _reservesData[vars.currentReserveAddress];
|
||||
|
@ -172,7 +172,11 @@ library GenericLogic {
|
|||
continue;
|
||||
}
|
||||
|
||||
vars.tokenUnit = 10**currentReserve.decimals;
|
||||
(vars.ltv, vars.liquidationThreshold, , vars.decimals) = currentReserve
|
||||
.configuration
|
||||
.getParams();
|
||||
|
||||
vars.tokenUnit = 10**vars.decimals;
|
||||
vars.reserveUnitPrice = IPriceOracleGetter(_oracle).getAssetPrice(_reserves[vars.i]);
|
||||
|
||||
//liquidity and collateral balance
|
||||
|
@ -182,16 +186,12 @@ library GenericLogic {
|
|||
.mul(vars.compoundedLiquidityBalance)
|
||||
.div(vars.tokenUnit);
|
||||
|
||||
if (
|
||||
currentReserve.usageAsCollateralEnabled &&
|
||||
_usersReserveData[_user][_reserves[vars.i]].useAsCollateral
|
||||
) {
|
||||
if (vars.ltv != 0 && _usersReserveData[_user][_reserves[vars.i]].useAsCollateral) {
|
||||
vars.totalCollateralBalanceETH = vars.totalCollateralBalanceETH.add(liquidityBalanceETH);
|
||||
vars.currentLtv = vars.currentLtv.add(
|
||||
liquidityBalanceETH.mul(currentReserve.baseLTVasCollateral)
|
||||
);
|
||||
vars.currentLiquidationThreshold = vars.currentLiquidationThreshold.add(
|
||||
liquidityBalanceETH.mul(currentReserve.liquidationThreshold)
|
||||
|
||||
vars.avgLtv = vars.avgLtv.add(liquidityBalanceETH.mul(vars.ltv));
|
||||
vars.avgLiquidationThreshold = vars.avgLiquidationThreshold.add(
|
||||
liquidityBalanceETH.mul(vars.liquidationThreshold)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -200,31 +200,26 @@ library GenericLogic {
|
|||
vars.totalBorrowBalanceETH = vars.totalBorrowBalanceETH.add(
|
||||
vars.reserveUnitPrice.mul(vars.compoundedBorrowBalance).div(vars.tokenUnit)
|
||||
);
|
||||
vars.totalFeesETH = vars.totalFeesETH.add(
|
||||
vars.originationFee.mul(vars.reserveUnitPrice).div(vars.tokenUnit)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
vars.currentLtv = vars.totalCollateralBalanceETH > 0
|
||||
? vars.currentLtv.div(vars.totalCollateralBalanceETH)
|
||||
vars.avgLtv = vars.totalCollateralBalanceETH > 0
|
||||
? vars.avgLtv.div(vars.totalCollateralBalanceETH)
|
||||
: 0;
|
||||
vars.currentLiquidationThreshold = vars.totalCollateralBalanceETH > 0
|
||||
? vars.currentLiquidationThreshold.div(vars.totalCollateralBalanceETH)
|
||||
vars.avgLiquidationThreshold = vars.totalCollateralBalanceETH > 0
|
||||
? vars.avgLiquidationThreshold.div(vars.totalCollateralBalanceETH)
|
||||
: 0;
|
||||
|
||||
vars.healthFactor = calculateHealthFactorFromBalances(
|
||||
vars.totalCollateralBalanceETH,
|
||||
vars.totalBorrowBalanceETH,
|
||||
vars.totalFeesETH,
|
||||
vars.currentLiquidationThreshold
|
||||
vars.avgLiquidationThreshold
|
||||
);
|
||||
return (
|
||||
vars.totalCollateralBalanceETH,
|
||||
vars.totalBorrowBalanceETH,
|
||||
vars.totalFeesETH,
|
||||
vars.currentLtv,
|
||||
vars.currentLiquidationThreshold,
|
||||
vars.avgLtv,
|
||||
vars.avgLiquidationThreshold,
|
||||
vars.healthFactor
|
||||
);
|
||||
}
|
||||
|
@ -233,22 +228,17 @@ library GenericLogic {
|
|||
* @dev calculates the health factor from the corresponding balances
|
||||
* @param collateralBalanceETH the total collateral balance in ETH
|
||||
* @param borrowBalanceETH the total borrow balance in ETH
|
||||
* @param totalFeesETH the total fees in ETH
|
||||
* @param liquidationThreshold the avg liquidation threshold
|
||||
* @return the health factor calculated from the balances provided
|
||||
**/
|
||||
function calculateHealthFactorFromBalances(
|
||||
uint256 collateralBalanceETH,
|
||||
uint256 borrowBalanceETH,
|
||||
uint256 totalFeesETH,
|
||||
uint256 liquidationThreshold
|
||||
) internal view returns (uint256) {
|
||||
if (borrowBalanceETH == 0) return uint256(-1);
|
||||
|
||||
return
|
||||
(collateralBalanceETH.mul(liquidationThreshold).div(100)).wadDiv(
|
||||
borrowBalanceETH.add(totalFeesETH)
|
||||
);
|
||||
return (collateralBalanceETH.mul(liquidationThreshold).div(100)).wadDiv(borrowBalanceETH);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -256,7 +246,6 @@ library GenericLogic {
|
|||
* average Loan To Value.
|
||||
* @param collateralBalanceETH the total collateral balance
|
||||
* @param borrowBalanceETH the total borrow balance
|
||||
* @param totalFeesETH the total fees
|
||||
* @param ltv the average loan to value
|
||||
* @return the amount available to borrow in ETH for the user
|
||||
**/
|
||||
|
@ -264,9 +253,7 @@ library GenericLogic {
|
|||
function calculateAvailableBorrowsETH(
|
||||
uint256 collateralBalanceETH,
|
||||
uint256 borrowBalanceETH,
|
||||
uint256 totalFeesETH,
|
||||
uint256 ltv,
|
||||
address _feeProvider
|
||||
uint256 ltv
|
||||
) external view returns (uint256) {
|
||||
uint256 availableBorrowsETH = collateralBalanceETH.mul(ltv).div(100); //ltv is in percentage
|
||||
|
||||
|
@ -274,12 +261,7 @@ library GenericLogic {
|
|||
return 0;
|
||||
}
|
||||
|
||||
availableBorrowsETH = availableBorrowsETH.sub(borrowBalanceETH.add(totalFeesETH));
|
||||
//calculate fee
|
||||
uint256 borrowFee = IFeeProvider(_feeProvider).calculateLoanOriginationFee(
|
||||
msg.sender,
|
||||
availableBorrowsETH
|
||||
);
|
||||
return availableBorrowsETH.sub(borrowFee);
|
||||
availableBorrowsETH = availableBorrowsETH.sub(borrowBalanceETH);
|
||||
return availableBorrowsETH;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,28 +18,36 @@ import '@nomiclabs/buidler/console.sol';
|
|||
* @title Implements the bitmap logic to handle the configuration mapping
|
||||
*/
|
||||
library ReserveConfiguration {
|
||||
uint256 constant LTV_MASK = 0xFFFFFFFF0000;
|
||||
uint256 constant LIQUIDATION_THRESHOLD_MASK = 0xFFFF0000FFFF;
|
||||
uint256 constant LIQUIDATION_BONUS_MASK = 0x0000FFFFFFFF;
|
||||
uint256 constant DECIMALS_MASK = 0x00FFFFFFFFFFFF;
|
||||
uint256 constant LTV_MASK = 0xFFFFFFFFFFF0000;
|
||||
uint256 constant LIQUIDATION_THRESHOLD_MASK = 0xFFFFFFF0000FFFF;
|
||||
uint256 constant LIQUIDATION_BONUS_MASK = 0xFFF0000FFFFFFFF;
|
||||
uint256 constant DECIMALS_MASK = 0xF00FFFFFFFFFFFF;
|
||||
uint256 constant ACTIVE_MASK = 0xEFFFFFFFFFFFFFF;
|
||||
uint256 constant FREEZED_MASK = 0xDFFFFFFFFFFFFFF;
|
||||
uint256 constant BORROWING_MASK = 0xBFFFFFFFFFFFFFF;
|
||||
uint256 constant STABLE_BORROWING_MASK = 0x7FFFFFFFFFFFFFF;
|
||||
|
||||
struct Map {
|
||||
//bit 0-15: LTV
|
||||
//bit 16-31: Liq. threshold
|
||||
//bit 32-47: Liq. bonus
|
||||
//bit 48-56: Decimals
|
||||
//bit 48-55: Decimals
|
||||
//bit 56: Reserve is active
|
||||
//bit 57: reserve is freezed
|
||||
//bit 58: borrowing is enabled
|
||||
//bit 59: stable rate borrowing enabled
|
||||
uint256 data;
|
||||
}
|
||||
|
||||
function setLTV(ReserveConfiguration.Map storage _self, uint256 _ltv) internal {
|
||||
function setLtv(ReserveConfiguration.Map memory _self, uint256 _ltv) internal {
|
||||
_self.data = (_self.data & LTV_MASK) | _ltv;
|
||||
}
|
||||
|
||||
function getLTV(ReserveConfiguration.Map storage _self) internal view returns (uint256) {
|
||||
function getLtv(ReserveConfiguration.Map storage _self) internal view returns (uint256) {
|
||||
return _self.data & ~LTV_MASK;
|
||||
}
|
||||
|
||||
function setLiquidationThreshold(ReserveConfiguration.Map storage _self, uint256 _threshold)
|
||||
function setLiquidationThreshold(ReserveConfiguration.Map memory _self, uint256 _threshold)
|
||||
internal
|
||||
{
|
||||
_self.data = (_self.data & LIQUIDATION_THRESHOLD_MASK) | (_threshold << 16);
|
||||
|
@ -53,7 +61,7 @@ library ReserveConfiguration {
|
|||
return (_self.data & ~LIQUIDATION_THRESHOLD_MASK) >> 16;
|
||||
}
|
||||
|
||||
function setLiquidationBonus(ReserveConfiguration.Map storage _self, uint256 _bonus) internal {
|
||||
function setLiquidationBonus(ReserveConfiguration.Map memory _self, uint256 _bonus) internal {
|
||||
_self.data = (_self.data & LIQUIDATION_BONUS_MASK) | (_bonus << 32);
|
||||
}
|
||||
|
||||
|
@ -65,11 +73,93 @@ library ReserveConfiguration {
|
|||
return (_self.data & ~LIQUIDATION_BONUS_MASK) >> 32;
|
||||
}
|
||||
|
||||
function setDecimals(ReserveConfiguration.Map storage _self, uint256 _decimals) internal {
|
||||
function setDecimals(ReserveConfiguration.Map memory _self, uint256 _decimals) internal {
|
||||
_self.data = (_self.data & DECIMALS_MASK) | (_decimals << 48);
|
||||
}
|
||||
|
||||
function getDecimals(ReserveConfiguration.Map storage _self) internal view returns (uint256) {
|
||||
return (_self.data & ~DECIMALS_MASK) >> 48;
|
||||
}
|
||||
|
||||
function setActive(ReserveConfiguration.Map memory _self, bool _active) internal {
|
||||
_self.data = (_self.data & ACTIVE_MASK) | (uint256(_active ? 1 : 0) << 56);
|
||||
}
|
||||
|
||||
function getActive(ReserveConfiguration.Map storage _self) internal view returns (bool) {
|
||||
return ((_self.data & ~ACTIVE_MASK) >> 56) != 0;
|
||||
}
|
||||
|
||||
function setFreezed(ReserveConfiguration.Map memory _self, bool _freezed) internal {
|
||||
_self.data = (_self.data & FREEZED_MASK) | (uint256(_freezed ? 1 : 0) << 57);
|
||||
}
|
||||
|
||||
function getFreezed(ReserveConfiguration.Map storage _self) internal view returns (bool) {
|
||||
return ((_self.data & ~FREEZED_MASK) >> 57) != 0;
|
||||
}
|
||||
|
||||
function setBorrowingEnabled(ReserveConfiguration.Map memory _self, bool _enabled) internal {
|
||||
_self.data = (_self.data & BORROWING_MASK) | (uint256(_enabled ? 1 : 0) << 58);
|
||||
}
|
||||
|
||||
function getBorrowingEnabled(ReserveConfiguration.Map storage _self)
|
||||
internal
|
||||
view
|
||||
returns (bool)
|
||||
{
|
||||
return ((_self.data & ~BORROWING_MASK) >> 58) != 0;
|
||||
}
|
||||
|
||||
function setStableRateBorrowingEnabled(ReserveConfiguration.Map memory _self, bool _enabled)
|
||||
internal
|
||||
{
|
||||
_self.data = (_self.data & STABLE_BORROWING_MASK) | (uint256(_enabled ? 1 : 0) << 59);
|
||||
}
|
||||
|
||||
function getStableRateBorrowingEnabled(ReserveConfiguration.Map storage _self)
|
||||
internal
|
||||
view
|
||||
returns (bool)
|
||||
{
|
||||
return ((_self.data & ~STABLE_BORROWING_MASK) >> 59) != 0;
|
||||
}
|
||||
|
||||
function getFlags(ReserveConfiguration.Map storage _self)
|
||||
internal
|
||||
view
|
||||
returns (
|
||||
bool,
|
||||
bool,
|
||||
bool,
|
||||
bool
|
||||
)
|
||||
{
|
||||
uint256 dataLocal = _self.data;
|
||||
|
||||
return (
|
||||
(dataLocal & ~ACTIVE_MASK) >> 56 != 0,
|
||||
(dataLocal & ~FREEZED_MASK) >> 57 != 0,
|
||||
(dataLocal & ~BORROWING_MASK) >> 58 != 0,
|
||||
(dataLocal & ~STABLE_BORROWING_MASK) >> 59 != 0
|
||||
);
|
||||
}
|
||||
|
||||
function getParams(ReserveConfiguration.Map storage _self)
|
||||
internal
|
||||
view
|
||||
returns (
|
||||
uint256,
|
||||
uint256,
|
||||
uint256,
|
||||
uint256
|
||||
)
|
||||
{
|
||||
uint256 dataLocal = _self.data;
|
||||
|
||||
return (
|
||||
dataLocal & ~LTV_MASK,
|
||||
(dataLocal & ~LIQUIDATION_THRESHOLD_MASK) >> 16,
|
||||
(dataLocal & ~LIQUIDATION_BONUS_MASK) >> 32,
|
||||
(dataLocal & ~DECIMALS_MASK) >> 48
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import {MathUtils} from './MathUtils.sol';
|
|||
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
||||
import {UniversalERC20} from './UniversalERC20.sol';
|
||||
import {IStableDebtToken} from '../tokenization/interfaces/IStableDebtToken.sol';
|
||||
import {ReserveConfiguration} from './ReserveConfiguration.sol';
|
||||
|
||||
import '../configuration/LendingPoolAddressesProvider.sol';
|
||||
import '../interfaces/ILendingRateOracle.sol';
|
||||
|
@ -29,6 +30,7 @@ library ReserveLogic {
|
|||
using Address for address;
|
||||
using UserLogic for UserLogic.UserReserveData;
|
||||
using ReserveLogic for ReserveLogic.ReserveData;
|
||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||
|
||||
enum InterestRateMode {NONE, STABLE, VARIABLE}
|
||||
|
||||
|
@ -46,14 +48,7 @@ library ReserveLogic {
|
|||
uint256 currentStableBorrowRate;
|
||||
//variable borrow index. Expressed in ray
|
||||
uint256 lastVariableBorrowCumulativeIndex;
|
||||
//the ltv of the reserve. Expressed in percentage (0-100)
|
||||
uint256 baseLTVasCollateral;
|
||||
//the liquidation threshold of the reserve. Expressed in percentage (0-100)
|
||||
uint256 liquidationThreshold;
|
||||
//the liquidation bonus of the reserve. Expressed in percentage
|
||||
uint256 liquidationBonus;
|
||||
//the decimals of the reserve asset
|
||||
uint256 decimals;
|
||||
ReserveConfiguration.Map configuration;
|
||||
/**
|
||||
* @dev address of the aToken representing the asset
|
||||
**/
|
||||
|
@ -65,16 +60,8 @@ library ReserveLogic {
|
|||
**/
|
||||
address interestRateStrategyAddress;
|
||||
uint40 lastUpdateTimestamp;
|
||||
// borrowingEnabled = true means users can borrow from this reserve
|
||||
bool borrowingEnabled;
|
||||
// usageAsCollateralEnabled = true means users can use this reserve as collateral
|
||||
bool usageAsCollateralEnabled;
|
||||
// isStableBorrowRateEnabled = true means users can borrow at a stable rate
|
||||
bool isStableBorrowRateEnabled;
|
||||
// isActive = true means the reserve has been activated and properly configured
|
||||
bool isActive;
|
||||
// isFreezed = true means the reserve only allows repays and redeems, but not deposits, new borrowings or rate swap
|
||||
bool isFreezed;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -164,7 +151,6 @@ library ReserveLogic {
|
|||
* @dev initializes a reserve
|
||||
* @param _self the reserve object
|
||||
* @param _aTokenAddress the address of the overlying atoken contract
|
||||
* @param _decimals the number of decimals of the underlying asset
|
||||
* @param _interestRateStrategyAddress the address of the interest rate strategy contract
|
||||
**/
|
||||
function init(
|
||||
|
@ -172,11 +158,9 @@ library ReserveLogic {
|
|||
address _aTokenAddress,
|
||||
address _stableDebtAddress,
|
||||
address _variableDebtAddress,
|
||||
uint256 _decimals,
|
||||
address _interestRateStrategyAddress
|
||||
) external {
|
||||
require(_self.aTokenAddress == address(0), 'Reserve has already been initialized');
|
||||
|
||||
if (_self.lastLiquidityCumulativeIndex == 0) {
|
||||
//if the reserve has not been initialized yet
|
||||
_self.lastLiquidityCumulativeIndex = WadRayMath.ray();
|
||||
|
@ -189,63 +173,7 @@ library ReserveLogic {
|
|||
_self.aTokenAddress = payable(_aTokenAddress);
|
||||
_self.stableDebtTokenAddress = _stableDebtAddress;
|
||||
_self.variableDebtTokenAddress = _variableDebtAddress;
|
||||
_self.decimals = _decimals;
|
||||
|
||||
_self.interestRateStrategyAddress = _interestRateStrategyAddress;
|
||||
_self.isActive = true;
|
||||
_self.isFreezed = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev enables borrowing on a reserve
|
||||
* @param _self the reserve object
|
||||
* @param _stableBorrowRateEnabled true if the stable borrow rate must be enabled by default, false otherwise
|
||||
**/
|
||||
function enableBorrowing(ReserveData storage _self, bool _stableBorrowRateEnabled) external {
|
||||
require(_self.borrowingEnabled == false, 'Reserve is already enabled');
|
||||
|
||||
_self.borrowingEnabled = true;
|
||||
_self.isStableBorrowRateEnabled = _stableBorrowRateEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev disables borrowing on a reserve
|
||||
* @param _self the reserve object
|
||||
**/
|
||||
function disableBorrowing(ReserveData storage _self) external {
|
||||
_self.borrowingEnabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev enables a reserve to be used as collateral
|
||||
* @param _self the reserve object
|
||||
* @param _baseLTVasCollateral the loan to value of the asset when used as collateral
|
||||
* @param _liquidationThreshold the threshold at which loans using this asset as collateral will be considered undercollateralized
|
||||
* @param _liquidationBonus the bonus liquidators receive to liquidate this asset
|
||||
**/
|
||||
function enableAsCollateral(
|
||||
ReserveData storage _self,
|
||||
uint256 _baseLTVasCollateral,
|
||||
uint256 _liquidationThreshold,
|
||||
uint256 _liquidationBonus
|
||||
) external {
|
||||
require(_self.usageAsCollateralEnabled == false, 'Reserve is already enabled as collateral');
|
||||
|
||||
_self.usageAsCollateralEnabled = true;
|
||||
_self.baseLTVasCollateral = _baseLTVasCollateral;
|
||||
_self.liquidationThreshold = _liquidationThreshold;
|
||||
_self.liquidationBonus = _liquidationBonus;
|
||||
|
||||
if (_self.lastLiquidityCumulativeIndex == 0)
|
||||
_self.lastLiquidityCumulativeIndex = WadRayMath.ray();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev disables a reserve as collateral
|
||||
* @param _self the reserve object
|
||||
**/
|
||||
function disableAsCollateral(ReserveData storage _self) external {
|
||||
_self.usageAsCollateralEnabled = false;
|
||||
}
|
||||
|
||||
function getTotalBorrows(ReserveData storage _self) internal view returns (uint256) {
|
||||
|
|
|
@ -7,6 +7,7 @@ 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';
|
||||
|
||||
/**
|
||||
* @title UserLogic library
|
||||
|
@ -15,6 +16,7 @@ import './ReserveLogic.sol';
|
|||
*/
|
||||
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
|
||||
|
@ -39,7 +41,7 @@ library UserLogic {
|
|||
|
||||
return
|
||||
!_user.useAsCollateral ||
|
||||
!_reserve.usageAsCollateralEnabled ||
|
||||
_reserve.configuration.getLtv() == 0 ||
|
||||
_amount > IERC20(_reserve.aTokenAddress).balanceOf(_userAddress);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import {UserLogic} from './UserLogic.sol';
|
|||
import {GenericLogic} from './GenericLogic.sol';
|
||||
import {WadRayMath} from './WadRayMath.sol';
|
||||
import {UniversalERC20} from './UniversalERC20.sol';
|
||||
|
||||
import {ReserveConfiguration} from './ReserveConfiguration.sol';
|
||||
import {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';
|
||||
import {IFeeProvider} from '../interfaces/IFeeProvider.sol';
|
||||
import '@nomiclabs/buidler/console.sol';
|
||||
|
@ -25,6 +25,7 @@ library ValidationLogic {
|
|||
using SafeMath for uint256;
|
||||
using WadRayMath for uint256;
|
||||
using UniversalERC20 for IERC20;
|
||||
using ReserveConfiguration for ReserveConfiguration.Map;
|
||||
|
||||
/**
|
||||
* @dev validates a deposit.
|
||||
|
@ -35,6 +36,8 @@ library ValidationLogic {
|
|||
external
|
||||
view
|
||||
{
|
||||
(bool isActive, bool isFreezed, , ) = _reserve.configuration.getFlags();
|
||||
|
||||
internalValidateReserveStateAndAmount(_reserve, _amount);
|
||||
}
|
||||
|
||||
|
@ -68,7 +71,6 @@ library ValidationLogic {
|
|||
uint256 amountOfCollateralNeededETH;
|
||||
uint256 userCollateralBalanceETH;
|
||||
uint256 userBorrowBalanceETH;
|
||||
uint256 userTotalFeesETH;
|
||||
uint256 borrowBalanceIncrease;
|
||||
uint256 currentReserveStableRate;
|
||||
uint256 availableLiquidity;
|
||||
|
@ -76,6 +78,10 @@ library ValidationLogic {
|
|||
uint256 healthFactor;
|
||||
ReserveLogic.InterestRateMode rateMode;
|
||||
bool healthFactorBelowThreshold;
|
||||
bool isActive;
|
||||
bool isFreezed;
|
||||
bool borrowingEnabled;
|
||||
bool stableRateBorrowingEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -108,9 +114,19 @@ library ValidationLogic {
|
|||
) external view {
|
||||
ValidateBorrowLocalVars memory vars;
|
||||
|
||||
internalValidateReserveStateAndAmount(_reserve, _amount);
|
||||
//internalValidateReserveStateAndAmount(_reserve, _amount);
|
||||
|
||||
require(_reserve.borrowingEnabled, '5');
|
||||
(
|
||||
vars.isActive,
|
||||
vars.isFreezed,
|
||||
vars.borrowingEnabled,
|
||||
vars.stableRateBorrowingEnabled
|
||||
) = _reserve.configuration.getFlags();
|
||||
|
||||
require(vars.isActive, 'Action requires an active reserve');
|
||||
require(!vars.isFreezed, 'Action requires an unfreezed reserve');
|
||||
|
||||
require(vars.borrowingEnabled, '5');
|
||||
|
||||
//validate interest rate mode
|
||||
require(
|
||||
|
@ -129,7 +145,6 @@ library ValidationLogic {
|
|||
(
|
||||
vars.userCollateralBalanceETH,
|
||||
vars.userBorrowBalanceETH,
|
||||
vars.userTotalFeesETH,
|
||||
vars.currentLtv,
|
||||
vars.currentLiquidationThreshold,
|
||||
vars.healthFactor
|
||||
|
@ -146,12 +161,9 @@ library ValidationLogic {
|
|||
require(vars.healthFactor > GenericLogic.HEALTH_FACTOR_LIQUIDATION_THRESHOLD, '8');
|
||||
|
||||
//add the current already borrowed amount to the amount requested to calculate the total collateral needed.
|
||||
vars.amountOfCollateralNeededETH = vars
|
||||
.userBorrowBalanceETH
|
||||
.add(vars.userTotalFeesETH)
|
||||
.add(_amountInETH)
|
||||
.mul(100)
|
||||
.div(vars.currentLtv); //LTV is calculated in percentage
|
||||
vars.amountOfCollateralNeededETH = vars.userBorrowBalanceETH.add(_amountInETH).mul(100).div(
|
||||
vars.currentLtv
|
||||
); //LTV is calculated in percentage
|
||||
|
||||
require(
|
||||
vars.amountOfCollateralNeededETH <= vars.userCollateralBalanceETH,
|
||||
|
@ -170,11 +182,11 @@ library ValidationLogic {
|
|||
if (vars.rateMode == ReserveLogic.InterestRateMode.STABLE) {
|
||||
//check if the borrow mode is stable and if stable rate borrowing is enabled on this reserve
|
||||
|
||||
require(_reserve.isStableBorrowRateEnabled, '11');
|
||||
require(vars.stableRateBorrowingEnabled, '11');
|
||||
|
||||
require(
|
||||
!_user.useAsCollateral ||
|
||||
!_reserve.usageAsCollateralEnabled ||
|
||||
_reserve.configuration.getLtv() == 0 ||
|
||||
_amount > IERC20(_reserve.aTokenAddress).balanceOf(msg.sender),
|
||||
'12'
|
||||
);
|
||||
|
@ -209,7 +221,9 @@ library ValidationLogic {
|
|||
uint256 _actualPaybackAmount,
|
||||
uint256 _msgValue
|
||||
) external view {
|
||||
require(_reserve.isActive, 'Action requires an active reserve');
|
||||
(bool isActive, , , ) = _reserve.configuration.getFlags();
|
||||
|
||||
require(isActive, 'Action requires an active reserve');
|
||||
|
||||
require(_amountSent > 0, 'Amount must be greater than 0');
|
||||
|
||||
|
@ -247,8 +261,10 @@ library ValidationLogic {
|
|||
uint256 _variableBorrowBalance,
|
||||
ReserveLogic.InterestRateMode _currentRateMode
|
||||
) external view {
|
||||
require(_reserve.isActive, 'Action requires an active reserve');
|
||||
require(!_reserve.isFreezed, 'Action requires an unfreezed reserve');
|
||||
(bool isActive, bool isFreezed, , bool stableRateEnabled) = _reserve.configuration.getFlags();
|
||||
|
||||
require(isActive, 'Action requires an active reserve');
|
||||
require(!isFreezed, 'Action requires an unfreezed reserve');
|
||||
|
||||
if (_currentRateMode == ReserveLogic.InterestRateMode.STABLE) {
|
||||
require(
|
||||
|
@ -267,11 +283,11 @@ library ValidationLogic {
|
|||
* more collateral than he is borrowing, artificially lowering
|
||||
* the interest rate, borrowing at variable, and switching to stable
|
||||
**/
|
||||
require(_reserve.isStableBorrowRateEnabled, '11');
|
||||
require(stableRateEnabled, '11');
|
||||
|
||||
require(
|
||||
!_user.useAsCollateral ||
|
||||
!_reserve.usageAsCollateralEnabled ||
|
||||
_reserve.configuration.getLtv() == 0 ||
|
||||
_stableBorrowBalance.add(_variableBorrowBalance) >
|
||||
IERC20(_reserve.aTokenAddress).balanceOf(msg.sender),
|
||||
'12'
|
||||
|
@ -323,8 +339,6 @@ library ValidationLogic {
|
|||
ReserveLogic.ReserveData storage _reserve,
|
||||
uint256 _amount
|
||||
) internal view {
|
||||
require(_reserve.isActive, 'Action requires an active reserve');
|
||||
require(!_reserve.isFreezed, 'Action requires an unfreezed reserve');
|
||||
require(_amount > 0, 'Amount must be greater than 0');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d",
|
||||
"address": "0x613b8Aa5BAFB5c903B8AFF84307C3D8eb6a09C9D",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -15,7 +15,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x58F132FBB86E21545A4Bace3C19f1C05d86d7A22",
|
||||
"address": "0x832517B00deEa0cD9780C94837D92b2b282C75F5",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -25,7 +25,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b",
|
||||
"address": "0x05D70e69C53E9A097E741976096ca16A4ec44Bdd",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -34,7 +34,7 @@
|
|||
"address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400"
|
||||
"address": "0x7Ca3264502Ae135bc346Ddde379D11f72a210Df2"
|
||||
}
|
||||
},
|
||||
"LendingPoolParametersProvider": {
|
||||
|
@ -49,10 +49,10 @@
|
|||
},
|
||||
"LendingPoolConfigurator": {
|
||||
"buidlerevm": {
|
||||
"address": "0x2C4603396dE2F08642354A3A102760827FfFe113"
|
||||
"address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x2C4603396dE2F08642354A3A102760827FfFe113"
|
||||
"address": "0x1c9aA18db4804bD3E9788735Ac12c930a4cFAF29"
|
||||
}
|
||||
},
|
||||
"LendingPoolDataProvider": {
|
||||
|
@ -62,10 +62,10 @@
|
|||
},
|
||||
"LendingPool": {
|
||||
"buidlerevm": {
|
||||
"address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
|
||||
"address": "0x2C4603396dE2F08642354A3A102760827FfFe113"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
|
||||
"address": "0x2C29ed4a90805792c56B99EFf249e28b8b3a5d36"
|
||||
}
|
||||
},
|
||||
"PriceOracle": {
|
||||
|
@ -74,7 +74,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x8731324a6C09a1745bD15009Dc8FcceF11c05F4a",
|
||||
"address": "0xE825E4621E95a5AE37119617bfC0165724c51762",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -84,7 +84,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x474d9b0D5F1Bb1602711F9346743a7a7478d6f52",
|
||||
"address": "0xF1d2bdD7CFc305eb550895DdADb55b7fBA2af1E5",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -94,7 +94,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xf91aC1098F3b154671Ce83290114aaE45ac0225f",
|
||||
"address": "0x84daCdA0B4802B6Aa8661F266A48BE4F54817119",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -104,7 +104,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xf4830d6b1D70C8595d3BD8A63f9ed9F636DB9ef2",
|
||||
"address": "0x70a259a0efDF51B073497d3723630ea8ae11B32a",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -114,7 +114,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xC8Df507578fEfb60aA626ABFDDB20B48ee439ad1",
|
||||
"address": "0x5737D6Be516831d7E9596e4458583c17B2662b25",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -149,7 +149,7 @@
|
|||
"address": "0xC5f7aC6895DcB76877E71db756433fB0E0478FEB"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d"
|
||||
"address": "0x07C1cd8182AAda58009D3b547295A64046679666"
|
||||
}
|
||||
},
|
||||
"InitializableAdminUpgradeabilityProxy": {
|
||||
|
@ -158,7 +158,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d",
|
||||
"address": "0x07C1cd8182AAda58009D3b547295A64046679666",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -167,7 +167,7 @@
|
|||
"address": "0x24E420B42971372F060a93129846761F354Bc50B"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x5c98c9202b73d27A618662d34A6805c34AB041B8"
|
||||
"address": "0xbCC0e6a5385C3a8A2d40Aa079F3E8d40f09Ae48d"
|
||||
}
|
||||
},
|
||||
"WalletBalanceProvider": {
|
||||
|
@ -176,7 +176,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x435250F99d9ec2D7956773c6768392caD183765e",
|
||||
"address": "0x04297834784DcB98Df9fE232DE5a97D2569c8aDd",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -186,7 +186,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F",
|
||||
"address": "0x352BD2c9A3a019aC10F7fc81dB119D4a325117DE",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -196,7 +196,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x8858eeB3DfffA017D4BCE9801D340D36Cf895CCf",
|
||||
"address": "0x5Cccb7f34cB05938c29442815Cc331AA6492B723",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -206,7 +206,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x0078371BDeDE8aAc7DeBfFf451B74c5EDB385Af7",
|
||||
"address": "0x7457b9406832EEa09864dcaAB82Ae3c134f9A975",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -216,7 +216,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xf4e77E5Da47AC3125140c470c71cBca77B5c638c",
|
||||
"address": "0xdB97f0f4a431B70Ec854b270d56e1ECa25f3113b",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -226,7 +226,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB",
|
||||
"address": "0x8A8dC28F6C1874f573FCBd921f1fb24301caB913",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -236,7 +236,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5",
|
||||
"address": "0x8bAE0F999E4A82191F7536E8a5e2De0412588d86",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -246,7 +246,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x038B86d9d8FAFdd0a02ebd1A476432877b0107C8",
|
||||
"address": "0xa61F8cfACa566F8F4303cE283e9535934A8CDdD5",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -256,7 +256,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x1A1FEe7EeD918BD762173e4dc5EfDB8a78C924A8",
|
||||
"address": "0xb0f645D86C1436502f45229292b117e45e1a2bC4",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -266,7 +266,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x500D1d6A4c7D8Ae28240b47c8FCde034D827fD5e",
|
||||
"address": "0x12c2160C86B21FFF1c708F77d5263CF192f2B661",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -276,7 +276,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xc4905364b78a742ccce7B890A89514061E47068D",
|
||||
"address": "0x155a2e68CB8Db7B1cB9066E717aE93e65A2f93EF",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -286,7 +286,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xD6C850aeBFDC46D7F4c207e445cC0d6B0919BDBe",
|
||||
"address": "0x94Bc72DCbdc296991dc61555e996C447cAD60369",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -296,7 +296,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x8B5B7a6055E54a36fF574bbE40cf2eA68d5554b3",
|
||||
"address": "0x346fdD507f157a74e63a73ACf371B5bDf562De67",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -306,7 +306,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xEcc0a6dbC0bb4D51E4F84A315a9e5B0438cAD4f0",
|
||||
"address": "0xCF8eF26FE68C88Fc899B1F40E48688F6C6FFf9E1",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -316,7 +316,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x20Ce94F404343aD2752A2D01b43fa407db9E0D00",
|
||||
"address": "0x90C17f3141263b2942E843c83102ba8cD18956B7",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -326,7 +326,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x1d80315fac6aBd3EfeEbE97dEc44461ba7556160",
|
||||
"address": "0x58C7b3Aa19a4EEb3505564ab45c6fd16442A85ec",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -336,7 +336,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x2D8553F9ddA85A9B3259F6Bf26911364B85556F5",
|
||||
"address": "0xa25fA46698beE81E33e0Dd691849945B0B417ea4",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -346,7 +346,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x52d3b94181f8654db2530b0fEe1B19173f519C52",
|
||||
"address": "0xEec014eff3DBeE5a3100fb6a9128cF7c40c3e782",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -356,7 +356,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xd15468525c35BDBC1eD8F2e09A00F8a173437f2f",
|
||||
"address": "0x4BD61457B65687B555fb86B8038Ffb5779970A3C",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -366,7 +366,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x7e35Eaf7e8FBd7887ad538D4A38Df5BbD073814a",
|
||||
"address": "0x2114d96A6eC73Be7151938D0e7c74ec566cF0153",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -376,7 +376,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x5bcb88A0d20426e451332eE6C4324b0e663c50E0",
|
||||
"address": "0x294c3d68F340883C44d50daD4Ec6737327f2f993",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -386,7 +386,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x3521eF8AaB0323004A6dD8b03CE890F4Ea3A13f5",
|
||||
"address": "0x22e57AEFA0f0f5aF3f0933EBB08B2FD5E1f52389",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -396,7 +396,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E",
|
||||
"address": "0xbc80b4b4D77Df85898DCA2AbB615edC353039d2b",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -406,7 +406,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d",
|
||||
"address": "0x613b8Aa5BAFB5c903B8AFF84307C3D8eb6a09C9D",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -415,7 +415,7 @@
|
|||
"address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xBE7fFcC01164C890e59D298FD755FcBE6B7941a9"
|
||||
"address": "0x40Bf3Ca3a1EFdCDFf6BaE86Cf92EC5a46E629556"
|
||||
}
|
||||
},
|
||||
"StableDebtToken": {
|
||||
|
@ -424,7 +424,7 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0xD325d114a728C2114Bd33Ad47152f790f2a29c5c",
|
||||
"address": "0x9088A0A8f3e0906Fc7b1872407C8aB3EDF6D8F11",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
},
|
||||
|
@ -434,8 +434,8 @@
|
|||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
},
|
||||
"localhost": {
|
||||
"address": "0x910b6a78b413e47401f20aA2350d264b55ae0189",
|
||||
"address": "0x078fd0F0A179084DB4FF90399518Fd14DD006b6c",
|
||||
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -360,18 +360,6 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
|
|||
const feeProviderProxy = await getFeeProvider(await addressesProvider.getFeeProvider());
|
||||
await insertContractAddressInDb(eContractid.FeeProvider, feeProviderProxy.address);
|
||||
|
||||
const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator();
|
||||
await waitForTx(
|
||||
await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImpl.address)
|
||||
);
|
||||
const lendingPoolConfiguratorProxy = await getLendingPoolConfiguratorProxy(
|
||||
await addressesProvider.getLendingPoolConfigurator()
|
||||
);
|
||||
await insertContractAddressInDb(
|
||||
eContractid.LendingPoolConfigurator,
|
||||
lendingPoolConfiguratorProxy.address
|
||||
);
|
||||
|
||||
const lendingPoolImpl = await deployLendingPool();
|
||||
|
||||
console.log('Deployed lending pool, address:', lendingPoolImpl.address);
|
||||
|
@ -387,6 +375,18 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
|
|||
|
||||
await insertContractAddressInDb(eContractid.LendingPool, lendingPoolProxy.address);
|
||||
|
||||
const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator();
|
||||
await waitForTx(
|
||||
await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImpl.address)
|
||||
);
|
||||
const lendingPoolConfiguratorProxy = await getLendingPoolConfiguratorProxy(
|
||||
await addressesProvider.getLendingPoolConfigurator()
|
||||
);
|
||||
await insertContractAddressInDb(
|
||||
eContractid.LendingPoolConfigurator,
|
||||
lendingPoolConfiguratorProxy.address
|
||||
);
|
||||
|
||||
const fallbackOracle = await deployPriceOracle();
|
||||
await waitForTx(await fallbackOracle.setEthUsdPrice(MOCK_USD_PRICE_IN_WEI));
|
||||
await setInitialAssetPricesInOracle(
|
||||
|
|
|
@ -167,45 +167,45 @@ makeSuite('LendingPoolConfigurator', (testEnv: TestEnv) => {
|
|||
|
||||
it('Changes LTV of the reserve', async () => {
|
||||
const {configurator, pool} = testEnv;
|
||||
await configurator.setReserveBaseLTVasCollateral(MOCK_ETH_ADDRESS, '60');
|
||||
await configurator.setLtv(MOCK_ETH_ADDRESS, '60');
|
||||
const {ltv}: any = await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS);
|
||||
expect(ltv).to.be.bignumber.equal('60', 'Invalid LTV');
|
||||
});
|
||||
|
||||
it('Check the onlyLendingPoolManager on setReserveBaseLTVasCollateral', async () => {
|
||||
it('Check the onlyLendingPoolManager on setLtv', async () => {
|
||||
const {configurator, users} = testEnv;
|
||||
await expect(
|
||||
configurator.connect(users[2].signer).setReserveBaseLTVasCollateral(MOCK_ETH_ADDRESS, '75'),
|
||||
configurator.connect(users[2].signer).setLtv(MOCK_ETH_ADDRESS, '75'),
|
||||
INVALID_POOL_MANAGER_CALLER_MSG
|
||||
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
|
||||
});
|
||||
|
||||
it('Changes liquidation threshold of the reserve', async () => {
|
||||
const {configurator, pool} = testEnv;
|
||||
await configurator.setReserveLiquidationThreshold(MOCK_ETH_ADDRESS, '75');
|
||||
await configurator.setLiquidationThreshold(MOCK_ETH_ADDRESS, '75');
|
||||
const {liquidationThreshold}: any = await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS);
|
||||
expect(liquidationThreshold).to.be.bignumber.equal('75', 'Invalid Liquidation threshold');
|
||||
});
|
||||
|
||||
it('Check the onlyLendingPoolManager on setReserveLiquidationThreshold', async () => {
|
||||
it('Check the onlyLendingPoolManager on setLiquidationThreshold', async () => {
|
||||
const {configurator, users} = testEnv;
|
||||
await expect(
|
||||
configurator.connect(users[2].signer).setReserveLiquidationThreshold(MOCK_ETH_ADDRESS, '80'),
|
||||
configurator.connect(users[2].signer).setLiquidationThreshold(MOCK_ETH_ADDRESS, '80'),
|
||||
INVALID_POOL_MANAGER_CALLER_MSG
|
||||
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
|
||||
});
|
||||
|
||||
it('Changes liquidation bonus of the reserve', async () => {
|
||||
const {configurator, pool} = testEnv;
|
||||
await configurator.setReserveLiquidationBonus(MOCK_ETH_ADDRESS, '110');
|
||||
await configurator.setLiquidationBonus(MOCK_ETH_ADDRESS, '110');
|
||||
const {liquidationBonus} = await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS);
|
||||
expect(liquidationBonus).to.be.bignumber.equal('110', 'Invalid Liquidation discount');
|
||||
});
|
||||
|
||||
it('Check the onlyLendingPoolManager on setReserveLiquidationBonus', async () => {
|
||||
it('Check the onlyLendingPoolManager on setLiquidationBonus', async () => {
|
||||
const {configurator, users} = testEnv;
|
||||
await expect(
|
||||
configurator.connect(users[2].signer).setReserveLiquidationBonus(MOCK_ETH_ADDRESS, '80'),
|
||||
configurator.connect(users[2].signer).setLiquidationBonus(MOCK_ETH_ADDRESS, '80'),
|
||||
INVALID_POOL_MANAGER_CALLER_MSG
|
||||
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
|
||||
});
|
||||
|
@ -218,10 +218,10 @@ makeSuite('LendingPoolConfigurator', (testEnv: TestEnv) => {
|
|||
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
|
||||
});
|
||||
|
||||
it('Check the onlyLendingPoolManager on setReserveLiquidationBonus', async () => {
|
||||
it('Check the onlyLendingPoolManager on setLiquidationBonus', async () => {
|
||||
const {configurator, users} = testEnv;
|
||||
await expect(
|
||||
configurator.connect(users[2].signer).setReserveLiquidationBonus(MOCK_ETH_ADDRESS, '80'),
|
||||
configurator.connect(users[2].signer).setLiquidationBonus(MOCK_ETH_ADDRESS, '80'),
|
||||
INVALID_POOL_MANAGER_CALLER_MSG
|
||||
).to.be.revertedWith(INVALID_POOL_MANAGER_CALLER_MSG);
|
||||
});
|
||||
|
|
|
@ -12,7 +12,7 @@ BigNumber.config({DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_DOWN});
|
|||
|
||||
const scenarioFolder = './test/helpers/scenarios/';
|
||||
|
||||
const selectedScenarios: string[] = [];
|
||||
const selectedScenarios: string[] = ['borrow-repay-stable.json'];
|
||||
|
||||
fs.readdirSync(scenarioFolder).forEach((file) => {
|
||||
if (selectedScenarios.length > 0 && !selectedScenarios.includes(file)) return;
|
||||
|
|
18
types/AToken.d.ts
vendored
18
types/AToken.d.ts
vendored
|
@ -92,6 +92,10 @@ interface ATokenInterface extends Interface {
|
|||
encode([_from, _to, _value]: [string, string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
transferUnderlyingTo: TypedFunctionDescription<{
|
||||
encode([_target, _amount]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
underlyingAssetAddress: TypedFunctionDescription<{
|
||||
encode([]: []): string;
|
||||
}>;
|
||||
|
@ -277,6 +281,12 @@ export class AToken extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
transferUnderlyingTo(
|
||||
_target: string,
|
||||
_amount: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
underlyingAssetAddress(): Promise<string>;
|
||||
};
|
||||
|
||||
|
@ -372,6 +382,12 @@ export class AToken extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
transferUnderlyingTo(
|
||||
_target: string,
|
||||
_amount: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
underlyingAssetAddress(): Promise<string>;
|
||||
|
||||
filters: {
|
||||
|
@ -478,6 +494,8 @@ export class AToken extends Contract {
|
|||
|
||||
transferOnLiquidation(_from: string, _to: string, _value: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
transferUnderlyingTo(_target: string, _amount: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
underlyingAssetAddress(): Promise<BigNumber>;
|
||||
};
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -53,4 +53,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x6080604052348015600f57600080fd5b5060b48061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806321f8a72114602d575b600080fd5b604760048036036020811015604157600080fd5b50356063565b604080516001600160a01b039092168252519081900360200190f35b6000908152602081905260409020546001600160a01b03169056fea2646970667358221220f09fcedc0f4e085a79292d7250a582eb479b29b554e5b6f0da0a8b9d6519437d64736f6c63430006080033';
|
||||
'0x6080604052348015600f57600080fd5b5060b48061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806321f8a72114602d575b600080fd5b604760048036036020811015604157600080fd5b50356063565b604080516001600160a01b039092168252519081900360200190f35b6000908152602081905260409020546001600160a01b03169056fea26469706673582212203c1dbec53972735ede35517c4ebd8e6bba33dac60fb4d0b80ff546d1a037b6dc64736f6c63430006080033';
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -143,4 +143,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b50610652806100206000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220bd1c64e491a10408727bf2c0ba11cafb0e603d67e73d56ba5f1e5aaf164d9e6864736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b50610652806100206000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122080fb7a29d20b62c9d75049f213e628259458033ab4be1b0f43737441acf9ee3064736f6c63430006080033';
|
||||
|
|
|
@ -51,4 +51,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x6080604052348015600f57600080fd5b50609e8061001e6000396000f3fe6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea26469706673582212204da865f60c349026a6987afe00968cca8fac24d5035d8f57aa280f04a1b54d3664736f6c63430006080033';
|
||||
'0x6080604052348015600f57600080fd5b50609e8061001e6000396000f3fe6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122026f9f0a10c55993cd5e1ec3854f2261ee54f57fd62ea6dcffd6b08e6f296847d64736f6c63430006080033';
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -110,4 +110,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x60806040526000805534801561001457600080fd5b50610411806100246000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80639403ed3a1461005c578063b0d73d4e14610076578063c211f9a41461007e578063c4d66de814610086578063e563a7d0146100ae575b600080fd5b6100646100da565b60408051918252519081900360200190f35b6100646100e0565b6100646100e5565b6100ac6004803603602081101561009c57600080fd5b50356001600160a01b03166100eb565b005b610064600480360360408110156100c457600080fd5b506001600160a01b038135169060200135610193565b60345481565b600181565b60345490565b60006100f56101b3565b60015490915060ff168061010c575061010c6101b8565b80610118575060005481115b6101535760405162461bcd60e51b815260040180806020018281038252602e8152602001806103ae602e913960400191505060405180910390fd5b60015460ff16158015610172576001805460ff19168117905560008290555b6608e1bc9bf04000603455801561018e576001805460ff191690555b505050565b60006101aa603454836101be90919063ffffffff16565b90505b92915050565b600190565b303b1590565b60006101aa670de0b6b3a76400006101ee6101df868663ffffffff6101fa16565b6706f05b59d3b2000090610253565b9063ffffffff6102ad16565b600082610209575060006101ad565b8282028284828161021657fe5b04146101aa5760405162461bcd60e51b815260040180806020018281038252602181526020018061038d6021913960400191505060405180910390fd5b6000828201838110156101aa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006101aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836103765760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561033b578181015183820152602001610323565b50505050905090810190601f1680156103685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161038257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212207eabb5efb8d78530e775320ed5f3b20065bf5c6faaefa5dcb53b3408e375131c64736f6c63430006080033';
|
||||
'0x60806040526000805534801561001457600080fd5b50610411806100246000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80639403ed3a1461005c578063b0d73d4e14610076578063c211f9a41461007e578063c4d66de814610086578063e563a7d0146100ae575b600080fd5b6100646100da565b60408051918252519081900360200190f35b6100646100e0565b6100646100e5565b6100ac6004803603602081101561009c57600080fd5b50356001600160a01b03166100eb565b005b610064600480360360408110156100c457600080fd5b506001600160a01b038135169060200135610193565b60345481565b600181565b60345490565b60006100f56101b3565b60015490915060ff168061010c575061010c6101b8565b80610118575060005481115b6101535760405162461bcd60e51b815260040180806020018281038252602e8152602001806103ae602e913960400191505060405180910390fd5b60015460ff16158015610172576001805460ff19168117905560008290555b6608e1bc9bf04000603455801561018e576001805460ff191690555b505050565b60006101aa603454836101be90919063ffffffff16565b90505b92915050565b600190565b303b1590565b60006101aa670de0b6b3a76400006101ee6101df868663ffffffff6101fa16565b6706f05b59d3b2000090610253565b9063ffffffff6102ad16565b600082610209575060006101ad565b8282028284828161021657fe5b04146101aa5760405162461bcd60e51b815260040180806020018281038252602181526020018061038d6021913960400191505060405180910390fd5b6000828201838110156101aa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006101aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836103765760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561033b578181015183820152602001610323565b50505050905090810190601f1680156103685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161038257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220b1f57d34e2488cabb196d838daf85a2a940face5fe23e3b0d48f388ca9f005b864736f6c63430006080033';
|
||||
|
|
6
types/FlashLoanReceiverBase.d.ts
vendored
6
types/FlashLoanReceiverBase.d.ts
vendored
|
@ -11,7 +11,8 @@ interface FlashLoanReceiverBaseInterface extends Interface {
|
|||
addressesProvider: TypedFunctionDescription<{encode([]: []): string}>;
|
||||
|
||||
executeOperation: TypedFunctionDescription<{
|
||||
encode([_reserve, _amount, _fee, _params]: [
|
||||
encode([_reserve, _destination, _amount, _fee, _params]: [
|
||||
string,
|
||||
string,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
|
@ -41,6 +42,7 @@ export class FlashLoanReceiverBase extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish,
|
||||
|
@ -52,6 +54,7 @@ export class FlashLoanReceiverBase extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish,
|
||||
|
@ -65,6 +68,7 @@ export class FlashLoanReceiverBase extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish
|
||||
|
|
|
@ -44,6 +44,11 @@ const _abi = [
|
|||
name: '_reserve',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
internalType: 'address',
|
||||
name: '_destination',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
internalType: 'uint256',
|
||||
name: '_amount',
|
||||
|
|
18
types/GenericLogic.d.ts
vendored
18
types/GenericLogic.d.ts
vendored
|
@ -13,12 +13,10 @@ interface GenericLogicInterface extends Interface {
|
|||
}>;
|
||||
|
||||
calculateAvailableBorrowsETH: TypedFunctionDescription<{
|
||||
encode([collateralBalanceETH, borrowBalanceETH, totalFeesETH, ltv, _feeProvider]: [
|
||||
encode([collateralBalanceETH, borrowBalanceETH, ltv]: [
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
string
|
||||
BigNumberish
|
||||
]): string;
|
||||
}>;
|
||||
};
|
||||
|
@ -45,9 +43,7 @@ export class GenericLogic extends Contract {
|
|||
calculateAvailableBorrowsETH(
|
||||
collateralBalanceETH: BigNumberish,
|
||||
borrowBalanceETH: BigNumberish,
|
||||
totalFeesETH: BigNumberish,
|
||||
ltv: BigNumberish,
|
||||
_feeProvider: string
|
||||
ltv: BigNumberish
|
||||
): Promise<BigNumber>;
|
||||
};
|
||||
|
||||
|
@ -56,9 +52,7 @@ export class GenericLogic extends Contract {
|
|||
calculateAvailableBorrowsETH(
|
||||
collateralBalanceETH: BigNumberish,
|
||||
borrowBalanceETH: BigNumberish,
|
||||
totalFeesETH: BigNumberish,
|
||||
ltv: BigNumberish,
|
||||
_feeProvider: string
|
||||
ltv: BigNumberish
|
||||
): Promise<BigNumber>;
|
||||
|
||||
filters: {};
|
||||
|
@ -69,9 +63,7 @@ export class GenericLogic extends Contract {
|
|||
calculateAvailableBorrowsETH(
|
||||
collateralBalanceETH: BigNumberish,
|
||||
borrowBalanceETH: BigNumberish,
|
||||
totalFeesETH: BigNumberish,
|
||||
ltv: BigNumberish,
|
||||
_feeProvider: string
|
||||
ltv: BigNumberish
|
||||
): Promise<BigNumber>;
|
||||
};
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
6
types/IFlashLoanReceiver.d.ts
vendored
6
types/IFlashLoanReceiver.d.ts
vendored
|
@ -9,7 +9,8 @@ import {TransactionOverrides, TypedEventDescription, TypedFunctionDescription} f
|
|||
interface IFlashLoanReceiverInterface extends Interface {
|
||||
functions: {
|
||||
executeOperation: TypedFunctionDescription<{
|
||||
encode([_reserve, _amount, _fee, _params]: [
|
||||
encode([_reserve, _destination, _amount, _fee, _params]: [
|
||||
string,
|
||||
string,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
|
@ -37,6 +38,7 @@ export class IFlashLoanReceiver extends Contract {
|
|||
functions: {
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish,
|
||||
|
@ -46,6 +48,7 @@ export class IFlashLoanReceiver extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish,
|
||||
|
@ -57,6 +60,7 @@ export class IFlashLoanReceiver extends Contract {
|
|||
estimate: {
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish
|
||||
|
|
|
@ -20,6 +20,11 @@ const _abi = [
|
|||
name: '_reserve',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
internalType: 'address',
|
||||
name: '_destination',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
internalType: 'uint256',
|
||||
name: '_amount',
|
||||
|
|
|
@ -73,4 +73,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b5060ad8061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806306fdde03146041578063313ce56714605957806395d89b4114605f575b600080fd5b60476065565b60408051918252519081900360200190f35b6047606b565b60476071565b60005481565b60025481565b6001548156fea26469706673582212203768796577a99ad3a548ada1f422b9a27c862840dd4342467451416181f264f564736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b5060ad8061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806306fdde03146041578063313ce56714605957806395d89b4114605f575b600080fd5b60476065565b60408051918252519081900360200190f35b6047606b565b60476071565b60005481565b60025481565b6001548156fea2646970667358221220a7f980b57e3d5f7cfbceb3addd64be79e3c00cc5e20c3e18d100e24d0b4ceeb164736f6c63430006080033';
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -72,4 +72,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b50610398806100206000396000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f161023a565b61025f565b565b600061010261023a565b6001600160a01b03161461011557600080fd5b604080517f656970313936372e70726f78792e696d706c656d656e746174696f6e000000008152905190819003601c0190207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6000199091011461017557fe5b61017e82610283565b805115610236576000826001600160a01b0316826040518082805190602001908083835b602083106101c15780518252601f1990920191602091820191016101a2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b505090508061023457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561027e573d6000f35b3d6000fd5b61028c816102eb565b6102c75760405162461bcd60e51b815260040180806020018281038252603b815260200180610328603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061031f57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220b6b16d8651a66b5c8ef499a27cce045b5f1b3a1f188c7546bf319b120f169ff864736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b50610398806100206000396000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f161023a565b61025f565b565b600061010261023a565b6001600160a01b03161461011557600080fd5b604080517f656970313936372e70726f78792e696d706c656d656e746174696f6e000000008152905190819003601c0190207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6000199091011461017557fe5b61017e82610283565b805115610236576000826001600160a01b0316826040518082805190602001908083835b602083106101c15780518252601f1990920191602091820191016101a2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b505090508061023457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561027e573d6000f35b3d6000fd5b61028c816102eb565b6102c75760405162461bcd60e51b815260040180806020018281038252603b815260200180610328603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061031f57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220d792bbb604d3254b580ef2fc38cc60725810977df950bcb0b6761d73134f984164736f6c63430006080033';
|
||||
|
|
218
types/LendingPool.d.ts
vendored
218
types/LendingPool.d.ts
vendored
|
@ -31,19 +31,6 @@ interface LendingPoolInterface extends Interface {
|
|||
encode([_reserve, _amount, _referralCode]: [string, BigNumberish, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
disableReserveAsCollateral: TypedFunctionDescription<{
|
||||
encode([_reserve]: [string]): string;
|
||||
}>;
|
||||
|
||||
enableReserveAsCollateral: TypedFunctionDescription<{
|
||||
encode([_reserve, _baseLTVasCollateral, _liquidationThreshold, _liquidationBonus]: [
|
||||
string,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish
|
||||
]): string;
|
||||
}>;
|
||||
|
||||
flashLoan: TypedFunctionDescription<{
|
||||
encode([_receiver, _reserve, _amount, _params]: [
|
||||
string,
|
||||
|
@ -53,6 +40,10 @@ interface LendingPoolInterface extends Interface {
|
|||
]): string;
|
||||
}>;
|
||||
|
||||
getConfiguration: TypedFunctionDescription<{
|
||||
encode([_reserve]: [string]): string;
|
||||
}>;
|
||||
|
||||
getReserveConfigurationData: TypedFunctionDescription<{
|
||||
encode([_reserve]: [string]): string;
|
||||
}>;
|
||||
|
@ -89,9 +80,8 @@ interface LendingPoolInterface extends Interface {
|
|||
_aTokenAddress,
|
||||
_stableDebtAddress,
|
||||
_variableDebtAddress,
|
||||
_decimals,
|
||||
_interestRateStrategyAddress,
|
||||
]: [string, string, string, string, BigNumberish, string]): string;
|
||||
]: [string, string, string, string, string]): string;
|
||||
}>;
|
||||
|
||||
initialize: TypedFunctionDescription<{
|
||||
|
@ -134,46 +124,14 @@ interface LendingPoolInterface extends Interface {
|
|||
encode([]: [BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveActive: TypedFunctionDescription<{
|
||||
encode([_reserve, _active]: [string, boolean]): string;
|
||||
}>;
|
||||
|
||||
setReserveBaseLTVasCollateral: TypedFunctionDescription<{
|
||||
encode([_reserve, _ltv]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveBorrowingEnabled: TypedFunctionDescription<{
|
||||
encode([_reserve, _borrowingEnabled, _stableBorrowRateEnabled]: [
|
||||
string,
|
||||
boolean,
|
||||
boolean
|
||||
]): string;
|
||||
}>;
|
||||
|
||||
setReserveDecimals: TypedFunctionDescription<{
|
||||
encode([_reserve, _decimals]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveFreeze: TypedFunctionDescription<{
|
||||
encode([_reserve, _isFreezed]: [string, boolean]): string;
|
||||
setConfiguration: TypedFunctionDescription<{
|
||||
encode([_reserve, _configuration]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveInterestRateStrategyAddress: TypedFunctionDescription<{
|
||||
encode([_reserve, _rateStrategyAddress]: [string, string]): string;
|
||||
}>;
|
||||
|
||||
setReserveLiquidationBonus: TypedFunctionDescription<{
|
||||
encode([_reserve, _bonus]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveLiquidationThreshold: TypedFunctionDescription<{
|
||||
encode([_reserve, _threshold]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveStableBorrowRateEnabled: TypedFunctionDescription<{
|
||||
encode([_reserve, _enabled]: [string, boolean]): string;
|
||||
}>;
|
||||
|
||||
setUserUseReserveAsCollateral: TypedFunctionDescription<{
|
||||
encode([_reserve, _useAsCollateral]: [string, boolean]): string;
|
||||
}>;
|
||||
|
@ -330,19 +288,6 @@ export class LendingPool extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
disableReserveAsCollateral(
|
||||
_reserve: string,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
enableReserveAsCollateral(
|
||||
_reserve: string,
|
||||
_baseLTVasCollateral: BigNumberish,
|
||||
_liquidationThreshold: BigNumberish,
|
||||
_liquidationBonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
flashLoan(
|
||||
_receiver: string,
|
||||
_reserve: string,
|
||||
|
@ -351,6 +296,8 @@ export class LendingPool extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
getConfiguration(_reserve: string): Promise<{data: BigNumber; 0: BigNumber}>;
|
||||
|
||||
getReserveConfigurationData(
|
||||
_reserve: string
|
||||
): Promise<{
|
||||
|
@ -423,7 +370,6 @@ export class LendingPool extends Contract {
|
|||
): Promise<{
|
||||
totalCollateralETH: BigNumber;
|
||||
totalBorrowsETH: BigNumber;
|
||||
totalFeesETH: BigNumber;
|
||||
availableBorrowsETH: BigNumber;
|
||||
currentLiquidationThreshold: BigNumber;
|
||||
ltv: BigNumber;
|
||||
|
@ -434,7 +380,6 @@ export class LendingPool extends Contract {
|
|||
3: BigNumber;
|
||||
4: BigNumber;
|
||||
5: BigNumber;
|
||||
6: BigNumber;
|
||||
}>;
|
||||
|
||||
getUserReserveData(
|
||||
|
@ -468,7 +413,6 @@ export class LendingPool extends Contract {
|
|||
_aTokenAddress: string,
|
||||
_stableDebtAddress: string,
|
||||
_variableDebtAddress: string,
|
||||
_decimals: BigNumberish,
|
||||
_interestRateStrategyAddress: string,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
@ -511,34 +455,9 @@ export class LendingPool extends Contract {
|
|||
|
||||
reservesList(arg0: BigNumberish): Promise<string>;
|
||||
|
||||
setReserveActive(
|
||||
setConfiguration(
|
||||
_reserve: string,
|
||||
_active: boolean,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveBaseLTVasCollateral(
|
||||
_reserve: string,
|
||||
_ltv: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveBorrowingEnabled(
|
||||
_reserve: string,
|
||||
_borrowingEnabled: boolean,
|
||||
_stableBorrowRateEnabled: boolean,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveDecimals(
|
||||
_reserve: string,
|
||||
_decimals: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveFreeze(
|
||||
_reserve: string,
|
||||
_isFreezed: boolean,
|
||||
_configuration: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
|
@ -548,24 +467,6 @@ export class LendingPool extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationBonus(
|
||||
_reserve: string,
|
||||
_bonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationThreshold(
|
||||
_reserve: string,
|
||||
_threshold: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveStableBorrowRateEnabled(
|
||||
_reserve: string,
|
||||
_enabled: boolean,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setUserUseReserveAsCollateral(
|
||||
_reserve: string,
|
||||
_useAsCollateral: boolean,
|
||||
|
@ -602,19 +503,6 @@ export class LendingPool extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
disableReserveAsCollateral(
|
||||
_reserve: string,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
enableReserveAsCollateral(
|
||||
_reserve: string,
|
||||
_baseLTVasCollateral: BigNumberish,
|
||||
_liquidationThreshold: BigNumberish,
|
||||
_liquidationBonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
flashLoan(
|
||||
_receiver: string,
|
||||
_reserve: string,
|
||||
|
@ -623,6 +511,8 @@ export class LendingPool extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
getConfiguration(_reserve: string): Promise<{data: BigNumber; 0: BigNumber}>;
|
||||
|
||||
getReserveConfigurationData(
|
||||
_reserve: string
|
||||
): Promise<{
|
||||
|
@ -695,7 +585,6 @@ export class LendingPool extends Contract {
|
|||
): Promise<{
|
||||
totalCollateralETH: BigNumber;
|
||||
totalBorrowsETH: BigNumber;
|
||||
totalFeesETH: BigNumber;
|
||||
availableBorrowsETH: BigNumber;
|
||||
currentLiquidationThreshold: BigNumber;
|
||||
ltv: BigNumber;
|
||||
|
@ -706,7 +595,6 @@ export class LendingPool extends Contract {
|
|||
3: BigNumber;
|
||||
4: BigNumber;
|
||||
5: BigNumber;
|
||||
6: BigNumber;
|
||||
}>;
|
||||
|
||||
getUserReserveData(
|
||||
|
@ -740,7 +628,6 @@ export class LendingPool extends Contract {
|
|||
_aTokenAddress: string,
|
||||
_stableDebtAddress: string,
|
||||
_variableDebtAddress: string,
|
||||
_decimals: BigNumberish,
|
||||
_interestRateStrategyAddress: string,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
@ -783,34 +670,9 @@ export class LendingPool extends Contract {
|
|||
|
||||
reservesList(arg0: BigNumberish): Promise<string>;
|
||||
|
||||
setReserveActive(
|
||||
setConfiguration(
|
||||
_reserve: string,
|
||||
_active: boolean,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveBaseLTVasCollateral(
|
||||
_reserve: string,
|
||||
_ltv: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveBorrowingEnabled(
|
||||
_reserve: string,
|
||||
_borrowingEnabled: boolean,
|
||||
_stableBorrowRateEnabled: boolean,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveDecimals(
|
||||
_reserve: string,
|
||||
_decimals: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveFreeze(
|
||||
_reserve: string,
|
||||
_isFreezed: boolean,
|
||||
_configuration: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
|
@ -820,24 +682,6 @@ export class LendingPool extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationBonus(
|
||||
_reserve: string,
|
||||
_bonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationThreshold(
|
||||
_reserve: string,
|
||||
_threshold: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveStableBorrowRateEnabled(
|
||||
_reserve: string,
|
||||
_enabled: boolean,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setUserUseReserveAsCollateral(
|
||||
_reserve: string,
|
||||
_useAsCollateral: boolean,
|
||||
|
@ -953,15 +797,6 @@ export class LendingPool extends Contract {
|
|||
_referralCode: BigNumberish
|
||||
): Promise<BigNumber>;
|
||||
|
||||
disableReserveAsCollateral(_reserve: string): Promise<BigNumber>;
|
||||
|
||||
enableReserveAsCollateral(
|
||||
_reserve: string,
|
||||
_baseLTVasCollateral: BigNumberish,
|
||||
_liquidationThreshold: BigNumberish,
|
||||
_liquidationBonus: BigNumberish
|
||||
): Promise<BigNumber>;
|
||||
|
||||
flashLoan(
|
||||
_receiver: string,
|
||||
_reserve: string,
|
||||
|
@ -969,6 +804,8 @@ export class LendingPool extends Contract {
|
|||
_params: Arrayish
|
||||
): Promise<BigNumber>;
|
||||
|
||||
getConfiguration(_reserve: string): Promise<BigNumber>;
|
||||
|
||||
getReserveConfigurationData(_reserve: string): Promise<BigNumber>;
|
||||
|
||||
getReserveData(_reserve: string): Promise<BigNumber>;
|
||||
|
@ -990,7 +827,6 @@ export class LendingPool extends Contract {
|
|||
_aTokenAddress: string,
|
||||
_stableDebtAddress: string,
|
||||
_variableDebtAddress: string,
|
||||
_decimals: BigNumberish,
|
||||
_interestRateStrategyAddress: string
|
||||
): Promise<BigNumber>;
|
||||
|
||||
|
@ -1022,31 +858,13 @@ export class LendingPool extends Contract {
|
|||
|
||||
reservesList(arg0: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveActive(_reserve: string, _active: boolean): Promise<BigNumber>;
|
||||
|
||||
setReserveBaseLTVasCollateral(_reserve: string, _ltv: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveBorrowingEnabled(
|
||||
_reserve: string,
|
||||
_borrowingEnabled: boolean,
|
||||
_stableBorrowRateEnabled: boolean
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setReserveDecimals(_reserve: string, _decimals: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveFreeze(_reserve: string, _isFreezed: boolean): Promise<BigNumber>;
|
||||
setConfiguration(_reserve: string, _configuration: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveInterestRateStrategyAddress(
|
||||
_reserve: string,
|
||||
_rateStrategyAddress: string
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setReserveLiquidationBonus(_reserve: string, _bonus: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveLiquidationThreshold(_reserve: string, _threshold: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveStableBorrowRateEnabled(_reserve: string, _enabled: boolean): Promise<BigNumber>;
|
||||
|
||||
setUserUseReserveAsCollateral(_reserve: string, _useAsCollateral: boolean): Promise<BigNumber>;
|
||||
|
||||
swapBorrowRateMode(_reserve: string, _rateMode: BigNumberish): Promise<BigNumber>;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -178,4 +178,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b610750806100866000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d258191e1461012e578063d570d9541461015a578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b26102be565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a86103bb565b61011261045d565b604080516001600160a01b039092168252519081900360200190f35b6100a86004803603604081101561014457600080fd5b506001600160a01b03813516906020013561046c565b6101806004803603602081101561017057600080fd5b50356001600160a01b0316610520565b60408051918252519081900360200190f35b6100a8600480360360208110156101a857600080fd5b50356001600160a01b031661053b565b6101c0610633565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205461027a576040805162461bcd60e51b815260206004820152601a60248201527f50726f7669646572206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b600254606090818167ffffffffffffffff811180156102dc57600080fd5b50604051908082528060200260200182016040528015610306578160200160208202803683370190505b50905060005b6002548110156103b4576000600160006002848154811061032957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411156103ac576002818154811061036157fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061038b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161030c565b5091505090565b6103c3610633565b6000546001600160a01b03908116911614610413576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610474610633565b6000546001600160a01b039081169116146104c4576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090208190556104e882610637565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b6001600160a01b031660009081526001602052604090205490565b610543610633565b6000546001600160a01b03908116911614610593576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b0381166105d85760405162461bcd60e51b81526004018080602001828103825260268152602001806106d56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60005b60025481101561068457816001600160a01b03166002828154811061065b57fe5b6000918252602090912001546001600160a01b0316141561067c57506106d1565b60010161063a565b50600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e906f3c4dc6df21fb70344f5253c4d5f59c429f9242bdf11f6cbcab677cc378064736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b610750806100866000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d258191e1461012e578063d570d9541461015a578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b26102be565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a86103bb565b61011261045d565b604080516001600160a01b039092168252519081900360200190f35b6100a86004803603604081101561014457600080fd5b506001600160a01b03813516906020013561046c565b6101806004803603602081101561017057600080fd5b50356001600160a01b0316610520565b60408051918252519081900360200190f35b6100a8600480360360208110156101a857600080fd5b50356001600160a01b031661053b565b6101c0610633565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205461027a576040805162461bcd60e51b815260206004820152601a60248201527f50726f7669646572206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b600254606090818167ffffffffffffffff811180156102dc57600080fd5b50604051908082528060200260200182016040528015610306578160200160208202803683370190505b50905060005b6002548110156103b4576000600160006002848154811061032957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411156103ac576002818154811061036157fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061038b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161030c565b5091505090565b6103c3610633565b6000546001600160a01b03908116911614610413576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610474610633565b6000546001600160a01b039081169116146104c4576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090208190556104e882610637565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b6001600160a01b031660009081526001602052604090205490565b610543610633565b6000546001600160a01b03908116911614610593576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b0381166105d85760405162461bcd60e51b81526004018080602001828103825260268152602001806106d56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60005b60025481101561068457816001600160a01b03166002828154811061065b57fe5b6000918252602090912001546001600160a01b0316141561067c57506106d1565b60010161063a565b50600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220678930bb15bb411c1dbc6c6216cc7a1722478396a23587a3e4aafcfbc69537a464736f6c63430006080033';
|
||||
|
|
88
types/LendingPoolConfigurator.d.ts
vendored
88
types/LendingPoolConfigurator.d.ts
vendored
|
@ -77,9 +77,19 @@ interface LendingPoolConfiguratorInterface extends Interface {
|
|||
encode([_poolAddressesProvider]: [string]): string;
|
||||
}>;
|
||||
|
||||
pool: TypedFunctionDescription<{encode([]: []): string}>;
|
||||
|
||||
poolAddressesProvider: TypedFunctionDescription<{encode([]: []): string}>;
|
||||
|
||||
setReserveBaseLTVasCollateral: TypedFunctionDescription<{
|
||||
setLiquidationBonus: TypedFunctionDescription<{
|
||||
encode([_reserve, _bonus]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setLiquidationThreshold: TypedFunctionDescription<{
|
||||
encode([_reserve, _threshold]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setLtv: TypedFunctionDescription<{
|
||||
encode([_reserve, _ltv]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
|
@ -91,14 +101,6 @@ interface LendingPoolConfiguratorInterface extends Interface {
|
|||
encode([_reserve, _rateStrategyAddress]: [string, string]): string;
|
||||
}>;
|
||||
|
||||
setReserveLiquidationBonus: TypedFunctionDescription<{
|
||||
encode([_reserve, _bonus]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
setReserveLiquidationThreshold: TypedFunctionDescription<{
|
||||
encode([_reserve, _threshold]: [string, BigNumberish]): string;
|
||||
}>;
|
||||
|
||||
unfreezeReserve: TypedFunctionDescription<{
|
||||
encode([_reserve]: [string]): string;
|
||||
}>;
|
||||
|
@ -267,9 +269,23 @@ export class LendingPoolConfigurator extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
pool(): Promise<string>;
|
||||
|
||||
poolAddressesProvider(): Promise<string>;
|
||||
|
||||
setReserveBaseLTVasCollateral(
|
||||
setLiquidationBonus(
|
||||
_reserve: string,
|
||||
_bonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setLiquidationThreshold(
|
||||
_reserve: string,
|
||||
_threshold: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setLtv(
|
||||
_reserve: string,
|
||||
_ltv: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
|
@ -287,18 +303,6 @@ export class LendingPoolConfigurator extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationBonus(
|
||||
_reserve: string,
|
||||
_bonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationThreshold(
|
||||
_reserve: string,
|
||||
_threshold: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
unfreezeReserve(
|
||||
_reserve: string,
|
||||
overrides?: TransactionOverrides
|
||||
|
@ -375,9 +379,23 @@ export class LendingPoolConfigurator extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
pool(): Promise<string>;
|
||||
|
||||
poolAddressesProvider(): Promise<string>;
|
||||
|
||||
setReserveBaseLTVasCollateral(
|
||||
setLiquidationBonus(
|
||||
_reserve: string,
|
||||
_bonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setLiquidationThreshold(
|
||||
_reserve: string,
|
||||
_threshold: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setLtv(
|
||||
_reserve: string,
|
||||
_ltv: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
|
@ -395,18 +413,6 @@ export class LendingPoolConfigurator extends Contract {
|
|||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationBonus(
|
||||
_reserve: string,
|
||||
_bonus: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setReserveLiquidationThreshold(
|
||||
_reserve: string,
|
||||
_threshold: BigNumberish,
|
||||
overrides?: TransactionOverrides
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
unfreezeReserve(_reserve: string, overrides?: TransactionOverrides): Promise<ContractTransaction>;
|
||||
|
||||
filters: {
|
||||
|
@ -501,9 +507,15 @@ export class LendingPoolConfigurator extends Contract {
|
|||
|
||||
initialize(_poolAddressesProvider: string): Promise<BigNumber>;
|
||||
|
||||
pool(): Promise<BigNumber>;
|
||||
|
||||
poolAddressesProvider(): Promise<BigNumber>;
|
||||
|
||||
setReserveBaseLTVasCollateral(_reserve: string, _ltv: BigNumberish): Promise<BigNumber>;
|
||||
setLiquidationBonus(_reserve: string, _bonus: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setLiquidationThreshold(_reserve: string, _threshold: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setLtv(_reserve: string, _ltv: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveDecimals(_reserve: string, _decimals: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
|
@ -512,10 +524,6 @@ export class LendingPoolConfigurator extends Contract {
|
|||
_rateStrategyAddress: string
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setReserveLiquidationBonus(_reserve: string, _bonus: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
setReserveLiquidationThreshold(_reserve: string, _threshold: BigNumberish): Promise<BigNumber>;
|
||||
|
||||
unfreezeReserve(_reserve: string): Promise<BigNumber>;
|
||||
};
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -160,4 +160,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b6104d3806100866000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212205a70c695df428b295326b997bc040b37bae1f9ec1bd06c08f157cb36423fc98664736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b6104d3806100866000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220bcc898def2e44300e275ecf77acc2aacccc24f178c05892852eb5e61ff4bf45e64736f6c63430006080033';
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -87,4 +87,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b506040516101003803806101008339818101604052602081101561003357600080fd5b5051600081815560408051428152905183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f919081900360200190a35060818061007f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea264697066735822122091d4f0afd82a633f8071a785eb6981a22f2cbb2175e6501f53f446275b42e05764736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b506040516101003803806101008339818101604052602081101561003357600080fd5b5051600081815560408051428152905183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f919081900360200190a35060818061007f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea264697066735822122026081027bccb4981711bfb517e3852a08cfd5f2df9f0909cc3825dbc5a143ee064736f6c63430006080033';
|
||||
|
|
6
types/MockFlashLoanReceiver.d.ts
vendored
6
types/MockFlashLoanReceiver.d.ts
vendored
|
@ -11,7 +11,8 @@ interface MockFlashLoanReceiverInterface extends Interface {
|
|||
addressesProvider: TypedFunctionDescription<{encode([]: []): string}>;
|
||||
|
||||
executeOperation: TypedFunctionDescription<{
|
||||
encode([_reserve, _amount, _fee, _params]: [
|
||||
encode([_reserve, _destination, _amount, _fee, _params]: [
|
||||
string,
|
||||
string,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
|
@ -53,6 +54,7 @@ export class MockFlashLoanReceiver extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish,
|
||||
|
@ -69,6 +71,7 @@ export class MockFlashLoanReceiver extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish,
|
||||
|
@ -91,6 +94,7 @@ export class MockFlashLoanReceiver extends Contract {
|
|||
|
||||
executeOperation(
|
||||
_reserve: string,
|
||||
_destination: string,
|
||||
_amount: BigNumberish,
|
||||
_fee: BigNumberish,
|
||||
_params: Arrayish
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -141,4 +141,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b506101d0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806351323f7214610051578063a0a8045e1461007f578063b3596f0714610099578063b951883a146100bf575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b0381351690602001356100dc565b005b610087610137565b60408051918252519081900360200190f35b610087600480360360208110156100af57600080fd5b50356001600160a01b031661013d565b61007d600480360360208110156100d557600080fd5b5035610158565b6001600160a01b03821660008181526020818152604091829020849055815192835282018390524282820152517fce6e0b57367bae95ca7198e1172f653ea64a645c16ab586b4cefa9237bfc2d929181900360600190a15050565b60015490565b6001600160a01b031660009081526020819052604090205490565b60018190556040805182815242602082015281517fb4f35977939fa8b5ffe552d517a8ff5223046b1fdd3ee0068ae38d1e2b8d0016929181900390910190a15056fea264697066735822122099f53b6981b65616d385dea54c4fed741a17ffabec0ee5d7980361b3fcabd5b564736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b506101d0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806351323f7214610051578063a0a8045e1461007f578063b3596f0714610099578063b951883a146100bf575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b0381351690602001356100dc565b005b610087610137565b60408051918252519081900360200190f35b610087600480360360208110156100af57600080fd5b50356001600160a01b031661013d565b61007d600480360360208110156100d557600080fd5b5035610158565b6001600160a01b03821660008181526020818152604091829020849055815192835282018390524282820152517fce6e0b57367bae95ca7198e1172f653ea64a645c16ab586b4cefa9237bfc2d929181900360600190a15050565b60015490565b6001600160a01b031660009081526020819052604090205490565b60018190556040805182815242602082015281517fb4f35977939fa8b5ffe552d517a8ff5223046b1fdd3ee0068ae38d1e2b8d0016929181900390910190a15056fea2646970667358221220b739db650a684a3f2637f5b002e50df6b4f59d99a53433c6b98e6987cc6c068a64736f6c63430006080033';
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -53,4 +53,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x6080604052348015600f57600080fd5b5060a18061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063bd02d0f514602d575b600080fd5b604760048036036020811015604157600080fd5b50356059565b60408051918252519081900360200190f35b6000908152602081905260409020549056fea2646970667358221220bd68e5c406e3798dd84a0380e5fca02432bd9828e948826d8c339558e7076aef64736f6c63430006080033';
|
||||
'0x6080604052348015600f57600080fd5b5060a18061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063bd02d0f514602d575b600080fd5b604760048036036020811015604157600080fd5b50356059565b60408051918252519081900360200190f35b6000908152602081905260409020549056fea264697066735822122060e13c8f991d1c7dbc9f9978241019018fefda3e1d69fcfe8ff8d23b365286e964736f6c63430006080033';
|
||||
|
|
|
@ -76,4 +76,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x60806040526040516103d93803806103d98339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902060008051602061037e83398151915260001990910114925061012a91505057fe5b61013c826001600160e01b036101fb16565b8051156101f4576000826001600160a01b0316826040518082805190602001908083835b6020831061017f5780518252601f199092019160209182019101610160565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101df576040519150601f19603f3d011682016040523d82523d6000602084013e6101e4565b606091505b50509050806101f257600080fd5b505b5050610297565b61020e8161025b60201b6100201760201c565b6102495760405162461bcd60e51b815260040180806020018281038252603b81526020018061039e603b913960400191505060405180910390fd5b60008051602061037e83398151915255565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028f57508115155b949350505050565b60d9806102a56000396000f3fe6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea26469706673582212204ee01122e5fcbff438ad1062473a5fe6887186d5edfc23e8ac1f913068bf5bdd64736f6c63430006080033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373';
|
||||
'0x60806040526040516103d93803806103d98339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902060008051602061037e83398151915260001990910114925061012a91505057fe5b61013c826001600160e01b036101fb16565b8051156101f4576000826001600160a01b0316826040518082805190602001908083835b6020831061017f5780518252601f199092019160209182019101610160565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101df576040519150601f19603f3d011682016040523d82523d6000602084013e6101e4565b606091505b50509050806101f257600080fd5b505b5050610297565b61020e8161025b60201b6100201760201c565b6102495760405162461bcd60e51b815260040180806020018281038252603b81526020018061039e603b913960400191505060405180910390fd5b60008051602061037e83398151915255565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028f57508115155b949350505050565b60d9806102a56000396000f3fe6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220891f7d2cdf9bc2a5b96323f4d5af76668af4ae95783fb0cd3c25a0d695eed46264736f6c63430006080033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373';
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -121,4 +121,4 @@ const _abi = [
|
|||
];
|
||||
|
||||
const _bytecode =
|
||||
'0x608060405234801561001057600080fd5b506040516109863803806109868339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610921806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a0945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b038135811691602001351661081c565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610694576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b6020026020010181815250505061068c565b61062784838151811061061157fe5b60200260200101516001600160a01b03166108c6565b15610666576106498885848151811061063c57fe5b602002602001015161081c565b83838151811061065557fe5b60200260200101818152505061068a565b876001600160a01b03163183838151811061067d57fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106be57600080fd5b506040519080825280602002602001820160405280156106e8578160200160208202803683370190505b50905060005b84518110156108125760005b845181101561080957600085518302905061071a86838151811061061157fe5b1561075c5786838151811061072b57fe5b60200260200101516001600160a01b031631848383018151811061074b57fe5b602002602001018181525050610800565b61078186838151811061076b57fe5b60200260200101516001600160a01b0316610320565b6107c2576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6107e58784815181106107d157fe5b602002602001015187848151811061063c57fe5b84838301815181106107f357fe5b6020026020010181815250505b506001016106fa565b506001016106ee565b5090505b92915050565b6000610830826001600160a01b0316610320565b156108be57816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b50519050610816565b506000610816565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1491905056fea26469706673582212200fbc644a4e6267f8c144d0aca26cc131b879cfeaf1483e40e6f760d362632a8364736f6c63430006080033';
|
||||
'0x608060405234801561001057600080fd5b506040516109863803806109868339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610921806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a0945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b038135811691602001351661081c565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610694576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b6020026020010181815250505061068c565b61062784838151811061061157fe5b60200260200101516001600160a01b03166108c6565b15610666576106498885848151811061063c57fe5b602002602001015161081c565b83838151811061065557fe5b60200260200101818152505061068a565b876001600160a01b03163183838151811061067d57fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106be57600080fd5b506040519080825280602002602001820160405280156106e8578160200160208202803683370190505b50905060005b84518110156108125760005b845181101561080957600085518302905061071a86838151811061061157fe5b1561075c5786838151811061072b57fe5b60200260200101516001600160a01b031631848383018151811061074b57fe5b602002602001018181525050610800565b61078186838151811061076b57fe5b60200260200101516001600160a01b0316610320565b6107c2576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6107e58784815181106107d157fe5b602002602001015187848151811061063c57fe5b84838301815181106107f357fe5b6020026020010181815250505b506001016106fa565b506001016106ee565b5090505b92915050565b6000610830826001600160a01b0316610320565b156108be57816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b50519050610816565b506000610816565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1491905056fea2646970667358221220c12cfbdd480ca99bcf6c566c25db8abeeec08854a31462c3db0b4e3c5b074d8d64736f6c63430006080033';
|
||||
|
|
Loading…
Reference in New Issue
Block a user