ETH Price: $2,104.08 (+0.12%)

Contract Diff Checker

Contract Name:
IdentityProxy

Contract Source Code:

File 1 of 1 : IdentityProxy

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.6.9;


interface IImplementationAuthority {
    function getImplementation() external view returns(address);
}

contract IdentityProxy {
    address public implementationAuthority;

    constructor(address _implementationAuthority, address initialManagementKey) public {
        implementationAuthority = _implementationAuthority;

        address logic = IImplementationAuthority(implementationAuthority).getImplementation();

        // solhint-disable-next-line avoid-low-level-calls
        (bool success,) = logic.delegatecall(abi.encodeWithSignature("initialize(address)", initialManagementKey));
        require(success, "Initialization failed.");
    }

    fallback() external payable {
        address logic = IImplementationAuthority(implementationAuthority).getImplementation();

        assembly { // solium-disable-line
        calldatacopy(0x0, 0x0, calldatasize())
        let success := delegatecall(sub(gas(), 10000), logic, 0x0, calldatasize(), 0, 0)
        let retSz := returndatasize()
        returndatacopy(0, 0, retSz)
        switch success
            case 0 {
                revert(0, retSz)
            }
            default {
                return(0, retSz)
            }
        }
    }
}

Please enter a contract address above to load the contract details and source code.

Context size (optional):