ETH Price: $3,310.18 (-3.20%)
Gas: 14 Gwei

Contract

0xB378C842521698720b45239D3F7317a46191A2F1
 
Transaction Hash
Method
Block
From
To
Value
Approve200274042024-06-05 18:25:2327 days ago1717611923IN
0xB378C842...46191A2F1
0 ETH0.0011355222.07654017
Approve198364062024-05-10 1:36:5954 days ago1715305019IN
0xB378C842...46191A2F1
0 ETH0.000208254.0725129
Approve196726602024-04-17 3:58:5977 days ago1713326339IN
0xB378C842...46191A2F1
0 ETH0.000359146.98230951
Approve194667892024-03-19 5:43:23106 days ago1710827003IN
0xB378C842...46191A2F1
0 ETH0.0012611624.65723381
Approve192972462024-02-24 11:47:59130 days ago1708775279IN
0xB378C842...46191A2F1
0 ETH0.0010850821.21470253
Claim_rewards192972352024-02-24 11:45:47130 days ago1708775147IN
0xB378C842...46191A2F1
0 ETH0.0026884722.68854949
Approve192544252024-02-18 11:34:35136 days ago1708256075IN
0xB378C842...46191A2F1
0 ETH0.0010551620.51411873
Approve189140842024-01-01 17:31:47183 days ago1704130307IN
0xB378C842...46191A2F1
0 ETH0.0008163515.87121266
Approve189092232024-01-01 1:06:59184 days ago1704071219IN
0xB378C842...46191A2F1
0 ETH0.000654612.72666292
Approve189086942023-12-31 23:19:59184 days ago1704064799IN
0xB378C842...46191A2F1
0 ETH0.0006042611.81407292
Claim_rewards185799682023-11-15 21:28:11230 days ago1700083691IN
0xB378C842...46191A2F1
0 ETH0.0028643237.03166181
Approve185799612023-11-15 21:26:47230 days ago1700083607IN
0xB378C842...46191A2F1
0 ETH0.0018295835.57017263
Claim_rewards185760612023-11-15 8:19:47231 days ago1700036387IN
0xB378C842...46191A2F1
0 ETH0.0019249524.88699336
Approve185760482023-11-15 8:17:11231 days ago1700036231IN
0xB378C842...46191A2F1
0 ETH0.001309225.45300879
Approve185434262023-11-10 18:47:23235 days ago1699642043IN
0xB378C842...46191A2F1
0 ETH0.002571850
Approve185389492023-11-10 3:46:23236 days ago1699587983IN
0xB378C842...46191A2F1
0 ETH0.00200639
Approve185289882023-11-08 18:20:35237 days ago1699467635IN
0xB378C842...46191A2F1
0 ETH0.0028508655.42539531
Claim_rewards185289812023-11-08 18:19:11237 days ago1699467551IN
0xB378C842...46191A2F1
0 ETH0.0067522356.98329107
Approve185230942023-11-07 22:34:11238 days ago1699396451IN
0xB378C842...46191A2F1
0 ETH0.0013373926.00118794
Claim_rewards185186272023-11-07 7:36:35239 days ago1699342595IN
0xB378C842...46191A2F1
0 ETH0.0031186823
Approve185123172023-11-06 10:22:11240 days ago1699266131IN
0xB378C842...46191A2F1
0 ETH0.0011830223
Approve185076882023-11-05 18:48:23240 days ago1699210103IN
0xB378C842...46191A2F1
0 ETH0.0011146621.79295381
Approve185001162023-11-04 17:19:23241 days ago1699118363IN
0xB378C842...46191A2F1
0 ETH0.0015848130.81140414
Approve184988742023-11-04 13:09:35242 days ago1699103375IN
0xB378C842...46191A2F1
0 ETH0.0010620720.64841295
Approve184981372023-11-04 10:39:59242 days ago1699094399IN
0xB378C842...46191A2F1
0 ETH0.0007631414.83679639
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0260125E...b4BFc6A40
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
EIP173Proxy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
File 1 of 2 : EIP173Proxy.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.7;

import "./Proxy.sol";

interface ERC165 {
    function supportsInterface(bytes4 id) external view returns (bool);
}

///@notice Proxy implementing EIP173 for ownership management
contract EIP173Proxy is Proxy {
    // ////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////

    event ProxyAdminTransferred(
        address indexed previousAdmin,
        address indexed newAdmin
    );

    // /////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////////////

    constructor(
        address implementationAddress,
        address adminAddress,
        bytes memory data
    ) payable {
        _setImplementation(implementationAddress, data);
        _setProxyAdmin(adminAddress);
    }

    // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////

    function proxyAdmin() external view returns (address) {
        return _proxyAdmin();
    }

    function supportsInterface(bytes4 id) external view returns (bool) {
        if (id == 0x01ffc9a7 || id == 0x7f5828d0) {
            return true;
        }
        if (id == 0xFFFFFFFF) {
            return false;
        }

        ERC165 implementation;
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            implementation := sload(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
            )
        }

        // Technically this is not standard compliant as ERC-165 require 30,000 gas which that call cannot ensure
        // because it is itself inside `supportsInterface` that might only get 30,000 gas.
        // In practise this is unlikely to be an issue.
        try implementation.supportsInterface(id) returns (bool support) {
            return support;
        } catch {
            return false;
        }
    }

    function transferProxyAdmin(address newAdmin) external onlyProxyAdmin {
        _setProxyAdmin(newAdmin);
    }

    function upgradeTo(address newImplementation) external onlyProxyAdmin {
        _setImplementation(newImplementation, "");
    }

    function upgradeToAndCall(address newImplementation, bytes calldata data)
        external
        payable
        onlyProxyAdmin
    {
        _setImplementation(newImplementation, data);
    }

    // /////////////////////// MODIFIERS ////////////////////////////////////////////////////////////////////////

    modifier onlyProxyAdmin() {
        require(msg.sender == _proxyAdmin(), "NOT_AUTHORIZED");
        _;
    }

    // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////

    function _proxyAdmin() internal view returns (address adminAddress) {
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            adminAddress := sload(
                0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103
            )
        }
    }

    function _setProxyAdmin(address newAdmin) internal {
        address previousAdmin = _proxyAdmin();
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            sstore(
                0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103,
                newAdmin
            )
        }
        emit ProxyAdminTransferred(previousAdmin, newAdmin);
    }
}

