Base Sepolia Testnet

Contract

0x41392317E88dB3988B8E87D1F66d191d970A2593
Source Code Source Code

Overview

ETH Balance

0 ETH

Token Holdings

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Execute363314062026-01-14 22:51:4092 days ago1768431100IN
0x41392317...d970A2593
0 ETH0.000000670.0012
Execute363314032026-01-14 22:51:3492 days ago1768431094IN
0x41392317...d970A2593
0 ETH0.000000090.0012
Execute363314012026-01-14 22:51:3092 days ago1768431090IN
0x41392317...d970A2593
0 ETH0.000000180.0012
Execute363313972026-01-14 22:51:2292 days ago1768431082IN
0x41392317...d970A2593
0 ETH0.000000370.0012
Execute363313942026-01-14 22:51:1692 days ago1768431076IN
0x41392317...d970A2593
0 ETH0.000000190.0012
Execute363313922026-01-14 22:51:1292 days ago1768431072IN
0x41392317...d970A2593
0 ETH0.000000390.00120345
Execute363311462026-01-14 22:43:0092 days ago1768430580IN
0x41392317...d970A2593
0 ETH0.000000670.0012
Execute363311432026-01-14 22:42:5492 days ago1768430574IN
0x41392317...d970A2593
0 ETH0.000000090.0012
Execute363311412026-01-14 22:42:5092 days ago1768430570IN
0x41392317...d970A2593
0 ETH0.000000180.0012
Execute363311372026-01-14 22:42:4292 days ago1768430562IN
0x41392317...d970A2593
0 ETH0.000000370.0012
Execute363311342026-01-14 22:42:3692 days ago1768430556IN
0x41392317...d970A2593
0 ETH0.000000190.0012
Execute363311312026-01-14 22:42:3092 days ago1768430550IN
0x41392317...d970A2593
0 ETH0.000000380.0012
Execute363310642026-01-14 22:40:1692 days ago1768430416IN
0x41392317...d970A2593
0 ETH0.000000670.0012
Execute363310612026-01-14 22:40:1092 days ago1768430410IN
0x41392317...d970A2593
0 ETH0.000000180.0012
Execute363310592026-01-14 22:40:0692 days ago1768430406IN
0x41392317...d970A2593
0 ETH0.000000370.0012
Execute363310562026-01-14 22:40:0092 days ago1768430400IN
0x41392317...d970A2593
0 ETH0.000000170.0012
Execute363310542026-01-14 22:39:5692 days ago1768430396IN
0x41392317...d970A2593
0 ETH0.000000390.0012
Execute363307542026-01-14 22:29:5692 days ago1768429796IN
0x41392317...d970A2593
0 ETH0.000000160.00120044
Execute363307512026-01-14 22:29:5092 days ago1768429790IN
0x41392317...d970A2593
0 ETH0.000000160.0012
Execute363304452026-01-14 22:19:3892 days ago1768429178IN
0x41392317...d970A2593
0 ETH0.000000090.0012
Execute363304432026-01-14 22:19:3492 days ago1768429174IN
0x41392317...d970A2593
0 ETH0.000000160.0012
Execute363304402026-01-14 22:19:2892 days ago1768429168IN
0x41392317...d970A2593
0 ETH0.000000180.0012
Execute363288602026-01-14 21:26:4892 days ago1768426008IN
0x41392317...d970A2593
0 ETH0.000000160.0012
Execute363288572026-01-14 21:26:4292 days ago1768426002IN
0x41392317...d970A2593
0 ETH0.000000160.0012
Execute363288322026-01-14 21:25:5292 days ago1768425952IN
0x41392317...d970A2593
0 ETH0.000000160.0012
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To Amount
360447022026-01-08 7:34:5299 days ago1767857692  Contract Creation0 ETH

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x02b5830f...A2d12430E
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Diamond

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
prague EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.30;

// solhint-disable ordering

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

