ETH Price: $1,941.68 (+1.02%)

Contract

0xEA53253B91867Ed414F1f8A0F086244B852D9707

Overview

ETH Balance

0.0066 ETH

ETH Value

$12.82 (@ $1,941.68/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Remote207831052025-03-18 17:23:037 hrs ago1742318583IN
0xEA53253B...B852D9707
0.00045042 ETH0.000007510.03
Mint207830162025-03-18 17:18:037 hrs ago1742318283IN
0xEA53253B...B852D9707
0.00033 ETH0.000007120.03
Transfer Remote207773972025-03-18 12:05:4812 hrs ago1742299548IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002850.01
Mint207711882025-03-18 6:21:3618 hrs ago1742278896IN
0xEA53253B...B852D9707
0.00033 ETH0.000004740.02
Transfer Remote207674012025-03-18 2:54:3921 hrs ago1742266479IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002330.01
Mint207673932025-03-18 2:54:1321 hrs ago1742266453IN
0xEA53253B...B852D9707
0.00033 ETH0.000001890.01
Transfer Remote207673782025-03-18 2:53:2421 hrs ago1742266404IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002380.01
Transfer Remote207673712025-03-18 2:53:0121 hrs ago1742266381IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002530.01
Transfer Remote207673452025-03-18 2:51:3721 hrs ago1742266297IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002560.01
Transfer Remote207673392025-03-18 2:51:1721 hrs ago1742266277IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002530.01
Transfer Remote207673332025-03-18 2:50:5621 hrs ago1742266256IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002630.01
Transfer Remote207673232025-03-18 2:50:2421 hrs ago1742266224IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002560.01
Transfer Remote207673122025-03-18 2:49:4821 hrs ago1742266188IN
0xEA53253B...B852D9707
0.00045042 ETH0.000002730.01
Mint207671622025-03-18 2:41:3421 hrs ago1742265694IN
0xEA53253B...B852D9707
0.00033 ETH0.000001920.01
Mint207671542025-03-18 2:41:0721 hrs ago1742265667IN
0xEA53253B...B852D9707
0.00033 ETH0.000001920.01
Mint207671482025-03-18 2:40:4721 hrs ago1742265647IN
0xEA53253B...B852D9707
0.00033 ETH0.000001920.01
Mint207671132025-03-18 2:38:5221 hrs ago1742265532IN
0xEA53253B...B852D9707
0.00033 ETH0.000001920.01
Mint207671072025-03-18 2:38:3121 hrs ago1742265511IN
0xEA53253B...B852D9707
0.00033 ETH0.000001920.01
Mint207670682025-03-18 2:36:2322 hrs ago1742265383IN
0xEA53253B...B852D9707
0.00033 ETH0.000001920.01
Mint207670402025-03-18 2:34:5222 hrs ago1742265292IN
0xEA53253B...B852D9707
0.00033 ETH0.000002370.01
Withdraw Fees207605512025-03-17 20:38:4027 hrs ago1742243920IN
0xEA53253B...B852D9707
0 ETH0.000000350.01
Transfer Remote207390282025-03-17 0:47:5647 hrs ago1742172476IN
0xEA53253B...B852D9707
0.00063105 ETH0.000003010.012
Mint207389162025-03-17 0:41:4947 hrs ago1742172109IN
0xEA53253B...B852D9707
0.00033 ETH0.000002840.012
Transfer Remote207211652025-03-16 8:25:292 days ago1742113529IN
0xEA53253B...B852D9707
0.00063105 ETH0.000003140.012
Transfer Remote207211542025-03-16 8:24:532 days ago1742113493IN
0xEA53253B...B852D9707
0.00063105 ETH0.000003040.012

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
207831052025-03-18 17:23:037 hrs ago1742318583
0xEA53253B...B852D9707
0.00012042 ETH
207773972025-03-18 12:05:4812 hrs ago1742299548
0xEA53253B...B852D9707
0.00012042 ETH
207674012025-03-18 2:54:3921 hrs ago1742266479
0xEA53253B...B852D9707
0.00012042 ETH
207673782025-03-18 2:53:2421 hrs ago1742266404
0xEA53253B...B852D9707
0.00012042 ETH
207673712025-03-18 2:53:0121 hrs ago1742266381
0xEA53253B...B852D9707
0.00012042 ETH
207673452025-03-18 2:51:3721 hrs ago1742266297
0xEA53253B...B852D9707
0.00012042 ETH
207673392025-03-18 2:51:1721 hrs ago1742266277
0xEA53253B...B852D9707
0.00012042 ETH
207673332025-03-18 2:50:5621 hrs ago1742266256
0xEA53253B...B852D9707
0.00012042 ETH
207673232025-03-18 2:50:2421 hrs ago1742266224
0xEA53253B...B852D9707
0.00012042 ETH
207673122025-03-18 2:49:4821 hrs ago1742266188
0xEA53253B...B852D9707
0.00012042 ETH
207605512025-03-17 20:38:4027 hrs ago1742243920
0xEA53253B...B852D9707
0.020646 ETH
207390282025-03-17 0:47:5647 hrs ago1742172476
0xEA53253B...B852D9707
0.00030105 ETH
207211652025-03-16 8:25:292 days ago1742113529
0xEA53253B...B852D9707
0.00030105 ETH
207211542025-03-16 8:24:532 days ago1742113493
0xEA53253B...B852D9707
0.00030105 ETH
207015582025-03-15 14:36:493 days ago1742049409
0xEA53253B...B852D9707
0.00012042 ETH
207015512025-03-15 14:36:243 days ago1742049384
0xEA53253B...B852D9707
0.00012042 ETH
207011612025-03-15 14:15:053 days ago1742048105
0xEA53253B...B852D9707
0.00012042 ETH
207010392025-03-15 14:08:273 days ago1742047707
0xEA53253B...B852D9707
0.00012042 ETH
206985702025-03-15 11:54:123 days ago1742039652
0xEA53253B...B852D9707
0.00012042 ETH
206985612025-03-15 11:53:413 days ago1742039621
0xEA53253B...B852D9707
0.00012042 ETH
206928012025-03-15 6:39:333 days ago1742020773
0xEA53253B...B852D9707
0.00012042 ETH
206347552025-03-13 1:15:395 days ago1741828539
0xEA53253B...B852D9707
0.00008714 ETH
206248052025-03-12 16:04:456 days ago1741795485
0xEA53253B...B852D9707
0.00008714 ETH
206058622025-03-11 22:26:347 days ago1741731994
0xEA53253B...B852D9707
0.00008714 ETH
206012942025-03-11 18:15:057 days ago1741716905
0xEA53253B...B852D9707
0.00008714 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Diamond

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 5 : Diamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

//******************************************************************************\
//* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
//*
//* Implementation of a diamond.
//******************************************************************************/

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

// When no function exists for function called
error FunctionNotFound(bytes4 _functionSelector);

// This is used in diamond constructor
// more arguments are added to this struct
// this avoids stack too deep errors
struct DiamondArgs {
    address owner;
    address init;
    bytes initCalldata;
}

contract Diamond {
    constructor(IDiamondCut.FacetCut[] memory _diamondCut, DiamondArgs memory _args) payable {
        LibDiamond.setContractOwner(_args.owner);
        LibDiamond.diamondCut(_diamondCut, _args.init, _args.initCalldata);

        // Code can be added here to perform actions and set state variables.
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        // get diamond storage
        assembly {
            ds.slot := position
        }
        // get facet from function selector
        address facet = ds.facetAddressAndSelectorPosition[msg.sig].facetAddress;
        if (facet == address(0)) {
            revert FunctionNotFound(msg.sig);
        }
        // Execute external function from facet using delegatecall and return any value.
        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()) }
        }
    }

    receive() external payable {}
}

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

