mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
29 lines
1.2 KiB
Solidity
29 lines
1.2 KiB
Solidity
|
// SPDX-License-Identifier: agpl-3.0
|
||
|
pragma solidity ^0.6.8;
|
||
|
|
||
|
import "./BaseUpgradeabilityProxy.sol";
|
||
|
|
||
|
/**
|
||
|
* @title UpgradeabilityProxy
|
||
|
* @dev Extends BaseUpgradeabilityProxy with a constructor for initializing
|
||
|
* implementation and init data.
|
||
|
*/
|
||
|
contract UpgradeabilityProxy is BaseUpgradeabilityProxy {
|
||
|
/**
|
||
|
* @dev Contract constructor.
|
||
|
* @param _logic Address of the initial implementation.
|
||
|
* @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
|
||
|
* It should include the signature and the parameters of the function to be called, as described in
|
||
|
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
|
||
|
* This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
|
||
|
*/
|
||
|
constructor(address _logic, bytes memory _data) public payable {
|
||
|
assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
|
||
|
_setImplementation(_logic);
|
||
|
if (_data.length > 0) {
|
||
|
(bool success, ) = _logic.delegatecall(_data);
|
||
|
require(success);
|
||
|
}
|
||
|
}
|
||
|
}
|