Contract 0xc4b2c51f969e0713e799de73b7f130fb7bb604cf 4

Premia 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x45cb28e0f30bf824f35188ce635603f06054cc26c9cd10424d4b1d78b521b3ccUpdate Params753157922023-03-30 17:05:0326 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000260460.1
0xb3085a117542d7bf23a7c131804eea292c18aedff40c3b869330159ea125373eUpdate Params753086612023-03-30 16:35:2855 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000260990.1
0x5ba306b6e79873444bb2ee0f77b9f4a83cc7bd68d303c4466609bf20643d82f5Update Params753013222023-03-30 16:05:071 hr 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000144350.1
0xa0ab843cf027593bb92efb5b8398073699af9027c14d120ed5d676cd656e4815Update Params752939442023-03-30 15:34:421 hr 56 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000197350.1
0x5dd11d3912d629ac63e530b3ea4b9b8940ac8f7fe083f44fb546c9d91d6f6aa4Update Params752867382023-03-30 15:04:532 hrs 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000287250.1
0x4f5eb921f4e52ebd9484eef32b97de463a7e4a5c157206d57b6863523ddf9145Update Params752795802023-03-30 14:35:152 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000266170.1
0x56b2c9ccc5eaeefc9b612cfbd29bc7ca9fa2f2e1d99ea88936337a1a6c2b0081Update Params752722342023-03-30 14:04:583 hrs 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000237050.1
0x19034721f329e8f1beeef08c1d776991e2a0f33e605e0e281cc5f526c0841484Update Params752649042023-03-30 13:34:513 hrs 56 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00018090.1
0x3cb9577352b72a976e946f280f2a527922d3587e897241b6a136e8d1c97f90b5Update Params752579322023-03-30 13:06:224 hrs 24 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.001136659.16826
0x3ecfd5cda86979470a991cf50e69d2b6761c8b250ca63f4896194e1a0fd9a181Update Params752505472023-03-30 12:36:004 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00018310.1
0x9f5c81202fea63122fa720ac08299ae56cbe6908fe41f88639f50817623c8aefUpdate Params752431162023-03-30 12:05:195 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000219810.1
0xb1192bcb840bef86236a6a61c96430b83b4f92319cc0696a5878e70dc2198e76Update Params752359672023-03-30 11:35:465 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000173420.1
0x3fe6d40fc082fe7b6a8b664506bde7e238cc64ccec1e8f74043c2037e584d96fUpdate Params752284872023-03-30 11:04:506 hrs 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000197960.1
0xce7953f9ee4ce91af8a3aa853c647fccf9d916f6d7f6ba74df17140551105d1fUpdate Params752213142023-03-30 10:35:106 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000242010.1
0x350551304de31800116c96712c3550185de9e49ec4c8d581a05ef3df7108cb17Update Params752140612023-03-30 10:05:167 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000182190.1
0xd6b690ec55be701d80ef528246fd8ae9c8ac8b47f9aac75d3d010e9a14f77ac9Update Params752069402023-03-30 9:35:417 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000187360.1
0x432b241234bb2f9647ef2f1f15b96b190eebaef24ff6dc404ca02f4433741feeUpdate Params751995382023-03-30 9:05:078 hrs 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000195130.1
0x764f5e2db03026b0898b5fd294579deb6a4c8052e052973836f3c4c3f43ca40bUpdate Params751922902023-03-30 8:35:168 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000146690.1
0x4fccd55a402bce7baf5845ad89f8b29a134cbc59a0e8059622e036d9c07f5567Update Params751851842023-03-30 8:06:019 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000166630.1
0x856cd2eb77dea84d13ba8a03d032337f3bf1f7e39b9987fafe9c8ed2ff60bf43Update Params751779912023-03-30 7:36:189 hrs 54 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000173150.10821
0xb7316abe9071f334c92fb6b75ec1d0a6f5e83dacfe6e53819c5b94d34752cf61Update Params751705672023-03-30 7:05:4110 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000181930.1
0xde01907e6d87c8f73a5d73afbe820385b6688c68113aade3f1af9a9a44f624f6Update Params751632942023-03-30 6:35:4310 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000222040.1
0xaebad14a02f155ce13c57523628d7132a10f2d7bb42e4a3d3eb185f9874ca43cUpdate Params751485722023-03-30 5:34:4411 hrs 56 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000193130.1
0x54324b650a75928d2825faeb28faf24e4cb1c2469e777fe743e9332a012e87ccUpdate Params751414582023-03-30 5:05:0212 hrs 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000223810.1
0x8bd67bc4d8796c728e9cf36996b85b39c3cef6e0eeff1a0b204fe431e02d2877Update Params751342002023-03-30 4:34:4112 hrs 56 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000181370.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa2905af14fdaea5820ece5d7fa833f7f70314b7ad39a53779b7b7b228b10bd99720831892023-03-21 10:04:269 days 7 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xe5073b9d928e16839f5a242de578cca9bec74ee8ae0da0df0a7807f88da6fb0a720759552023-03-21 9:34:359 days 7 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xc279a0033d3e622ed9dd8dd9322a3801ca7080083529095a238132cd6e0b4c7f720687012023-03-21 9:04:509 days 8 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xadbdcf558403e886650c09628eafc221de3a6a728668e578d0076069d59bc8fe720612972023-03-21 8:34:369 days 8 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xf31d66d2c2bb1cc88f5545ef4b21d800a3ef9936dc2fea857827e2f65f66fddb720541992023-03-21 8:05:309 days 9 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xb081179a4cb69cfa012e435b9eab109640fd9081f64e8bf7a9239bf34d3c8a06720468652023-03-21 7:35:249 days 9 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x42603c74151ba03ff95af7f6feb2abee2df9320c9a755f4009b4dfa1c9716a85720394422023-03-21 7:04:589 days 10 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x0e761b883e0716eaa4efe9a76b8807c50a78fb28804a205bb03627aa00570a39720375852023-03-21 6:57:189 days 10 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x0e761b883e0716eaa4efe9a76b8807c50a78fb28804a205bb03627aa00570a39720375852023-03-21 6:57:189 days 10 hrs ago 0xc631e2179862046a4da964a245559a53205b2bfd Premia: IVOL Oracle Proxy0 ETH
0xf96c28b2a6d426a3bad8e133dd81f52bd5bf4623664c416fbf5fca8d9725fb34720365732023-03-21 6:53:149 days 10 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xf96c28b2a6d426a3bad8e133dd81f52bd5bf4623664c416fbf5fca8d9725fb34720365732023-03-21 6:53:149 days 10 hrs ago 0xc631e2179862046a4da964a245559a53205b2bfd Premia: IVOL Oracle Proxy0 ETH
0xe961fe3ebc15a26507039d4f8555df89ebc8d15640f98409101b3f4f46dd9a94720364852023-03-21 6:52:529 days 10 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xe961fe3ebc15a26507039d4f8555df89ebc8d15640f98409101b3f4f46dd9a94720364852023-03-21 6:52:529 days 10 hrs ago 0xc631e2179862046a4da964a245559a53205b2bfd Premia: IVOL Oracle Proxy0 ETH
0xe6848d925612c4446374d52e8bf9e25c969c9edf3a4740b0d34ace701faf4533720350392023-03-21 6:46:569 days 10 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xe6848d925612c4446374d52e8bf9e25c969c9edf3a4740b0d34ace701faf4533720350392023-03-21 6:46:569 days 10 hrs ago Premia: WETH Pool Premia: IVOL Oracle Proxy0 ETH
0x88d0f5734b4c5f14d9e326ed1c5647d0ad73bcc41bcf52fc17bee8de738e0696720321652023-03-21 6:35:029 days 10 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x3a5952f1156cd9570a8c0b5ab0d96edbf31478e9cafed0045d9075dac2c8d823720247972023-03-21 6:04:449 days 11 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xa43f1697d8a1a6b5e4d85118434a772a4749bb14c31331bfca3ed5f010e834c9720176282023-03-21 5:35:179 days 11 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x52b4804788a782ce72f3e5d3a2b4fe595008c5d037d9e00a3c7dda66b2f79129720144122023-03-21 5:22:049 days 12 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x52b4804788a782ce72f3e5d3a2b4fe595008c5d037d9e00a3c7dda66b2f79129720144122023-03-21 5:22:049 days 12 hrs ago Premia: WBTC Pool Premia: IVOL Oracle Proxy0 ETH
0x76661117bd9d96ec25ae5d116f012a3d35d7f935b5c8957fd8e91825a713a6fb720101532023-03-21 5:04:269 days 12 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x0c0fdead29c9a43fb3e3396e02c8384d0a77fcf6f9445afe239fa54319823bca720030602023-03-21 4:35:029 days 12 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x822650aa5a27428687062ff05654d3981c18864e34a520a03ad300150a7ddd77719957272023-03-21 4:04:309 days 13 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x71843baeb4fd6483ba443e304f62b5debc716b45f2109a3d14ffad73318391e1719886492023-03-21 3:35:049 days 13 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x0540a2d8e68eb0e0dd7c804be4741a2731960e4624e10911bbd253ff326d5fa9719813392023-03-21 3:04:519 days 14 hrs ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ProxyUpgradeableOwnable

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 11 : ProxyUpgradeableOwnable.sol
// SPDX-License-Identifier: BUSL-1.1
// For further clarification please see https://license.premia.legal

