mirror of
				https://github.com/Instadapp/aave-protocol-v2.git
				synced 2024-07-29 21:47:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			29 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1.1 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);
 | |
|     }
 | |
|   }
 | |
| }
 | 
