ETH Price: $1,757.17 (+11.36%)
 

Overview

ETH Balance

0.190599744374756778 ETH

Eth Value

$334.92 (@ $1,757.17/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0xfa4ba8c2223252542025-04-22 14:50:477 hrs ago1745333447IN
0x2E6168f9...85F3fbF39
1 ETH0.000375578.06782143
0xe3c4d585223120002025-04-20 18:27:472 days ago1745173667IN
0x2E6168f9...85F3fbF39
0 ETH0.00005770.82322417
0xe3c4d585223119992025-04-20 18:27:352 days ago1745173655IN
0x2E6168f9...85F3fbF39
0 ETH0.000069480.82719531
0xe3c4d585223119972025-04-20 18:27:112 days ago1745173631IN
0x2E6168f9...85F3fbF39
0 ETH0.000069740.83009518
0xe3c4d585223119962025-04-20 18:26:592 days ago1745173619IN
0x2E6168f9...85F3fbF39
0 ETH0.000069570.82807343
0xe3c4d585223119932025-04-20 18:26:232 days ago1745173583IN
0x2E6168f9...85F3fbF39
0 ETH0.000069580.82811395
0xe3c4d585223119922025-04-20 18:26:112 days ago1745173571IN
0x2E6168f9...85F3fbF39
0 ETH0.000085560.8462654
0xe3c4d585223119852025-04-20 18:24:472 days ago1745173487IN
0x2E6168f9...85F3fbF39
0 ETH0.000068790.81874275
0xe3c4d585223119832025-04-20 18:24:232 days ago1745173463IN
0x2E6168f9...85F3fbF39
0 ETH0.000068280.81271164
0xe3c4d585223119822025-04-20 18:24:112 days ago1745173451IN
0x2E6168f9...85F3fbF39
0 ETH0.000069140.82291996
0xe3c4d585223119812025-04-20 18:23:592 days ago1745173439IN
0x2E6168f9...85F3fbF39
0 ETH0.000066130.78707046
0xe3c4d585223119792025-04-20 18:23:352 days ago1745173415IN
0x2E6168f9...85F3fbF39
0 ETH0.000069640.82889314
0xe3c4d585223119782025-04-20 18:23:232 days ago1745173403IN
0x2E6168f9...85F3fbF39
0 ETH0.000070550.83970992
0xe3c4d585223119772025-04-20 18:23:112 days ago1745173391IN
0x2E6168f9...85F3fbF39
0 ETH0.000071940.85620388
0xe3c4d585223119762025-04-20 18:22:592 days ago1745173379IN
0x2E6168f9...85F3fbF39
0 ETH0.000068740.81811069
0xe3c4d585223119762025-04-20 18:22:592 days ago1745173379IN
0x2E6168f9...85F3fbF39
0 ETH0.000068740.81811069
0xe3c4d585223119752025-04-20 18:22:472 days ago1745173367IN
0x2E6168f9...85F3fbF39
0 ETH0.000071670.85300322
0xe3c4d585223119742025-04-20 18:22:352 days ago1745173355IN
0x2E6168f9...85F3fbF39
0 ETH0.000068370.81378149
0xe3c4d585223119732025-04-20 18:22:232 days ago1745173343IN
0x2E6168f9...85F3fbF39
0 ETH0.000069130.82276765
0xe3c4d585223119722025-04-20 18:22:112 days ago1745173331IN
0x2E6168f9...85F3fbF39
0 ETH0.000083350.82433962
0xe3c4d585223119712025-04-20 18:21:592 days ago1745173319IN
0x2E6168f9...85F3fbF39
0 ETH0.000069570.82815727
0xe3c4d585223119702025-04-20 18:21:472 days ago1745173307IN
0x2E6168f9...85F3fbF39
0 ETH0.000071530.8514118
0xe3c4d585223119692025-04-20 18:21:352 days ago1745173295IN
0x2E6168f9...85F3fbF39
0 ETH0.000072980.86873632
0xe3c4d585223119682025-04-20 18:21:232 days ago1745173283IN
0x2E6168f9...85F3fbF39
0 ETH0.000069610.82855194
0xe3c4d585223119672025-04-20 18:21:112 days ago1745173271IN
0x2E6168f9...85F3fbF39
0 ETH0.000069550.82781579
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer223252542025-04-22 14:50:477 hrs ago1745333447
0x2E6168f9...85F3fbF39
1 ETH
Transfer222973142025-04-18 17:16:114 days ago1744996571
0x2E6168f9...85F3fbF39
1 ETH
Transfer222815102025-04-16 12:18:596 days ago1744805939
0x2E6168f9...85F3fbF39
0.15 ETH
0x3d602d80222609432025-04-13 15:27:239 days ago1744558043
0x2E6168f9...85F3fbF39
 Contract Creation0 ETH
Transfer222208892025-04-08 1:27:1114 days ago1744075631
0x2E6168f9...85F3fbF39
0.00033068 ETH
Transfer220803722025-03-19 10:38:2334 days ago1742380703
0x2E6168f9...85F3fbF39
0.00221088 ETH
Transfer220418732025-03-14 1:35:5939 days ago1741916159
0x2E6168f9...85F3fbF39
0.00005612 ETH
Transfer220297452025-03-12 8:58:5941 days ago1741769939
0x2E6168f9...85F3fbF39
0 ETH
Transfer220275982025-03-12 1:47:3541 days ago1741744055
0x2E6168f9...85F3fbF39
0.000009 ETH
Transfer220244912025-03-11 15:22:1142 days ago1741706531
0x2E6168f9...85F3fbF39
0.000092 ETH
Transfer220244222025-03-11 15:08:2342 days ago1741705703
0x2E6168f9...85F3fbF39
0.000115 ETH
Transfer220217462025-03-11 6:08:4742 days ago1741673327
0x2E6168f9...85F3fbF39
0 ETH
Transfer220217192025-03-11 6:03:2342 days ago1741673003
0x2E6168f9...85F3fbF39
0 ETH
Transfer220216722025-03-11 5:53:5942 days ago1741672439
0x2E6168f9...85F3fbF39
0.00000408 ETH
Transfer220216312025-03-11 5:45:4742 days ago1741671947
0x2E6168f9...85F3fbF39
0.00000004 ETH
Transfer220215522025-03-11 5:29:5942 days ago1741670999
0x2E6168f9...85F3fbF39
0.00000015 ETH
Transfer220211902025-03-11 4:17:1142 days ago1741666631
0x2E6168f9...85F3fbF39
0 ETH
Transfer220210932025-03-11 3:57:4742 days ago1741665467
0x2E6168f9...85F3fbF39
0 ETH
Transfer220210812025-03-11 3:55:2342 days ago1741665323
0x2E6168f9...85F3fbF39
0.0000003 ETH
Transfer220210392025-03-11 3:46:5942 days ago1741664819
0x2E6168f9...85F3fbF39
0 ETH
Transfer220210232025-03-11 3:43:4742 days ago1741664627
0x2E6168f9...85F3fbF39
0 ETH
Transfer220190302025-03-10 21:03:3543 days ago1741640615
0x2E6168f9...85F3fbF39
0.000006 ETH
Transfer220177902025-03-10 16:53:4743 days ago1741625627
0x2E6168f9...85F3fbF39
0 ETH
Transfer220177212025-03-10 16:39:5943 days ago1741624799
0x2E6168f9...85F3fbF39
0 ETH
Transfer220086292025-03-09 10:10:4744 days ago1741515047
0x2E6168f9...85F3fbF39
0.000018 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DeBoxOSDiamond

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 2000 runs

Other Settings:
shanghai EvmVersion
File 1 of 3 : Diamond.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.22;

import "./libraries/LibDiamond.sol";
import { IDiamondCut } from "./interfaces/IDiamondCut.sol";

/**
 * @title DeBoxOSDiamond
 * @notice DeBox Protocol Diamond contract, contains all the facets(diff modules) of the DeBox Protocol.
 * @author https://debox.pro
 */
contract DeBoxOSDiamond {
    /**
     * @notice Initialize the contract with the contract owner and the diamondCutFacet
     * @param _contractOwner The owner of the contract: can execute diamondCut
     * @param _diamondCutFacet The diamondCutFacet address: for adding, replacing, or removing functions
     */
    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 { }
}

File 2 of 3 : LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import { IDiamondCut } from "../interfaces/IDiamondCut.sol";
/// Implementation of EIP-2535 Diamond Standard
/// https://eips.ethereum.org/EIPS/eip-2535

library LibDiamond {
    // Diamond specific errors
    error IncorrectFacetCutAction();
    error NoSelectorsInFacet();
    error FunctionAlreadyExists();
    error FacetAddressIsZero();
    error FacetAddressIsNotZero();
    error FacetContainsNoCode();
    error FunctionDoesNotExist();
    error FunctionIsImmutable();
    error InitZeroButCalldataNotEmpty();
    error CalldataEmptyButInitNotZero();
    error InitReverted();

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event SupportedInterfacesChanged(bytes4 interfaceIds, bool supported);

    /// @dev keccak256("diamond.standard.diamond.storage");

    bytes32 internal constant DIAMOND_STORAGE_POSITION = hex"c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c";

    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 $) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            $.slot := position
        }
    }

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

    function enforceIsContractOwner() internal view {
        require(msg.sender == diamondStorage().contractOwner, "LibDiamond: Must be contract owner");
    }

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

    /**
     * @notice edit the supported interfaces for the diamond
     */
    function setSupportsInterface(bytes4 _interfaceId, bool _supported) internal {
        DiamondStorage storage ds = diamondStorage();
        if (ds.supportedInterfaces[_interfaceId] == _supported) return;
        ds.supportedInterfaces[_interfaceId] = _supported;
        emit SupportedInterfacesChanged(_interfaceId, _supported);
    }

    // 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 IDiamondCut.DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_facetAddress == address(0)) {
            revert FacetAddressIsZero();
        }
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet();
        }
        DiamondStorage storage ds = diamondStorage();
        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 != address(0)) {
                revert FunctionAlreadyExists();
            }
            addFunction(ds, selector, selectorPosition, _facetAddress);
            unchecked {
                ++selectorPosition;
                ++selectorIndex;
            }
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet();
        }
        if (_facetAddress == address(0)) {
            revert FacetAddressIsZero();
        }
        DiamondStorage storage ds = diamondStorage();
        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 NoSelectorsInFacet();
        }
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        if (_facetAddress != address(0)) {
            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 (_facetAddress == address(0)) {
            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 (_init == address(0)) {
            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();
        }
    }
}

