Contract 0x6002b1dcB26E7B1AA797A17551C6F487923299d7

 
Txn Hash Method
Block
From
To
Value
0x56a947c63cec16d2850c110ba88362da525b546a937d5069c2ac2345bd18dfa0Join132377502021-09-16 16:04:031 day 3 hrs ago0xea47fe15d19c7d63d1cd6409f39009473d198a1e IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.068866459273.7
0x958a9f6006840eebff10e2cdaffb7d01ecf7072e5f0be12272688065dcae1fc4Join132336472021-09-16 0:56:391 day 18 hrs ago0x10bf1dcb5ab7860bab1c3320163c6dddf8dcc0e4 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.06512773271
0xcb756f49e121520163a853e6de1bd4979df8392684e7ea475d3f3ce3253e83caJoin132335372021-09-16 0:28:361 day 18 hrs ago0x10bf1dcb5ab7860bab1c3320163c6dddf8dcc0e4 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.05980108864
0x120f69789830ac43580a8c75d2343f4a52ab414101ac3436894103f634e627a5Liquid Exit132222322021-09-14 6:35:523 days 12 hrs ago0x62cb1071882e70ae9c608053c1b69469302a1890 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.1475989970
0x5fe59fb94e8eee15a23a199fcdbd6404ad047ba495dbd720bf621dd9fe0068feJoin132154322021-09-13 5:06:314 days 14 hrs ago0x10bf1dcb5ab7860bab1c3320163c6dddf8dcc0e4 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.05512983659
0x94ae5b368b4db0e51b08a6f9fd41a558852601359d7784051ef8b7a54dd9d49dApprove132077692021-09-12 0:49:225 days 18 hrs ago0x8a37bc3a2f0962dd91c3e5f0f6da30ceb0b5d9e2 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.002641521208 46.304296607
0xf90b0e8d74a32ad4d72bbae53e516559035abee4a446ebda7fe92dae502d7511Approve131976182021-09-10 11:01:167 days 8 hrs ago0xa474465a08371adcdd460aaf2159ea29b3e4acf0 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.00319463256
0x2e664772274b80f9dcd3730c80b7663e0fdb4b8c6ad5cf7e294e447527162b63Liquid Exit131950522021-09-10 1:26:567 days 17 hrs ago0x019cd07a77ca09c5f57666411c5bb87b4f9c04aa IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.21060419101
0x8e183a9a54314722909fe313672c042aff28658073632e84061f75e03c388a09Liquid Exit131896622021-09-09 5:22:208 days 13 hrs ago0x80b3153f39aeec1ef68adc038913698e103e6e1d IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.244218552114
0xe392f03168acc15bb58000c598fde21bee571e7f8afec9bbd71edbfadef906dfLiquid Exit131788902021-09-07 13:27:3110 days 5 hrs ago0x747677870ba3ecaf827bf1804e64a161087d4981 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.004732216507 95.451852815
0xf80345ee6fa28b3e95413455db8319288412a02135c39a3dc8f25fe140449f72Approve131741992021-09-06 19:59:1710 days 23 hrs ago0x747677870ba3ecaf827bf1804e64a161087d4981 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.007300370463 127.971154724
0x7a01f8a6df2aa26bbe9e5728626b160b29fb203b6920bd7d33a6c215db062926Approve131498752021-09-03 1:43:4614 days 17 hrs ago0x14b8c2bd769707fba73b0af9323aeaeb72ea4445 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.0057047100
0x63b7e237c32e016932cbd31623cfb9000be37cae556b853dac56abe0879795e3Approve131293872021-08-30 21:45:1117 days 21 hrs ago0x6e41e1e7d009a320569cbeb8cf8d7adba94a6364 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.02510068 440
0x46ca3e4e84046f79bffb262dfccd584a7f2c5988fe0fbccb3dec130363ee231cApprove131272192021-08-30 13:46:0818 days 5 hrs ago0x6b6310bd7fb278c7d6a12f888a0360b44d209e33 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.00405033771
0x3c817ec84ff676fde30370cf3e1abd7ddb06311e864743cb41ba09130bc30716Liquid Exit131209392021-08-29 14:34:3419 days 4 hrs ago0x0b559999f94ac593d7955796cbf165206e1ec1c3 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.05758534464
0xd8d4f8e24cf859c97566d258751f6ca2472de3174d6a4c256756dfaa206db3edLiquid Exit131208662021-08-29 14:19:0219 days 4 hrs ago0x4220df82891e2f88c6535e6a946057ea0e6d7f3a IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.05034606555
0x0a48d730fe6d2e34ae4fea6e9fb6b78d6fb9384b2b80c5ea50ab1caf40576a09Liquid Exit131194902021-08-29 9:12:4719 days 10 hrs ago0xa0f75491720835b36edc92d06ddc468d201e9b73 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.053897760
0x0f23853122b080766439336695347c21c7feb29d1d39ddd1a176a64a7bb0aca5Approve131142802021-08-28 13:57:1120 days 5 hrs ago0x3a37e2f98577d548574cef753010bf05ceb0c707 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.00273825648
0x0b0cb6d33d89d07e33ed0c8571a4ac6b15791f6e82bdba1dc34bcacd58ab5bb0Liquid Exit131136822021-08-28 11:46:3220 days 7 hrs ago0x6a475c8af860d02c04f39da4b1116dfddb710c56 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.05120213157
0xd7ceac22dc51442bb1e1a4105f99adccc01999abd2c2b87da3fd4359a4b1b1fcLiquid Exit131127922021-08-28 8:26:2720 days 10 hrs ago0x0c51fdb6d4c724a05cfa776a3a8f0a6087d8d156 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.05479526361
0x865394b9525f362aab876c60b48ba916ec8e4330641ca0c7c1cd0380f06686a9Liquid Exit131090902021-08-27 18:35:4621 days 38 mins ago0x2326d4fb2737666dda96bd6314e3d4418246cfe8 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.158122175981 172.73655196
0xb699cb382b0cc10b4c37599206a7cf26645e68fea514d76a659dafb986756513Approve131087412021-08-27 17:13:0721 days 2 hrs ago0x3ddfa8ec3052539b6c9549f12cea2c295cff5296 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.00855705150
0x2405871b4ebacfd23adf6070c080b87fd6b689f11a72c0699bb9845b54a7a99eApprove131083142021-08-27 15:50:2621 days 3 hrs ago0x2326d4fb2737666dda96bd6314e3d4418246cfe8 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.004785173407 83.881245421
0x5a1427031a0f248b542d67f34ff46804c40108f71f7ad44c7891a808dd71e127Join131083042021-08-27 15:48:5321 days 3 hrs ago0x2326d4fb2737666dda96bd6314e3d4418246cfe8 IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.102130641097 112.877230726
0x8704ced5407c67244d74c428a8c13c907b5b88bbe570c4a5efbbfc5975c19a74Approve131083012021-08-27 15:48:2021 days 3 hrs ago0x4220df82891e2f88c6535e6a946057ea0e6d7f3a IN  0x6002b1dcb26e7b1aa797a17551c6f487923299d70 Ether0.007130875125
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xe4d353c8f2cd6f68b302ebe07d4c7eac64dc00a6a58255310f40090604913a3d126532002021-06-17 17:13:5592 days 2 hrs ago TrueFi: Deployer  Contract Creation0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xa991356d261fbaf194463af6df8f0464f8f1c742