/**
 * @title Diamond
 * @notice Core diamond proxy contract following EIP-2535
 * @dev This is the only contract in the system that uses a constructor
 *      Storage is shared via DiamondStorage abstract contract
 *      The diamond delegates all function calls to registered facets
 * @author CapSign Protocol Team
 */
contract Diamond is DiamondStorage {
    // ============ Constructor ============

    /**
     * @notice Deploy a new diamond with initial facets
     * @param _diamondCut Initial facet cuts to add
     * @param _init Address of initialization contract (optional)
     * @param _calldata Initialization call data (optional)
     */
    constructor(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) payable {
        // Perform diamond cut
        diamondCut(_diamondCut);

        // Emit DiamondCut event as per ERC-2535
        emit IDiamondCut.DiamondCut(_diamondCut, _init, _calldata);

        // Call initialization if provided
        if (_init != address(0)) {
            // Handle multi-init pattern
            if (_init == Constants.MULTI_INIT_ADDRESS) {
                IDiamondCut.MultiInit[] memory multiInitData = abi.decode(_calldata, (IDiamondCut.MultiInit[]));
                uint256 length = multiInitData.length;
                for (uint256 i = 0; i < length; i++) {
                    address initAddress = multiInitData[i].init;

                    // Check that init address has code
                    if (initAddress.code.length == 0) {
                        revert IDiamondCut.Diamond_InitializationFailed("");
                    }

                    (bool multiSuccess, bytes memory multiError) = initAddress.delegatecall(multiInitData[i].initData);
                    if (!multiSuccess) {
                        if (multiError.length > 0) {
                            // Bubble up the error from the initialization contract
                            assembly {
                                let returndata_size := mload(multiError)
                                revert(add(32, multiError), returndata_size)
                            }
                        } else {
                            revert IDiamondCut.Diamond_InitializationFailed(multiError);
                        }
                    }
                }
            } else {
                // Handle single init
                // Check that init address has code
                if (_init.code.length == 0) {
                    revert IDiamondCut.Diamond_InitializationFailed("");
                }

                (bool success, bytes memory error) = _init.delegatecall(_calldata);
                if (!success) {
                    if (error.length > 0) {
                        // Bubble up the error from the initialization contract
                        assembly {
                            let returndata_size := mload(error)
                            revert(add(32, error), returndata_size)
                        }
                    } else {
                        revert IDiamondCut.Diamond_InitializationFailed(error);
                    }
                }
            }
        }
    }

    // ============ Fallback ============

    /**
     * @notice Fallback function that delegates calls to facets
     * @dev Looks up the facet address for msg.sig and delegates via delegatecall
     *      Reverts if no facet is registered for the function selector
     *      All state modifications affect the diamond's storage, not the facet's
     */
    fallback() external payable {
        DiamondStorageLayout storage ds = getDiamondStorage();
        address facet = ds.selectorInfo[msg.sig].facetAddress;

        if (facet == address(0)) {
            revert IDiamondCut.Diamond_FunctionDoesNotExist(msg.sig);
        }

        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()) }
        }
    }

    /**
     * @notice Receive function to accept ETH transfers
     * @dev Allows the diamond to receive ETH without calldata
     */
    receive() external payable {}

    // ============ Internal Diamond Cut ============

    /**
     * @notice Internal function to perform diamond cut during construction
     * @dev Simplified version that only handles Add action during deployment
     *      Full diamond cut logic (Add/Replace/Remove) is in DiamondCutFacet
     * @param _diamondCut Array of facet cuts to add during deployment
     */
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut
    ) internal {
        DiamondStorageLayout storage ds = getDiamondStorage();
        uint256 length = _diamondCut.length;

        for (uint256 facetIndex; facetIndex < length; facetIndex++) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            bytes4[] memory functionSelectors = _diamondCut[facetIndex].functionSelectors;
            address facetAddress = _diamondCut[facetIndex].facetAddress;

            if (action == IDiamondCut.FacetCutAction.Add) {
                uint16 selectorCount = uint16(ds.selectors.length);
                for (uint256 selectorIndex; selectorIndex < functionSelectors.length; selectorIndex++) {
                    bytes4 selector = functionSelectors[selectorIndex];
                    ds.selectorInfo[selector] =
                        SelectorInfo({facetAddress: facetAddress, selectorPosition: selectorCount});
                    ds.selectors.push(selector);
                    selectorCount++;
                }
            }
        }
    }
}

