ETH Price: $1,985.17 (-4.24%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Grant Role416536232026-02-03 5:29:5331 days ago1770096593IN
0xf88D00A3...5ed7A6879
0 ETH0.000000250.00469818
Grant Role416446162026-02-03 0:29:3931 days ago1770078579IN
0xf88D00A3...5ed7A6879
0 ETH0.000000370.00688873
Grant Role416446142026-02-03 0:29:3531 days ago1770078575IN
0xf88D00A3...5ed7A6879
0 ETH0.000000370.00693175
Grant Role416446132026-02-03 0:29:3331 days ago1770078573IN
0xf88D00A3...5ed7A6879
0 ETH0.000000370.00691654
Grant Role416367432026-02-02 20:07:1332 days ago1770062833IN
0xf88D00A3...5ed7A6879
0 ETH0.000000590.01097184
Grant Role416367432026-02-02 20:07:1332 days ago1770062833IN
0xf88D00A3...5ed7A6879
0 ETH0.000000590.01097184
Grant Role416367432026-02-02 20:07:1332 days ago1770062833IN
0xf88D00A3...5ed7A6879
0 ETH0.000000590.01097184
Diamond Cut416367432026-02-02 20:07:1332 days ago1770062833IN
0xf88D00A3...5ed7A6879
0 ETH0.000005210.01097184

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Diamond

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
prague EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

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

        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), "");
    }

    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
        require(facet != address(0), "Diamond: Function does not exist");
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    receive() external payable {
        revert("Diamond: ETH not accepted");
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

library LibDiamond {
    bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("cartha.diamond.storage");

    struct FacetAddressAndPosition {
        address facetAddress;
        uint96 functionSelectorPosition;
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint256 facetAddressPosition;
    }

    struct DiamondStorage {
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        address[] facetAddresses;
        mapping(bytes4 => bool) supportedInterfaces;
        address contractOwner;
        mapping(uint8 => mapping(address => bool)) roles;
    }

    error InitializationFailed(address _initializationContractAddress, bytes _calldata);
    error NotContractOwner(address _user, address _contractOwner);
    error NoSelectorsInFacet(address _facetAddress);
    error FacetHasNoCode(address _facetAddress);
    error FunctionAlreadyExists(bytes4 _selector);
    error FunctionDoesNotExist(bytes4 _selector);
    error FunctionIsImmutable(bytes4 _selector);
    error ReplaceFunctionWithSameAddress(bytes4 _selector);
    error RemoveFacetAddressMustBeZero(address _facetAddress);
    error AddFacetCannotBeZero();

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

    function diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }

    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 NotContractOwner(msg.sender, diamondStorage().contractOwner);
        }
    }

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

    function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal {
        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
            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("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet(_facetAddress);
        }
        DiamondStorage storage ds = diamondStorage();
        if (_facetAddress == address(0)) {
            revert AddFacetCannotBeZero();
        }
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            if (oldFacetAddress != address(0)) {
                revert FunctionAlreadyExists(selector);
            }
            addFunction(ds, selector, selectorPosition, _facetAddress);
            selectorPosition++;
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet(_facetAddress);
        }
        DiamondStorage storage ds = diamondStorage();
        if (_facetAddress == address(0)) {
            revert AddFacetCannotBeZero();
        }
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            if (oldFacetAddress == _facetAddress) {
                revert ReplaceFunctionWithSameAddress(selector);
            }
            removeFunction(ds, oldFacetAddress, selector);
            addFunction(ds, selector, selectorPosition, _facetAddress);
            selectorPosition++;
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet(_facetAddress);
        }
        DiamondStorage storage ds = diamondStorage();
        if (_facetAddress != address(0)) {
            revert RemoveFacetAddressMustBeZero(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(ds, oldFacetAddress, selector);
        }
    }

    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(_selector);
        }
        uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
            // forge-lint: disable-next-line(unsafe-typecast)
            ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);
        }
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        if (lastSelectorPosition == 0) {
            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)) {
            return;
        }
        enforceHasContractCode(_init);
        (bool success, bytes memory error) = _init.delegatecall(_calldata);
        if (!success) {
            if (error.length > 0) {
                assembly {
                    let returndata_size := mload(error)
                    revert(add(32, error), returndata_size)
                }
            } else {
                revert InitializationFailed(_init, _calldata);
            }
        }
    }

    function enforceHasContractCode(address _contract) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        if (contractSize == 0) {
            revert FacetHasNoCode(_contract);
        }
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IDiamondCut {
    enum FacetCutAction {
        Add,
        Replace,
        Remove
    }

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

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

    function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external;
}