Contract Name:
OwnedProxyWithReference

Compiler Version
v0.6.10+commit.00c0fcaf

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-05-20
*/

/**
 *Submitted for verification at Etherscan.io on 2021-05-05
*/

/*
    .'''''''''''..     ..''''''''''''''''..       ..'''''''''''''''..
    .;;;;;;;;;;;'.   .';;;;;;;;;;;;;;;;;;,.     .,;;;;;;;;;;;;;;;;;,.
    .;;;;;;;;;;,.   .,;;;;;;;;;;;;;;;;;;;,.    .,;;;;;;;;;;;;;;;;;;,.
    .;;;;;;;;;,.   .,;;;;;;;;;;;;;;;;;;;;,.   .;;;;;;;;;;;;;;;;;;;;,.
    ';;;;;;;;'.  .';;;;;;;;;;;;;;;;;;;;;;,. .';;;;;;;;;;;;;;;;;;;;;,.
    ';;;;;,..   .';;;;;;;;;;;;;;;;;;;;;;;,..';;;;;;;;;;;;;;;;;;;;;;,.
    ......     .';;;;;;;;;;;;;,'''''''''''.,;;;;;;;;;;;;;,'''''''''..
              .,;;;;;;;;;;;;;.           .,;;;;;;;;;;;;;.
             .,;;;;;;;;;;;;,.           .,;;;;;;;;;;;;,.
            .,;;;;;;;;;;;;,.           .,;;;;;;;;;;;;,.
           .,;;;;;;;;;;;;,.           .;;;;;;;;;;;;;,.     .....
          .;;;;;;;;;;;;;'.         ..';;;;;;;;;;;;;'.    .',;;;;,'.
        .';;;;;;;;;;;;;'.         .';;;;;;;;;;;;;;'.   .';;;;;;;;;;.
       .';;;;;;;;;;;;;'.         .';;;;;;;;;;;;;;'.    .;;;;;;;;;;;,.
      .,;;;;;;;;;;;;;'...........,;;;;;;;;;;;;;;.      .;;;;;;;;;;;,.
     .,;;;;;;;;;;;;,..,;;;;;;;;;;;;;;;;;;;;;;;,.       ..;;;;;;;;;,.
    .,;;;;;;;;;;;;,. .,;;;;;;;;;;;;;;;;;;;;;;,.          .',;;;,,..
   .,;;;;;;;;;;;;,.  .,;;;;;;;;;;;;;;;;;;;;;,.              ....
    ..',;;;;;;;;,.   .,;;;;;;;;;;;;;;;;;;;;,.
       ..',;;;;'.    .,;;;;;;;;;;;;;;;;;;;'.
          ...'..     .';;;;;;;;;;;;;;,,,'.
                       ...............
*/

