Skip to content

Commit

Permalink
Merge f05a0cb into 5afb8de
Browse files Browse the repository at this point in the history
  • Loading branch information
PierrickGT committed May 3, 2022
2 parents 5afb8de + f05a0cb commit d06b3b4
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 22 deletions.
26 changes: 10 additions & 16 deletions contracts/AaveV3YieldSource.sol
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
/// @notice Aave poolAddressesProviderRegistry address.
IPoolAddressesProviderRegistry public immutable poolAddressesProviderRegistry;

/// @notice Underlying asset token address.
address private immutable _tokenAddress;

/// @notice ERC20 token decimals.
uint8 private immutable _decimals;

Expand Down Expand Up @@ -165,6 +168,7 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
) Ownable(_owner) ERC20(_name, _symbol) ReentrancyGuard() {
require(address(_aToken) != address(0), "AaveV3YS/aToken-not-zero-address");
aToken = _aToken;
_tokenAddress = address(_aToken.UNDERLYING_ASSET_ADDRESS());

require(address(_rewardsController) != address(0), "AaveV3YS/RC-not-zero-address");
rewardsController = _rewardsController;
Expand All @@ -178,7 +182,7 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
_decimals = decimals_;

// Approve once for max amount
IERC20(_aToken.UNDERLYING_ASSET_ADDRESS()).safeApprove(address(_pool()), type(uint256).max);
IERC20(_tokenAddress).safeApprove(address(_pool()), type(uint256).max);

emit AaveV3YieldSourceInitialized(
_aToken,
Expand Down Expand Up @@ -207,7 +211,7 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
* @return The ERC20 asset token address.
*/
function depositToken() public view override returns (address) {
return _tokenAddress();
return _tokenAddress;
}

/**
Expand All @@ -230,9 +234,8 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
uint256 _shares = _tokenToShares(_depositAmount);
require(_shares > 0, "AaveV3YS/shares-gt-zero");

address _underlyingAssetAddress = _tokenAddress();
IERC20(_underlyingAssetAddress).safeTransferFrom(msg.sender, address(this), _depositAmount);
_pool().supply(_underlyingAssetAddress, _depositAmount, address(this), REFERRAL_CODE);
IERC20(_tokenAddress).safeTransferFrom(msg.sender, address(this), _depositAmount);
_pool().supply(_tokenAddress, _depositAmount, address(this), REFERRAL_CODE);

_mint(_to, _shares);

Expand All @@ -247,14 +250,13 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
* @return The actual amount of asset tokens that were redeemed.
*/
function redeemToken(uint256 _redeemAmount) external override nonReentrant returns (uint256) {
address _underlyingAssetAddress = _tokenAddress();
IERC20 _assetToken = IERC20(_underlyingAssetAddress);
IERC20 _assetToken = IERC20(_tokenAddress);

uint256 _shares = _tokenToShares(_redeemAmount);
_burn(msg.sender, _shares);

uint256 _beforeBalance = _assetToken.balanceOf(address(this));
_pool().withdraw(_underlyingAssetAddress, _redeemAmount, address(this));
_pool().withdraw(_tokenAddress, _redeemAmount, address(this));
uint256 _afterBalance = _assetToken.balanceOf(address(this));

uint256 _balanceDiff;
Expand Down Expand Up @@ -383,14 +385,6 @@ contract AaveV3YieldSource is ERC20, IYieldSource, Manageable, ReentrancyGuard {
return _supply == 0 ? _shares : (_shares * aToken.balanceOf(address(this))) / _supply;
}

/**
* @notice Returns the underlying asset token address.
* @return Underlying asset token address.
*/
function _tokenAddress() internal view returns (address) {
return aToken.UNDERLYING_ASSET_ADDRESS();
}

/**
* @notice Retrieves Aave Pool address.
* @return A reference to Pool interface.
Expand Down
4 changes: 0 additions & 4 deletions contracts/test/AaveV3YieldSourceHarness.sol
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,6 @@ contract AaveV3YieldSourceHarness is AaveV3YieldSource {
return _sharesToToken(shares);
}

function tokenAddress() external view returns (address) {
return _tokenAddress();
}

function pool() external view returns (IPool) {
return _pool();
}
Expand Down
4 changes: 2 additions & 2 deletions test/AaveV3YieldSource.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ describe('AaveV3YieldSource', () => {
amount: BigNumber,
aTokenTotalSupply: BigNumber,
) => {
const tokenAddress = await aaveV3YieldSource.tokenAddress();
const tokenAddress = await aaveV3YieldSource.depositToken();
const userAddress = user.address;

await usdcToken.mint(userAddress, amount);
Expand Down Expand Up @@ -359,7 +359,7 @@ describe('AaveV3YieldSource', () => {

beforeEach(async () => {
amount = toWei('100');
tokenAddress = await aaveV3YieldSource.tokenAddress();
tokenAddress = await aaveV3YieldSource.depositToken();
});

it('should supply assets if totalSupply is 0', async () => {
Expand Down

0 comments on commit d06b3b4

Please sign in to comment.