pragma solidity ^0.8.0;

import {Proxy} from "@solidstate/contracts/proxy/Proxy.sol";
import {SafeOwnable, OwnableStorage} from "@solidstate/contracts/access/SafeOwnable.sol";
import {ProxyUpgradeableOwnableStorage} from "./ProxyUpgradeableOwnableStorage.sol";

contract ProxyUpgradeableOwnable is Proxy, SafeOwnable {
    using ProxyUpgradeableOwnableStorage for ProxyUpgradeableOwnableStorage.Layout;
    using OwnableStorage for OwnableStorage.Layout;

    constructor(address implementation) {
        OwnableStorage.layout().setOwner(msg.sender);
        ProxyUpgradeableOwnableStorage.layout().implementation = implementation;
    }

    receive() external payable {}

    /**
     * @inheritdoc Proxy
     */
    function _getImplementation() internal view override returns (address) {
        return ProxyUpgradeableOwnableStorage.layout().implementation;
    }

    /**
     * @notice get address of implementation contract
     * @return implementation address
     */
    function getImplementation() external view returns (address) {
        return _getImplementation();
    }

    /**
     * @notice set address of implementation contract
     * @param implementation address of the new implementation
     */
    function setImplementation(address implementation) external onlyOwner {
        ProxyUpgradeableOwnableStorage.layout().implementation = implementation;
    }
}

