MNT Price: $0.65 (-1.19%)

Contract

0xc08BFef7E778f3519D79E96780b77066F5d4FCC0
 

Overview

MNT Balance

Mantle Mainnet Network LogoMantle Mainnet Network LogoMantle Mainnet Network Logo0 MNT

MNT Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Multicall879889482025-11-25 22:03:28144 days ago1764108208IN
0xc08BFef7...6F5d4FCC0
0 MNT0.03431050.02458468
Multicall879889182025-11-25 22:02:28144 days ago1764108148IN
0xc08BFef7...6F5d4FCC0
0 MNT0.041508650.0243915
Multicall867137702025-10-27 9:37:32173 days ago1761557852IN
0xc08BFef7...6F5d4FCC0
0 MNT0.017420590.0243612
Multicall862990092025-10-17 19:12:10183 days ago1760728330IN
0xc08BFef7...6F5d4FCC0
0 MNT0.113667720.024717
Multicall859857742025-10-10 13:11:00190 days ago1760101860IN
0xc08BFef7...6F5d4FCC0
0 MNT0.075548390.0249
Multicall859843202025-10-10 12:22:32190 days ago1760098952IN
0xc08BFef7...6F5d4FCC0
0 MNT0.045083240.02
Multicall859843162025-10-10 12:22:24190 days ago1760098944IN
0xc08BFef7...6F5d4FCC0
0 MNT0.044445380.02
Multicall859822522025-10-10 11:13:36190 days ago1760094816IN
0xc08BFef7...6F5d4FCC0
0 MNT0.036782120.02
Multicall859819312025-10-10 11:02:54190 days ago1760094174IN
0xc08BFef7...6F5d4FCC0
0 MNT0.072645050.0201
Multicall859819162025-10-10 11:02:24190 days ago1760094144IN
0xc08BFef7...6F5d4FCC0
0 MNT0.042467580.0201
Multicall859816652025-10-10 10:54:02190 days ago1760093642IN
0xc08BFef7...6F5d4FCC0
0 MNT0.057896180.0249
Multicall859800202025-10-10 9:59:12190 days ago1760090352IN
0xc08BFef7...6F5d4FCC0
0 MNT0.024959420.0249
Multicall859600272025-10-09 22:52:46191 days ago1760050366IN
0xc08BFef7...6F5d4FCC0
0 MNT0.011830430.020094
Multicall853556452025-09-25 23:06:42205 days ago1758841602IN
0xc08BFef7...6F5d4FCC0
0 MNT0.070794320.02415
Multicall837469422025-08-19 17:23:16242 days ago1755624196IN
0xc08BFef7...6F5d4FCC0
0 MNT0.082738390.02
Multicall831487002025-08-05 21:01:52256 days ago1754427712IN
0xc08BFef7...6F5d4FCC0
0 MNT0.081818580.02
Multicall821435602025-07-13 14:37:12279 days ago1752417432IN
0xc08BFef7...6F5d4FCC0
0 MNT0.098957990.02
Multicall815699802025-06-30 7:57:52292 days ago1751270272IN
0xc08BFef7...6F5d4FCC0
0 MNT0.089737460.02
Multicall815033602025-06-28 18:57:12294 days ago1751137032IN
0xc08BFef7...6F5d4FCC0
0 MNT0.078197820.02
Multicall815030282025-06-28 18:46:08294 days ago1751136368IN
0xc08BFef7...6F5d4FCC0
0 MNT0.045677940.02
Multicall815026142025-06-28 18:32:20294 days ago1751135540IN
0xc08BFef7...6F5d4FCC0
0.1657524 MNT0.029474190.02
Multicall815025602025-06-28 18:30:32294 days ago1751135432IN
0xc08BFef7...6F5d4FCC0
0 MNT0.058018550.02
Multicall815024952025-06-28 18:28:22294 days ago1751135302IN
0xc08BFef7...6F5d4FCC0
0 MNT0.051503220.02
Multicall815024672025-06-28 18:27:26294 days ago1751135246IN
0xc08BFef7...6F5d4FCC0
0 MNT0.076612420.02
Multicall815020742025-06-28 18:14:20294 days ago1751134460IN
0xc08BFef7...6F5d4FCC0
0 MNT0.051871870.02
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
815026142025-06-28 18:32:20294 days ago1751135540
0xc08BFef7...6F5d4FCC0
0.1657524 MNT
815002722025-06-28 17:14:16294 days ago1751130856
0xc08BFef7...6F5d4FCC0
0.1 MNT
814993252025-06-28 16:42:42294 days ago1751128962
0xc08BFef7...6F5d4FCC0
0.16655667 MNT
814971732025-06-28 15:30:58294 days ago1751124658
0xc08BFef7...6F5d4FCC0
0.1 MNT
814970722025-06-28 15:27:36294 days ago1751124456
0xc08BFef7...6F5d4FCC0
0.33700087 MNT
814970422025-06-28 15:26:36294 days ago1751124396
0xc08BFef7...6F5d4FCC0
0.2 MNT
814968762025-06-28 15:21:04294 days ago1751124064
0xc08BFef7...6F5d4FCC0
0.2 MNT
814968762025-06-28 15:21:04294 days ago1751124064
0xc08BFef7...6F5d4FCC0
0.2 MNT
814967872025-06-28 15:18:06294 days ago1751123886
0xc08BFef7...6F5d4FCC0
0.05 MNT
814967612025-06-28 15:17:14294 days ago1751123834
0xc08BFef7...6F5d4FCC0
0.1 MNT
814967612025-06-28 15:17:14294 days ago1751123834
0xc08BFef7...6F5d4FCC0
0.1 MNT
814966832025-06-28 15:14:38294 days ago1751123678
0xc08BFef7...6F5d4FCC0
0.1 MNT
814961242025-06-28 14:56:00294 days ago1751122560
0xc08BFef7...6F5d4FCC0
1 MNT
809938122025-06-16 23:52:16306 days ago1750117936
0xc08BFef7...6F5d4FCC0
0.2 MNT
762306702025-02-26 17:40:52416 days ago1740591652
0xc08BFef7...6F5d4FCC0
0.1 MNT
759166682025-02-19 11:14:08423 days ago1739963648
0xc08BFef7...6F5d4FCC0
0.1 MNT
759164452025-02-19 11:06:42423 days ago1739963202
0xc08BFef7...6F5d4FCC0
0.1 MNT
753589112025-02-06 13:22:14436 days ago1738848134
0xc08BFef7...6F5d4FCC0
0.1 MNT
752390612025-02-03 18:47:14439 days ago1738608434
0xc08BFef7...6F5d4FCC0
0.1 MNT
752390612025-02-03 18:47:14439 days ago1738608434
0xc08BFef7...6F5d4FCC0
0.1 MNT
752386582025-02-03 18:33:48439 days ago1738607628
0xc08BFef7...6F5d4FCC0
0.1 MNT
752386582025-02-03 18:33:48439 days ago1738607628
0xc08BFef7...6F5d4FCC0
0.1 MNT
752385862025-02-03 18:31:24439 days ago1738607484
0xc08BFef7...6F5d4FCC0
0.2 MNT
752385862025-02-03 18:31:24439 days ago1738607484
0xc08BFef7...6F5d4FCC0
0.2 MNT
752383852025-02-03 18:24:42439 days ago1738607082
0xc08BFef7...6F5d4FCC0
1 MNT
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DeltaBrokerProxy

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/******************************************************************************\
* Author: Achthar <[email protected]>
/******************************************************************************/

