ETH Price: $3,246.40 (+1.05%)
 

Overview

ETH Balance

25.5015933548594169 ETH

Eth Value

$82,788.45 (@ $3,246.40/ETH)

More Info

Private Name Tags

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Transfer241770352026-01-06 17:09:475 mins ago1767719387IN
Fee Recipient: 0x73f7...d58
0.01419602 ETH0.000008240.30111874
Transfer241770122026-01-06 17:05:1110 mins ago1767719111IN
Fee Recipient: 0x73f7...d58
0.01529044 ETH0.00001010.3690566
Transfer241769502026-01-06 16:52:3522 mins ago1767718355IN
Fee Recipient: 0x73f7...d58
0.01611959 ETH0.000014570.53234383
Transfer241769352026-01-06 16:49:3525 mins ago1767718175IN
Fee Recipient: 0x73f7...d58
0.02112215 ETH0.000018090.66094287
Transfer241769102026-01-06 16:44:3530 mins ago1767717875IN
Fee Recipient: 0x73f7...d58
0.02474314 ETH0.000014940.5459862
Transfer241769072026-01-06 16:43:5931 mins ago1767717839IN
Fee Recipient: 0x73f7...d58
0.21481466 ETH0.000014490.52949697
Transfer241768782026-01-06 16:38:1137 mins ago1767717491IN
Fee Recipient: 0x73f7...d58
0.0155542 ETH0.000015150.55370117
Transfer241768472026-01-06 16:31:5943 mins ago1767717119IN
Fee Recipient: 0x73f7...d58
0.01139018 ETH0.000017730.64775723
Transfer241767852026-01-06 16:19:2356 mins ago1767716363IN
Fee Recipient: 0x73f7...d58
0.42182825 ETH0.000010860.39699007
Transfer241767652026-01-06 16:15:231 hr ago1767716123IN
Fee Recipient: 0x73f7...d58
0.01696703 ETH0.000013490.49277477
Transfer241767012026-01-06 16:02:351 hr ago1767715355IN
Fee Recipient: 0x73f7...d58
0.01196237 ETH0.000017250.63016368
Transfer241766962026-01-06 16:01:351 hr ago1767715295IN
Fee Recipient: 0x73f7...d58
0.0113435 ETH0.000018980.69332784
Transfer241766742026-01-06 15:57:111 hr ago1767715031IN
Fee Recipient: 0x73f7...d58
0.01445043 ETH0.000017630.6441414
Transfer241766662026-01-06 15:55:351 hr ago1767714935IN
Fee Recipient: 0x73f7...d58
0.01551065 ETH0.000015850.57922445
Transfer241766482026-01-06 15:51:591 hr ago1767714719IN
Fee Recipient: 0x73f7...d58
0.01813699 ETH0.000016050.58630265
Transfer241765432026-01-06 15:30:591 hr ago1767713459IN
Fee Recipient: 0x73f7...d58
0.0175462 ETH0.000014630.53450323
Transfer241765062026-01-06 15:23:231 hr ago1767713003IN
Fee Recipient: 0x73f7...d58
0.01843604 ETH0.000017340.63342345
Transfer241763402026-01-06 14:50:112 hrs ago1767711011IN
Fee Recipient: 0x73f7...d58
0.03113569 ETH0.000018640.68115765
Transfer241763202026-01-06 14:46:112 hrs ago1767710771IN
Fee Recipient: 0x73f7...d58
0.01401309 ETH0.000022630.82686187
Transfer241762742026-01-06 14:36:592 hrs ago1767710219IN
Fee Recipient: 0x73f7...d58
0.03647042 ETH0.000027721.01257085
Transfer241762582026-01-06 14:33:472 hrs ago1767710027IN
Fee Recipient: 0x73f7...d58
0.02464143 ETH0.000033151.21112166
Transfer241762062026-01-06 14:23:232 hrs ago1767709403IN
Fee Recipient: 0x73f7...d58
0.01826688 ETH0.000024320.88838467
Transfer241761922026-01-06 14:20:352 hrs ago1767709235IN
Fee Recipient: 0x73f7...d58
0.02447506 ETH0.000019320.70596027
Transfer241761402026-01-06 14:10:113 hrs ago1767708611IN
Fee Recipient: 0x73f7...d58
0.0231993 ETH0.000014820.5414496
Transfer241761302026-01-06 14:08:113 hrs ago1767708491IN
Fee Recipient: 0x73f7...d58
0.02862176 ETH0.000014420.52678119
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer241770592026-01-06 17:14:3556 secs ago1767719675
Fee Recipient: 0x73f7...d58
0.02166729 ETH
Transfer241768732026-01-06 16:37:1138 mins ago1767717431
Fee Recipient: 0x73f7...d58
0.02047149 ETH
Transfer241768432026-01-06 16:31:1144 mins ago1767717071
Fee Recipient: 0x73f7...d58
0.01761323 ETH
Transfer241768302026-01-06 16:28:2347 mins ago1767716903
Fee Recipient: 0x73f7...d58
0.0147873 ETH
Transfer241767732026-01-06 16:16:5958 mins ago1767716219
Fee Recipient: 0x73f7...d58
0.0347789 ETH
Transfer241767672026-01-06 16:15:471 hr ago1767716147
Fee Recipient: 0x73f7...d58
0.01477574 ETH
Transfer241766292026-01-06 15:48:111 hr ago1767714491
Fee Recipient: 0x73f7...d58
0.01958395 ETH
Transfer241765822026-01-06 15:38:471 hr ago1767713927
Fee Recipient: 0x73f7...d58
0.01764201 ETH
Transfer241765572026-01-06 15:33:471 hr ago1767713627
Fee Recipient: 0x73f7...d58
0.02164223 ETH
Transfer241765472026-01-06 15:31:471 hr ago1767713507
Fee Recipient: 0x73f7...d58
0.02048958 ETH
Transfer241765252026-01-06 15:27:231 hr ago1767713243
Fee Recipient: 0x73f7...d58
0.02105529 ETH
Transfer241764262026-01-06 15:07:232 hrs ago1767712043
Fee Recipient: 0x73f7...d58
0.01700077 ETH
Transfer241764182026-01-06 15:05:472 hrs ago1767711947
Fee Recipient: 0x73f7...d58
0.0387185 ETH
Transfer241763722026-01-06 14:56:352 hrs ago1767711395
Fee Recipient: 0x73f7...d58
0.02041777 ETH
Transfer241763602026-01-06 14:54:112 hrs ago1767711251
Fee Recipient: 0x73f7...d58
0.01930527 ETH
Transfer241763052026-01-06 14:43:112 hrs ago1767710591
Fee Recipient: 0x73f7...d58
0.02176956 ETH
Transfer241762992026-01-06 14:41:592 hrs ago1767710519
Fee Recipient: 0x73f7...d58
0.01670627 ETH
Transfer241762282026-01-06 14:27:472 hrs ago1767709667
Fee Recipient: 0x73f7...d58
0.01839047 ETH
Transfer241761902026-01-06 14:20:112 hrs ago1767709211
Fee Recipient: 0x73f7...d58
0.02501655 ETH
Transfer241761872026-01-06 14:19:352 hrs ago1767709175
Fee Recipient: 0x73f7...d58
0.02445032 ETH
Transfer241760982026-01-06 14:01:353 hrs ago1767708095
Fee Recipient: 0x73f7...d58
0.01591233 ETH
Transfer241760772026-01-06 13:57:233 hrs ago1767707843
Fee Recipient: 0x73f7...d58
0.01418641 ETH
Transfer241760452026-01-06 13:50:593 hrs ago1767707459
Fee Recipient: 0x73f7...d58
0.01535067 ETH
Transfer241760192026-01-06 13:45:473 hrs ago1767707147
Fee Recipient: 0x73f7...d58
0.01451583 ETH
Transfer241760122026-01-06 13:44:233 hrs ago1767707063
Fee Recipient: 0x73f7...d58
0.01395025 ETH
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions
Produced Blocks

 Latest 25 blocks (From a total of 4,508 blocks with 29.55 Ether produced)