Settings
{
  "remappings": [
    "solady/=lib/solady/src/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "prague",
  "viaIR": false
}

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":"AddFacetCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"FacetHasNoCode","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"FunctionAlreadyExists","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"FunctionDoesNotExist","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFailed","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"NoSelectorsInFacet","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"RemoveFacetAddressMustBeZero","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"ReplaceFunctionWithSameAddress","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"}]

608060405260405161102438038061102483398101604081905261002291610c7c565b61002b8261012e565b6040805160018082528183019092525f91816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816100415750506040805160018082528183019092529192505f919060208083019080368337019050509050631f931c1c60e01b815f815181106100ad576100ad610cad565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03851681529081015f815260200182815250825f815181106100fb576100fb610cad565b6020026020010181905250610125825f60405180602001604052805f8152506101af60201b60201c565b50505050610eba565b7f190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b82150c80546001600160a01b031981166001600160a01b038481169182179093556040515f5160206110045f395f51905f52939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b835181101561037c575f8482815181106101cd576101cd610cad565b60200260200101516020015190505f60028111156101ed576101ed610cc1565b8160028111156101ff576101ff610cc1565b036102525761024d85838151811061021957610219610cad565b60200260200101515f015186848151811061023657610236610cad565b6020026020010151604001516103c760201b60201c565b610373565b600181600281111561026657610266610cc1565b036102b45761024d85838151811061028057610280610cad565b60200260200101515f015186848151811061029d5761029d610cad565b60200260200101516040015161059060201b60201c565b60028160028111156102c8576102c8610cc1565b036103165761024d8583815181106102e2576102e2610cad565b60200260200101515f01518684815181106102ff576102ff610cad565b60200260200101516040015161076260201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b506001016101b1565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103b093929190610d03565b60405180910390a16103c28282610839565b505050565b80515f036103f3576040516371fd3f7f60e11b81526001600160a01b038316600482015260240161036a565b5f5160206110045f395f51905f526001600160a01b03831661042857604051633eedeedf60e21b815260040160405180910390fd5b6001600160a01b0383165f908152600182016020526040812054906001600160601b038216900361045d5761045d82856108e2565b5f5b8351811015610589575f84828151811061047b5761047b610cad565b6020908102919091018101516001600160e01b031981165f908152918690526040909120549091506001600160a01b031680156104d7576040516333c9344360e21b81526001600160e01b03198316600482015260240161036a565b6001600160e01b031982165f8181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361057881610e21565b9450506001909201915061045f9050565b5050505050565b80515f036105bc576040516371fd3f7f60e11b81526001600160a01b038316600482015260240161036a565b5f5160206110045f395f51905f526001600160a01b0383166105f157604051633eedeedf60e21b815260040160405180910390fd5b6001600160a01b0383165f908152600182016020526040812054906001600160601b03821690036106265761062682856108e2565b5f5b8351811015610589575f84828151811061064457610644610cad565b6020908102919091018101516001600160e01b031981165f908152918690526040909120549091506001600160a01b0390811690871681036106a557604051636f129acf60e01b81526001600160e01b03198316600482015260240161036a565b6106b0858284610932565b6001600160e01b031982165f8181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361075181610e21565b945050600190920191506106289050565b80515f0361078e576040516371fd3f7f60e11b81526001600160a01b038316600482015260240161036a565b5f5160206110045f395f51905f526001600160a01b038316156107cf57604051630c96cead60e01b81526001600160a01b038416600482015260240161036a565b5f5b8251811015610833575f8382815181106107ed576107ed610cad565b6020908102919091018101516001600160e01b031981165f908152918590526040909120549091506001600160a01b0316610829848284610932565b50506001016107d1565b50505050565b6001600160a01b03821661084b575050565b61085482610c2f565b5f5f836001600160a01b03168360405161086e9190610e4c565b5f60405180830381855af49150503d805f81146108a6576040519150601f19603f3d011682016040523d82523d5f602084013e6108ab565b606091505b509150915081610833578051156108c55780518082602001fd5b83836040516325844adf60e01b815260040161036a929190610e62565b6108eb81610c2f565b6002820180546001600160a01b039092165f8181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b0382166109655760405163f8473e6b60e01b81526001600160e01b03198216600482015260240161036a565b6001600160e01b031981165f90815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b031692916109b391610e8d565b9050808214610aa2576001600160a01b0384165f90815260018601602052604081208054839081106109e7576109e7610cad565b5f91825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610a3757610a37610cad565b5f91825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384165f9081526001860160205260409020805480610aca57610aca610ea6565b5f828152602080822060085f1990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252869052604081208190558190036105895760028501545f90610b2a90600190610e8d565b6001600160a01b0386165f908152600180890160205260409091200154909150808214610bd5575f876002018381548110610b6757610b67610cad565b5f918252602090912001546002890180546001600160a01b039092169250829184908110610b9757610b97610cad565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610be857610be8610ea6565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b803b5f819003610c5d57604051630579fa8f60e51b81526001600160a01b038316600482015260240161036a565b5050565b80516001600160a01b0381168114610c77575f5ffd5b919050565b5f5f60408385031215610c8d575f5ffd5b610c9683610c61565b9150610ca460208401610c61565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f606082016060835280865180835260808501915060808160051b8601019250602088015f5b82811015610dde57868503607f19018452815180516001600160a01b031686526020810151606087019060038110610d6f57634e487b7160e01b5f52602160045260245ffd5b8060208901525060408201519150606060408801528082518083526080890191506020840193505f92505b80831015610dc65783516001600160e01b03191682526020938401936001939093019290910190610d9a565b50965050506020938401939190910190600101610d29565b5050506001600160a01b0386166020850152508281036040840152610e038185610cd5565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160601b0382166002600160601b03198101610e4357610e43610e0d565b60010192915050565b5f82518060208501845e5f920191825250919050565b6001600160a01b03831681526040602082018190525f90610e8590830184610cd5565b949350505050565b81810381811115610ea057610ea0610e0d565b92915050565b634e487b7160e01b5f52603160045260245ffd5b61013d80610ec75f395ff3fe6080604052366100565760405162461bcd60e51b815260206004820152601960248201527f4469616d6f6e643a20455448206e6f742061636365707465640000000000000060448201526064015b60405180910390fd5b5f80356001600160e01b03191681527f190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b821508602081905260409091205481906001600160a01b0316806100e95760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161004d565b365f5f375f5f365f845af43d5f5f3e808015610103573d5ff35b3d5ffdfea264697066735822122001df11bc96ff17cf37497da2b02b1fe0181d6443db8414e3f1c88c6cff422c2464736f6c634300081e0033190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b8215080000000000000000000000009d981c98f434a43916cee87a649ff15cb252d70000000000000000000000000090089577b2c00ac1eb32610641df7547fd81defd

Deployed Bytecode

0x6080604052366100565760405162461bcd60e51b815260206004820152601960248201527f4469616d6f6e643a20455448206e6f742061636365707465640000000000000060448201526064015b60405180910390fd5b5f80356001600160e01b03191681527f190cf3d0b6ea99c42c009cfde02ad7adec49baf814cbe2643e0126340b821508602081905260409091205481906001600160a01b0316806100e95760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161004d565b365f5f375f5f365f845af43d5f5f3e808015610103573d5ff35b3d5ffdfea264697066735822122001df11bc96ff17cf37497da2b02b1fe0181d6443db8414e3f1c88c6cff422c2464736f6c634300081e0033

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

0000000000000000000000009d981c98f434a43916cee87a649ff15cb252d70000000000000000000000000090089577b2c00ac1eb32610641df7547fd81defd

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x9D981C98F434A43916cee87a649ff15CB252d700
Arg [1] : _diamondCutFacet (address): 0x90089577b2C00ac1eB32610641dF7547fd81DeFd

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009d981c98f434a43916cee87a649ff15cb252d700
Arg [1] : 00000000000000000000000090089577b2c00ac1eb32610641df7547fd81defd


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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