import {LibModules} from "./libraries/LibModules.sol";
import {IModuleConfig} from "./interfaces/IModuleConfig.sol";

contract DeltaBrokerProxy {
    error noImplementation();

    constructor(address _contractOwner, address _moduleConfigModule) payable {
        LibModules.setContractOwner(_contractOwner);

        // Add the moduleConfig external function from the moduleConfigModule
        IModuleConfig.ModuleConfig[] memory cut = new IModuleConfig.ModuleConfig[](1);
        bytes4[] memory functionSelectors = new bytes4[](1);
        functionSelectors[0] = IModuleConfig.configureModules.selector;
        cut[0] = IModuleConfig.ModuleConfig({
            moduleAddress: _moduleConfigModule,
            action: IModuleConfig.ModuleConfigAction.Add,
            functionSelectors: functionSelectors
        });
        LibModules.configureModules(cut);
    }

    // An efficient multicall implementation for directly calling functions across multiple modules
    // Note that this multicall is payable, as such, native multi-spending has to be taken into account by
    // the caller
    function multicall(bytes[] calldata data) external payable {
        // This is used in assembly below as impls.slot.
        mapping(bytes4 => address) storage impls = LibModules.moduleStorage().selectorToModule;
        assembly {
            mstore(0x00, 0x20)
            let tracker := 0x40
            // `shl` 5 is equivalent to multiplying by 0x20.
            let end := shl(5, data.length)
            // Copy the offsets from calldata into memory.
            calldatacopy(0x40, data.offset, end)
            // Offset into `tracker`.
            let currentOffset := end
            // Pointer to the end of `tracker`.
            end := add(tracker, end)

            for {

            } 1 {

            } {
                // The offset of the current bytes in the calldata.
                let o := add(data.offset, mload(tracker))
                let m := add(currentOffset, 0x40)
                // Copy the current bytes from calldata to the memory.
                calldatacopy(
                    m,
                    add(o, 0x20), // The offset of the current bytes' bytes.
                    calldataload(o) // The length of the current bytes.
                )
                // determine the selector
                let target := and(
                    mload(m), // calldata was copied to 0, we load the selector from there
                    0xFFFFFFFF00000000000000000000000000000000000000000000000000000000
                )
                mstore(0x00, target)
                mstore(0x20, impls.slot)
                let slot := keccak256(0x00, 0x40)
                // assign module
                target := sload(slot)
                if iszero(target) {
                    // Reverting with NoImplementation
                    mstore(0x00, 0x6826a5a500000000000000000000000000000000000000000000000000000000)
                    revert(0x00, 4)
                }
                // execute the current call
                if iszero(delegatecall(gas(), target, m, calldataload(o), codesize(), 0x00)) {
                    // Bubble up the revert if the delegatecall reverts.
                    returndatacopy(0x00, 0x00, returndatasize())
                    revert(0x00, returndatasize())
                }
                tracker := add(tracker, 0x20)
                if iszero(lt(tracker, end)) {
                    break
                }
            }
        }
    }

    // Find module for function that is called and execute the
    // function if a module is found and return any value.
    fallback() external payable {
        // This is used in assembly below as impls.slot.
        mapping(bytes4 => address) storage impls = LibModules.moduleStorage().selectorToModule;

        assembly {
            let cdlen := calldatasize()
            // Store at 0x40, to leave 0x00-0x3F for slot calculation below.
            calldatacopy(0x40, 0x00, cdlen)
            let target := and(mload(0x40), 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)

            // Slot for impls[target] is keccak256(target . impls.slot).
            mstore(0x00, target)
            mstore(0x20, impls.slot)
            let slot := keccak256(0x00, 0x40)
            target := sload(slot) // overwrite target to delegate address
            if iszero(target) {
                // Revert with:
                // abi.encodeWithSelector(
                //   bytes4(keccak256("NoImplementation()")))
                mstore(0x00, 0x6826a5a500000000000000000000000000000000000000000000000000000000)
                revert(0x00, 4)
            }

            let success := delegatecall(gas(), target, 0x40, cdlen, 0x00, 0x00)
            let rdlen := returndatasize()
            returndatacopy(0x00, 0x00, rdlen)
            if success {
                return(0x00, rdlen)
            }
            revert(0x00, rdlen)
        }
    }

    receive() external payable {}
}