File 3 of 3 : IDiamondCut.sol
// SPDX-License-Identifier: GPL v3
pragma solidity ^0.8.22;

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

    }

    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;

    /**
     * @notice Emitted when the diamond cut is executed
     */
    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@ds-test/=lib/forge-std/lib/ds-test/src/",
    "@std/=lib/forge-std/src/",
    "@thirdweb/dynamic-contracts/=lib/dynamic-contracts/src/",
    "@dynamic/=lib/dynamic-contracts/src/",
    "lib/sstore2/=lib/dynamic-contracts/lib/sstore2/",
    "@solmate/=lib/solmate/src/",
    "@solworld/=lib/solworld/",
    "@random/=lib/foundry-random/src/",
    "@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
    "src/=src/",
    "@debox/=src/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@prb/test/=lib/foundry-random/lib/prb-test/src/",
    "CramBit/=lib/foundry-random/lib/CramBit/",
    "crambit/=lib/foundry-random/lib/CramBit/src/",
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "dynamic-contracts/=lib/dynamic-contracts/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "foundry-random/=lib/foundry-random/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
    "openzeppelin-upgrades/=lib/openzeppelin-upgrades/",
    "prb-test/=lib/foundry-random/lib/prb-test/src/",
    "solidity-bytes-utils/=lib/foundry-random/lib/solidity-bytes-utils/contracts/",
    "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/",
    "solmate/=lib/solmate/src/",
    "solworld/=lib/solworld/",
    "sstore2/=lib/dynamic-contracts/lib/sstore2/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "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":"NoSelectorsInFacet","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"}]

