mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
feat: added authorized flashloaners
This commit is contained in:
parent
ec77fc3db4
commit
ccad06fc94
|
@ -458,4 +458,10 @@ interface ILendingPool {
|
||||||
function setPause(bool val) external;
|
function setPause(bool val) external;
|
||||||
|
|
||||||
function paused() external view returns (bool);
|
function paused() external view returns (bool);
|
||||||
|
|
||||||
|
function authorizeFlashloaner(address flashloaner) external;
|
||||||
|
|
||||||
|
function unauthorizeFlashloaner(address flashloaner) external;
|
||||||
|
|
||||||
|
function isFlashloanerAuthorized(address flashloaner) external view returns (bool);
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,9 +207,17 @@ interface ILendingPoolConfigurator {
|
||||||
|
|
||||||
event RiskAdminUnregistered(address indexed admin);
|
event RiskAdminUnregistered(address indexed admin);
|
||||||
|
|
||||||
|
event FlashloanerAuthorized(address indexed flashloaner);
|
||||||
|
|
||||||
|
event FlashloanerUnauthorized(address indexed flashloaner);
|
||||||
|
|
||||||
function registerRiskAdmin(address admin) external;
|
function registerRiskAdmin(address admin) external;
|
||||||
|
|
||||||
function unregisterRiskAdmin(address admin) external;
|
function unregisterRiskAdmin(address admin) external;
|
||||||
|
|
||||||
|
function authorizeFlashloaner(address flashloaner) external;
|
||||||
|
|
||||||
|
function unauthorizeFlashloaner(address flashloaner) external;
|
||||||
|
|
||||||
function isRiskAdmin(address admin) external view returns (bool);
|
function isRiskAdmin(address admin) external view returns (bool);
|
||||||
}
|
}
|
||||||
|
|
|
@ -435,6 +435,7 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
uint256 currentPremium;
|
uint256 currentPremium;
|
||||||
uint256 currentAmountPlusPremium;
|
uint256 currentAmountPlusPremium;
|
||||||
address debtToken;
|
address debtToken;
|
||||||
|
uint256 flashloanPremiumTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -469,13 +470,13 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
|
|
||||||
address[] memory aTokenAddresses = new address[](assets.length);
|
address[] memory aTokenAddresses = new address[](assets.length);
|
||||||
uint256[] memory premiums = new uint256[](assets.length);
|
uint256[] memory premiums = new uint256[](assets.length);
|
||||||
|
|
||||||
vars.receiver = IFlashLoanReceiver(receiverAddress);
|
vars.receiver = IFlashLoanReceiver(receiverAddress);
|
||||||
|
vars.flashloanPremiumTotal = _authorizedFlashloaners[msg.sender] ? 0 : _flashLoanPremiumTotal;
|
||||||
|
|
||||||
for (vars.i = 0; vars.i < assets.length; vars.i++) {
|
for (vars.i = 0; vars.i < assets.length; vars.i++) {
|
||||||
aTokenAddresses[vars.i] = _reserves[assets[vars.i]].aTokenAddress;
|
aTokenAddresses[vars.i] = _reserves[assets[vars.i]].aTokenAddress;
|
||||||
|
|
||||||
premiums[vars.i] = amounts[vars.i].mul(_flashLoanPremiumTotal).div(10000);
|
premiums[vars.i] = amounts[vars.i].mul(vars.flashloanPremiumTotal).div(10000);
|
||||||
|
|
||||||
IAToken(aTokenAddresses[vars.i]).transferUnderlyingTo(receiverAddress, amounts[vars.i]);
|
IAToken(aTokenAddresses[vars.i]).transferUnderlyingTo(receiverAddress, amounts[vars.i]);
|
||||||
}
|
}
|
||||||
|
@ -821,6 +822,22 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function authorizeFlashloaner(address flashloaner) external override onlyLendingPoolConfigurator {
|
||||||
|
_authorizedFlashloaners[flashloaner] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function unauthorizeFlashloaner(address flashloaner)
|
||||||
|
external
|
||||||
|
override
|
||||||
|
onlyLendingPoolConfigurator
|
||||||
|
{
|
||||||
|
_authorizedFlashloaners[flashloaner] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isFlashloanerAuthorized(address flashloaner) external view override returns (bool) {
|
||||||
|
return _authorizedFlashloaners[flashloaner];
|
||||||
|
}
|
||||||
|
|
||||||
struct ExecuteBorrowParams {
|
struct ExecuteBorrowParams {
|
||||||
address asset;
|
address asset;
|
||||||
address user;
|
address user;
|
||||||
|
|
|
@ -537,6 +537,16 @@ contract LendingPoolConfigurator is VersionedInitializable, ILendingPoolConfigur
|
||||||
emit RiskAdminUnregistered(admin);
|
emit RiskAdminUnregistered(admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function authorizeFlashloaner(address flashloaner) external override onlyPoolAdmin {
|
||||||
|
pool.authorizeFlashloaner(flashloaner);
|
||||||
|
emit FlashloanerAuthorized(flashloaner);
|
||||||
|
}
|
||||||
|
|
||||||
|
function unauthorizeFlashloaner(address flashloaner) external override onlyPoolAdmin {
|
||||||
|
pool.unauthorizeFlashloaner(flashloaner);
|
||||||
|
emit FlashloanerUnauthorized(flashloaner);
|
||||||
|
}
|
||||||
|
|
||||||
function isRiskAdmin(address admin) external view override onlyPoolAdmin returns (bool) {
|
function isRiskAdmin(address admin) external view override onlyPoolAdmin returns (bool) {
|
||||||
return _riskAdmins[admin];
|
return _riskAdmins[admin];
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,4 +29,6 @@ contract LendingPoolStorage {
|
||||||
uint256 internal _flashLoanPremiumTotal;
|
uint256 internal _flashLoanPremiumTotal;
|
||||||
|
|
||||||
uint256 internal _maxNumberOfReserves;
|
uint256 internal _maxNumberOfReserves;
|
||||||
|
|
||||||
|
mapping(address => bool) _authorizedFlashloaners;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user