// SPDX-License-Identifier: MIT
/**
 * Vendored on December 23, 2021 from:
 * https://github.com/mudgen/diamond-3-hardhat/blob/7feb995/contracts/interfaces/IModuleConfig.sol
 */
pragma solidity ^0.8.0;

interface IModuleConfig {
    enum ModuleConfigAction {
        Add,
        Replace,
        Remove
    }
    // Add=0, Replace=1, Remove=2

    struct ModuleConfig {
        address moduleAddress;
        ModuleConfigAction action;
        bytes4[] functionSelectors;
    }

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _moduleConfig Contains the module addresses and function selectors
    function configureModules(ModuleConfig[] calldata _moduleConfig) external;
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/******************************************************************************\
* Author: Achthar - 1delta.io
* Modified diamond module handling library
/******************************************************************************/

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

// solhint-disable max-line-length

error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata);

library LibModules {
    bytes32 constant MODULE_STORAGE_POSITION = keccak256("diamond.standard.module.storage");

    struct ModuleAddressAndPosition {
        address moduleAddress;
        uint96 functionSelectorPosition; // position in moduleFunctionSelectors.functionSelectors array
    }

    struct ModuleFunctionSelectors {
        bytes4[] functionSelectors;
        uint256 moduleAddressPosition; // position of moduleAddress in moduleAddresses array
    }

    struct ModuleStorage {
        // maps function selector to the module address and
        // the position of the selector in the moduleFunctionSelectors.selectors array
        mapping(bytes4 => ModuleAddressAndPosition) selectorToModuleAndPosition;
        // maps selector to module
        mapping(bytes4 => address) selectorToModule;
        // maps module addresses to function selectors
        mapping(address => ModuleFunctionSelectors) moduleFunctionSelectors;
        // module addresses
        address[] moduleAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // Used to query if a module exits
        mapping(address => bool) moduleExists;
        // owner of the contract
        address contractOwner;
    }

    function moduleStorage() internal pure returns (ModuleStorage storage ds) {
        bytes32 position = MODULE_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }

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

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

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

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

    event Upgrade(IModuleConfig.ModuleConfig[] _moduleChange);

    // Internal function version of diamondCut
    function configureModules(IModuleConfig.ModuleConfig[] memory _moduleChange) internal {
        for (uint256 moduleIndex; moduleIndex < _moduleChange.length; moduleIndex++) {
            IModuleConfig.ModuleConfigAction action = _moduleChange[moduleIndex].action;
            if (action == IModuleConfig.ModuleConfigAction.Add) {
                addFunctions(_moduleChange[moduleIndex].moduleAddress, _moduleChange[moduleIndex].functionSelectors);
            } else if (action == IModuleConfig.ModuleConfigAction.Replace) {
                replaceFunctions(_moduleChange[moduleIndex].moduleAddress, _moduleChange[moduleIndex].functionSelectors);
            } else if (action == IModuleConfig.ModuleConfigAction.Remove) {
                removeFunctions(_moduleChange[moduleIndex].moduleAddress, _moduleChange[moduleIndex].functionSelectors);
            } else {
                revert("LibModuleConfig: Incorrect ModuleConfigAction");
            }
        }
        emit Upgrade(_moduleChange);
    }

    function addFunctions(address _moduleAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibModuleConfig: No selectors in module to cut");
        ModuleStorage storage ds = moduleStorage();
        require(_moduleAddress != address(0), "LibModuleConfig: Add module can't be address(0)");
        uint96 selectorPosition = uint96(ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.length);
        // add new module address if it does not exist
        if (selectorPosition == 0) {
            addModule(ds, _moduleAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldModuleAddress = ds.selectorToModuleAndPosition[selector].moduleAddress;
            require(oldModuleAddress == address(0), "LibModuleConfig: Can't add function that already exists");
            addFunction(ds, selector, selectorPosition, _moduleAddress);
            selectorPosition++;
        }
    }

    function replaceFunctions(address _moduleAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibModuleConfig: No selectors in module to cut");
        ModuleStorage storage ds = moduleStorage();
        require(_moduleAddress != address(0), "LibModuleConfig: Add module can't be address(0)");
        uint96 selectorPosition = uint96(ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.length);
        // add new module address if it does not exist
        if (selectorPosition == 0) {
            addModule(ds, _moduleAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldModuleAddress = ds.selectorToModuleAndPosition[selector].moduleAddress;
            require(oldModuleAddress != _moduleAddress, "LibModuleConfig: Can't replace function with same function");
            removeFunction(ds, oldModuleAddress, selector);
            addFunction(ds, selector, selectorPosition, _moduleAddress);
            selectorPosition++;
        }
    }

    function removeFunctions(address _moduleAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibModuleConfig: No selectors in module to cut");
        ModuleStorage storage ds = moduleStorage();
        // if function does not exist then do nothing and return
        require(_moduleAddress == address(0), "LibModuleConfig: Remove module address must be address(0)");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldModuleAddress = ds.selectorToModuleAndPosition[selector].moduleAddress;
            removeFunction(ds, oldModuleAddress, selector);
        }
    }

    function addModule(ModuleStorage storage ds, address _moduleAddress) internal {
        enforceHasContractCode(_moduleAddress, "LibModuleConfig: New module has no code");
        ds.moduleFunctionSelectors[_moduleAddress].moduleAddressPosition = ds.moduleAddresses.length;
        ds.moduleAddresses.push(_moduleAddress);
        ds.moduleExists[_moduleAddress] = true;
    }

    function addFunction(
        ModuleStorage storage ds,
        bytes4 _selector,
        uint96 _selectorPosition,
        address _moduleAddress
    ) internal {
        ds.selectorToModuleAndPosition[_selector].functionSelectorPosition = _selectorPosition;
        ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.push(_selector);
        ds.selectorToModuleAndPosition[_selector].moduleAddress = _moduleAddress;
        ds.selectorToModule[_selector] = _moduleAddress;
    }

    function removeFunction(
        ModuleStorage storage ds,
        address _moduleAddress,
        bytes4 _selector
    ) internal {
        require(_moduleAddress != address(0), "LibModuleConfig: Can't remove function that doesn't exist");
        // an immutable function is a function defined directly in a diamond
        require(_moduleAddress != address(this), "LibModuleConfig: Can't remove immutable function");
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds.selectorToModuleAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds.moduleFunctionSelectors[_moduleAddress].functionSelectors[lastSelectorPosition];
            ds.moduleFunctionSelectors[_moduleAddress].functionSelectors[selectorPosition] = lastSelector;
            ds.selectorToModuleAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);
        }
        // delete the last selector
        ds.moduleFunctionSelectors[_moduleAddress].functionSelectors.pop();
        delete ds.selectorToModuleAndPosition[_selector];
        delete ds.selectorToModule[_selector];

        // if no more selectors for module address then delete the module address
        if (lastSelectorPosition == 0) {
            // replace module address with last module address and delete last module address
            uint256 lastModuleAddressPosition = ds.moduleAddresses.length - 1;
            uint256 moduleAddressPosition = ds.moduleFunctionSelectors[_moduleAddress].moduleAddressPosition;
            if (moduleAddressPosition != lastModuleAddressPosition) {
                address lastModuleAddress = ds.moduleAddresses[lastModuleAddressPosition];
                ds.moduleAddresses[moduleAddressPosition] = lastModuleAddress;
                ds.moduleFunctionSelectors[lastModuleAddress].moduleAddressPosition = moduleAddressPosition;
            }
            ds.moduleAddresses.pop();
            delete ds.moduleFunctionSelectors[_moduleAddress].moduleAddressPosition;
            ds.moduleExists[_moduleAddress] = false;
        }
    }

    function initializeModuleConfig(address _init, bytes memory _calldata) internal {
        if (_init == address(0)) {
            return;
        }
        enforceHasContractCode(_init, "LibModuleConfig: _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)
        }
        require(contractSize > 0, _errorMessage);
    }
}