File 2 of 4 : IDiamondCut.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.30;

/**
 * @title IDiamondCut
 * @notice Interface for diamond modification operations
 * @dev Implements ERC-2535 Diamond Standard for adding, replacing, and removing facets
 * @author CapSign Protocol Team
 */
interface IDiamondCut {
    // ============ Enums & Structs ============

    /**
     * @notice Types of facet modification operations
     * @dev Add = 0: Add new function selectors to a facet
     *      Replace = 1: Replace existing function selectors with new facet
     *      Remove = 2: Remove function selectors from diamond
     */
    enum FacetCutAction {
        Add,
        Replace,
        Remove
    }

    /**
     * @notice Represents a facet modification operation
     * @dev Used to specify which functions to add, replace, or remove
     * @param facetAddress Address of the facet contract (zero address for Remove action)
     * @param action Type of operation to perform (Add, Replace, or Remove)
     * @param functionSelectors Array of function selectors to modify
     */
    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    /**
     * @notice Represents a multi-initialization call for diamond setup
     * @dev Used to batch multiple initialization calls into a single transaction
     *      Each init contract will be delegatecalled with its corresponding initData
     * @param init Address of the initialization contract
     * @param initData Calldata for the initialization function
     */
    struct MultiInit {
        address init;
        bytes initData;
    }

    // ============ Events ============

    /**
     * @notice Emitted when facets are added, replaced, or removed
     * @dev This event enables off-chain tracking of all diamond modifications
     * @param diamondCut Array of facet cuts that were performed
     * @param init Address of initialization contract used (or address(0))
     * @param data Initialization call data used (or empty bytes)
     */
    event DiamondCut(FacetCut[] diamondCut, address init, bytes data);

    // ============ Errors ============

    /**
     * @notice Thrown when no selectors provided for Add action
     */
    error DiamondCut_NoSelectorsGivenToAdd();

    /**
     * @notice Thrown when facet cut has no selectors
     * @param facet The facet address that was provided
     */
    error DiamondCut_NoSelectorsProvidedForFacet(address facet);

    /**
     * @notice Thrown when trying to add selectors to zero address
     * @param selectors The selectors that cannot be added
     */
    error DiamondCut_CannotAddSelectorsToZeroAddress(bytes4[] selectors);

    /**
     * @notice Thrown when facet address has no bytecode
     * @param facet The facet address with no code
     * @param message Additional context message
     */
    error DiamondCut_NoBytecodeAtAddress(address facet, string message);

    /**
     * @notice Thrown when trying to add a function that already exists
     * @param selector The function selector that already exists
     */
    error DiamondCut_FunctionAlreadyExists(bytes4 selector);

    /**
     * @notice Thrown when trying to replace functions from zero address
     * @param selectors The selectors that cannot be replaced
     */
    error DiamondCut_CannotReplaceFunctionsFromZeroAddress(bytes4[] selectors);

    /**
     * @notice Thrown when trying to replace function with same facet
     * @param selector The function selector
     */
    error DiamondCut_CannotReplaceFunctionWithSameFunctionFromSameFacet(bytes4 selector);

    /**
     * @notice Thrown when trying to replace a function that doesn't exist
     * @param selector The function selector that doesn't exist
     */
    error DiamondCut_CannotReplaceFunctionThatDoesNotExist(bytes4 selector);

    /**
     * @notice Thrown when remove action doesn't use zero address
     * @param facet The non-zero facet address provided
     */
    error DiamondCut_RemoveFacetAddressMustBeZeroAddress(address facet);

