Contract 0xC4B2C51f969e0713E799De73b7f130Fb7Bb604CF 4

Premia 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x121c6cfb3bbe93a0e77d25fea182962bf1530e252cf03f7bd869215e1ba972cbUpdate Params585506152023-02-06 16:04:3626 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00014202
0x7f384072a9a157ca9b34a86e762440690adfeb31131b1752c0be28675cb7b0e8Update Params585436822023-02-06 15:34:4955 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00016001
0xff3663acb70655143ca4133e5cafbd59fd854f0114b53c38f19b9218b8e3a834Update Params585367832023-02-06 15:05:291 hr 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00015766
0xdbfe68f1d09702a09c8bf4231c079f1bf32ea3fdfa133cba874a2d573d386913Update Params585299112023-02-06 14:34:581 hr 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00014651
0x702f19ed9edd8b15c1afdaf25472ad08ba0ce1e167d7afe249e1ab943f8bb5e2Update Params585231172023-02-06 14:04:542 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00012104
0x9859e7bdc2f5f52f45433b4716145c104c2d2282b81c0820678e13b00fd68e2eUpdate Params585164632023-02-06 13:34:382 hrs 56 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00013217
0x7e1c05b737d88ec1fdeff63f779daaae0bcfb74dd6864f8d14504d1e5ad67ed0Update Params585100532023-02-06 13:05:013 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00011564
0xebcb0a8f12c05255b690368952146297790c2b7fda72174d16c678e1c0dd4638Update Params585034392023-02-06 12:34:503 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00011569
0xc09ecb8b91690ab83c7d636ed9ea87214eb00c2695e96bfd898ec72a31c3de8fUpdate Params584967012023-02-06 12:04:594 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00010145
0xf32681459773bc49651c33bcb76501ecdad24778a46074a10926d2e402563c8dUpdate Params584903482023-02-06 11:35:144 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00010346
0x994c550fd35a15860511feb1ec0d7e4bea75d69d23ead26b9d7f42e26ffed83aUpdate Params584842402023-02-06 11:06:065 hrs 24 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00009957
0x91bb107fbae6c40d641cc57e832353d3a548791b43a5a5b92fe1cdb68e728248Update Params584775702023-02-06 10:34:455 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00008409
0x0cc75739dfe2341ddb79c283f7a89cec607ca89f7b920788a28bf0485df49438Update Params584711822023-02-06 10:05:036 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00010696
0x9e410c46c874c3c7d5603738d8df736c4b103f1aef051eb09f34a5eb83521860Update Params584647682023-02-06 9:34:496 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00009456
0x6f6ed81abdfbe4a1a19ddaa8a5292a111ec60a545ebf78940f4c885e4874b4b0Update Params584581062023-02-06 9:04:587 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00007362
0x764945c178868b6492debe9f904e87fd427bf42f8cb8c0338a584810664c886cUpdate Params584511612023-02-06 8:34:597 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.0000834
0x2ff27cff2b25b47e3cc55c35a361980657526c52191341da20e55a7c37b12ed0Update Params584443692023-02-06 8:04:568 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.000089
0x303a07e6336dc27303afa7db800a9d2842ba500db10b3ae35e6329cc14a84b0eUpdate Params584377802023-02-06 7:34:538 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00009741
0xbeeabf79f0797e6c2b7e4562453f941eb812a98b8a605adc48ca4bf990237c63Update Params584318532023-02-06 7:06:039 hrs 24 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00009924
0xb367f793b1d66006a208daddf63bbbed1380c0cb035a2c771e9077e81b64f895Update Params584259172023-02-06 6:35:429 hrs 54 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00009978
0x2c8e3f00d8fbb07c66832f514b90f06079806104e2351f68a99dc82f2919caffUpdate Params584198322023-02-06 6:05:0010 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00010308
0x3a097e16433491ae7b1f6a73aedab5d7456ced3649d6800cb6a7f77182f3ea83Update Params584140992023-02-06 5:35:4510 hrs 54 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00007678
0xbea4be85b49b73a38b931ce6f730217276cad15165ff0df4f6f93983b17969e6Update Params584081332023-02-06 5:04:3811 hrs 26 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00010465
0xb5745c594fcb9d83d6a93dcc1300da3a65e0a006d0b2af0133871822f23466c3Update Params584030152023-02-06 4:35:1911 hrs 55 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.00010564
0x53a82a691c64f40989b3130a57b15b2879bfb52595636bb411f3a475f7b48a25Update Params583978922023-02-06 4:04:5912 hrs 25 mins ago0x52cca9613bc3f771dd58a3bd5627efb1a750d55a IN  Premia: IVOL Oracle Proxy0 ETH0.0001096
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x121c6cfb3bbe93a0e77d25fea182962bf1530e252cf03f7bd869215e1ba972cb585506152023-02-06 16:04:3626 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x7f384072a9a157ca9b34a86e762440690adfeb31131b1752c0be28675cb7b0e8585436822023-02-06 15:34:4955 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xff3663acb70655143ca4133e5cafbd59fd854f0114b53c38f19b9218b8e3a834585367832023-02-06 15:05:291 hr 25 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x9f26025ebab44185334cf30f3f6a8c2fdc77c687784eed7c58887644af4a2c9c585351602023-02-06 14:58:321 hr 32 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x9f26025ebab44185334cf30f3f6a8c2fdc77c687784eed7c58887644af4a2c9c585351602023-02-06 14:58:321 hr 32 mins ago Premia: WETH Pool Premia: IVOL Oracle Proxy0 ETH
0xdbfe68f1d09702a09c8bf4231c079f1bf32ea3fdfa133cba874a2d573d386913585299112023-02-06 14:34:581 hr 55 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x702f19ed9edd8b15c1afdaf25472ad08ba0ce1e167d7afe249e1ab943f8bb5e2585231172023-02-06 14:04:542 hrs 25 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x9859e7bdc2f5f52f45433b4716145c104c2d2282b81c0820678e13b00fd68e2e585164632023-02-06 13:34:382 hrs 56 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x7c126800ee15dfddfeffb8e3a6993608c301a955e07fec0e7690b70da90062b1585110592023-02-06 13:09:463 hrs 20 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x7c126800ee15dfddfeffb8e3a6993608c301a955e07fec0e7690b70da90062b1585110592023-02-06 13:09:463 hrs 20 mins ago Premia: LINK Pool Premia: IVOL Oracle Proxy0 ETH
0x05733ae8846721d499ab8db5292255d202ff4095bbda73bd9dcd178b5011dcfa585108222023-02-06 13:08:423 hrs 21 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x05733ae8846721d499ab8db5292255d202ff4095bbda73bd9dcd178b5011dcfa585108222023-02-06 13:08:423 hrs 21 mins ago Premia: LINK Pool Premia: IVOL Oracle Proxy0 ETH
0x7e1c05b737d88ec1fdeff63f779daaae0bcfb74dd6864f8d14504d1e5ad67ed0585100532023-02-06 13:05:013 hrs 25 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xebcb0a8f12c05255b690368952146297790c2b7fda72174d16c678e1c0dd4638585034392023-02-06 12:34:503 hrs 55 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xf26f0978b1e8bf08097b6d4a7860b2683149d4a12f8f7d88c4f0d2f30d8d7b28584972922023-02-06 12:07:334 hrs 23 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xf26f0978b1e8bf08097b6d4a7860b2683149d4a12f8f7d88c4f0d2f30d8d7b28584972922023-02-06 12:07:334 hrs 23 mins ago Premia: WBTC Pool Premia: IVOL Oracle Proxy0 ETH
0xc09ecb8b91690ab83c7d636ed9ea87214eb00c2695e96bfd898ec72a31c3de8f584967012023-02-06 12:04:594 hrs 25 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0xf32681459773bc49651c33bcb76501ecdad24778a46074a10926d2e402563c8d584903482023-02-06 11:35:144 hrs 55 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x4b68d5fd8988e0d1123579f59e6089fcb0021e6b722bdbebb575e4e092c84717584844822023-02-06 11:07:165 hrs 23 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x4b68d5fd8988e0d1123579f59e6089fcb0021e6b722bdbebb575e4e092c84717584844822023-02-06 11:07:165 hrs 23 mins ago Premia: WBTC Pool Premia: IVOL Oracle Proxy0 ETH
0x994c550fd35a15860511feb1ec0d7e4bea75d69d23ead26b9d7f42e26ffed83a584842402023-02-06 11:06:065 hrs 24 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x91bb107fbae6c40d641cc57e832353d3a548791b43a5a5b92fe1cdb68e728248584775702023-02-06 10:34:455 hrs 55 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x0cc75739dfe2341ddb79c283f7a89cec607ca89f7b920788a28bf0485df49438584711822023-02-06 10:05:036 hrs 25 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x9e410c46c874c3c7d5603738d8df736c4b103f1aef051eb09f34a5eb83521860584647682023-02-06 9:34:496 hrs 55 mins ago Premia: IVOL Oracle Proxy 0x23c74cb91085c4cb2b76cea709ae50309f79dbbd0 ETH
0x6f6ed81abdfbe4a1a19ddaa8a5292a111ec60a545ebf78940f4c885e4874b4b0584581062023-02-06 9:04:587 hrs 25 mins 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.