ETH Price: $3,067.98 (-0.20%)
 

Overview

ETH Balance

40.379070597992632661 ETH

Eth Value

$123,882.00 (@ $3,067.98/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer240195482025-12-15 17:38:5924 days ago1765820339IN
Fee Recipient: 0x73f7...d58
1.41829436 ETH0.000004040.14776954
Transfer239995562025-12-12 22:36:4727 days ago1765579007IN
Fee Recipient: 0x73f7...d58
1.14056619 ETH0.000001790.06568896
Transfer239264592025-12-02 14:45:2338 days ago1764686723IN
Fee Recipient: 0x73f7...d58
1.33228552 ETH0.000005490.20072714
Transfer239181142025-12-01 10:44:1139 days ago1764585851IN
Fee Recipient: 0x73f7...d58
1.75997469 ETH0.000001040.03830717
Transfer238415812025-11-20 16:57:2349 days ago1763657843IN
Fee Recipient: 0x73f7...d58
2.79412507 ETH0.000094593.45528132
Transfer238345282025-11-19 17:12:2350 days ago1763572343IN
Fee Recipient: 0x73f7...d58
1.67634511 ETH0.000075472.75668398
Transfer238341932025-11-19 16:04:5950 days ago1763568299IN
Fee Recipient: 0x73f7...d58
1.61532188 ETH0.000088613.23661768
Transfer238195232025-11-17 14:36:1153 days ago1763390171IN
Fee Recipient: 0x73f7...d58
1.7983955 ETH0.000021860.79868788
Transfer237950942025-11-14 4:38:4756 days ago1763095127IN
Fee Recipient: 0x73f7...d58
6.80235822 ETH0.000007530.2752923
Transfer237920742025-11-13 18:29:2356 days ago1763058563IN
Fee Recipient: 0x73f7...d58
50.21686332 ETH0.000051281.87323047
Transfer237693872025-11-10 14:14:1160 days ago1762784051IN
Fee Recipient: 0x73f7...d58
1.03831964 ETH0.000050871.8582346
Transfer237464832025-11-07 9:24:5963 days ago1762507499IN
Fee Recipient: 0x73f7...d58
2.83486944 ETH0.000015540.56784373
Transfer237341512025-11-05 16:01:2364 days ago1762358483IN
Fee Recipient: 0x73f7...d58
1.79127417 ETH0.000035521.29741956
Transfer237282852025-11-04 20:17:4765 days ago1762287467IN
Fee Recipient: 0x73f7...d58
1.41084409 ETH0.00014895.43893828
Transfer237273062025-11-04 17:00:3565 days ago1762275635IN
Fee Recipient: 0x73f7...d58
1.73200124 ETH0.00008973.27642811
Transfer237177892025-11-03 9:05:2367 days ago1762160723IN
Fee Recipient: 0x73f7...d58
1.13596412 ETH0.000036481.33273016
Transfer237176902025-11-03 8:45:3567 days ago1762159535IN
Fee Recipient: 0x73f7...d58
1.35738881 ETH0.000155775.68976269
Transfer236268062025-10-21 15:23:2379 days ago1761060203IN
Fee Recipient: 0x73f7...d58
6.46359602 ETH0.000054912.00577346
Transfer235501972025-10-10 22:05:5990 days ago1760133959IN
Fee Recipient: 0x73f7...d58
3.37473466 ETH0.0045249165.27530534
Transfer235501322025-10-10 21:52:5990 days ago1760133179IN
Fee Recipient: 0x73f7...d58
16.09893057 ETH0.00587646214.64190077
Transfer235500782025-10-10 21:42:1190 days ago1760132531IN
Fee Recipient: 0x73f7...d58
4.75484429 ETH0.00731361267.1348465
Transfer235500502025-10-10 21:36:3590 days ago1760132195IN
Fee Recipient: 0x73f7...d58
1.04636452 ETH0.00904223330.27391245
Transfer235500092025-10-10 21:28:1190 days ago1760131691IN
Fee Recipient: 0x73f7...d58
7.72905153 ETH0.01103931403.21829432
Transfer235499432025-10-10 21:14:5990 days ago1760130899IN
Fee Recipient: 0x73f7...d58
12.68896395 ETH0.0003359612.27150611
Transfer235266672025-10-07 15:06:5993 days ago1759849619IN
Fee Recipient: 0x73f7...d58
2.04439055 ETH0.00010633.88268359
VIEW ADVANCED FILTER
Amount:Between 1-1k
Reset Filter

Showing the last 25 internal transactions (View Advanced Filter)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer241355202025-12-31 22:12:598 days ago1767219179
Fee Recipient: 0x73f7...d58
252.69285946 ETH
Transfer240374592025-12-18 5:39:4722 days ago1766036387
Fee Recipient: 0x73f7...d58
1.62263122 ETH
Transfer238380672025-11-20 5:06:3550 days ago1763615195
Fee Recipient: 0x73f7...d58
1.68382092 ETH
Transfer238143532025-11-16 21:13:3553 days ago1763327615
Fee Recipient: 0x73f7...d58
179.75379834 ETH
Transfer237172532025-11-03 7:17:5967 days ago1762154279
Fee Recipient: 0x73f7...d58
90.42558584 ETH
Transfer236081922025-10-19 0:45:5982 days ago1760834759
Fee Recipient: 0x73f7...d58
500.01569536 ETH
Transfer235571322025-10-11 21:21:2389 days ago1760217683
Fee Recipient: 0x73f7...d58
1.54566346 ETH
Transfer235555302025-10-11 15:59:1189 days ago1760198351
Fee Recipient: 0x73f7...d58
1.25362667 ETH
Transfer235548072025-10-11 13:33:2390 days ago1760189603
Fee Recipient: 0x73f7...d58
2.81995623 ETH
Transfer235547242025-10-11 13:16:3590 days ago1760188595
Fee Recipient: 0x73f7...d58
1.99815324 ETH
Transfer235515982025-10-11 2:47:3590 days ago1760150855
Fee Recipient: 0x73f7...d58
1.49570667 ETH
Transfer234649042025-09-28 23:54:47102 days ago1759103687
Fee Recipient: 0x73f7...d58
3.01122424 ETH
Transfer234438672025-09-26 1:18:11105 days ago1758849491
Fee Recipient: 0x73f7...d58
6.12563017 ETH
Transfer232200862025-08-25 19:02:47136 days ago1756148567
Fee Recipient: 0x73f7...d58
311.32299565 ETH
Transfer230207322025-07-28 22:50:47164 days ago1753743047
Fee Recipient: 0x73f7...d58
81.55168837 ETH
Transfer229687742025-07-21 16:31:23171 days ago1753115483
Fee Recipient: 0x73f7...d58
368.57679621 ETH
Transfer227826282025-06-25 16:24:47197 days ago1750868687
Fee Recipient: 0x73f7...d58
517.4682976 ETH
Transfer225726032025-05-27 7:21:59227 days ago1748330519
Fee Recipient: 0x73f7...d58
3 ETH
Transfer225395342025-05-22 16:13:35231 days ago1747930415
Fee Recipient: 0x73f7...d58
500.03564488 ETH
Transfer222534312025-04-12 14:18:35272 days ago1744467515
Fee Recipient: 0x73f7...d58
500.23849578 ETH
Transfer221341062025-03-26 22:35:35288 days ago1743028535
Fee Recipient: 0x73f7...d58
503.11506321 ETH
Transfer219615282025-03-02 20:17:35312 days ago1740946655
Fee Recipient: 0x73f7...d58
2.06893261 ETH
Transfer219356802025-02-27 5:47:59316 days ago1740635279
Fee Recipient: 0x73f7...d58
107.78420924 ETH
Transfer219196812025-02-25 0:12:23318 days ago1740442343
Fee Recipient: 0x73f7...d58
17.94674812 ETH
Transfer219013722025-02-22 10:47:59321 days ago1740221279
Fee Recipient: 0x73f7...d58
129.19060758 ETH
VIEW ADVANCED FILTER
Loading...
Loading
Cross-Chain Transactions
Produced Blocks

 Latest 25 blocks (From a total of 4,532 blocks with 29.64 Ether produced)

Block Transaction Difficulty Gas Used Reward
241975652026-01-09 13:56:471 hr ago17679670071640.00 TH7,496,396 (12.49%)
0.002761137933030946 ETH
241965492026-01-09 10:32:474 hrs ago17679547671980.00 TH18,942,085 (31.57%)
0.003631358045551134 ETH
241964712026-01-09 10:17:114 hrs ago17679538311280.00 TH35,478,891 (59.13%)
0.002642836943582844 ETH
241961312026-01-09 9:08:595 hrs ago17679497391120.00 TH8,158,501 (13.60%)
0.002673853539690295 ETH
241958672026-01-09 8:15:596 hrs ago17679465593080.00 TH9,247,644 (15.41%)
0.001799929097109913 ETH
241956002026-01-09 7:22:357 hrs ago17679433551360.00 TH30,879,914 (51.47%)
0.003628339722715101 ETH
241949952026-01-09 5:20:599 hrs ago1767936059680.00 TH4,168,256 (6.95%)
0.00181624801010828 ETH
241947442026-01-09 4:30:3510 hrs ago17679330351080.00 TH25,464,337 (42.44%)
0.000923286770847462 ETH
241918002026-01-08 18:39:1120 hrs ago17678975512080.00 TH12,931,215 (21.55%)
0.004479443022021583 ETH
241907432026-01-08 15:06:5923 hrs ago17678848191730.00 TH7,420,167 (12.37%)
0.004420033657511663 ETH
241906952026-01-08 14:57:1124 hrs ago17678842311960.00 TH12,696,921 (21.16%)
0.005179327431010873 ETH
241885512026-01-08 7:44:5931 hrs ago17678582991060.00 TH6,963,293 (11.61%)
0.003685866189786058 ETH
241863272026-01-08 0:17:1138 hrs ago17678314312220.00 TH13,891,238 (23.15%)
0.005317310716476771 ETH
241855132026-01-07 21:33:2341 hrs ago17678216032560.00 TH15,189,685 (25.32%)
0.006797855411191105 ETH
241854482026-01-07 21:20:1141 hrs ago17678208111110.00 TH6,582,396 (10.97%)
0.00589302458425726 ETH
241854472026-01-07 21:19:5941 hrs ago1767820799780.00 TH4,227,244 (7.05%)
0.002592658047093064 ETH
241838862026-01-07 16:05:4746 hrs ago17678019473020.00 TH15,377,322 (25.63%)
0.00598812450184792 ETH
241836592026-01-07 15:20:2347 hrs ago17677992231510.00 TH6,716,963 (11.19%)
0.002872994202291231 ETH
241817272026-01-07 8:52:352 days ago17677759552310.00 TH14,638,859 (24.40%)
0.002852040489236304 ETH
241816132026-01-07 8:29:472 days ago17677745873070.00 TH37,489,535 (62.48%)
0.004665047704995425 ETH
241800232026-01-07 3:09:352 days ago17677553751190.00 TH8,890,544 (14.82%)
0.002580872212804841 ETH
241799112026-01-07 2:46:592 days ago17677540191570.00 TH7,393,870 (12.32%)
0.003023911578365129 ETH
241789072026-01-06 23:25:352 days ago17677419351830.00 TH11,098,556 (18.50%)
0.004359864621435224 ETH
241787032026-01-06 22:44:352 days ago17677394751250.00 TH13,351,305 (22.25%)
0.001506452463116455 ETH
241767642026-01-06 16:15:112 days ago17677161111540.00 TH14,989,353 (24.98%)
0.006133729374017673 ETH
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

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

Contract Name:
UUPSProxy

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 2000 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 8 : UUPSProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";

contract UUPSProxy is ERC1967Proxy {
    constructor(
        address _implementation,
        bytes memory _data
    ) ERC1967Proxy(_implementation, _data) {}
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)

pragma solidity ^0.8.0;

import "../Proxy.sol";
import "./ERC1967Upgrade.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 */
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializing the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)

