From 45f3c2613922dce5e79bb7d679a430e59e8afb98 Mon Sep 17 00:00:00 2001 From: The3D Date: Wed, 14 Oct 2020 13:55:38 +0200 Subject: [PATCH] Removed ERC20 proxy --- .../lendingpool/LendingPoolConfigurator.sol | 12 +-- ...zableImmutableAdminUpgradeabilityProxy.sol | 89 ------------------- 2 files changed, 6 insertions(+), 95 deletions(-) delete mode 100644 contracts/libraries/aave-upgradeability/ERC20InitializableImmutableAdminUpgradeabilityProxy.sol diff --git a/contracts/lendingpool/LendingPoolConfigurator.sol b/contracts/lendingpool/LendingPoolConfigurator.sol index d6791034..cd64e586 100644 --- a/contracts/lendingpool/LendingPoolConfigurator.sol +++ b/contracts/lendingpool/LendingPoolConfigurator.sol @@ -7,8 +7,8 @@ import { VersionedInitializable } from '../libraries/openzeppelin-upgradeability/VersionedInitializable.sol'; import { - ERC20InitializableImmutableAdminUpgradeabilityProxy -} from '../libraries/aave-upgradeability/ERC20InitializableImmutableAdminUpgradeabilityProxy.sol'; + InitializableImmutableAdminUpgradeabilityProxy +} from '../libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol'; import {ReserveConfiguration} from '../libraries/configuration/ReserveConfiguration.sol'; import {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol'; import {ILendingPool} from '../interfaces/ILendingPool.sol'; @@ -559,8 +559,8 @@ contract LendingPoolConfigurator is VersionedInitializable { **/ function _initTokenWithProxy(address implementation, uint8 decimals) internal returns (address) { - ERC20InitializableImmutableAdminUpgradeabilityProxy proxy - = new ERC20InitializableImmutableAdminUpgradeabilityProxy(address(this)); + InitializableImmutableAdminUpgradeabilityProxy proxy + = new InitializableImmutableAdminUpgradeabilityProxy(address(this)); bytes memory params = abi.encodeWithSignature( 'initialize(uint8,string,string)', @@ -580,8 +580,8 @@ contract LendingPoolConfigurator is VersionedInitializable { address implementation ) internal { - ERC20InitializableImmutableAdminUpgradeabilityProxy proxy - = ERC20InitializableImmutableAdminUpgradeabilityProxy(payable(proxyAddress)); + InitializableImmutableAdminUpgradeabilityProxy proxy + = InitializableImmutableAdminUpgradeabilityProxy(payable(proxyAddress)); (uint256 decimals, , , , , , , , , , ) = pool.getReserveConfigurationData(asset); diff --git a/contracts/libraries/aave-upgradeability/ERC20InitializableImmutableAdminUpgradeabilityProxy.sol b/contracts/libraries/aave-upgradeability/ERC20InitializableImmutableAdminUpgradeabilityProxy.sol deleted file mode 100644 index b290291b..00000000 --- a/contracts/libraries/aave-upgradeability/ERC20InitializableImmutableAdminUpgradeabilityProxy.sol +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import './InitializableImmutableAdminUpgradeabilityProxy.sol'; -import '../openzeppelin-upgradeability/InitializableUpgradeabilityProxy.sol'; - -/** - * @title ERC20InitializableImmutableAdminUpgradeabilityProxy - * @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for - * initializing the implementation, admin, and init data. - * It also implement native functions to map the ERC20 calls, to further save gas - * by directly calling the implementation. - */ -contract ERC20InitializableImmutableAdminUpgradeabilityProxy is - InitializableImmutableAdminUpgradeabilityProxy -{ - constructor(address admin) public InitializableImmutableAdminUpgradeabilityProxy(admin) {} - - function totalSupply() external view returns (uint256) { - abi.decode(_delegateView(abi.encodeWithSignature('totalSupply()')), (uint256)); - } - - function balanceOf(address account) external view returns (uint256) { - abi.decode(_delegateView(abi.encodeWithSignature('balanceOf(address)', account)), (uint256)); - } - - function transfer(address recipient, uint256 amount) external returns (bool) { - abi.decode( - _delegateToImpl(abi.encodeWithSignature('balanceOf(address,uint256)', recipient, amount)), - (bool) - ); - } - - function allowance(address owner, address spender) external view returns (uint256) { - abi.decode( - _delegateView(abi.encodeWithSignature('allowance(address,address)', owner, spender)), - (uint256) - ); - } - - function approve(address spender, uint256 amount) external returns (bool) { - abi.decode( - _delegateToImpl(abi.encodeWithSignature('approve(address,uint256)', spender, amount)), - (bool) - ); - } - - function transferFrom( - address sender, - address recipient, - uint256 amount - ) external returns (bool) { - abi.decode( - _delegateToImpl( - abi.encodeWithSignature('transferFrom(address,address,uint256)', sender, recipient, amount) - ), - (bool) - ); - } - - /** - * @notice Delegates execution to an implementation contract - * @dev It returns to the external caller whatever the implementation returns or forwards reverts - * There are an additional 2 prefix uints from the wrapper returndata, which we ignore since we make an extra hop. - * @param data The raw data to delegatecall - * @return The returned bytes from the delegatecall - */ - function _delegateView(bytes memory data) internal view returns (bytes memory) { - (bool success, bytes memory returnData) = address(this).staticcall( - abi.encodeWithSignature('delegateToImpl(bytes)', data) - ); - assembly { - if eq(success, 0) { - revert(add(returnData, 0x20), returndatasize()) - } - } - return returnData; - } - - function _delegateToImpl(bytes memory data) internal returns (bytes memory) { - (bool success, bytes memory returnData) = _implementation().delegatecall(data); - assembly { - if eq(success, 0) { - revert(add(returnData, 0x20), returndatasize()) - } - } - return returnData; - } -}