added extra checks and fallbacks

This commit is contained in:
sendra 2021-09-24 16:00:49 +02:00
parent 9417062c98
commit b206ea0023

View File

@ -54,13 +54,30 @@ contract UiIncentiveDataProvider is IUiIncentiveDataProvider {
try IStableDebtToken(baseData.aTokenAddress).getIncentivesController() returns (IAaveIncentivesController aTokenIncentiveController) { try IStableDebtToken(baseData.aTokenAddress).getIncentivesController() returns (IAaveIncentivesController aTokenIncentiveController) {
if (address(aTokenIncentiveController) != address(0)) { if (address(aTokenIncentiveController) != address(0)) {
( address aRewardToken = aTokenIncentiveController.REWARD_TOKEN();
try aTokenIncentiveController.getAssetData(baseData.aTokenAddress) returns (
uint256 aTokenIncentivesIndex, uint256 aTokenIncentivesIndex,
uint256 aEmissionPerSecond, uint256 aEmissionPerSecond,
uint256 aIncentivesLastUpdateTimestamp uint256 aIncentivesLastUpdateTimestamp
) = aTokenIncentiveController.getAssetData(baseData.aTokenAddress); ) {
reserveIncentiveData.aIncentiveData = IncentiveData(
address aRewardToken = aTokenIncentiveController.REWARD_TOKEN(); aEmissionPerSecond,
aIncentivesLastUpdateTimestamp,
aTokenIncentivesIndex,
aTokenIncentiveController.DISTRIBUTION_END(),
baseData.aTokenAddress,
aRewardToken,
address(aTokenIncentiveController),
IERC20Detailed(aRewardToken).decimals(),
aTokenIncentiveController.PRECISION()
);
} catch (bytes memory /*lowLevelData*/) {
(
uint256 aEmissionPerSecond,
uint256 aIncentivesLastUpdateTimestamp,
uint256 aTokenIncentivesIndex
) = aTokenIncentiveController.assets(baseData.aTokenAddress);
reserveIncentiveData.aIncentiveData = IncentiveData( reserveIncentiveData.aIncentiveData = IncentiveData(
aEmissionPerSecond, aEmissionPerSecond,
@ -74,19 +91,37 @@ contract UiIncentiveDataProvider is IUiIncentiveDataProvider {
aTokenIncentiveController.PRECISION() aTokenIncentiveController.PRECISION()
); );
} }
}
} catch(bytes memory /*lowLevelData*/) { } catch(bytes memory /*lowLevelData*/) {
// Will not get here // Will not get here
} }
try IStableDebtToken(baseData.stableDebtTokenAddress).getIncentivesController() returns (IAaveIncentivesController sTokenIncentiveController) { try IStableDebtToken(baseData.stableDebtTokenAddress).getIncentivesController() returns (IAaveIncentivesController sTokenIncentiveController) {
if (address(sTokenIncentiveController) != address(0)) { if (address(sTokenIncentiveController) != address(0)) {
(
address sRewardToken = sTokenIncentiveController.REWARD_TOKEN();
try sTokenIncentiveController.getAssetData(baseData.stableDebtTokenAddress) returns (
uint256 sTokenIncentivesIndex, uint256 sTokenIncentivesIndex,
uint256 sEmissionPerSecond, uint256 sEmissionPerSecond,
uint256 sIncentivesLastUpdateTimestamp uint256 sIncentivesLastUpdateTimestamp
) = sTokenIncentiveController.getAssetData(baseData.stableDebtTokenAddress); ) {
reserveIncentiveData.sIncentiveData = IncentiveData(
address sRewardToken = sTokenIncentiveController.REWARD_TOKEN(); sEmissionPerSecond,
sIncentivesLastUpdateTimestamp,
sTokenIncentivesIndex,
sTokenIncentiveController.DISTRIBUTION_END(),
baseData.stableDebtTokenAddress,
sRewardToken,
address(sTokenIncentiveController),
IERC20Detailed(sRewardToken).decimals(),
sTokenIncentiveController.PRECISION()
);
} catch (bytes memory /*lowLevelData*/) {
(
uint256 sEmissionPerSecond,
uint256 sIncentivesLastUpdateTimestamp,
uint256 sTokenIncentivesIndex
) = sTokenIncentiveController.assets(baseData.stableDebtTokenAddress);
reserveIncentiveData.sIncentiveData = IncentiveData( reserveIncentiveData.sIncentiveData = IncentiveData(
sEmissionPerSecond, sEmissionPerSecond,
@ -100,19 +135,37 @@ contract UiIncentiveDataProvider is IUiIncentiveDataProvider {
sTokenIncentiveController.PRECISION() sTokenIncentiveController.PRECISION()
); );
} }
}
} catch(bytes memory /*lowLevelData*/) { } catch(bytes memory /*lowLevelData*/) {
// Will not get here // Will not get here
} }
try IStableDebtToken(baseData.variableDebtTokenAddress).getIncentivesController() returns (IAaveIncentivesController vTokenIncentiveController) { try IStableDebtToken(baseData.variableDebtTokenAddress).getIncentivesController() returns (IAaveIncentivesController vTokenIncentiveController) {
if (address(vTokenIncentiveController) != address(0)) { if (address(vTokenIncentiveController) != address(0)) {
( address vRewardToken = vTokenIncentiveController.REWARD_TOKEN();
try vTokenIncentiveController.getAssetData(baseData.variableDebtTokenAddress) returns (
uint256 vTokenIncentivesIndex, uint256 vTokenIncentivesIndex,
uint256 vEmissionPerSecond, uint256 vEmissionPerSecond,
uint256 vIncentivesLastUpdateTimestamp uint256 vIncentivesLastUpdateTimestamp
) = vTokenIncentiveController.getAssetData(baseData.variableDebtTokenAddress); ) {
reserveIncentiveData.vIncentiveData = IncentiveData(
address vRewardToken = vTokenIncentiveController.REWARD_TOKEN(); vEmissionPerSecond,
vIncentivesLastUpdateTimestamp,
vTokenIncentivesIndex,
vTokenIncentiveController.DISTRIBUTION_END(),
baseData.variableDebtTokenAddress,
vRewardToken,
address(vTokenIncentiveController),
IERC20Detailed(vRewardToken).decimals(),
vTokenIncentiveController.PRECISION()
);
} catch (bytes memory /*lowLevelData*/) {
(
uint256 vEmissionPerSecond,
uint256 vIncentivesLastUpdateTimestamp,
uint256 vTokenIncentivesIndex
) = vTokenIncentiveController.assets(baseData.variableDebtTokenAddress);
reserveIncentiveData.vIncentiveData = IncentiveData( reserveIncentiveData.vIncentiveData = IncentiveData(
vEmissionPerSecond, vEmissionPerSecond,
@ -126,12 +179,11 @@ contract UiIncentiveDataProvider is IUiIncentiveDataProvider {
vTokenIncentiveController.PRECISION() vTokenIncentiveController.PRECISION()
); );
} }
}
} catch(bytes memory /*lowLevelData*/) { } catch(bytes memory /*lowLevelData*/) {
// Will not get here // Will not get here
} }
} }
return (reservesIncentiveData); return (reservesIncentiveData);
} }