Settings
{
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_moduleConfigModule","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"noImplementation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"moduleAddress","type":"address"},{"internalType":"enum IModuleConfig.ModuleConfigAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IModuleConfig.ModuleConfig[]","name":"_moduleChange","type":"tuple[]"}],"name":"Upgrade","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040516200148638038062001486833981016040819052620000269162000f71565b62000031826200012e565b604080516001808252818301909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200004857505060408051600180825281830190925291925060009190602080830190803683370190505090506369fc9a8060e01b81600081518110620000bb57620000bb62000fa9565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03851681529081016000815260200182815250826000815181106200010e576200010e62000fa9565b60209081029190910101526200012482620001b2565b5050505062001184565b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40780546001600160a01b031981166001600160a01b038481169182179093556040516000805160206200141f833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b8151811015620003b8576000828281518110620001d657620001d662000fa9565b602002602001015160200151905060006002811115620001fa57620001fa62000fbf565b8160028111156200020f576200020f62000fbf565b036200026d57620002678383815181106200022e576200022e62000fa9565b6020026020010151600001518484815181106200024f576200024f62000fa9565b602002602001015160400151620003f560201b60201c565b620003ae565b600181600281111562000284576200028462000fbf565b03620002dc5762000267838381518110620002a357620002a362000fa9565b602002602001015160000151848481518110620002c457620002c462000fa9565b6020026020010151604001516200069360201b60201c565b6002816002811115620002f357620002f362000fbf565b036200034b576200026783838151811062000312576200031262000fa9565b60200260200101516000015184848151811062000333576200033362000fa9565b6020026020010151604001516200093c60201b60201c565b60405162461bcd60e51b815260206004820152602d60248201527f4c69624d6f64756c65436f6e6669673a20496e636f7272656374204d6f64756c60448201526c32a1b7b73334b3a0b1ba34b7b760991b60648201526084015b60405180910390fd5b50600101620001b5565b507f5baa3478e7f762f071cc4e10c54ae2573362a38e93c8ba3f39d9acf6e49ca52881604051620003ea919062000fd5565b60405180910390a150565b60008151116200044e5760405162461bcd60e51b815260206004820152602e60248201526000805160206200143f83398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401620003a5565b6000805160206200141f8339815191526001600160a01b038316620004bd5760405162461bcd60e51b815260206004820152602f6024820152600080516020620013ff83398151915260448201526e74206265206164647265737328302960881b6064820152608401620003a5565b6001600160a01b0383166000908152600282016020526040812054906001600160601b0382169003620004f657620004f6828562000a98565b60005b83518110156200068c5760008482815181106200051a576200051a62000fa9565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005c25760405162461bcd60e51b815260206004820152603760248201527f4c69624d6f64756c65436f6e6669673a2043616e2774206164642066756e637460448201527f696f6e207468617420616c7265616479206578697374730000000000000000006064820152608401620003a5565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c1680855260028b0184528285208054600181810183559187528587206008820401805463ffffffff60079093166004026101000a928302191660e08c901c9290920291909117905595855281546001600160a01b03199081168217909255948a0190925290912080549091169091179055836200067a81620010d0565b94505060019092019150620004f99050565b5050505050565b6000815111620006ec5760405162461bcd60e51b815260206004820152602e60248201526000805160206200143f83398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401620003a5565b6000805160206200141f8339815191526001600160a01b0383166200075b5760405162461bcd60e51b815260206004820152602f6024820152600080516020620013ff83398151915260448201526e74206265206164647265737328302960881b6064820152608401620003a5565b6001600160a01b0383166000908152600282016020526040812054906001600160601b0382169003620007945762000794828562000a98565b60005b83518110156200068c576000848281518110620007b857620007b862000fa9565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103620008655760405162461bcd60e51b815260206004820152603a60248201527f4c69624d6f64756c65436f6e6669673a2043616e2774207265706c616365206660448201527f756e6374696f6e20776974682073616d652066756e6374696f6e0000000000006064820152608401620003a5565b6200087285828462000b20565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c1680855260028b0184528285208054600181810183559187528587206008820401805463ffffffff60079093166004026101000a928302191660e08c901c9290920291909117905595855281546001600160a01b03199081168217909255948a0190925290912080549091169091179055836200092a81620010d0565b94505060019092019150620007979050565b6000815111620009955760405162461bcd60e51b815260206004820152602e60248201526000805160206200143f83398151915260448201526d081b5bd91d5b19481d1bc818dd5d60921b6064820152608401620003a5565b6000805160206200141f8339815191526001600160a01b0383161562000a245760405162461bcd60e51b815260206004820152603960248201527f4c69624d6f64756c65436f6e6669673a2052656d6f7665206d6f64756c65206160448201527f646472657373206d7573742062652061646472657373283029000000000000006064820152608401620003a5565b60005b825181101562000a9257600083828151811062000a485762000a4862000fa9565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000a8784828462000b20565b505060010162000a27565b50505050565b62000abd816040518060600160405280602781526020016200145f6027913962000f30565b6003820180546001600160a01b03909216600081815260028501602090815260408083206001908101879055808701865594835281832090950180546001600160a01b03191684179055918152600590940190529120805460ff19169091179055565b6001600160a01b03821662000b9e5760405162461bcd60e51b815260206004820152603960248201527f4c69624d6f64756c65436f6e6669673a2043616e27742072656d6f766520667560448201527f6e6374696f6e207468617420646f65736e2774206578697374000000000000006064820152608401620003a5565b306001600160a01b0383160362000c115760405162461bcd60e51b815260206004820152603060248201527f4c69624d6f64756c65436f6e6669673a2043616e27742072656d6f766520696d60448201526f36baba30b1363290333ab731ba34b7b760811b6064820152608401620003a5565b6001600160e01b03198116600090815260208481526040808320546001600160a01b038616845260028701909252822054600160a01b9091046001600160601b0316919062000c639060019062001101565b905080821462000d5c576001600160a01b0384166000908152600286016020526040812080548390811062000c9c5762000c9c62000fa9565b600091825260208083206008830401546001600160a01b038916845260028a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000cf05762000cf062000fa9565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600286016020526040902080548062000d885762000d886200111d565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b031985168252868152604080832083905560018801909152812080546001600160a01b03191690558190036200068c57600385015460009062000e069060019062001101565b6001600160a01b038616600090815260028801602052604090206001015490915080821462000ebd57600087600301838154811062000e495762000e4962000fa9565b6000918252602090912001546003890180546001600160a01b03909216925082918490811062000e7d5762000e7d62000fa9565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260028901909152604090206001018190555b8660030180548062000ed35762000ed36200111d565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600289018152604080832060010183905560058a019091529020805460ff1916905550505050505050565b813b818162000a925760405162461bcd60e51b8152600401620003a5919062001133565b80516001600160a01b038116811462000f6c57600080fd5b919050565b6000806040838503121562000f8557600080fd5b62000f908362000f54565b915062000fa06020840162000f54565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015620010ac57888303603f19018552815180516001600160a01b031684528781015160609081860190600381106200104957634e487b7160e01b600052602160045260246000fd5b868b0152918801518886019190915280519182905288019060808501906000905b80821015620010965783516001600160e01b0319168352928a0192918a0191600191909101906200106a565b5050958801959350509086019060010162000ffe565b509098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038281166002600160601b03198101620010f757620010f7620010ba565b6001019392505050565b81810381811115620011175762001117620010ba565b92915050565b634e487b7160e01b600052603160045260246000fd5b60006020808352835180602085015260005b81811015620011635785810183015185820160400152820162001145565b506000604082860101526040601f19601f8301168501019250505092915050565b61026b80620011946000396000f3fe6080604052600436106100225760003560e01c8063ac9650d8146100d457610029565b3661002957005b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40236806000604037604080517fffffffff0000000000000000000000000000000000000000000000000000000016600090815260208490522054806100b2577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600080836040845af49150503d806000803e81156100cf57806000f35b806000fd5b6100e76100e23660046101c0565b6100e9565b005b60206000527f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4026040600583901b80858337818101905b8251860160408201813560208301823780517fffffffff000000000000000000000000000000000000000000000000000000001660009081526020879052604090205480610191577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600038843584845af46101a8573d6000803e3d6000fd5b50505060208301925081831061011f57505050505050565b600080602083850312156101d357600080fd5b823567ffffffffffffffff808211156101eb57600080fd5b818501915085601f8301126101ff57600080fd5b81358181111561020e57600080fd5b8660208260051b850101111561022357600080fd5b6020929092019691955090935050505056fea2646970667358221220edfcdb95094c609d61221cc1adff232dbd1ca791793d96642595ca65bf7fb18164736f6c634300081800334c69624d6f64756c65436f6e6669673a20416464206d6f64756c652063616e2776a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4014c69624d6f64756c65436f6e6669673a204e6f2073656c6563746f727320696e4c69624d6f64756c65436f6e6669673a204e6577206d6f64756c6520686173206e6f20636f6465000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f000000000000000000000000554e97c885f92f091b08c03afb24eebdf8a720f7

Deployed Bytecode

0x6080604052600436106100225760003560e01c8063ac9650d8146100d457610029565b3661002957005b7f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc40236806000604037604080517fffffffff0000000000000000000000000000000000000000000000000000000016600090815260208490522054806100b2577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600080836040845af49150503d806000803e81156100cf57806000f35b806000fd5b6100e76100e23660046101c0565b6100e9565b005b60206000527f76a4e0db4b1954ed8d81a6d47b0f62dd8c71c2f4e57cbbe90dd863575a2bc4026040600583901b80858337818101905b8251860160408201813560208301823780517fffffffff000000000000000000000000000000000000000000000000000000001660009081526020879052604090205480610191577f6826a5a50000000000000000000000000000000000000000000000000000000060005260046000fd5b600038843584845af46101a8573d6000803e3d6000fd5b50505060208301925081831061011f57505050505050565b600080602083850312156101d357600080fd5b823567ffffffffffffffff808211156101eb57600080fd5b818501915085601f8301126101ff57600080fd5b81358181111561020e57600080fd5b8660208260051b850101111561022357600080fd5b6020929092019691955090935050505056fea2646970667358221220edfcdb95094c609d61221cc1adff232dbd1ca791793d96642595ca65bf7fb18164736f6c63430008180033

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

000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f000000000000000000000000554e97c885f92f091b08c03afb24eebdf8a720f7

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x999999833d965c275A2C102a4Ebf222ca938546f
Arg [1] : _moduleConfigModule (address): 0x554E97c885F92F091b08c03AfB24eEBdf8a720f7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000999999833d965c275a2c102a4ebf222ca938546f
Arg [1] : 000000000000000000000000554e97c885f92f091b08c03afb24eebdf8a720f7


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