Block Transaction Difficulty Gas Used Reward
241767642026-01-06 16:15:111 hr ago17677161111540.00 TH14,989,353 (24.98%)
0.006133729374017673 ETH
241760522026-01-06 13:52:233 hrs ago17677075431480.00 TH9,914,448 (16.52%)
0.007506256822060645 ETH
241753642026-01-06 11:33:475 hrs ago17676992271160.00 TH6,420,575 (10.70%)
0.002501175061690321 ETH
241743682026-01-06 8:13:599 hrs ago1767687239750.00 TH7,135,414 (11.90%)
0.005022794232675871 ETH
241735422026-01-06 5:28:2311 hrs ago1767677303790.00 TH5,292,866 (8.82%)
0.001914375054720645 ETH
241732832026-01-06 4:36:3512 hrs ago17676741951330.00 TH6,722,466 (11.20%)
0.003789362858011989 ETH
241697862026-01-05 16:54:2324 hrs ago17676320631080.00 TH5,391,507 (8.99%)
0.003422761594769748 ETH
241654232026-01-05 2:17:3538 hrs ago17675794552510.00 TH15,858,476 (26.43%)
0.001956721182736858 ETH
241639532026-01-04 21:21:4743 hrs ago1767561707700.00 TH3,940,500 (6.57%)
0.001959145282533389 ETH
241618372026-01-04 14:16:232 days ago1767536183710.00 TH5,241,792 (8.74%)
0.001379191406480353 ETH
241613922026-01-04 12:47:112 days ago17675308311120.00 TH10,226,223 (17.04%)
0.002740693051539585 ETH
241606392026-01-04 10:16:112 days ago1767521771580.00 TH2,517,458 (4.20%)
0.001783236499208152 ETH
241598422026-01-04 7:35:592 days ago1767512159560.00 TH2,639,263 (4.40%)
0.001205917153164157 ETH
241587832026-01-04 4:03:472 days ago17674994271350.00 TH14,354,494 (23.92%)
0.000919539311499465 ETH
241577572026-01-04 0:38:232 days ago17674871031550.00 TH19,734,282 (32.89%)
0.00382227917755303 ETH
241560792026-01-03 19:01:232 days ago1767466883740.00 TH4,123,779 (6.87%)
0.002489918649618626 ETH
241560572026-01-03 18:56:592 days ago1767466619570.00 TH3,891,507 (6.49%)
0.001752626842996274 ETH
241557032026-01-03 17:45:592 days ago17674623591060.00 TH7,606,259 (12.68%)
0.001664912521264258 ETH
241549242026-01-03 15:09:353 days ago17674529752120.00 TH9,797,885 (16.33%)
0.003260141351995415 ETH
241533112026-01-03 9:46:113 days ago1767433571890.00 TH5,526,174 (9.21%)
0.001716797368869819 ETH
241532062026-01-03 9:24:593 days ago1767432299890.00 TH4,710,741 (7.85%)
0.001458415078434467 ETH
241528442026-01-03 8:12:113 days ago1767427931710.00 TH5,911,354 (9.85%)
0.001519143187980744 ETH
241523662026-01-03 6:35:473 days ago1767422147710.00 TH51,935,058 (86.56%)
0.000906220192767954 ETH
241519962026-01-03 5:21:353 days ago17674176951060.00 TH6,307,160 (10.51%)
0.00304165969243433 ETH
241500432026-01-02 22:49:233 days ago1767394163740.00 TH3,609,878 (6.02%)
0.002136918572349548 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
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.