File 2 of 2 : Proxy.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.7;

// EIP-1967
abstract contract Proxy {
    // /////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////

    event ProxyImplementationUpdated(
        address indexed previousImplementation,
        address indexed newImplementation
    );

    // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////

    // prettier-ignore
    receive() external payable virtual {
        revert("ETHER_REJECTED"); // explicit reject by default
    }

    fallback() external payable {
        _fallback();
    }

    // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////

    function _fallback() internal {
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            let implementationAddress := sload(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
            )
            calldatacopy(0x0, 0x0, calldatasize())
            let success := delegatecall(
                gas(),
                implementationAddress,
                0x0,
                calldatasize(),
                0,
                0
            )
            let retSz := returndatasize()
            returndatacopy(0, 0, retSz)
            switch success
            case 0 {
                revert(0, retSz)
            }
            default {
                return(0, retSz)
            }
        }
    }

    function _setImplementation(address newImplementation, bytes memory data)
        internal
    {
        address previousImplementation;
        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            previousImplementation := sload(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
            )
        }

        // solhint-disable-next-line security/no-inline-assembly
        assembly {
            sstore(
                0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc,
                newImplementation
            )
        }

        emit ProxyImplementationUpdated(
            previousImplementation,
            newImplementation
        );

        if (data.length > 0) {
            (bool success, ) = newImplementation.delegatecall(data);
            if (!success) {
                assembly {
                    // This assembly ensure the revert contains the exact string data
                    let returnDataSize := returndatasize()
                    returndatacopy(0, 0, returnDataSize)
                    revert(0, returnDataSize)
                }
            }
        }
    }
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"implementationAddress","type":"address"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"ProxyAdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousImplementation","type":"address"},{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"ProxyImplementationUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"proxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"id","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061004e5760003560e01c806301ffc9a71461009b5780633659cfe6146100d05780633e47158c146100f05780634f1ef2861461011d5780638356ca4f1461013057610091565b366100915760405162461bcd60e51b815260206004820152600e60248201526d115512115497d491529150d5115160921b60448201526064015b60405180910390fd5b610099610150565b005b3480156100a757600080fd5b506100bb6100b6366004610609565b61019b565b60405190151581526020015b60405180910390f35b3480156100dc57600080fd5b506100996100eb366004610549565b6102a2565b3480156100fc57600080fd5b506101056102fe565b6040516001600160a01b0390911681526020016100c7565b61009961012b366004610564565b61031b565b34801561013c57600080fd5b5061009961014b366004610549565b6103a0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460003681823780813683855af491503d8082833e828015610191578183f35b8183fd5b50505050565b60006301ffc9a760e01b6001600160e01b0319831614806101cc57506307f5828d60e41b6001600160e01b03198316145b156101d957506001919050565b6001600160e01b031980831614156101f357506000919050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546040516301ffc9a760e01b81526001600160e01b0319841660048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561025e57600080fd5b505afa92505050801561028e575060408051601f3d908101601f1916820190925261028b918101906105e7565b60015b61029b5750600092915050565b9392505050565b600080516020610697833981519152546001600160a01b0316336001600160a01b0316146102e25760405162461bcd60e51b81526004016100889061066e565b6102fb81604051806020016040528060008152506103e9565b50565b60006103166000805160206106978339815191525490565b905090565b600080516020610697833981519152546001600160a01b0316336001600160a01b03161461035b5760405162461bcd60e51b81526004016100889061066e565b61039b8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103e992505050565b505050565b600080516020610697833981519152546001600160a01b0316336001600160a01b0316146103e05760405162461bcd60e51b81526004016100889061066e565b6102fb816104be565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8054908390556040516001600160a01b0380851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a381511561039b576000836001600160a01b03168360405161046a9190610633565b600060405180830381855af49150503d80600081146104a5576040519150601f19603f3d011682016040523d82523d6000602084013e6104aa565b606091505b5050905080610195573d806000803e806000fd5b60006104d66000805160206106978339815191525490565b90508160008051602061069783398151915255816001600160a01b0316816001600160a01b03167fdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec2960405160405180910390a35050565b80356001600160a01b038116811461054457600080fd5b919050565b60006020828403121561055b57600080fd5b61029b8261052d565b60008060006040848603121561057957600080fd5b6105828461052d565b9250602084013567ffffffffffffffff8082111561059f57600080fd5b818601915086601f8301126105b357600080fd5b8135818111156105c257600080fd5b8760208285010111156105d457600080fd5b6020830194508093505050509250925092565b6000602082840312156105f957600080fd5b8151801515811461029b57600080fd5b60006020828403121561061b57600080fd5b81356001600160e01b03198116811461029b57600080fd5b6000825160005b81811015610654576020818601810151858301520161063a565b81811115610663576000828501525b509190910192915050565b6020808252600e908201526d1393d517d055551213d49256915160921b60408201526060019056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a26469706673582212201cbd2f29930decd2c6b4995a7ebce696b9e6fcddc9b171f6268877f44f2595cf64736f6c63430008070033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.