ETH Price: $1,930.25 (-2.18%)
 

Overview

ETH Balance

0.034202123716661242 ETH

Eth Value

$66.02 (@ $1,930.25/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

Transaction Hash
Method
Block
From
To
0x1fb36a28c18a7fbcc6ede0381c9aca548683a505912fe420c842fdb71271ee7d 0x810c705b(pending)2026-02-19 15:47:021 hr ago1771516022IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x55f68471964bdb593ef9dd5d5ca37e4e2c7efd2863fa81a93d36503732497e4b 0x810c705b(pending)2026-02-19 12:03:215 hrs ago1771502601IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xf951da96e07d90369ac08b5e6e860a957ce4c852f4b13e2cabb523f853c26832 0x810c705b(pending)2026-02-19 11:20:345 hrs ago1771500034IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x301170ac3f1516f09872a31f5dbe45a05fa1651f129ee7033dd959466e75727b 0x810c705b(pending)2026-02-19 11:20:345 hrs ago1771500034IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x5912dc44c90c7c6d6767cb25afa9ddb6701410835242f47f9cb4a0b5577a7d2f 0x810c705b(pending)2026-02-19 10:36:126 hrs ago1771497372IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xe04cb7c47392af791f6c0681e7c62b764391017d44ad0b9d4bcc1a8ea4d8480c 0x810c705b(pending)2026-02-19 10:14:377 hrs ago1771496077IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x1cd9f93556582c0f43de268321e9f544a7cecb72ae052c0bcde7cca4873ec0dc 0x810c705b(pending)2026-02-19 9:55:317 hrs ago1771494931IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x83a9fbd18b77eca14ff47a9c6fdf89e7b60b29cd6594ffe5fe252373a14ee1a1 0x810c705b(pending)2026-02-19 9:55:317 hrs ago1771494931IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x0ce8cb3c5479e136bfd8d05fe2df508586e0b661cc0c94e8a624137197cc6138 0x810c705b(pending)2026-02-19 6:53:5810 hrs ago1771484038IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x525f1d232f3a1f817d07202f218fd966d01895eae69edddb152af3de63172e4c 0x810c705b(pending)2026-02-19 6:50:2710 hrs ago1771483827IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xdab9f2fcfb9270134bf2bfdea2a3631e9107eaf3d328c7d3a37c36a76fa74533 0x810c705b(pending)2026-02-19 6:47:2810 hrs ago1771483648IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x6adf77fd59746615b62a594eaf43276128eb4c2d6b9f92fccebeab3619f8df99 0x810c705b(pending)2026-02-19 5:45:5211 hrs ago1771479952IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xcf48d25dee84eb4c059c6cf67239f96066e000f1c8a8cb58685e44526da37e55 0x810c705b(pending)2026-02-19 5:42:4811 hrs ago1771479768IN
Binance: DEX Router
0.00002 ETH(Pending)(Pending)
0x03a9efcd04413bb9642f6cbecf584b3cca65935545884e746f8ff7cf50a73605 0x810c705b(pending)2026-02-19 5:36:0511 hrs ago1771479365IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xa8d022386b888a591648d3288330e3d5ee295a15c792396acaea36b920fc72ef 0x810c705b(pending)2026-02-19 5:34:0311 hrs ago1771479243IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x3ff0f66106c3a81a95ffa53c4ff4ede0bac57a68583acf5eb1e1bb57ce1228bf 0x810c705b(pending)2026-02-19 5:23:0411 hrs ago1771478584IN
Binance: DEX Router
0.000114 ETH(Pending)(Pending)
0xc67ded6b22f1d0e9a416257b04a1075f2f8484f3b0654b1e5cb8f5e879f24ca4 0x810c705b(pending)2026-02-19 5:00:1512 hrs ago1771477215IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xb5251ac6439809d895241d069df174b2a6b5398afc28ad4299ad098f1e034a1a Call Rango(pending)2026-02-19 4:56:1612 hrs ago1771476976IN
Binance: DEX Router
0.0001361768 ETH(Pending)(Pending)
0x06e14bf5636ff91fe1787da08bc5e1918698f7c910f425629e4102632e983cd0 0x810c705b(pending)2026-02-19 4:56:1612 hrs ago1771476976IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0x2ba924ce5fe3fe2313a76477ecf67eb2a01af86cb884cc2e3a9ad45153ccbc88 Call Li Fi(pending)2026-02-19 4:54:3212 hrs ago1771476872IN
Binance: DEX Router
0.0000112956 ETH(Pending)(Pending)
0xdbca9835ee3b8ab82f7fa75cf38698de8bd64620d5a6714bc620a1c5add9f7e5 Call One Inch(pending)2026-02-19 4:44:3912 hrs ago1771476279IN
Binance: DEX Router
0.00022 ETH(Pending)(Pending)
0x544bdc9237321a3e72490384b6e44caa893124d430efc8085e8e2910f14045ca 0x810c705b(pending)2026-02-19 4:39:3812 hrs ago1771475978IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xf2cda711920a42f1d2b6595ffb1faf1fbc349c358ca48d3d45553716e3715aba 0x810c705b(pending)2026-02-19 4:34:3712 hrs ago1771475677IN
Binance: DEX Router
0 ETH(Pending)(Pending)
0xce2c8db1b4c110189254cfd342eb8dd5a201a1aa912107400fd2d0443ee0c6e8 0x810c705b(pending)2026-02-19 4:33:5412 hrs ago1771475634IN
Binance: DEX Router
0.00014 ETH(Pending)(Pending)
0x89b3955d72f3216dfd30f0ac6bef55dd9cf9be971addceed3f4fcd027a29cf18 0x810c705b(pending)2026-02-19 4:30:4412 hrs ago1771475444IN
Binance: DEX Router
0 ETH(Pending)(Pending)
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x47ee97ff244923212026-02-19 17:15:1122 secs ago1771521311
Binance: DEX Router
0.0016 ETH
Swap Tokens Sing...244923212026-02-19 17:15:1122 secs ago1771521311
Binance: DEX Router
0.0006169 ETH
Transfer244923212026-02-19 17:15:1122 secs ago1771521311
Binance: DEX Router
0.0000031 ETH
Swap Tokens Sing...244923172026-02-19 17:14:231 min ago1771521263
Binance: DEX Router
0.002985 ETH
Transfer244923172026-02-19 17:14:231 min ago1771521263
Binance: DEX Router
0.000015 ETH
Swap Tokens Sing...244923142026-02-19 17:13:471 min ago1771521227
Binance: DEX Router
0.00419339 ETH
Transfer244923142026-02-19 17:13:471 min ago1771521227
Binance: DEX Router
0.00002107 ETH
0x47ee97ff244923112026-02-19 17:13:112 mins ago1771521191
Binance: DEX Router
0.22027768 ETH
Transfer244923112026-02-19 17:13:112 mins ago1771521191
Binance: DEX Router
0.00110692 ETH
Transfer244923092026-02-19 17:12:472 mins ago1771521167
Binance: DEX Router
0.00248306 ETH
Transfer244923092026-02-19 17:12:472 mins ago1771521167
Binance: DEX Router
0.00248306 ETH
Start Bridge Tok...244923072026-02-19 17:12:233 mins ago1771521143
Binance: DEX Router
0.333 ETH
Swap Tokens Sing...244923002026-02-19 17:10:594 mins ago1771521059
Binance: DEX Router
0.00398 ETH
Transfer244923002026-02-19 17:10:594 mins ago1771521059
Binance: DEX Router
0.00002 ETH
0x47ee97ff244922972026-02-19 17:10:235 mins ago1771521023
Binance: DEX Router
0.0029 ETH
Start Bridge Tok...244922962026-02-19 17:10:115 mins ago1771521011
Binance: DEX Router
0.009 ETH
Start Bridge Tok...244922842026-02-19 17:07:357 mins ago1771520855
Binance: DEX Router
0.025 ETH
Swap Tokens Sing...244922812026-02-19 17:06:598 mins ago1771520819
Binance: DEX Router
0.47 ETH
Transfer244922612026-02-19 17:02:5912 mins ago1771520579
Binance: DEX Router
0.10503437 ETH
Transfer244922612026-02-19 17:02:5912 mins ago1771520579
Binance: DEX Router
0.00052781 ETH
Transfer244922612026-02-19 17:02:5912 mins ago1771520579
Binance: DEX Router
0.10556219 ETH
Transfer244922522026-02-19 17:00:5914 mins ago1771520459
Binance: DEX Router
0.00033192 ETH
Transfer244922522026-02-19 17:00:5914 mins ago1771520459
Binance: DEX Router
0.00000166 ETH
Transfer244922522026-02-19 17:00:5914 mins ago1771520459
Binance: DEX Router
0.00033358 ETH
0x47ee97ff244922262026-02-19 16:55:4719 mins ago1771520147
Binance: DEX Router
0.00033418 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
Diamond

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import {LibDiamond} from "./Libraries/LibDiamond.sol";
import {IDiamondCut} from "./Interfaces/IDiamondCut.sol";
import {LibUtil} from "./Libraries/LibUtil.sol";

contract Diamond {
    constructor(address _contractOwner, address _diamondCutFacet) payable {
        LibDiamond.setContractOwner(_contractOwner);

        // Add the diamondCut external function from the diamondCutFacet
        IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1);
        bytes4[] memory functionSelectors = new bytes4[](1);
        functionSelectors[0] = IDiamondCut.diamondCut.selector;
        cut[0] = IDiamondCut.FacetCut({
            facetAddress: _diamondCutFacet,
            action: IDiamondCut.FacetCutAction.Add,
            functionSelectors: functionSelectors
        });
        LibDiamond.diamondCut(cut, address(0), "");
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    // solhint-disable-next-line no-complex-fallback
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;

        // get diamond storage
        // solhint-disable-next-line no-inline-assembly
        assembly {
            ds.slot := position
        }

        // get facet from function selector
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;

        if (facet == address(0)) {
            revert LibDiamond.FunctionDoesNotExist();
        }

        // Execute external function from facet using delegatecall and return any value.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // copy function selector and any arguments
            calldatacopy(0, 0, calldatasize())
            // execute function call using the facet
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            // get any return value
            returndatacopy(0, 0, returndatasize())
            // return any return value or error back to the caller
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    // Able to receive ether
    // solhint-disable-next-line no-empty-blocks
    receive() external payable {}
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import {IDiamondCut} from "../Interfaces/IDiamondCut.sol";
import {LibUtil} from "../Libraries/LibUtil.sol";
import {OnlyContractOwner} from "../Errors/GenericErrors.sol";

/// Implementation of EIP-2535 Diamond Standard
/// https://eips.ethereum.org/EIPS/eip-2535
library LibDiamond {
    bytes32 internal constant DIAMOND_STORAGE_POSITION = keccak256("com.binance.w3w.diamond.storage");

    // Diamond specific errors
    error IncorrectFacetCutAction();
    error NoSelectorsInFace();
    error FunctionAlreadyExists();
    error FacetAddressIsZero();
    error FacetAddressIsNotZero();
    error FacetContainsNoCode();
    error FunctionDoesNotExist();
    error FunctionIsImmutable();
    error InitZeroButCalldataNotEmpty();
    error CalldataEmptyButInitNotZero();
    error InitReverted();
    // ----------------

    struct FacetAddressAndPosition {
        address facetAddress;
        uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint256 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
    }

    function diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            ds.slot := position
        }
    }

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

    function setContractOwner(address _newOwner) internal {
        DiamondStorage storage ds = diamondStorage();
        address previousOwner = ds.contractOwner;
        ds.contractOwner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = diamondStorage().contractOwner;
    }

    function enforceIsContractOwner() internal view {
        if (msg.sender != diamondStorage().contractOwner) {
            revert OnlyContractOwner();
        }
    }

    event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);

    // Internal function version of diamondCut
    function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal {
        for (uint256 facetIndex; facetIndex < _diamondCut.length;) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else {
                revert IncorrectFacetCutAction();
            }
            unchecked {
                ++facetIndex;
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFace();
        }
        DiamondStorage storage ds = diamondStorage();
        if (LibUtil.isZeroAddress(_facetAddress)) {
            revert FacetAddressIsZero();
        }
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length;) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            if (!LibUtil.isZeroAddress(oldFacetAddress)) {
                revert FunctionAlreadyExists();
            }
            addFunction(ds, selector, selectorPosition, _facetAddress);
            unchecked {
                ++selectorPosition;
                ++selectorIndex;
            }
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFace();
        }
        DiamondStorage storage ds = diamondStorage();
        if (LibUtil.isZeroAddress(_facetAddress)) {
            revert FacetAddressIsZero();
        }
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length;) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            if (oldFacetAddress == _facetAddress) {
                revert FunctionAlreadyExists();
            }
            removeFunction(ds, oldFacetAddress, selector);
            addFunction(ds, selector, selectorPosition, _facetAddress);
            unchecked {
                ++selectorPosition;
                ++selectorIndex;
            }
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFace();
        }
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        if (!LibUtil.isZeroAddress(_facetAddress)) {
            revert FacetAddressIsNotZero();
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length;) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(ds, oldFacetAddress, selector);
            unchecked {
                ++selectorIndex;
            }
        }
    }

    function addFacet(DiamondStorage storage ds, address _facetAddress) internal {
        enforceHasContractCode(_facetAddress);
        ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;
        ds.facetAddresses.push(_facetAddress);
    }

    function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress)
        internal
    {
        ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);
        ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;
    }

    function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal {
        if (LibUtil.isZeroAddress(_facetAddress)) {
            revert FunctionDoesNotExist();
        }
        // an immutable function is a function defined directly in a diamond
        if (_facetAddress == address(this)) {
            revert FunctionIsImmutable();
        }
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
            ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);
        }
        // delete the last selector
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;
            }
            ds.facetAddresses.pop();
            delete ds
                .facetFunctionSelectors[_facetAddress]
                .facetAddressPosition;
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata) internal {
        if (LibUtil.isZeroAddress(_init)) {
            if (_calldata.length != 0) {
                revert InitZeroButCalldataNotEmpty();
            }
        } else {
            if (_calldata.length == 0) {
                revert CalldataEmptyButInitNotZero();
            }
            if (_init != address(this)) {
                enforceHasContractCode(_init);
            }
            // solhint-disable-next-line avoid-low-level-calls
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (!success) {
                if (error.length > 0) {
                    // bubble up the error
                    revert(string(error));
                } else {
                    revert InitReverted();
                }
            }
        }
    }

    function enforceHasContractCode(address _contract) internal view {
        uint256 contractSize;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            contractSize := extcodesize(_contract)
        }
        if (contractSize == 0) {
            revert FacetContainsNoCode();
        }
    }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