pragma solidity ^0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overridden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity ^0.8.2;

import "../beacon/IBeacon.sol";
import "../../interfaces/draft-IERC1822.sol";
import "../../utils/Address.sol";
import "../../utils/StorageSlot.sol";

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 *
 * _Available since v4.1._
 *
 * @custom:oz-upgrades-unsafe-allow delegatecall
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallUUPS(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        // Upgrades from old implementations will perform a rollback test. This test requires the new
        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
        // this special case will break upgrade paths from old UUPS implementation to new ones.
        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
            _setImplementation(newImplementation);
        } else {
            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
                require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
            } catch {
                revert("ERC1967Upgrade: new implementation is not UUPS");
            }
            _upgradeToAndCall(newImplementation, data, forceCall);
        }
    }

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Returns the current admin.
     */
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     */
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
     */
    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @dev Emitted when the beacon is upgraded.
     */
    event BeaconUpgraded(address indexed beacon);

    /**
     * @dev Returns the current beacon.
     */
    function _getBeacon() internal view returns (address) {
        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
    }

    /**
     * @dev Stores a new beacon in the EIP1967 beacon slot.
     */
    function _setBeacon(address newBeacon) private {
        require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
        require(
            Address.isContract(IBeacon(newBeacon).implementation()),
            "ERC1967: beacon implementation is not a contract"
        );
        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
    }

    /**
     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
     *
     * Emits a {BeaconUpgraded} event.
     */
    function _upgradeBeaconToAndCall(
        address newBeacon,
        bytes memory data,
        bool forceCall
    ) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)