    /**
     * @notice Thrown when trying to remove a function that doesn't exist
     * @param selector The function selector that doesn't exist
     */
    error DiamondCut_CannotRemoveFunctionThatDoesNotExist(bytes4 selector);

    /**
     * @notice Thrown when initialization function reverts
     * @param initAddress The initialization contract address
     * @param data The calldata that caused the revert
     */
    error DiamondCut_InitializationFunctionReverted(address initAddress, bytes data);

    /**
     * @notice Thrown when a function selector doesn't exist in the diamond
     * @param selector The function selector that was called
     */
    error Diamond_FunctionDoesNotExist(bytes4 selector);

    /**
     * @notice Thrown when diamond initialization fails
     * @param error The error data from the failed initialization
     */
    error Diamond_InitializationFailed(bytes error);

    // ============ Functions ============

    /**
     * @notice Add/replace/remove facet functions from the diamond
     * @dev Executes all cuts in sequence, then optionally calls initialization contract
     *      Emits DiamondCut event after successful execution
     *      Reverts if any cut fails or initialization fails
     * @param _diamondCut Array of facet cuts to perform
     * @param _init Address of initialization contract (or address(0) to skip initialization)
     * @param _calldata Initialization call data (or empty bytes if no initialization)
     * @custom:requires-auth Caller must have appropriate access control permissions
     * @custom:security Initialization is executed via delegatecall, ensure init contract is trusted
     * @custom:emits DiamondCut
     */
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external;
}

File 3 of 4 : Constants.sol
// SPDX-License-Identifier: BUSL-1.1
// License details at https://github.com/capsign/protocol/blob/main/LICENSE
// Change Date: 2030-01-01
// Change License: MIT

pragma solidity ^0.8.30;

/**
 * @title Constants
 * @notice Global constants for the diamond system
 * @author CapSign Inc.
 */
library Constants {
    /**
     * @notice Magic address to signal multi-initialization during diamond cut
     * @dev When _init parameter equals this address, _calldata is decoded as MultiInit[]
     *      This allows multiple facet initializations in a single transaction
     *      This is a magic constant value, not a deployed contract address
     */
    address internal constant MULTI_INIT_ADDRESS = 0xD1a302d1A302d1A302d1A302d1A302D1A302D1a3;
}

File 4 of 4 : DiamondStorage.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.30;

/**
 * @title DiamondStorage
 * @notice Shared storage base for diamond and diamond facets
 * @dev Abstract contract providing storage access helpers for diamond operations
 * @author CapSign Inc.
 */
abstract contract DiamondStorage {
    // ============ DIAMOND STORAGE (ERC-8042 Diamond Storage) ============

    struct SelectorInfo {
        address facetAddress;
        uint16 selectorPosition;
    }

    struct DiamondStorageLayout {
        mapping(bytes4 => SelectorInfo) selectorInfo;
        bytes4[] selectors;
        mapping(bytes4 => bool) supportedInterfaces;
    }

    /// @dev Format: capsign.<package>.<functionality>.storage
    bytes32 internal constant DIAMOND_STORAGE_POSITION = keccak256("capsign.diamonds.core.storage");

    /**
     * @notice Get diamond storage using ERC-8042 Diamond Storage pattern
     * @dev Uses assembly to set storage pointer to namespaced position
     * @return ds Storage pointer to DiamondStorageLayout struct
     */
    function getDiamondStorage() internal pure returns (DiamondStorageLayout storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }
}