interface IDiamondCut {
    // Add=0, Replace=1, Remove=2
    enum FacetCutAction {
        Add,
        Replace,
        Remove
    }

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external;

    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import "./LibBytes.sol";

library LibUtil {
    using LibBytes for bytes;

    function getRevertMsg(bytes memory _res) internal pure returns (string memory) {
        // If the _res length is less than 68, then the transaction failed silently (without a revert message)
        if (_res.length < 68) return "Transaction reverted silently";
        bytes memory revertData = _res.slice(4, _res.length - 4); // Remove the selector which is the first 4 bytes
        return abi.decode(revertData, (string)); // All that remains is the revert string
    }

    /// @notice Determines whether the given address is the zero address
    /// @param addr The address to verify
    /// @return Boolean indicating if the address is the zero address
    function isZeroAddress(address addr) internal pure returns (bool) {
        return addr == address(0);
    }
}

File 5 of 6 : GenericErrors.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

error OnlyContractOwner();

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

library LibBytes {
    // solhint-disable no-inline-assembly

    // LibBytes specific errors
    error SliceOverflow();
    error SliceOutOfBounds();
    error AddressOutOfBounds();

    bytes16 private constant _SYMBOLS = "0123456789abcdef";

    // -------------------------

    function slice(bytes memory _bytes, uint256 _start, uint256 _length) internal pure returns (bytes memory) {
        unchecked {
            if (_length + 31 < _length) revert SliceOverflow();
            if (_bytes.length < _start + _length) revert SliceOutOfBounds();
            if (_start + _length < _start) revert SliceOverflow();
        }

        bytes memory tempBytes;

        assembly {
            switch iszero(_length)
            case 0 {
                // Get a location of some free memory and store it in tempBytes as
                // Solidity does for memory variables.
                tempBytes := mload(0x40)

                // The first word of the slice result is potentially a partial
                // word read from the original array. To read it, we calculate
                // the length of that partial word and start copying that many
                // bytes into the array. The first word we copy will start with
                // data we don't care about, but the last `lengthmod` bytes will
                // land at the beginning of the contents of the new array. When
                // we're done copying, we overwrite the full first word with
                // the actual length of the slice.
                let lengthmod := and(_length, 31)

                // The multiplication in the next line is necessary
                // because when slicing multiples of 32 bytes (lengthmod == 0)
                // the following copy loop was copying the origin's length
                // and then ending prematurely not copying everything it should.
                let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))
                let end := add(mc, _length)

                for {
                    // The multiplication in the next line has the same exact purpose
                    // as the one above.
                    let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)
                } lt(mc, end) {
                    mc := add(mc, 0x20)
                    cc := add(cc, 0x20)
                } { mstore(mc, mload(cc)) }

                mstore(tempBytes, _length)

                //update free-memory pointer
                //allocating the array padded to 32 bytes like the compiler does now
                mstore(0x40, and(add(mc, 31), not(31)))
            }
            //if we want a zero-length slice let's just return a zero-length array
            default {
                tempBytes := mload(0x40)
                //zero out the 32 bytes slice we are about to return
                //we need to do it because Solidity does not garbage collect
                mstore(tempBytes, 0)

                mstore(0x40, add(tempBytes, 0x20))
            }
        }

        return tempBytes;
    }

    function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {
        if (_bytes.length < _start + 20) {
            revert AddressOutOfBounds();
        }
        address tempAddress;

        assembly {
            tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)
        }

        return tempAddress;
    }

    /// Copied from OpenZeppelin's `Strings.sol` utility library.
    /// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/8335676b0e99944eef6a742e16dcd9ff6e68e609/contracts/utils/Strings.sol
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/",
    "@1inch/solidity-utils/contracts/=lib/solidity-utils/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@1inch/limit-order-protocol-contract/contracts/=lib/limit-order-protocol/contracts/",
    "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "limit-order-protocol/=lib/limit-order-protocol/contracts/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solidity-utils/=lib/solidity-utils/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "shanghai",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"CalldataEmptyButInitNotZero","type":"error"},{"inputs":[],"name":"FacetAddressIsNotZero","type":"error"},{"inputs":[],"name":"FacetAddressIsZero","type":"error"},{"inputs":[],"name":"FacetContainsNoCode","type":"error"},{"inputs":[],"name":"FunctionAlreadyExists","type":"error"},{"inputs":[],"name":"FunctionDoesNotExist","type":"error"},{"inputs":[],"name":"FunctionIsImmutable","type":"error"},{"inputs":[],"name":"IncorrectFacetCutAction","type":"error"},{"inputs":[],"name":"InitReverted","type":"error"},{"inputs":[],"name":"InitZeroButCalldataNotEmpty","type":"error"},{"inputs":[],"name":"NoSelectorsInFace","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

60806001600160401b03601f610b5938819003918201601f1916840191838311858410176105b75780859260409485528339810103126105f15761004e602061004784610633565b9301610633565b7f5e12654f390e4153c4f63b3dfcc122cf7876a5cdfb496dccf7284c10517a35c980546001600160a01b039485166001600160a01b03198216811790925591939091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36100bd610614565b91600183525f5b602081106105cb57506100d5610614565b60018152602036818301376307e4c70760e21b6100f182610647565b526100fa6105f5565b6001600160a01b0390921682525f6020830152604082015261011b83610647565b5261012582610647565b506040519060208201908111828210176105b7576040525f808252825b805182101561045c5760206101578383610668565b5101516003811015610448578061028f57506001600160a01b0361017b8383610668565b515116604061018a8484610668565b51015180511561027d57811561026b576001600160a01b0382165f9081525f80516020610b3983398151915260205260409020546001600160601b039390841690811561025d575b5f915b8351831015610249576001600160e01b03196101f18486610668565b51165f8181525f80516020610af983398151915260205260409020549091906001600160a01b03166102375760018161022d888a948496610994565b01169201916101d5565b60405163a023275d60e01b8152600490fd5b50959492505050600191505b019091610142565b6102668461091b565b6101d2565b604051636347641d60e11b8152600490fd5b6040516307bc559560e41b8152600490fd5b6001810361038f57506001600160a01b036102aa8383610668565b5151169260406102ba8484610668565b51015180511561027d57841561026b576001600160a01b0385165f9081525f80516020610b3983398151915260205260409020546001600160601b0393908416908115610381575b5f915b8351831015610372576001600160e01b03196103218486610668565b51165f8181525f80516020610af983398151915260205260409020546001600160a01b03169089821461023757826103688b6001958461036388968e986106c0565b610994565b0116920191610305565b50955050509160019150610255565b61038a8761091b565b610302565b600203610436576001600160a01b036103a88383610668565b5151169060406103b88483610668565b5101519182511561027d57610424575f5b8251811015610418576001906104126001600160e01b03196103eb8387610668565b5116805f525f80516020610af9833981519152602052838060a01b0360405f2054166106c0565b016103c9565b50929160019150610255565b604051633ce4ef9160e11b8152600490fd5b60405163e548e6b560e01b8152600490fd5b634e487b7160e01b5f52602160045260245ffd5b905060405190606082016060835281518091526080830190602060808260051b8601019301915f905b82821061052157505050505f6020830152818103604083015282518082525f5b81811061050c57508282825f602080957f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6739897010152601f801991011601030190a1516104fa5760405160b49081610a458239f35b6040516304c08b4360e51b8152600490fd5b806020809287010151828286010152016104a5565b858503607f19018152835180516001600160a01b03168652602081015194959394929391929060038210156104485760409160208401520151906060604082015260206080835192836060820152019201905f905b80821061059457505050602080600192960192019201909291610485565b82516001600160e01b031916845260209384019390920191600190910190610576565b634e487b7160e01b5f52604160045260245ffd5b6020906105d66105f5565b5f81525f8382015260606040820152828287010152016100c4565b5f80fd5b60405190606082016001600160401b038111838210176105b757604052565b60408051919082016001600160401b038111838210176105b757604052565b51906001600160a01b03821682036105f157565b8051156106545760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156106545760209160051b010190565b9190918054831015610654575f52601c60205f208360031c019260021b1690565b5f80516020610b198339815191528054821015610654575f5260205f2001905f90565b6001600160a01b03908116918215610909573083146108f75763ffffffff60e01b809116805f525f80516020610af983398151915293602090858252604093845f205460a01c96825f525f80516020610b3983398151915294858552865f2054925f19998a850194851161085857889187898888850361086c575b9450505050505f52858552865f20805480156107f4578a019061075e828261067c565b63ffffffff82549160031b1b19169055555f5283525f8581205515610786575b505050505050565b5f80516020610b1983398151915294855487810190811161085857825f52848452816001875f20015491808303610808575b50505085549586156107f4575f9760019701916107d48361069d565b909182549160031b1b1916905555855252822001555f808080808061077e565b634e487b7160e01b5f52603160045260245ffd5b6108119061069d565b90549060031b1c16610844816108268461069d565b90919060018060a01b038084549260031b9316831b921b1916179055565b5f528484526001865f2001555f81816107b8565b634e487b7160e01b5f52601160045260245ffd5b6108a1856108ec976108be94845f5280875261088a8d835f2061067c565b90549060031b1c60e01b9687955f52525f2061067c565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b165f90815284885289902080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b865f8087898861073b565b60405163c3c5ec3760e01b8152600490fd5b604051631535ac5f60e31b8152600490fd5b803b15610983575f80516020610b1983398151915280546001600160a01b0383165f9081525f80516020610b39833981519152602052604090206001018190559190680100000000000000008310156105b757826108269160016109819501905561069d565b565b6040516271a80360e91b8152600490fd5b6001600160e01b031981165f8181525f80516020610af98339815191526020819052604090912080546001600160a01b031660a09590951b6001600160a01b0319169490941790935590926001600160a01b03165f8181525f80516020610b39833981519152602052604090208054919490680100000000000000008310156105b757826108a1916001610a2a9501815561067c565b5f5260205260405f209060018060a01b031982541617905556fe60806040523615607c575f80356001600160e01b03191681527f5e12654f390e4153c4f63b3dfcc122cf7876a5cdfb496dccf7284c10517a35c560205260409020546001600160a01b03168015606b575f8091368280378136915af43d5f803e156067573d5ff35b3d5ffd5b631535ac5f60e31b60805260046080fd5b00fea2646970667358221220930a620c99a7318ca205c3fd7de61f4589313a6f74e2a079ea59f03d58767f3464736f6c634300081700335e12654f390e4153c4f63b3dfcc122cf7876a5cdfb496dccf7284c10517a35c55e12654f390e4153c4f63b3dfcc122cf7876a5cdfb496dccf7284c10517a35c75e12654f390e4153c4f63b3dfcc122cf7876a5cdfb496dccf7284c10517a35c6000000000000000000000000ee7b429ea01f76102f053213463d4e95d5d24ae800000000000000000000000057fe1cbb349c2bf575ac201c36a61a9d821e5e95

Deployed Bytecode

0x60806040523615607c575f80356001600160e01b03191681527f5e12654f390e4153c4f63b3dfcc122cf7876a5cdfb496dccf7284c10517a35c560205260409020546001600160a01b03168015606b575f8091368280378136915af43d5f803e156067573d5ff35b3d5ffd5b631535ac5f60e31b60805260046080fd5b00fea2646970667358221220930a620c99a7318ca205c3fd7de61f4589313a6f74e2a079ea59f03d58767f3464736f6c63430008170033

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

000000000000000000000000ee7b429ea01f76102f053213463d4e95d5d24ae800000000000000000000000057fe1cbb349c2bf575ac201c36a61a9d821e5e95

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0xEe7b429Ea01F76102f053213463D4e95D5D24AE8
Arg [1] : _diamondCutFacet (address): 0x57FE1CBB349C2bf575Ac201C36A61A9d821e5e95

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ee7b429ea01f76102f053213463d4e95d5d24ae8
Arg [1] : 00000000000000000000000057fe1cbb349c2bf575ac201c36a61a9d821e5e95


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
0xb300000b72DEAEb607a12d5f54773D1C19c7028d
Net Worth in USD
$126,772.36

Net Worth in ETH
65.676712

Token Allocations
BSC-USD 48.52%
USDC 36.74%
WBNB 6.94%
Others 7.80%
Chain Token Portfolio % Price Amount Value
BSC48.52%$0.99968661,527.3731$61,508.05
BSC33.89%$0.9995842,977.6209$42,959.57
BSC6.94%$599.9714.6716$8,802.56
BSC3.92%$0.9995364,977.0699$4,974.76
BSC0.65%$0.03441524,072.7898$828.47
BSC0.52%$602.311.0979$661.29
BSC0.19%$1,920.980.1263$242.55
BSC0.13%$0.0094,401,428,771.1588$0.00
BSC0.06%$66,296.280.00116813$77.44
BSC0.05%$0.689173100.1848$69.04
BSC0.05%$0.8222781.4721$66.99
BSC0.04%$0.0000411,226,958.5354$49.96
BSC0.03%$0.0021,886,032,986.5053$0.00
BSC0.02%$125.683$25.68
BSC0.02%$1.1921$24.89
BSC0.02%$122.7491$22.75
BSC0.01%<$0.000001451,354,102,424.4052$16.07
BSC0.01%$0.99981813.9607$13.96
BSC<0.01%$0.70155715.9896$11.22
BSC<0.01%$805.520.00861924$6.94
BSC<0.01%$0.017719305.4963$5.41
BSC<0.01%$0.6424276.5847$4.23
BSC<0.01%$0.007495445.4959$3.34
BSC<0.01%$0.09680330.6376$2.97
BSC<0.01%$0.02817695.4012$2.69
BSC<0.01%<$0.000001413,931,575.9729$2.23
BSC<0.01%$1.251.2526$1.57
BSC<0.01%$76,2840.00001805$1.38
BSC<0.01%$0.0003084,472.318$1.38
BSC<0.01%$4,947.270.00026197$1.3
BSC<0.01%$0.0000011,018,393.5185$1.12
BSC<0.01%<$0.0000014,632,121.6434$1.05
BSC<0.01%$0.0000011,813,789.832$0.9413
BSC<0.01%<$0.00000122,079,471.6528$0.9006
BSC<0.01%$0.000898968.6964$0.8698
BSC<0.01%$0.00213400$0.8518
BSC<0.01%$0.000001691,626.9356$0.8283
BSC<0.01%$0.01347354.2746$0.7312
BSC<0.01%$0.002013300$0.6037
BSC<0.01%$0.02619223.0051$0.6025
BSC<0.01%<$0.0000019,028,475.6406$0.5004
BSC<0.01%$0.004708100$0.4708
BSC<0.01%$0.00885946.2421$0.4096
BSC<0.01%$0.00000485,872.8161$0.3572
BSC<0.01%$0.00762230.0095$0.2287
BSC<0.01%$0.01672313.4072$0.2242
BSC<0.01%$0.1815251.2268$0.2226
BSC<0.01%<$0.000001190,180,650.0155$0.2082
BSC<0.01%$0.00000633,333.7938$0.2052
BSC<0.01%$0.000036,018.8309$0.1779
BSC<0.01%<$0.0000012,800,107.4715$0.1558
BSC<0.01%$0.0898761.6754$0.1505
BSC<0.01%$0.2693810.4799$0.1292
BASE2.66%$0.9999013,372.6808$3,372.35
BASE1.60%$2,263.380.897$2,030.17
BASE0.01%$0.019895640$12.73
BASE<0.01%$1,929.910.00128166$2.47
ETH0.19%$0.99998241.6767$241.67
ETH0.13%$1,930.250.0857$165.4
ETH0.07%$0.615673147.5969$90.87
ETH
Ether (ETH)
0.05%$1,930.250.0342$66.02
ETH0.03%$0.99816244.231$44.15
ETH<0.01%$0.00059219,539.9954$11.56
ETH<0.01%$0.9997299.7968$9.79
ETH<0.01%$0.55472212.804$7.1
ETH<0.01%$76,1490.00004606$3.51
ETH<0.01%$99.440.0301$2.99
ETH<0.01%$0.9994232.8463$2.84
ETH<0.01%$1.220.5833$0.7115
ETH<0.01%$10.3798$0.3798
ETH<0.01%$0.03293410$0.3293
ETH<0.01%$1.250.2579$0.3223
OP0.04%$0.99974246.7077$46.7
OP<0.01%$1,929.440.00000223$0.004303
SEI0.02%$0.999225$24.98
SEI<0.01%$0.09475594.8603$8.99
LINEA<0.01%$0.002,273.54$0.00
OPBNB<0.01%$602.30.0069578$4.19
SONIC<0.01%$0.9997421$0.9997
SONIC<0.01%$0.042133$0.126391
POL<0.01%$0.105534.69$0.494936
ARB<0.01%$0.009.1265$0.00
ARB<0.01%$0.9999020.1161$0.116
ARB<0.01%$1,929.080.000001$0.001929
MANTLE<0.01%$0.615650.043$0.026448
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.