60806001600160401b03601f610b9638819003918201601f1916840191838311858410176105b75780859260409485528339810103126105f15761004e602061004784610633565b9301610633565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b039485166001600160a01b03198216811790925591939091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36100bd610614565b91600183525f5b602081106105cb57506100d5610614565b60018152602036818301376307e4c70760e21b6100f182610647565b526100fa6105f5565b6001600160a01b0390921682525f6020830152604082015261011b83610647565b5261012582610647565b506040519060208201908111828210176105b7576040525f808252825b805182101561045c5760206101578383610668565b5101516003811015610448578061028f57506001600160a01b0361017b8383610668565b515116604061018a8484610668565b510151811561027d5780511561026b576001600160a01b0382165f9081525f80516020610b7683398151915260205260409020546001600160601b039390841690811561025d575b5f915b8351831015610249576001600160e01b03196101f18486610668565b51165f8181525f80516020610b3683398151915260205260409020549091906001600160a01b03166102375760018161022d888a948496610994565b01169201916101d5565b60405163a023275d60e01b8152600490fd5b50959492505050600191505b019091610142565b6102668461091b565b6101d2565b60405163092d2fe560e41b8152600490fd5b604051636347641d60e11b8152600490fd5b6001810361038f57506001600160a01b036102aa8383610668565b5151169260406102ba8484610668565b51015180511561026b57841561027d576001600160a01b0385165f9081525f80516020610b7683398151915260205260409020546001600160601b0393908416908115610381575b5f915b8351831015610372576001600160e01b03196103218486610668565b51165f8181525f80516020610b3683398151915260205260409020546001600160a01b03169089821461023757826103688b6001958461036388968e986106c0565b610994565b0116920191610305565b50955050509160019150610255565b61038a8761091b565b610302565b600203610436576001600160a01b036103a88383610668565b5151169060406103b88483610668565b5101519182511561026b57610424575f5b8251811015610418576001906104126001600160e01b03196103eb8387610668565b5116805f525f80516020610b36833981519152602052838060a01b0360405f2054166106c0565b016103c9565b50929160019150610255565b604051633ce4ef9160e11b8152600490fd5b60405163e548e6b560e01b8152600490fd5b634e487b7160e01b5f52602160045260245ffd5b905060405190606082016060835281518091526080830190602060808260051b8601019301915f905b82821061052157505050505f6020830152818103604083015282518082525f5b81811061050c57508282825f602080957f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6739897010152601f801991011601030190a1516104fa5760405160f19081610a458239f35b6040516304c08b4360e51b8152600490fd5b806020809287010151828286010152016104a5565b858503607f19018152835180516001600160a01b03168652602081015194959394929391929060038210156104485760409160208401520151906060604082015260206080835192836060820152019201905f905b80821061059457505050602080600192960192019201909291610485565b82516001600160e01b031916845260209384019390920191600190910190610576565b634e487b7160e01b5f52604160045260245ffd5b6020906105d66105f5565b5f81525f8382015260606040820152828287010152016100c4565b5f80fd5b60405190606082016001600160401b038111838210176105b757604052565b60408051919082016001600160401b038111838210176105b757604052565b51906001600160a01b03821682036105f157565b8051156106545760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156106545760209160051b010190565b9190918054831015610654575f52601c60205f208360031c019260021b1690565b5f80516020610b568339815191528054821015610654575f5260205f2001905f90565b6001600160a01b03908116918215610909573083146108f75763ffffffff60e01b809116805f525f80516020610b3683398151915293602090858252604093845f205460a01c96825f525f80516020610b7683398151915294858552865f2054925f19998a850194851161085857889187898888850361086c575b9450505050505f52858552865f20805480156107f4578a019061075e828261067c565b63ffffffff82549160031b1b19169055555f5283525f8581205515610786575b505050505050565b5f80516020610b5683398151915294855487810190811161085857825f52848452816001875f20015491808303610808575b50505085549586156107f4575f9760019701916107d48361069d565b909182549160031b1b1916905555855252822001555f808080808061077e565b634e487b7160e01b5f52603160045260245ffd5b6108119061069d565b90549060031b1c16610844816108268461069d565b90919060018060a01b038084549260031b9316831b921b1916179055565b5f528484526001865f2001555f81816107b8565b634e487b7160e01b5f52601160045260245ffd5b6108a1856108ec976108be94845f5280875261088a8d835f2061067c565b90549060031b1c60e01b9687955f52525f2061067c565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b165f90815284885289902080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b865f8087898861073b565b60405163c3c5ec3760e01b8152600490fd5b604051631535ac5f60e31b8152600490fd5b803b15610983575f80516020610b5683398151915280546001600160a01b0383165f9081525f80516020610b76833981519152602052604090206001018190559190680100000000000000008310156105b757826108269160016109819501905561069d565b565b6040516271a80360e91b8152600490fd5b6001600160e01b031981165f8181525f80516020610b368339815191526020819052604090912080546001600160a01b031660a09590951b6001600160a01b0319169490941790935590926001600160a01b03165f8181525f80516020610b76833981519152602052604090208054919490680100000000000000008310156105b757826108a1916001610a2a9501815561067c565b5f5260205260405f209060018060a01b031982541617905556fe6080604052361560b9577fffffffff000000000000000000000000000000000000000000000000000000005f35165f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff60405f2054168015608f575f8091368280378136915af43d5f803e15608b573d5ff35b3d5ffd5b7fa9ad62f80000000000000000000000000000000000000000000000000000000060805260046080fd5b00fea2646970667358221220b69a0fc5f3d2199087ffea6a337ad15472f195d7de61331271d97daea8b1708b64736f6c63430008170033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131cc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131ec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d00000000000000000000000082eb6481ab69df6f8b43b9883ca611b8ea6300950000000000000000000000005d60e89edb990806af8edbbea77e44aab03e71de

Deployed Bytecode

0x6080604052361560b9577fffffffff000000000000000000000000000000000000000000000000000000005f35165f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205273ffffffffffffffffffffffffffffffffffffffff60405f2054168015608f575f8091368280378136915af43d5f803e15608b573d5ff35b3d5ffd5b7fa9ad62f80000000000000000000000000000000000000000000000000000000060805260046080fd5b00fea2646970667358221220b69a0fc5f3d2199087ffea6a337ad15472f195d7de61331271d97daea8b1708b64736f6c63430008170033

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

00000000000000000000000082eb6481ab69df6f8b43b9883ca611b8ea6300950000000000000000000000005d60e89edb990806af8edbbea77e44aab03e71de

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x82eb6481aB69dF6f8B43b9883cA611B8EA630095
Arg [1] : _diamondCutFacet (address): 0x5d60E89edb990806af8edbbea77E44aaB03E71De

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000082eb6481ab69df6f8b43b9883ca611b8ea630095
Arg [1] : 0000000000000000000000005d60e89edb990806af8edbbea77e44aab03e71de


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.