pragma solidity ^0.8.0;

/**
 * @dev This is the interface that {BeaconProxy} expects of its beacon.
 */
interface IBeacon {
    /**
     * @dev Must return an address that can be used as a delegate call target.
     *
     * {BeaconProxy} will check that this address is a contract.
     */
    function implementation() external view returns (address);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)

pragma solidity ^0.8.0;

/**
 * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
 * proxy whose upgrades are fully controlled by the current implementation.
 */
interface IERC1822Proxiable {
    /**
     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
     * address.
     *
     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
     * function revert if invoked through a proxy.
     */
    function proxiableUUID() external view returns (bytes32);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)

pragma solidity ^0.8.0;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "@uniswap/=lib/",
    "@eigenlayer/=lib/eigenlayer-contracts/src/",
    "@layerzerolabs/lz-evm-oapp-v2/contracts/=lib/Etherfi-SyncPools/node_modules/@layerzerolabs/lz-evm-oapp-v2/contracts/",
    "@layerzerolabs/lz-evm-protocol-v2/contracts/=lib/Etherfi-SyncPools/node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/",
    "@layerzerolabs/lz-evm-messagelib-v2/contracts/=lib/Etherfi-SyncPools/node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/",
    "@layerzerolabs/lz-evm-oapp-v2/contracts-upgradeable/=lib/Etherfi-SyncPools/node_modules/layerzero-v2/oapp/contracts/",
    "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "v3-core/=lib/v3-core/",
    "v3-periphery/=lib/v3-periphery/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

