mirror of
				https://github.com/Instadapp/aave-protocol-v2.git
				synced 2024-07-29 21:47:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| // SPDX-License-Identifier: agpl-3.0
 | |
| pragma solidity 0.6.12;
 | |
| 
 | |
| import './BaseAdminUpgradeabilityProxy.sol';
 | |
| import './InitializableUpgradeabilityProxy.sol';
 | |
| 
 | |
| /**
 | |
|  * @title InitializableAdminUpgradeabilityProxy
 | |
|  * @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for
 | |
|  * initializing the implementation, admin, and init data.
 | |
|  */
 | |
| contract InitializableAdminUpgradeabilityProxy is
 | |
|   BaseAdminUpgradeabilityProxy,
 | |
|   InitializableUpgradeabilityProxy
 | |
| {
 | |
|   /**
 | |
|    * Contract initializer.
 | |
|    * @param logic address of the initial implementation.
 | |
|    * @param admin Address of the proxy administrator.
 | |
|    * @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.
 | |
|    */
 | |
|   function initialize(
 | |
|     address logic,
 | |
|     address admin,
 | |
|     bytes memory data
 | |
|   ) public payable {
 | |
|     require(_implementation() == address(0));
 | |
|     InitializableUpgradeabilityProxy.initialize(logic, data);
 | |
|     assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1));
 | |
|     _setAdmin(admin);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @dev Only fall back when the sender is not the admin.
 | |
|    */
 | |
|   function _willFallback() internal override(BaseAdminUpgradeabilityProxy, Proxy) {
 | |
|     BaseAdminUpgradeabilityProxy._willFallback();
 | |
|   }
 | |
| }
 | 
