From c7fda67f382b0b1175e602f7e31c888a9fff6b9e Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Tue, 27 Apr 2021 16:05:25 +0530 Subject: [PATCH 1/3] Add emission details --- contracts/protocols/mainnet/aave_v2.sol | 28 ++++++++++++++++++++++++- contracts/protocols/polygon/aave_v2.sol | 28 ++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/contracts/protocols/mainnet/aave_v2.sol b/contracts/protocols/mainnet/aave_v2.sol index a67b6ea..6ee60b6 100644 --- a/contracts/protocols/mainnet/aave_v2.sol +++ b/contracts/protocols/mainnet/aave_v2.sol @@ -71,10 +71,20 @@ interface AavePriceOracle { } interface AaveIncentivesInterface { + struct AssetData { + uint128 emissionPerSecond; + uint128 lastUpdateTimestamp; + uint256 index; + } + function getRewardsBalance( address[] calldata assets, address user ) external view returns (uint256); + + function assets( + address asset + ) external view returns (AssetData memory); } interface ChainLinkInterface { @@ -201,6 +211,8 @@ contract AaveHelpers is DSMath { uint availableLiquidity; uint totalStableDebt; uint totalVariableDebt; + uint collateralEmission; + uint debtEmission; } struct TokenPrice { @@ -237,6 +249,20 @@ contract AaveHelpers is DSMath { aaveTokenData.isActive, aaveTokenData.isFrozen ) = aaveData.getReserveConfigurationData(token); + + ( + address aToken, + , + address debtToken + ) = aaveData.getReserveTokensAddresses(token); + + AaveIncentivesInterface.AssetData memory _data; + AaveIncentivesInterface incentives = AaveIncentivesInterface(getAaveIncentivesAddress()); + + _data = incentives.assets(aToken); + aaveTokenData.collateralEmission = _data.emissionPerSecond; + _data = incentives.assets(debtToken); + aaveTokenData.debtEmission = _data.emissionPerSecond; } function getTokenData( @@ -337,5 +363,5 @@ contract Resolver is AaveHelpers { } contract InstaAaveV2Resolver is Resolver { - string public constant name = "AaveV2-Resolver-v1.5"; + string public constant name = "AaveV2-Resolver-v1.6"; } diff --git a/contracts/protocols/polygon/aave_v2.sol b/contracts/protocols/polygon/aave_v2.sol index b05f8c3..7a55dd1 100644 --- a/contracts/protocols/polygon/aave_v2.sol +++ b/contracts/protocols/polygon/aave_v2.sol @@ -71,10 +71,20 @@ interface AavePriceOracle { } interface AaveIncentivesInterface { + struct AssetData { + uint128 emissionPerSecond; + uint128 lastUpdateTimestamp; + uint256 index; + } + function getRewardsBalance( address[] calldata assets, address user ) external view returns (uint256); + + function assets( + address asset + ) external view returns (AssetData memory); } interface ChainLinkInterface { @@ -197,6 +207,8 @@ contract AaveHelpers is DSMath { uint availableLiquidity; uint totalStableDebt; uint totalVariableDebt; + uint collateralEmission; + uint debtEmission; } struct TokenPrice { @@ -233,6 +245,20 @@ contract AaveHelpers is DSMath { aaveTokenData.isActive, aaveTokenData.isFrozen ) = aaveData.getReserveConfigurationData(token); + + ( + address aToken, + , + address debtToken + ) = aaveData.getReserveTokensAddresses(token); + + AaveIncentivesInterface.AssetData memory _data; + AaveIncentivesInterface incentives = AaveIncentivesInterface(getAaveIncentivesAddress()); + + _data = incentives.assets(aToken); + aaveTokenData.collateralEmission = _data.emissionPerSecond; + _data = incentives.assets(debtToken); + aaveTokenData.debtEmission = _data.emissionPerSecond; } function getTokenData( @@ -333,5 +359,5 @@ contract Resolver is AaveHelpers { } contract InstaAaveV2Resolver is Resolver { - string public constant name = "AaveV2-Resolver-v1.5"; + string public constant name = "AaveV2-Resolver-v1.6"; } From 263d4570e6127bbfd78d61c976290723553f8f5d Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Tue, 27 Apr 2021 16:27:06 +0530 Subject: [PATCH 2/3] Add COMP Speed and total supply in Aave --- contracts/protocols/mainnet/aave_v2.sol | 6 ++++++ contracts/protocols/mainnet/compound.sol | 9 ++++++++- contracts/protocols/polygon/aave_v2.sol | 6 ++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/contracts/protocols/mainnet/aave_v2.sol b/contracts/protocols/mainnet/aave_v2.sol index 6ee60b6..b2e145d 100644 --- a/contracts/protocols/mainnet/aave_v2.sol +++ b/contracts/protocols/mainnet/aave_v2.sol @@ -58,6 +58,10 @@ interface AaveLendingPool { ); } +interface TokenInterface { + function totalSupply() external view returns (uint); +} + interface AaveAddressProvider { function getLendingPool() external view returns (address); function getPriceOracle() external view returns (address); @@ -208,6 +212,7 @@ contract AaveHelpers is DSMath { bool stableBorrowEnabled; bool isActive; bool isFrozen; + uint totalSupply; uint availableLiquidity; uint totalStableDebt; uint totalVariableDebt; @@ -263,6 +268,7 @@ contract AaveHelpers is DSMath { aaveTokenData.collateralEmission = _data.emissionPerSecond; _data = incentives.assets(debtToken); aaveTokenData.debtEmission = _data.emissionPerSecond; + aaveTokenData.totalSupply = TokenInterface(aToken).totalSupply(); } function getTokenData( diff --git a/contracts/protocols/mainnet/compound.sol b/contracts/protocols/mainnet/compound.sol index 0227f88..61228a1 100644 --- a/contracts/protocols/mainnet/compound.sol +++ b/contracts/protocols/mainnet/compound.sol @@ -10,6 +10,7 @@ interface CTokenInterface { function underlying() external view returns (address); function balanceOf(address) external view returns (uint); + function getCash() external view returns (uint); } interface TokenInterface { @@ -30,6 +31,7 @@ interface ComptrollerLensInterface { function borrowCaps(address) external view returns (uint); function borrowGuardianPaused(address) external view returns (bool); function oracle() external view returns (address); + function compSpeeds(address) external view returns (uint); } interface CompReadInterface { @@ -117,10 +119,12 @@ contract Helpers is DSMath { uint balanceOfUser; uint borrowBalanceStoredUser; uint totalBorrows; + uint totalSupplied; uint borrowCap; uint supplyRatePerBlock; uint borrowRatePerBlock; uint collateralFactor; + uint compSpeed; bool isComped; bool isBorrowPaused; } @@ -144,17 +148,20 @@ contract Resolver is Helpers { CTokenInterface cToken = CTokenInterface(cAddress[i]); (uint priceInETH, uint priceInUSD) = getPriceInEth(cToken); (,uint collateralFactor, bool isComped) = troller.markets(address(cToken)); + uint _totalBorrowed = cToken.totalBorrows(); tokensData[i] = CompData( priceInETH, priceInUSD, cToken.exchangeRateStored(), cToken.balanceOf(owner), cToken.borrowBalanceStored(owner), - cToken.totalBorrows(), + _totalBorrowed, + add(_totalBorrowed, cToken.getCash()), troller.borrowCaps(cAddress[i]), cToken.supplyRatePerBlock(), cToken.borrowRatePerBlock(), collateralFactor, + troller.compSpeeds(cAddress[i]), isComped, troller.borrowGuardianPaused(cAddress[i]) ); diff --git a/contracts/protocols/polygon/aave_v2.sol b/contracts/protocols/polygon/aave_v2.sol index 7a55dd1..c48c282 100644 --- a/contracts/protocols/polygon/aave_v2.sol +++ b/contracts/protocols/polygon/aave_v2.sol @@ -58,6 +58,10 @@ interface AaveLendingPool { ); } +interface TokenInterface { + function totalSupply() external view returns (uint); +} + interface AaveAddressProvider { function getLendingPool() external view returns (address); function getPriceOracle() external view returns (address); @@ -204,6 +208,7 @@ contract AaveHelpers is DSMath { bool stableBorrowEnabled; bool isActive; bool isFrozen; + uint totalSupply; uint availableLiquidity; uint totalStableDebt; uint totalVariableDebt; @@ -259,6 +264,7 @@ contract AaveHelpers is DSMath { aaveTokenData.collateralEmission = _data.emissionPerSecond; _data = incentives.assets(debtToken); aaveTokenData.debtEmission = _data.emissionPerSecond; + aaveTokenData.totalSupply = TokenInterface(aToken).totalSupply(); } function getTokenData( From 18e833ae136d47ff470cb3d4b4d09ecbe3996573 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Thu, 29 Apr 2021 14:39:01 +0530 Subject: [PATCH 3/3] Updated compound name --- contracts/protocols/mainnet/compound.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/protocols/mainnet/compound.sol b/contracts/protocols/mainnet/compound.sol index 61228a1..8e4b1e8 100644 --- a/contracts/protocols/mainnet/compound.sol +++ b/contracts/protocols/mainnet/compound.sol @@ -191,5 +191,5 @@ contract Resolver is Helpers { contract InstaCompoundResolver is Resolver { - string public constant name = "Compound-Resolver-v1.3"; + string public constant name = "Compound-Resolver-v1.4"; }