// https://github.com/trusttoken/smart-contracts
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @title Initializable
 *
 * @dev Helper contract to support initializer functions. To use it, replace
 * the constructor with a function that has the `initializer` modifier.
 * WARNING: Unlike constructors, initializer functions must be manually
 * invoked. This applies both to deploying an Initializable contract, as well
 * as extending an Initializable contract via inheritance.
 * WARNING: When used with inheritance, manual care must be taken to not invoke
 * a parent initializer twice, or ensure that all initializers are idempotent,
 * because this is not dealt with automatically as with constructors.
 */
contract Initializable {
    /**
     * @dev Indicates that the contract has been initialized.
     */
    bool private initialized;

    /**
     * @dev Indicates that the contract is in the process of being initialized.
     */
    bool private initializing;

    /**
     * @dev Modifier to use in the initializer function of a contract.
     */
    modifier initializer() {
        require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

        bool isTopLevelCall = !initializing;
        if (isTopLevelCall) {
            initializing = true;
            initialized = true;
        }

        _;

        if (isTopLevelCall) {
            initializing = false;
        }
    }

    /// @dev Returns true if and only if the function is running in the constructor
    function isConstructor() private view returns (bool) {
        // extcodesize checks the size of the code stored in an address, and
        // address returns the current address. Since the code is still not
        // deployed when running a constructor, any checks on its code size will
        // yield zero, making it an effective way to detect if a contract is
        // under construction or not.
        address self = address(this);
        uint256 cs;
        assembly {
            cs := extcodesize(self)
        }
        return cs == 0;
    }

    /**
     * @dev Return true if and only if the contract has been initialized
     * @return whether the contract has been initialized
     */
    function isInitialized() public view returns (bool) {
        return initialized;
    }

    // Reserved storage space to allow for layout changes in the future.
    uint256[50] private ______gap;
}