File 2 of 11 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { AddressUtils } from '../utils/AddressUtils.sol';

/**
 * @title Base proxy contract
 */
abstract contract Proxy {
    using AddressUtils for address;

    /**
     * @notice delegate all calls to implementation contract
     * @dev reverts if implementation address contains no code, for compatibility with metamorphic contracts
     * @dev memory location in use by assembly may be unsafe in other contexts
     */
    fallback() external payable virtual {
        address implementation = _getImplementation();

        require(
            implementation.isContract(),
            'Proxy: implementation must be contract'
        );

        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(
                gas(),
                implementation,
                0,
                calldatasize(),
                0,
                0
            )
            returndatacopy(0, 0, returndatasize())

            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @notice get logic implementation address
     * @return implementation address
     */
    function _getImplementation() internal virtual returns (address);
}

File 3 of 11 : SafeOwnable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { Ownable, OwnableStorage } from './Ownable.sol';
import { SafeOwnableInternal } from './SafeOwnableInternal.sol';
import { SafeOwnableStorage } from './SafeOwnableStorage.sol';

/**
 * @title Ownership access control based on ERC173 with ownership transfer safety check
 */
abstract contract SafeOwnable is Ownable, SafeOwnableInternal {
    using OwnableStorage for OwnableStorage.Layout;
    using SafeOwnableStorage for SafeOwnableStorage.Layout;

    function nomineeOwner() public view virtual returns (address) {
        return SafeOwnableStorage.layout().nomineeOwner;
    }

    /**
     * @inheritdoc Ownable
     * @dev ownership transfer must be accepted by beneficiary before transfer is complete
     */
    function transferOwnership(address account)
        public
        virtual
        override
        onlyOwner
    {
        SafeOwnableStorage.layout().setNomineeOwner(account);
    }

    /**
     * @notice accept transfer of contract ownership
     */
    function acceptOwnership() public virtual onlyNomineeOwner {
        OwnableStorage.Layout storage l = OwnableStorage.layout();
        emit OwnershipTransferred(l.owner, msg.sender);
        l.setOwner(msg.sender);
        SafeOwnableStorage.layout().setNomineeOwner(address(0));
    }
}

File 4 of 11 : ProxyUpgradeableOwnableStorage.sol
// SPDX-License-Identifier: BUSL-1.1
// For further clarification please see https://license.premia.legal

pragma solidity ^0.8.0;

library ProxyUpgradeableOwnableStorage {
    bytes32 internal constant STORAGE_SLOT =
        keccak256("premia.contracts.storage.ProxyUpgradeableOwnable");

    struct Layout {
        address implementation;
    }

    function layout() internal pure returns (Layout storage l) {
        bytes32 slot = STORAGE_SLOT;
        assembly {
            l.slot := slot
        }
    }
}

File 5 of 11 : AddressUtils.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library AddressUtils {
    function toString(address account) internal pure returns (string memory) {
        bytes32 value = bytes32(uint256(uint160(account)));
        bytes memory alphabet = '0123456789abcdef';
        bytes memory chars = new bytes(42);

        chars[0] = '0';
        chars[1] = 'x';

        for (uint256 i = 0; i < 20; i++) {
            chars[2 + i * 2] = alphabet[uint8(value[i + 12] >> 4)];
            chars[3 + i * 2] = alphabet[uint8(value[i + 12] & 0x0f)];
        }

        return string(chars);
    }

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable account, uint256 amount) internal {
        (bool success, ) = account.call{ value: amount }('');
        require(success, 'AddressUtils: failed to send value');
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionCall(target, data, 'AddressUtils: failed low-level call');
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory error
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, error);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                'AddressUtils: failed low-level call with value'
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory error
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            'AddressUtils: insufficient balance for call'
        );
        return _functionCallWithValue(target, data, value, error);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory error
    ) private returns (bytes memory) {
        require(
            isContract(target),
            'AddressUtils: function call to non-contract'
        );

        (bool success, bytes memory returnData) = target.call{ value: value }(
            data
        );

        if (success) {
            return returnData;
        } else if (returnData.length > 0) {
            assembly {
                let returnData_size := mload(returnData)
                revert(add(32, returnData), returnData_size)
            }
        } else {
            revert(error);
        }
    }
}