Settings
{
  "remappings": [
    "@account-abstraction/contracts/=lib/account-abstraction/contracts/",
    "@escrows/=packages/escrows/",
    "@diamonds/=packages/diamonds/",
    "@offerings/=packages/offerings/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@paymaster/=packages/paymaster/",
    "@tokens/=packages/tokens/",
    "@wallets/=packages/wallets/",
    "FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/",
    "escrows-src/=packages/escrows/src/",
    "escrows/=packages/escrows/interfaces/",
    "diamonds-src/=packages/diamonds/src/",
    "diamonds/=packages/diamonds/interfaces/",
    "forge-std/=lib/forge-std/src/",
    "offerings-src/=packages/offerings/src/",
    "offerings/=packages/offerings/interfaces/",
    "paymaster-src/=packages/paymaster/src/",
    "paymaster/=packages/paymaster/interfaces/",
    "solady/=lib/solady/src/",
    "tokens-src/=packages/tokens/src/",
    "tokens/=packages/tokens/interfaces/",
    "wallets-src/=packages/wallets/src/",
    "wallets/=packages/wallets/interfaces/",
    "webauthn-sol/=lib/webauthn-sol/src/",
    "@diamonds/interfaces/=packages/diamonds/interfaces/",
    "@diamonds/src/=packages/diamonds/src/",
    "@tokens/interfaces/=packages/tokens/interfaces/",
    "@tokens/src/=packages/tokens/src/",
    "@offerings/interfaces/=packages/offerings/interfaces/",
    "@offerings/src/=packages/offerings/src/",
    "@wallets/interfaces/=packages/wallets/interfaces/",
    "@wallets/src/=packages/wallets/src/",
    "v4-core/=lib/v4-core/src/",
    "v4-periphery/=lib/v4-periphery/src/",
    "permit2/=lib/v4-periphery/lib/permit2/",
    "@ensdomains/=lib/v4-core/node_modules/@ensdomains/",
    "@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/",
    "account-abstraction/=lib/account-abstraction/contracts/",
    "ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/",
    "eas-contracts/=lib/eas-contracts/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "hardhat/=lib/v4-core/node_modules/hardhat/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/v4-core/lib/solmate/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "prague",
  "viaIR": true
}

Contract ABI

API
[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"Diamond_FunctionDoesNotExist","type":"error"},{"inputs":[{"internalType":"bytes","name":"error","type":"bytes"}],"name":"Diamond_InitializationFailed","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":"data","type":"bytes"}],"name":"DiamondCut","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

