mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
Removed ERC20 proxy
This commit is contained in:
parent
645ecb214b
commit
45f3c26139
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user