File 6 of 11 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { IERC173 } from './IERC173.sol';
import { OwnableInternal } from './OwnableInternal.sol';
import { OwnableStorage } from './OwnableStorage.sol';

/**
 * @title Ownership access control based on ERC173
 */
abstract contract Ownable is IERC173, OwnableInternal {
    using OwnableStorage for OwnableStorage.Layout;

    /**
     * @inheritdoc IERC173
     */
    function owner() public view virtual override returns (address) {
        return OwnableStorage.layout().owner;
    }

    /**
     * @inheritdoc IERC173
     */
    function transferOwnership(address account)
        public
        virtual
        override
        onlyOwner
    {
        OwnableStorage.layout().setOwner(account);
        emit OwnershipTransferred(msg.sender, account);
    }
}

File 7 of 11 : SafeOwnableInternal.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { SafeOwnableStorage } from './SafeOwnableStorage.sol';

abstract contract SafeOwnableInternal {
    using SafeOwnableStorage for SafeOwnableStorage.Layout;

    modifier onlyNomineeOwner() {
        require(
            msg.sender == SafeOwnableStorage.layout().nomineeOwner,
            'SafeOwnable: sender must be nominee owner'
        );
        _;
    }
}

File 8 of 11 : SafeOwnableStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library SafeOwnableStorage {
    struct Layout {
        address nomineeOwner;
    }

    bytes32 internal constant STORAGE_SLOT =
        keccak256('solidstate.contracts.storage.SafeOwnable');

    function layout() internal pure returns (Layout storage l) {
        bytes32 slot = STORAGE_SLOT;
        assembly {
            l.slot := slot
        }
    }

    function setNomineeOwner(Layout storage l, address nomineeOwner) internal {
        l.nomineeOwner = nomineeOwner;
    }
}