/**
 * @title UpgradeableClaimable
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. Since
 * this contract combines Claimable and UpgradableOwnable contracts, ownership
 * can be later change via 2 step method {transferOwnership} and {claimOwnership}
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract UpgradeableClaimable is Initializable, Context {
    address private _owner;
    address private _pendingOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting a custom initial owner of choice.
     * @param __owner Initial owner of contract to be set.
     */
    function initialize(address __owner) internal initializer {
        _owner = __owner;
        emit OwnershipTransferred(address(0), __owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Returns the address of the pending owner.
     */
    function pendingOwner() public view returns (address) {
        return _pendingOwner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Modifier throws if called by any account other than the pendingOwner.
     */
    modifier onlyPendingOwner() {
        require(msg.sender == _pendingOwner, "Ownable: caller is not the pending owner");
        _;
    }

    /**
     * @dev Allows the current owner to set the pendingOwner address.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _pendingOwner = newOwner;
    }

    /**
     * @dev Allows the pendingOwner address to finalize the transfer.
     */
    function claimOwnership() public onlyPendingOwner {
        emit OwnershipTransferred(_owner, _pendingOwner);
        _owner = _pendingOwner;
        _pendingOwner = address(0);
    }
}

/**
 * @title ImplementationReference
 * @dev This contract is made to serve a simple purpose only.
 * To hold the address of the implementation contract to be used by proxy.
 * The implementation address, is changeable anytime by the owner of this contract.
 */
contract ImplementationReference is UpgradeableClaimable {
    address public implementation;

    /**
     * @dev Event to show that implementation address has been changed
     * @param newImplementation New address of the implementation
     */
    event ImplementationChanged(address newImplementation);

    /**
     * @dev Set initial ownership and implementation address
     * @param _implementation Initial address of the implementation
     */
    constructor(address _implementation) public {
        UpgradeableClaimable.initialize(msg.sender);
        implementation = _implementation;
    }

    /**
     * @dev Function to change the implementation address, which can be called only by the owner
     * @param newImplementation New address of the implementation
     */
    function setImplementation(address newImplementation) external onlyOwner {
        implementation = newImplementation;
        emit ImplementationChanged(newImplementation);
    }
}

/**
 * @title OwnedProxyWithReference
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 * Its structure makes it easy for a group of contracts alike, to share an implementation and to change it easily for all of them at once
 */
contract OwnedProxyWithReference {
    /**
     * @dev Event to show ownership has been transferred
     * @param previousOwner representing the address of the previous owner
     * @param newOwner representing the address of the new owner
     */
    event ProxyOwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Event to show ownership transfer is pending
     * @param currentOwner representing the address of the current owner
     * @param pendingOwner representing the address of the pending owner
     */
    event NewPendingOwner(address currentOwner, address pendingOwner);

    /**
     * @dev Event to show implementation reference has been changed
     * @param implementationReference address of the new implementation reference contract
     */
    event ImplementationReferenceChanged(address implementationReference);

    // Storage position of the owner and pendingOwner and implementationReference of the contract
    // This is made to ensure, that memory spaces do not interfere with each other
    bytes32 private constant proxyOwnerPosition = 0x6279e8199720cf3557ecd8b58d667c8edc486bd1cf3ad59ea9ebdfcae0d0dfac; //keccak256("trueUSD.proxy.owner");
    bytes32 private constant pendingProxyOwnerPosition = 0x8ddbac328deee8d986ec3a7b933a196f96986cb4ee030d86cc56431c728b83f4; //keccak256("trueUSD.pending.proxy.owner");
    bytes32 private constant implementationReferencePosition = keccak256("trueFiPool.implementation.reference"); //keccak256("trueFiPool.implementation.reference");

    /**
     * @dev the constructor sets the original owner of the contract to the sender account.
     * @param _owner Initial owner of the proxy
     * @param _implementationReference initial ImplementationReference address
     */
    constructor(address _owner, address _implementationReference) public {
        _setUpgradeabilityOwner(_owner);
        _changeImplementationReference(_implementationReference);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyProxyOwner() {
        require(msg.sender == proxyOwner(), "only Proxy Owner");
        _;
    }

    /**
     * @dev Throws if called by any account other than the pending owner.
     */
    modifier onlyPendingProxyOwner() {
        require(msg.sender == pendingProxyOwner(), "only pending Proxy Owner");
        _;
    }

    /**
     * @dev Tells the address of the owner
     * @return owner the address of the owner
     */
    function proxyOwner() public view returns (address owner) {
        bytes32 position = proxyOwnerPosition;
        assembly {
            owner := sload(position)
        }
    }

    /**
     * @dev Tells the address of the owner
     * @return pendingOwner the address of the pending owner
     */
    function pendingProxyOwner() public view returns (address pendingOwner) {
        bytes32 position = pendingProxyOwnerPosition;
        assembly {
            pendingOwner := sload(position)
        }
    }

    /**
     * @dev Sets the address of the owner
     * @param newProxyOwner New owner to be set
     */
    function _setUpgradeabilityOwner(address newProxyOwner) internal {
        bytes32 position = proxyOwnerPosition;
        assembly {
            sstore(position, newProxyOwner)
        }
    }

    /**
     * @dev Sets the address of the owner
     * @param newPendingProxyOwner New pending owner address
     */
    function _setPendingUpgradeabilityOwner(address newPendingProxyOwner) internal {
        bytes32 position = pendingProxyOwnerPosition;
        assembly {
            sstore(position, newPendingProxyOwner)
        }
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * changes the pending owner to newOwner. But doesn't actually transfer
     * @param newOwner The address to transfer ownership to.
     */
    function transferProxyOwnership(address newOwner) external onlyProxyOwner {
        require(newOwner != address(0));
        _setPendingUpgradeabilityOwner(newOwner);
        emit NewPendingOwner(proxyOwner(), newOwner);
    }

    /**
     * @dev Allows the pendingOwner to claim ownership of the proxy
     */
    function claimProxyOwnership() external onlyPendingProxyOwner {
        emit ProxyOwnershipTransferred(proxyOwner(), pendingProxyOwner());
        _setUpgradeabilityOwner(pendingProxyOwner());
        _setPendingUpgradeabilityOwner(address(0));
    }

    /**
     * @dev Allows the proxy owner to change the contract holding address of implementation.
     * @param _implementationReference representing the address contract, which holds implementation.
     */
    function changeImplementationReference(address _implementationReference) public virtual onlyProxyOwner {
        _changeImplementationReference(_implementationReference);
    }

    /**
     * @dev Get the address of current implementation.
     * @return Returns address of implementation contract
     */
    function implementation() public view returns (address) {
        bytes32 position = implementationReferencePosition;
        address implementationReference;
        assembly {
            implementationReference := sload(position)
        }
        return ImplementationReference(implementationReference).implementation();
    }

    /**
     * @dev Fallback functions allowing to perform a delegatecall to the given implementation.
     * This function will return whatever the implementation call returns
     */
    fallback() external payable {
        proxyCall();
    }

    /**
     * @dev This fallback function gets called only when this contract is called without any calldata e.g. send(), transfer()
     * This would also trigger receive() function on called implementation
     */
    receive() external payable {
        proxyCall();
    }

    /**
     * @dev Performs a low level call, to the contract holding all the logic, changing state on this contract at the same time
     */
    function proxyCall() internal {
        address impl = implementation();

        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())
            let result := delegatecall(gas(), impl, ptr, calldatasize(), 0, 0)
            returndatacopy(ptr, 0, returndatasize())

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

    /**
     * @dev Function to internally change the contract holding address of implementation.
     * @param _implementationReference representing the address contract, which holds implementation.
     */
    function _changeImplementationReference(address _implementationReference) internal virtual {
        bytes32 position = implementationReferencePosition;
        assembly {
            sstore(position, _implementationReference)
        }

        emit ImplementationReferenceChanged(address(_implementationReference));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_implementationReference","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementationReference","type":"address"}],"name":"ImplementationReferenceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"currentOwner","type":"address"},{"indexed":false,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_implementationReference","type":"address"}],"name":"changeImplementationReference","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingProxyOwner","outputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516107b43803806107b48339818101604052604081101561003357600080fd5b50805160209091015161004e826001600160e01b0361006716565b610060816001600160e01b0361008b16565b50506100ea565b7f6279e8199720cf3557ecd8b58d667c8edc486bd1cf3ad59ea9ebdfcae0d0dfac55565b6000604051808061079160239139604080519182900360230182208581556001600160a01b038616835290519093507fa8290438144fbf31e3a673ff5040273117d5e72f359860188a6df03b794f035492509081900360200190a15050565b610698806100f96000396000f3fe6080604052600436106100695760003560e01c80635c60da1b116100435780635c60da1b146101135780639965b3d614610128578063f1739cae1461013d57610078565b8063025313a2146100805780630add8140146100be5780632463aba5146100d357610078565b366100785761007661017d565b005b61007661017d565b34801561008c57600080fd5b506100956101ad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100ca57600080fd5b506100956101d2565b3480156100df57600080fd5b50610076600480360360208110156100f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101f7565b34801561011f57600080fd5b506100956102a4565b34801561013457600080fd5b50610076610341565b34801561014957600080fd5b506100766004803603602081101561016057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610466565b60006101876102a4565b905060405136600082376000803683855af43d6000833e8080156101a9573d83f35b3d83fd5b7f6279e8199720cf3557ecd8b58d667c8edc486bd1cf3ad59ea9ebdfcae0d0dfac5490565b7f8ddbac328deee8d986ec3a7b933a196f96986cb4ee030d86cc56431c728b83f45490565b6101ff6101ad565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461029857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f6e6c792050726f7879204f776e657200000000000000000000000000000000604482015290519081900360640190fd5b6102a18161058b565b50565b6000806040518080610640602391396023019050604051809103902090506000815490508073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030e57600080fd5b505afa158015610322573d6000803e3d6000fd5b505050506040513d602081101561033857600080fd5b50519250505090565b6103496101d2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f6e6c792070656e64696e672050726f7879204f776e65720000000000000000604482015290519081900360640190fd5b6103ea6101d2565b73ffffffffffffffffffffffffffffffffffffffff166104086101ad565b73ffffffffffffffffffffffffffffffffffffffff167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a361045a6104556101d2565b6105f7565b610464600061061b565b565b61046e6101ad565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461050757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f6e6c792050726f7879204f776e657200000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661052757600080fd5b6105308161061b565b7fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b6105596101ad565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a150565b60006040518080610640602391396040805191829003602301822085815573ffffffffffffffffffffffffffffffffffffffff8616835290519093507fa8290438144fbf31e3a673ff5040273117d5e72f359860188a6df03b794f035492509081900360200190a15050565b7f6279e8199720cf3557ecd8b58d667c8edc486bd1cf3ad59ea9ebdfcae0d0dfac55565b7f8ddbac328deee8d986ec3a7b933a196f96986cb4ee030d86cc56431c728b83f45556fe747275654669506f6f6c2e696d706c656d656e746174696f6e2e7265666572656e6365a264697066735822122094e783569eec156e98e953577f0d664ef4b8dbb78a527b28d8ec46d0ac4e64be64736f6c634300060a0033747275654669506f6f6c2e696d706c656d656e746174696f6e2e7265666572656e6365000000000000000000000000f6e2da7d82ee49f76ce652bc0beb546cbe0ea521000000000000000000000000a47defa29a4df6a9243bdaeb4a4e5c592e17d930

Deployed ByteCode Sourcemap

9005:7279:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15003:11;:9;:11::i;:::-;9005:7279;;14717:11;:9;:11::i;11572:183::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11887:211;;;;;;;;;;;;;:::i;13825:178::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13825:178:0;;;;:::i;14144:337::-;;;;;;;;;;;;;:::i;13348:254::-;;;;;;;;;;;;;:::i;13023:230::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13023:230:0;;;;:::i;15176:555::-;15217:12;15232:16;:14;:16::i;:::-;15217:31;;15302:4;15296:11;15342:14;15339:1;15334:3;15321:36;15435:1;15432;15416:14;15411:3;15405:4;15398:5;15385:52;15474:16;15471:1;15466:3;15451:40;15514:6;15538:78;;;;15677:16;15672:3;15665:29;15538:78;15580:16;15575:3;15568:29;11572:183;10143:66;11722:15;;11698:50::o;11887:211::-;10305:66;12065:15;;12034:57::o;13825:178::-;11167:12;:10;:12::i;:::-;11153:26;;:10;:26;;;11145:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13939:56:::1;13970:24;13939:30;:56::i;:::-;13825:178:::0;:::o;14144:337::-;14191:7;14211:16;10481:48;;;;;;;;;;;;;;;;;;;14211:50;;14272:31;14371:8;14365:15;14338:42;;14432:23;14408:63;;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14408:65:0;;-1:-1:-1;;;14144:337:0;:::o;13348:254::-;11387:19;:17;:19::i;:::-;11373:33;;:10;:33;;;11365:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13466:19:::1;:17;:19::i;:::-;13426:60;;13452:12;:10;:12::i;:::-;13426:60;;;;;;;;;;;;13497:44;13521:19;:17;:19::i;:::-;13497:23;:44::i;:::-;13552:42;13591:1;13552:30;:42::i;:::-;13348:254::o:0;13023:230::-;11167:12;:10;:12::i;:::-;11153:26;;:10;:26;;;11145:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13116:22:::1;::::0;::::1;13108:31;;;::::0;::::1;;13150:40;13181:8;13150:30;:40::i;:::-;13206:39;13222:12;:10;:12::i;:::-;13206:39;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;13023:230:::0;:::o;15951:330::-;16053:16;10481:48;;;;;;;;;;;;;;;;;;;16138:42;;;16208:65;;;;;;;10481:48;;-1:-1:-1;16208:65:0;;-1:-1:-1;16208:65:0;;;;;;;;15951:330;;:::o;12216:197::-;10143:66;12364:31;12349:57::o;12544:225::-;10305:66;12713:38;12698:64::o

Swarm Source

ipfs://94e783569eec156e98e953577f0d664ef4b8dbb78a527b28d8ec46d0ac4e64be
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.