Contract 0xA991356d261fbaF194463aF6DF8f0464F8f1c742 2

 
Txn Hash Method
Block
From
To
Value
0x54acbcfb5a3b73e511498c89805aac1f5956630712796178b21626372f15673fApprove132447132021-09-17 17:57:172 hrs 47 mins ago0x6f08fd97ff697aa1061df1b69dba0e67d8d5e7bc IN  TrueFi: tfUSDC Token0 Ether0.005252745391 92.07750437
0x056dca5767bac14e79629e5fe29cf3906c193238500c950091b15614e52c4944Approve132440362021-09-17 15:30:105 hrs 14 mins ago0x7657ff00ddc858a31b9f286af47097b98ba4a847 IN  TrueFi: tfUSDC Token0 Ether0.006597158062 115.644259346
0x92cec116e1cf44e5b22b6e011853bb1c334109ed9f2b2761bcf57b1480a2037dApprove132431452021-09-17 12:16:428 hrs 28 mins ago0xfe388539e3fffea23ba4c5aa4c750cb90f369b2e IN  TrueFi: tfUSDC Token0 Ether0.00375160212565.763355223
0x113fc2b14f31a18c24da8a193e1a641e7e08c73926bc3f7382506ca94336ea36Liquid Exit132385352021-09-16 18:56:101 day 1 hr agoENS Name collect.eth IN  TrueFi: tfUSDC Token0 Ether0.0713765686
0x4c9f6fa35e670fd5692724f778d83144865f310c818e1692ad5877de60741d3aApprove132352712021-09-16 6:56:481 day 13 hrs agoENS Name seriousloss.eth IN  TrueFi: tfUSDC Token0 Ether0.00279530349
0xe948c8fbd473c555a70ab3ca19396fd1db1fe805208280a90c6a8f5a220dd480Liquid Exit132349482021-09-16 5:44:091 day 15 hrs ago0xa40eb69d2adbd34ea73ea1dfd049f825e8216eb0 IN  TrueFi: tfUSDC Token0 Ether0.03478809642
0x7b088b4c2577bb44564307c343fdef8a3faed3e3479806d724e8c31e4054fc76Liquid Exit132339512021-09-16 2:06:551 day 18 hrs agoENS Name collect.eth IN  TrueFi: tfUSDC Token0 Ether0.091323072108
0x72545517f8dcfa99191c5e0d9365570611774caca33de417962fd9c7284474f5Liquid Exit132308482021-09-15 14:31:002 days 6 hrs ago0x4d7d4b19281f71ce60bb32813359c99db99f1a56 IN  TrueFi: tfUSDC Token0 Ether0.068673966032 82.889918639
0x04ee1933ac5e6691a98d8718fdaf7433d1afc45faec96f39a3c0ac5fa7049994Liquid Exit132307882021-09-15 14:15:322 days 6 hrs ago0x4d7d4b19281f71ce60bb32813359c99db99f1a56 IN  TrueFi: tfUSDC Token0 Ether0.058607479839 69.311046061
0x52ecffe1fd578bbaa080407d5e377dd03785d0e710a6d733e860afdff56eda6aApprove132281122021-09-15 4:25:122 days 16 hrs ago0x23118db7a1557cdf869c08c9e3d06d231893b16a IN  TrueFi: tfUSDC Token0 Ether0.0028523550
0xef554f29f8449c06239ab684cd6cfc999f75dfdd3bcadbb1d6575a9d499284b7Liquid Exit132281002021-09-15 4:22:082 days 16 hrs agoENS Name collect.eth IN  TrueFi: tfUSDC Token0 Ether0.0585259272
0xa2a9a8e898f479e71915e3992153e31c42d005a1ec4e7280549ba4cc195a8a42Join132269032021-09-14 23:47:452 days 20 hrs ago0x62cb1071882e70ae9c608053c1b69469302a1890 IN  TrueFi: tfUSDC Token0 Ether0.06063037575
0x5d66e0477a01d1dd7321f746cbf1e1b1a16449dab6d14f274f73c54acef85039Join132268902021-09-14 23:44:352 days 21 hrs ago0x62cb1071882e70ae9c608053c1b69469302a1890 IN  TrueFi: tfUSDC Token0 Ether0.06191197575
0x3cdd10d53a239e1d379e1079d8eef791335117f943cfea9242a3a1a9871bf318Approve132255222021-09-14 18:49:083 days 1 hr ago0x74c8c6ce9766c5f77e3e1ad5c75fe7da07199fc8 IN  TrueFi: tfUSDC Token0 Ether0.004816602901 84.432185761
0x3d1bb26e6dc2407f49f1db2e4638b8082e01f81838de44c1867640e511836cf0Approve132226952021-09-14 8:12:153 days 12 hrs ago0xac8eb5c1c12cc1db3e37bb64cc9f2220e16395d9 IN  TrueFi: tfUSDC Token0 Ether0.002901977402 50.869938862
0x83c46cff733e64442e0826d2d53c22df61b4c31076db1a3baa955076ba973ac7Approve132223982021-09-14 7:06:393 days 13 hrs ago0x1e93e2c41bb741d2a642b3dbdf7d0254a5968963 IN  TrueFi: tfUSDC Token0 Ether0.001664725104 29.181641535
0xb422ac4991888473477975aa447465a0cc1d629f0e8450165023281ad741a81bLiquid Exit132219102021-09-14 5:19:043 days 15 hrs ago0x4d7d4b19281f71ce60bb32813359c99db99f1a56 IN  TrueFi: tfUSDC Token0 Ether0.036888425775 43.624791594
0x8e8da5b9650a80983a25be8bf8802290d7560729071a44ed3f1853851ba71722Approve132182362021-09-13 15:43:234 days 5 hrs ago0x005f45c8d78c380d3ff3b61d3f1766eb9154a6cd IN  TrueFi: tfUSDC Token0 Ether0.004803234778 84.197850526
0x199a75170dd7013e91711db6f4786d6e8856151ee17d3588b1aafee3db82cf13Approve132168782021-09-13 10:38:594 days 10 hrs ago0x9d992540de8e1985f49baea0c29dd877234e2967 IN  TrueFi: tfUSDC Token0 Ether0.00233892741
0x9adb30b41d5b63dc3d1c4394dcc96bbcb2d1212d9c831335bbce6ecd22412dcdLiquid Exit132137282021-09-12 22:46:054 days 21 hrs ago0xb2010b3b9e1d60933df001a30bc2a8fc523b2241 IN  TrueFi: tfUSDC Token0 Ether0.057182945937 70.346802372
0x1b67488794f57a4cf204ff9f172eea348ab437abf8b59cf6828834a5777b0f0eApprove132114352021-09-12 14:13:515 days 6 hrs ago0x6792b02f15694a1c89f460a75859f73971e7ae59 IN  TrueFi: tfUSDC Token0 Ether0.003541894732 62.087309273
0x2ef4aca7b8aac235f6ef58f51860e098ec9093c43a6d1a5503ee62edb7ff00b4Approve132109992021-09-12 12:35:455 days 8 hrs ago0xaa039009f611390fa2244c5d5834f0846d329184 IN  TrueFi: tfUSDC Token0 Ether0.0022818840
0x189e1718a77557573f44edace02b0cb6dceede9dbde6345a206cd97359acb5e3Liquid Exit132095932021-09-12 7:30:085 days 13 hrs ago0x5c89a49d8518c607ba2434ccb8c8748284478945 IN  TrueFi: tfUSDC Token0 Ether0.03466894441
0x99b92a5e2a45f2c349edf32fdc0a4f974605f61ea2f79e9a12407ae97eea5e6cApprove132067792021-09-11 21:03:225 days 23 hrs ago0xd70db792387343dcdd6aa7110c29c94ef54c8f9d IN  TrueFi: tfUSDC Token0 Ether0.003279808348 57.493090752
0x2d0aab90054be205c4bfb003afd4e3935136001f142eeeee4523d8b3a0275f73Approve132055922021-09-11 16:42:246 days 4 hrs ago0xd70db792387343dcdd6aa7110c29c94ef54c8f9d IN  TrueFi: tfUSDC Token0 Ether0.003499852278 61.350330058
[ Download CSV Export 

OVERVIEW

TrueFi is a protocol for on-chain unsecured lending. tfUSDC is the USDC lending pool token representing a holder's proportional ownership stake in the USDC lending pool.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xb21186ddb51c1a8b73fbc7abbd9ade04b873c139efc4ea9afe926f0c142c5bcf124715602021-05-20 13:28:14120 days 7 hrs ago TrueFi: Deployer  Contract Creation0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

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

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

000000000000000000000000f6e2da7d82ee49f76ce652bc0beb546cbe0ea521000000000000000000000000a47defa29a4df6a9243bdaeb4a4e5c592e17d930

-----Decoded View---------------
Arg [0] : _owner (address): 0xf6e2da7d82ee49f76ce652bc0beb546cbe0ea521
Arg [1] : _implementationReference (address): 0xa47defa29a4df6a9243bdaeb4a4e5c592e17d930

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f6e2da7d82ee49f76ce652bc0beb546cbe0ea521
Arg [1] : 000000000000000000000000a47defa29a4df6a9243bdaeb4a4e5c592e17d930


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.