File 9 of 11 : IERC173.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @title Contract ownership standard interface
 * @dev see https://eips.ethereum.org/EIPS/eip-173
 */
interface IERC173 {
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @notice get the ERC173 contract owner
     * @return conract owner
     */
    function owner() external view returns (address);

    /**
     * @notice transfer contract ownership to new account
     * @param account address of new owner
     */
    function transferOwnership(address account) external;
}

File 10 of 11 : OwnableInternal.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { OwnableStorage } from './OwnableStorage.sol';

abstract contract OwnableInternal {
    using OwnableStorage for OwnableStorage.Layout;

    modifier onlyOwner() {
        require(
            msg.sender == OwnableStorage.layout().owner,
            'Ownable: sender must be owner'
        );
        _;
    }
}

File 11 of 11 : OwnableStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library OwnableStorage {
    struct Layout {
        address owner;
    }

    bytes32 internal constant STORAGE_SLOT =
        keccak256('solidstate.contracts.storage.Ownable');

    function layout() internal pure returns (Layout storage l) {
        bytes32 slot = STORAGE_SLOT;
        assembly {
            l.slot := slot
        }
    }

    function setOwner(Layout storage l, address owner) internal {
        l.owner = owner;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nomineeOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516105fb3803806105fb83398101604081905261002f916100f3565b6100573361004561008e60201b6103de1760201c565b6100b260201b6104021790919060201c565b8061006a6100cf60201b61041f1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550610123565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b7fec1bacb76164b9264bf407e47c681dddfa298268d816c359f3290c1efbd02ab290565b60006020828403121561010557600080fd5b81516001600160a01b038116811461011c57600080fd5b9392505050565b6104c9806101326000396000f3fe6080604052600436106100595760003560e01c806379ba5097146100fb5780638ab5150a146101125780638da5cb5b14610143578063aaf10f4214610158578063d784d4261461016d578063f2fde38b1461018d57610060565b3661006057005b600061006a6101ad565b90506001600160a01b0381163b6100d75760405162461bcd60e51b815260206004820152602660248201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100f6573d6000f35b3d6000fd5b34801561010757600080fd5b506101106101c6565b005b34801561011e57600080fd5b506101276102ad565b6040516001600160a01b03909116815260200160405180910390f35b34801561014f57600080fd5b506101276102c3565b34801561016457600080fd5b506101276102cd565b34801561017957600080fd5b50610110610188366004610443565b6102dc565b34801561019957600080fd5b506101106101a8366004610443565b610366565b60006101b761041f565b546001600160a01b0316919050565b600080516020610474833981519152546001600160a01b0316331461023f5760405162461bcd60e51b815260206004820152602960248201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d696044820152683732b29037bbb732b960b91b60648201526084016100ce565b60006102496103de565b805460405191925033916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a361028f8133610402565b6102aa60006000805160206104748339815191525b90610402565b50565b60006000805160206104748339815191526101b7565b60006101b76103de565b60006102d76101ad565b905090565b6102e46103de565b546001600160a01b0316331461033c5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100ce565b8061034561041f565b80546001600160a01b0319166001600160a01b039290921691909117905550565b61036e6103de565b546001600160a01b031633146103c65760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100ce565b6102aa816000805160206104748339815191526102a4565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b7fec1bacb76164b9264bf407e47c681dddfa298268d816c359f3290c1efbd02ab290565b60006020828403121561045557600080fd5b81356001600160a01b038116811461046c57600080fd5b939250505056fe24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890a2646970667358221220e644baf85f64e4941e710d9c1e686cc52175830284f6a716513eddb1b7f522a964736f6c63430008090033000000000000000000000000f92b8ad7a62437142c4bf87d91e2be0fe1f44e9f

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f92b8ad7a62437142c4bf87d91e2be0fe1f44e9f

-----Decoded View---------------
Arg [0] : implementation (address): 0xf92b8ad7a62437142c4bf87d91e2be0fe1f44e9f

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f92b8ad7a62437142c4bf87d91e2be0fe1f44e9f


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.