//******************************************************************************\
//* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
//******************************************************************************/
import {IDiamond} from "../interfaces/IDiamond.sol";
import {IDiamondCut} from "../interfaces/IDiamondCut.sol";

// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.
// The loupe functions are required by the EIP2535 Diamonds standard

error NoSelectorsGivenToAdd();
error NotContractOwner(address _user, address _contractOwner);
error NoSelectorsProvidedForFacetForCut(address _facetAddress);
error CannotAddSelectorsToZeroAddress(bytes4[] _selectors);
error NoBytecodeAtAddress(address _contractAddress, string _message);
error IncorrectFacetCutAction(uint8 _action);
error CannotAddFunctionToDiamondThatAlreadyExists(bytes4 _selector);
error CannotReplaceFunctionsFromFacetWithZeroAddress(bytes4[] _selectors);
error CannotReplaceImmutableFunction(bytes4 _selector);
error CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(bytes4 _selector);
error CannotReplaceFunctionThatDoesNotExists(bytes4 _selector);
error RemoveFacetAddressMustBeZeroAddress(address _facetAddress);
error CannotRemoveFunctionThatDoesNotExist(bytes4 _selector);
error CannotRemoveImmutableFunction(bytes4 _selector);
error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata);

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

    struct FacetAddressAndSelectorPosition {
        address facetAddress;
        uint16 selectorPosition;
    }

    struct DiamondStorage {
        // function selector => facet address and selector position in selectors array
        mapping(bytes4 => FacetAddressAndSelectorPosition) facetAddressAndSelectorPosition;
        bytes4[] selectors;
        mapping(bytes4 => bool) supportedInterfaces;
        bool locked;
        // owner of the contract
        address contractOwner;
    }

    function diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        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 NotContractOwner(msg.sender, diamondStorage().contractOwner);
        }
    }

    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; facetIndex++) {
            bytes4[] memory functionSelectors = _diamondCut[facetIndex].functionSelectors;
            address facetAddress = _diamondCut[facetIndex].facetAddress;
            if (functionSelectors.length == 0) {
                revert NoSelectorsProvidedForFacetForCut(facetAddress);
            }
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamond.FacetCutAction.Add) {
                addFunctions(facetAddress, functionSelectors);
            } else if (action == IDiamond.FacetCutAction.Replace) {
                replaceFunctions(facetAddress, functionSelectors);
            } else if (action == IDiamond.FacetCutAction.Remove) {
                removeFunctions(facetAddress, functionSelectors);
            } else {
                revert IncorrectFacetCutAction(uint8(action));
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_facetAddress == address(0)) {
            revert CannotAddSelectorsToZeroAddress(_functionSelectors);
        }
        DiamondStorage storage ds = diamondStorage();
        uint16 selectorCount = uint16(ds.selectors.length);
        enforceHasContractCode(_facetAddress, "LibDiamondCut: Add facet has no code");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress;
            if (oldFacetAddress != address(0)) {
                revert CannotAddFunctionToDiamondThatAlreadyExists(selector);
            }
            ds.facetAddressAndSelectorPosition[selector] = FacetAddressAndSelectorPosition(_facetAddress, selectorCount);
            ds.selectors.push(selector);
            selectorCount++;
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        DiamondStorage storage ds = diamondStorage();
        if (_facetAddress == address(0)) {
            revert CannotReplaceFunctionsFromFacetWithZeroAddress(_functionSelectors);
        }
        enforceHasContractCode(_facetAddress, "LibDiamondCut: Replace facet has no code");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress;
            // can't replace immutable functions -- functions defined directly in the diamond in this case
            if (oldFacetAddress == address(this)) {
                revert CannotReplaceImmutableFunction(selector);
            }
            if (oldFacetAddress == _facetAddress) {
                revert CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(selector);
            }
            if (oldFacetAddress == address(0)) {
                revert CannotReplaceFunctionThatDoesNotExists(selector);
            }
            // replace old facet address
            ds.facetAddressAndSelectorPosition[selector].facetAddress = _facetAddress;
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        DiamondStorage storage ds = diamondStorage();
        uint256 selectorCount = ds.selectors.length;
        if (_facetAddress != address(0)) {
            revert RemoveFacetAddressMustBeZeroAddress(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            FacetAddressAndSelectorPosition memory oldFacetAddressAndSelectorPosition =
                ds.facetAddressAndSelectorPosition[selector];
            if (oldFacetAddressAndSelectorPosition.facetAddress == address(0)) {
                revert CannotRemoveFunctionThatDoesNotExist(selector);
            }

            // can't remove immutable functions -- functions defined directly in the diamond
            if (oldFacetAddressAndSelectorPosition.facetAddress == address(this)) {
                revert CannotRemoveImmutableFunction(selector);
            }
            // replace selector with last selector
            selectorCount--;
            if (oldFacetAddressAndSelectorPosition.selectorPosition != selectorCount) {
                bytes4 lastSelector = ds.selectors[selectorCount];
                ds.selectors[oldFacetAddressAndSelectorPosition.selectorPosition] = lastSelector;
                ds.facetAddressAndSelectorPosition[lastSelector].selectorPosition =
                    oldFacetAddressAndSelectorPosition.selectorPosition;
            }
            // delete last selector
            ds.selectors.pop();
            delete ds.facetAddressAndSelectorPosition[selector];
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata) internal {
        if (_init == address(0)) {
            return;
        }
        enforceHasContractCode(_init, "LibDiamondCut: _init address has no code");
        (bool success, bytes memory error) = _init.delegatecall(_calldata);
        if (!success) {
            if (error.length > 0) {
                // bubble up error
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(error)
                    revert(add(32, error), returndata_size)
                }
            } else {
                revert InitializationFunctionReverted(_init, _calldata);
            }
        }
    }

    function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        if (contractSize == 0) {
            revert NoBytecodeAtAddress(_contract, _errorMessage);
        }
    }
}