0x608060405234801561001057600080fd5b506040516104ff3803806104ff83398101604081905261002f916102ef565b818161003d82826000610046565b5050505061040c565b61004f83610072565b60008251118061005c5750805b1561006d5761006b83836100b2565b505b505050565b61007b816100de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d783836040518060600160405280602781526020016104d860279139610191565b9392505050565b6001600160a01b0381163b6101505760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516101ae91906103bd565b600060405180830381855af49150503d80600081146101e9576040519150601f19603f3d011682016040523d82523d6000602084013e6101ee565b606091505b5090925090506102008683838761020a565b9695505050505050565b60608315610279578251600003610272576001600160a01b0385163b6102725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610147565b5081610283565b610283838361028b565b949350505050565b81511561029b5781518083602001fd5b8060405162461bcd60e51b815260040161014791906103d9565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102e65781810151838201526020016102ce565b50506000910152565b6000806040838503121561030257600080fd5b82516001600160a01b038116811461031957600080fd5b60208401519092506001600160401b038082111561033657600080fd5b818501915085601f83011261034a57600080fd5b81518181111561035c5761035c6102b5565b604051601f8201601f19908116603f01168101908382118183101715610384576103846102b5565b8160405282815288602084870101111561039d57600080fd5b6103ae8360208301602088016102cb565b80955050505050509250929050565b600082516103cf8184602087016102cb565b9190910192915050565b60208152600082518060208401526103f88160408501602087016102cb565b601f01601f19169190910160400192915050565b60be8061041a6000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6065565b565b600060607f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156083573d6000f35b3d6000fdfea26469706673582212206c5927fc1385c34883f2af965e6f1dae9db3c45f6038edccb80055d3efce30f464736f6c63430008180033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000cb160af093564e44dc4c07bc03b828354e0fee77000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000048129fc1c00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405236601057600e6013565b005b600e5b601f601b6021565b6065565b565b600060607f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156083573d6000f35b3d6000fdfea26469706673582212206c5927fc1385c34883f2af965e6f1dae9db3c45f6038edccb80055d3efce30f464736f6c63430008180033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
0x73f7b1184B5cD361cC0f7654998953E2a251dd58
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]
[ 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.