0x608060405261092e80380380610014816101f5565b9283398101906060818303126100c45780516001600160401b0381116100c45781019082601f830112156100c4578151916100566100518461021a565b6101f5565b9260208085838152019160051b830101918583116100c45760208101915b8383106100c8575050505061008b60208201610231565b6040820151939091906001600160401b0385116100c4576100b6946100b09201610260565b91610501565b60405160b890816108568239f35b5f80fd5b82516001600160401b0381116100c45782016060818903601f1901126100c4576100f06101b2565b906100fd60208201610231565b8252604081015160038110156100c457602083015260608101516001600160401b0381116100c457602091010188601f820112156100c45780516101436100518261021a565b9160208084848152019260051b820101908b82116100c457602001915b81831061017d575050506040820152815260209283019201610074565b82516001600160e01b0319811681036100c457815260209283019201610160565b634e487b7160e01b5f52604160045260245ffd5b60405190606082016001600160401b038111838210176101d157604052565b61019e565b60408051919082016001600160401b038111838210176101d157604052565b6040519190601f01601f191682016001600160401b038111838210176101d157604052565b6001600160401b0381116101d15760051b60200190565b51906001600160a01b03821682036100c457565b6001600160401b0381116101d157601f01601f191660200190565b81601f820112156100c45780519061027a61005183610245565b92828452602083830101116100c457815f9260208093018386015e8301015290565b600311156102a657565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9392909193606081016060825283518091526080820190602060808260051b8501019501915f905b828210610337575050506001600160a01b0390951660208201529293506103349260408184039101526102ba565b90565b848703607f19018152835180516001600160a01b0316885260208101519497939492939192606083019160038210156102a657604060809160209384870152015193606060408201528451809452019201905f905b8082106103aa57505050602080600192980192019201909291610306565b82516001600160e01b03191684526020938401939092019160019091019061038c565b3d156103ed573d906103e161005183610245565b9182523d5f602084013e565b606090565b9060206103349281815201906102ba565b6020818303126100c4578051906001600160401b0382116100c457019080601f830112156100c45781519161043a6100518461021a565b9260208085838152019160051b830101918383116100c45760208101915b83831061046757505050505090565b82516001600160401b0381116100c4578201906040828703601f1901126100c4576104906101d6565b9061049d60208401610231565b82526040830151916001600160401b0383116100c4576104c588602080969581960101610260565b83820152815201920191610458565b634e487b7160e01b5f52603260045260245ffd5b80518210156104fc5760209160051b010190565b6104d4565b817f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6739161052d81610704565b61053d85604051938493846102de565b0390a16001600160a01b0381168061055457505050565b73d1a302d1a302d1a302d1a302d1a302d1a302d1a30361063757508060208061058293518301019101610403565b8051905f5b82811061059357505050565b6105ae6105a082846104e8565b51516001600160a01b031690565b803b15610618575f809160206105c485876104e8565b51015190602082519201905af46105d96103cd565b90156105e85750600101610587565b8051156105f757805190602001fd5b604051636e6e000d60e01b815290819061061490600483016103f2565b0390fd5b604051636e6e000d60e01b8152602060048201525f6024820152604490fd5b803b1561061857815f929160208493519201905af46106546103cd565b90156105e85750565b5160038110156102a65790565b5f51602061090e5f395f51905f525490680100000000000000008210156101d15760018201805f51602061090e5f395f51905f52558210156104fc575f51602061090e5f395f51905f525f5260205f208260031c019163ffffffff60e084549260051b169260e01c831b921b1916179055565b61ffff1661ffff81146106f05760010190565b634e487b7160e01b5f52601160045260245ffd5b8051905f5b82811061071557505050565b61072b602061072483856104e8565b510161065d565b604061073783856104e8565b5101516107476105a084866104e8565b916107518161029c565b15610761575b5050600101610709565b9091939461077e5f51602061090e5f395f51905f525461ffff1690565b955f965b83518810156108445761083c6001916108376107af6107a18c896104e8565b516001600160e01b03191690565b6108326107ba6101d6565b6001600160a01b038b8116825261ffff861660208084019182526001600160e01b031986165f9081527f49e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215559091526040902092518354915161ffff60a01b60a09190911b1692166001600160b01b031990911617179055565b61066a565b6106dd565b970196610782565b50949150945060019150905f61075756fe608060405236156080575f80356001600160e01b0319168082527f49e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215556020526040909120546001600160a01b0316908115606e575f8083368280378136915af43d5f803e15606a573d5ff35b3d5ffd5b632cf008a360e21b5f5260045260245ffd5b00fea26469706673582212208b565633b1d70786639677dbf962968f6b9511f0b3146eb8d5a9663830426a8664736f6c634300081e003349e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215560000000000000000000000000000000000000000000000000000000000000060000000000000000000000000d1a302d1a302d1a302d1a302d1a302d1a302d1a300000000000000000000000000000000000000000000000000000000000015e0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009a00000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000d400000000000000000000000000000000000000000000000000000000000000f4000000000000000000000000000000000000000000000000000000000000010e00000000000000000000000001b2d4da93f89478692dd5e54e26f0e97b14d61900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000005d9723d48e41a09aad637cc9e075da2ef3580d5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000006feb7ab4f000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000adfca15e0000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc60000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000031eddc287dfd8b1a90307d3d397bd92a453ea0da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001119c9eb1f00000000000000000000000000000000000000000000000000000000b61d27f60000000000000000000000000000000000000000000000000000000047e1da2a000000000000000000000000000000000000000000000000000000000f0f3f240000000000000000000000000000000000000000000000000000000029565e3b0000000000000000000000000000000000000000000000000000000089625b5700000000000000000000000000000000000000000000000000000000a2e1a8d800000000000000000000000000000000000000000000000000000000066a1eb7000000000000000000000000000000000000000000000000000000001ca5393f000000000000000000000000000000000000000000000000000000008ea6902900000000000000000000000000000000000000000000000000000000d948fd2e000000000000000000000000000000000000000000000000000000000db0262200000000000000000000000000000000000000000000000000000000c352dae200000000000000000000000000000000000000000000000000000000b0d691fe00000000000000000000000000000000000000000000000000000000d00960100000000000000000000000000000000000000000000000000000000099b20eaf0000000000000000000000000000000000000000000000000000000020a194b800000000000000000000000000000000000000000000000000000000000000000000000000000000443c332e58730139a084ef7b174d492cc706c93000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000dbbdc85a700000000000000000000000000000000000000000000000000000000b10d6b4100000000000000000000000000000000000000000000000000000000385dbda400000000000000000000000000000000000000000000000000000000beeb2a5700000000000000000000000000000000000000000000000000000000ce2620950000000000000000000000000000000000000000000000000000000075ca9a3c000000000000000000000000000000000000000000000000000000009fa5f50b00000000000000000000000000000000000000000000000000000000e56bfd1600000000000000000000000000000000000000000000000000000000cfa52c5300000000000000000000000000000000000000000000000000000000a4c96e75000000000000000000000000000000000000000000000000000000004209992700000000000000000000000000000000000000000000000000000000522f1b830000000000000000000000000000000000000000000000000000000050459e2500000000000000000000000000000000000000000000000000000000000000000000000000000000b4be37d3af0bac78fba4c0200fec016d8fbd5d6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a1626ba7e00000000000000000000000000000000000000000000000000000000333daf9200000000000000000000000000000000000000000000000000000000ce1506be0000000000000000000000000000000000000000000000000000000084b0196e00000000000000000000000000000000000000000000000000000000f698da250000000000000000000000000000000000000000000000000000000019822f7c000000000000000000000000000000000000000000000000000000003a871cdd00000000000000000000000000000000000000000000000000000000dbc34d0500000000000000000000000000000000000000000000000000000000c0baecc900000000000000000000000000000000000000000000000000000000b0a398d1000000000000000000000000000000000000000000000000000000000000000000000000000000003a264ae41af891d91ca5e1d927e4a9bf38c629390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000101e9f9c03000000000000000000000000000000000000000000000000000000005b3fb37d0000000000000000000000000000000000000000000000000000000065683b900000000000000000000000000000000000000000000000000000000019f00185000000000000000000000000000000000000000000000000000000008cc6f44c00000000000000000000000000000000000000000000000000000000315b9f95000000000000000000000000000000000000000000000000000000001544caa3000000000000000000000000000000000000000000000000000000009044e55300000000000000000000000000000000000000000000000000000000437375cf000000000000000000000000000000000000000000000000000000007a5ee0ca000000000000000000000000000000000000000000000000000000004e47bbc100000000000000000000000000000000000000000000000000000000f0fb990e000000000000000000000000000000000000000000000000000000007ca548c60000000000000000000000000000000000000000000000000000000011f646a30000000000000000000000000000000000000000000000000000000036cfd5ba00000000000000000000000000000000000000000000000000000000bc182cfa000000000000000000000000000000000000000000000000000000000000000000000000000000001bbd1bd16eb5036e48fc3fd0080495d7b48519170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000055f12013e000000000000000000000000000000000000000000000000000000004d5e1da60000000000000000000000000000000000000000000000000000000035deba3300000000000000000000000000000000000000000000000000000000fa5e13650000000000000000000000000000000000000000000000000000000059a8fea000000000000000000000000000000000000000000000000000000000000000000000000000000000a9b3b9caa1f57a4c035600e338ec89345fa0cf3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000ca1ad778b0000000000000000000000000000000000000000000000000000000009dd7c24000000000000000000000000000000000000000000000000000000007cfc2db400000000000000000000000000000000000000000000000000000000bebf4e9800000000000000000000000000000000000000000000000000000000632b3b4700000000000000000000000000000000000000000000000000000000781837050000000000000000000000000000000000000000000000000000000034dfbfee00000000000000000000000000000000000000000000000000000000ced4d85100000000000000000000000000000000000000000000000000000000a9ab90720000000000000000000000000000000000000000000000000000000043bf4e8d000000000000000000000000000000000000000000000000000000009b23fb0a00000000000000000000000000000000000000000000000000000000cb9ad44500000000000000000000000000000000000000000000000000000000000000000000000000000000af68fabbc6d598124edcba48fcfaebf0ccf4c8a60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000094c1c1fcd00000000000000000000000000000000000000000000000000000000ef4e95310000000000000000000000000000000000000000000000000000000067aff4840000000000000000000000000000000000000000000000000000000086bed3e00000000000000000000000000000000000000000000000000000000095a8c58d0000000000000000000000000000000000000000000000000000000074d5e100000000000000000000000000000000000000000000000000000000005fcc08b000000000000000000000000000000000000000000000000000000000bf7e214f000000000000000000000000000000000000000000000000000000007a9e5e4b0000000000000000000000000000000000000000000000000000000000000000000000000000000092c5add486e5ee7ee02a9a4e2f0480a0304161e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000205af6435d0000000000000000000000000000000000000000000000000000000017c4905c00000000000000000000000000000000000000000000000000000000d34e090a00000000000000000000000000000000000000000000000000000000b7009613000000000000000000000000000000000000000000000000000000004665096d00000000000000000000000000000000000000000000000000000000cc1b6c8100000000000000000000000000000000000000000000000000000000a166aa89000000000000000000000000000000000000000000000000000000006d5115bd000000000000000000000000000000000000000000000000000000004c1da1e200000000000000000000000000000000000000000000000000000000530dd456000000000000000000000000000000000000000000000000000000000b0a93ba0000000000000000000000000000000000000000000000000000000012be8727000000000000000000000000000000000000000000000000000000003078f11400000000000000000000000000000000000000000000000000000000d1f856ee00000000000000000000000000000000000000000000000000000000853551b80000000000000000000000000000000000000000000000000000000025c471a000000000000000000000000000000000000000000000000000000000b7d2b16200000000000000000000000000000000000000000000000000000000fe0776f50000000000000000000000000000000000000000000000000000000008d6122d00000000000000000000000000000000000000000000000000000000d22b598900000000000000000000000000000000000000000000000000000000167bd3950000000000000000000000000000000000000000000000000000000030cae187000000000000000000000000000000000000000000000000000000005296295200000000000000000000000000000000000000000000000000000000a64d95ce0000000000000000000000000000000000000000000000000000000018ff183c00000000000000000000000000000000000000000000000000000000f801a698000000000000000000000000000000000000000000000000000000001cff79cd00000000000000000000000000000000000000000000000000000000d6bb62c60000000000000000000000000000000000000000000000000000000094c7d7ee00000000000000000000000000000000000000000000000000000000abd9bd2a000000000000000000000000000000000000000000000000000000004136a33c000000000000000000000000000000000000000000000000000000003adc277a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000af68fabbc6d598124edcba48fcfaebf0ccf4c8a6000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244c1c1fcd0000000000000000000000002bb78a7420abd57caf582bff2ad9d9ae001a94e40000000000000000000000000000000000000000000000000000000000000000000000000000000031eddc287dfd8b1a90307d3d397bd92a453ea0da0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000012419c9eb1f000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000071727de22e5e9d8baf0edac6f37da0320000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000142bb78a7420abd57caf582bff2ad9d9ae001a94e4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4361705369676e57616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a264ae41af891d91ca5e1d927e4a9bf38c62939000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001841e9f9c030000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bb78a7420abd57caf582bff2ad9d9ae001a94e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f44656d6f20454f41205369676e6572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405236156080575f80356001600160e01b0319168082527f49e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215556020526040909120546001600160a01b0316908115606e575f8083368280378136915af43d5f803e15606a573d5ff35b3d5ffd5b632cf008a360e21b5f5260045260245ffd5b00fea26469706673582212208b565633b1d70786639677dbf962968f6b9511f0b3146eb8d5a9663830426a8664736f6c634300081e0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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