File 3 of 5 : IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

//******************************************************************************\
//* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
//******************************************************************************/

import {IDiamond} from "./IDiamond.sol";

interface IDiamondCut is IDiamond {
    /// @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;
}

File 4 of 5 : IDiamondLoupe.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

//******************************************************************************\
//* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
//******************************************************************************/

// A loupe is a small magnifying glass used to look at diamonds.
// These functions look at diamonds
interface IDiamondLoupe {
    /// These functions are expected to be called frequently
    /// by tools.

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facet addresses and their four byte function selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_);

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view returns (address[] memory facetAddresses_);

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);
}

File 5 of 5 : IDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

//*****************************************************************************\
//* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
//* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
//******************************************************************************/

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

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

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

Settings
{
  "remappings": [
    "@HyperLane/=node_modules/@hyperlane-xyz/core/contracts/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@/=src/",
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "solidity-stringutils/=lib/solidity-stringutils/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamond.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamond.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"init","type":"address"},{"internalType":"bytes","name":"initCalldata","type":"bytes"}],"internalType":"struct DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotAddFunctionToDiamondThatAlreadyExists","type":"error"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"CannotAddSelectorsToZeroAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotRemoveFunctionThatDoesNotExist","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotRemoveImmutableFunction","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceFunctionThatDoesNotExists","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet","type":"error"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"CannotReplaceFunctionsFromFacetWithZeroAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceImmutableFunction","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"FunctionNotFound","type":"error"},{"inputs":[{"internalType":"uint8","name":"_action","type":"uint8"}],"name":"IncorrectFacetCutAction","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFunctionReverted","type":"error"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"string","name":"_message","type":"string"}],"name":"NoBytecodeAtAddress","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"NoSelectorsProvidedForFacetForCut","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"RemoveFacetAddressMustBeZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamond.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamond.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"}]

608060405260405161104338038061104383398101604081905261002291610ab7565b805161002d9061004d565b61004682826020015183604001516100d860201b60201c565b5050610ea8565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b03838116610100818102610100600160a81b0319851617909455604051600080516020610f8f833981519152949093049091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156102375760008482815181106100f8576100f8610c72565b6020026020010151604001519050600085838151811061011a5761011a610c72565b6020026020010151600001519050815160000361015a5760405163e767f91f60e01b81526001600160a01b03821660048201526024015b60405180910390fd5b600086848151811061016e5761016e610c72565b60200260200101516020015190506000600281111561018f5761018f610c88565b8160028111156101a1576101a1610c88565b036101b5576101b08284610282565b61022c565b60018160028111156101c9576101c9610c88565b036101d8576101b0828461042e565b60028160028111156101ec576101ec610c88565b036101fb576101b082846105b7565b80600281111561020d5761020d610c88565b604051633ff4d20f60e11b815260ff9091166004820152602401610151565b5050506001016100db565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161026b93929190610d10565b60405180910390a161027d8282610836565b505050565b6001600160a01b0382166102ab57806040516302b8da0760e21b81526004016101519190610de2565b600080516020610ffb8339815191525460408051606081019091526024808252600080516020610f8f83398151915292916102f091869190610faf60208301396108fc565b60005b835181101561042757600084828151811061031057610310610c72565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0316801561036d5760405163ebbf5d0760e01b81526001600160e01b031983166004820152602401610151565b6040805180820182526001600160a01b03808a16825261ffff80881660208085019182526001600160e01b0319881660009081528b8252958620945185549251909316600160a01b026001600160b01b0319909216929093169190911717909155600180880180549182018155835291206008820401805460e085901c60046007909416939093026101000a92830263ffffffff90930219169190911790558361041681610e12565b945050600190920191506102f39050565b5050505050565b600080516020610f8f8339815191526001600160a01b038316610466578160405163cd98a96f60e01b81526004016101519190610de2565b6104888360405180606001604052806028815260200161101b602891396108fc565b60005b82518110156105b15760008382815181106104a8576104a8610c72565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031630810361050657604051632901806d60e11b81526001600160e01b031983166004820152602401610151565b856001600160a01b0316816001600160a01b03160361054457604051631ac6ce8d60e11b81526001600160e01b031983166004820152602401610151565b6001600160a01b03811661057757604051637479f93960e01b81526001600160e01b031983166004820152602401610151565b506001600160e01b031916600090815260208390526040902080546001600160a01b0319166001600160a01b03861617905560010161048b565b50505050565b600080516020610ffb83398151915254600080516020610f8f833981519152906001600160a01b0384161561060a5760405163d091bc8160e01b81526001600160a01b0385166004820152602401610151565b60005b835181101561042757600084828151811061062a5761062a610c72565b6020908102919091018101516001600160e01b0319811660009081528683526040908190208151808301909252546001600160a01b038116808352600160a01b90910461ffff1693820193909352909250906106a557604051637a08a22d60e01b81526001600160e01b031983166004820152602401610151565b8051306001600160a01b03909116036106dd57604051630df5fd6160e31b81526001600160e01b031983166004820152602401610151565b836106e781610e33565b94505083816020015161ffff16146107c557600085600101858154811061071057610710610c72565b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600101836020015161ffff168154811061075357610753610c72565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c92909202939093179055838201516001600160e01b03199390931681529087905260409020805461ffff60a01b1916600160a01b61ffff909316929092029190911790555b846001018054806107d8576107d8610e4a565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319909316815291859052506040902080546001600160b01b031916905560010161060d565b6001600160a01b038216610848575050565b61086a82604051806060016040528060288152602001610fd3602891396108fc565b600080836001600160a01b0316836040516108859190610e60565b600060405180830381855af49150503d80600081146108c0576040519150601f19603f3d011682016040523d82523d6000602084013e6108c5565b606091505b5091509150816105b1578051156108df5780518082602001fd5b838360405163192105d760e01b8152600401610151929190610e7c565b813b600081900361027d57828260405163919834b960e01b8152600401610151929190610e7c565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561095c5761095c610924565b60405290565b604051601f8201601f191681016001600160401b038111828210171561098a5761098a610924565b604052919050565b60006001600160401b038211156109ab576109ab610924565b5060051b60200190565b80516001600160a01b03811681146109cc57600080fd5b919050565b60005b838110156109ec5781810151838201526020016109d4565b50506000910152565b600060608284031215610a0757600080fd5b610a0f61093a565b9050610a1a826109b5565b8152610a28602083016109b5565b602082015260408201516001600160401b03811115610a4657600080fd5b8201601f81018413610a5757600080fd5b80516001600160401b03811115610a7057610a70610924565b610a83601f8201601f1916602001610962565b818152856020838501011115610a9857600080fd5b610aa98260208301602086016109d1565b604084015250909392505050565b60008060408385031215610aca57600080fd5b82516001600160401b03811115610ae057600080fd5b8301601f81018513610af157600080fd5b8051610b04610aff82610992565b610962565b8082825260208201915060208360051b850101925087831115610b2657600080fd5b602084015b83811015610c3b5780516001600160401b03811115610b4957600080fd5b85016060818b03601f19011215610b5f57600080fd5b610b6761093a565b610b73602083016109b5565b8152604082015160038110610b8757600080fd5b602082015260608201516001600160401b03811115610ba557600080fd5b6020818401019250508a601f830112610bbd57600080fd5b8151610bcb610aff82610992565b8082825260208201915060208360051b86010192508d831115610bed57600080fd5b6020850194505b82851015610c255784516001600160e01b031981168114610c1457600080fd5b825260209485019490910190610bf4565b6040840152505084525060209283019201610b2b565b506020870151909550925050506001600160401b03811115610c5c57600080fd5b610c68858286016109f5565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526020840193506020830160005b82811015610cda5781516001600160e01b031916865260209586019590910190600101610cb2565b5093949350505050565b60008151808452610cfc8160208601602086016109d1565b601f01601f19169290920160200192915050565b6000606082016060835280865180835260808501915060808160051b86010192506020880160005b82811015610db357868503607f19018452815180516001600160a01b03168652602081015160038110610d7b57634e487b7160e01b600052602160045260246000fd5b806020880152506040810151905060606040870152610d9d6060870182610c9e565b9550506020938401939190910190600101610d38565b5050506001600160a01b0386166020850152508281036040840152610dd88185610ce4565b9695505050505050565b602081526000610df56020830184610c9e565b9392505050565b634e487b7160e01b600052601160045260246000fd5b600061ffff821661ffff8103610e2a57610e2a610dfc565b60010192915050565b600081610e4257610e42610dfc565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251610e728184602087016109d1565b9190910192915050565b6001600160a01b0383168152604060208201819052600090610ea090830184610ce4565b949350505050565b60d980610eb66000396000f3fe608060405236600a57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b031680608057604051630a82dd7360e31b81526001600160e01b031960003516600482015260240160405180910390fd5b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220d7bec6efd8de404a1dbab8f6eb4d7df60871717e171a6537ed29c3449dad443b64736f6c634300081b0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f6465c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d4c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000563ea1999ebd96afece2d7b19dacd48eead7809c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000032848b61c2f5c899bf62fcbf2f6274d4537543da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000047a0ed6270000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc600000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000000000000000000000000000006cfa62f8e0a3a426f85fb63db1c6540b5cd46603000000000000000000000000fa188a1ce5283fb3b042231eee42aff1eba16ef000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020e1c7392a00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405236600a57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b031680608057604051630a82dd7360e31b81526001600160e01b031960003516600482015260240160405180910390fd5b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220d7bec6efd8de404a1dbab8f6eb4d7df60871717e171a6537ed29c3449dad443b64736f6c634300081b0033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000563ea1999ebd96afece2d7b19dacd48eead7809c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000032848b61c2f5c899bf62fcbf2f6274d4537543da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000047a0ed6270000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc600000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000000000000000000000000000006cfa62f8e0a3a426f85fb63db1c6540b5cd46603000000000000000000000000fa188a1ce5283fb3b042231eee42aff1eba16ef000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020e1c7392a00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : _args (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
23 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [4] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [5] : 000000000000000000000000563ea1999ebd96afece2d7b19dacd48eead7809c
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [10] : 00000000000000000000000032848b61c2f5c899bf62fcbf2f6274d4537543da
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [14] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [15] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [16] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [17] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [18] : 0000000000000000000000006cfa62f8e0a3a426f85fb63db1c6540b5cd46603
Arg [19] : 000000000000000000000000fa188a1ce5283fb3b042231eee42aff1eba16ef0
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [22] : e1c7392a00000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
view all blocks sequenced

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
[ 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.