ETH Price: $2,390.42 (+1.29%)

Contract

0x4196b39157659BF0De9ebF6E505648B7889a39cE
 
Transaction Hash
Method
Block
From
To
Transfer ERC721s85972292024-09-10 21:37:532 hrs ago1726004273IN
Element: ElementEx
0 ETH0.000004990.005292
Cancel ERC721Ord...85930462024-09-10 19:18:274 hrs ago1725995907IN
Element: ElementEx
0 ETH0.000000250.00761925
Transfer ERC721s85889152024-09-10 17:00:456 hrs ago1725987645IN
Element: ElementEx
0 ETH0.000000960.00837209
Transfer ERC721s85885562024-09-10 16:48:476 hrs ago1725986927IN
Element: ElementEx
0 ETH0.000000710.00617199
Transfer ERC721s85884362024-09-10 16:44:476 hrs ago1725986687IN
Element: ElementEx
0 ETH0.000000710.00620167
Transfer ERC721s85882992024-09-10 16:40:136 hrs ago1725986413IN
Element: ElementEx
0 ETH0.000000760.0066032
Transfer ERC721s85881462024-09-10 16:35:077 hrs ago1725986107IN
Element: ElementEx
0 ETH0.000000830.00724665
Transfer ERC721s85880262024-09-10 16:31:077 hrs ago1725985867IN
Element: ElementEx
0 ETH0.000000910.00790222
Transfer ERC721s85878852024-09-10 16:26:257 hrs ago1725985585IN
Element: ElementEx
0 ETH0.0000010.00874268
Transfer ERC721s85877262024-09-10 16:21:077 hrs ago1725985267IN
Element: ElementEx
0 ETH0.000001060.00924127
Transfer ERC721s85873602024-09-10 16:08:557 hrs ago1725984535IN
Element: ElementEx
0 ETH0.000001150.01006577
Transfer ERC721s85871402024-09-10 16:01:357 hrs ago1725984095IN
Element: ElementEx
0 ETH0.000001150.01005898
Transfer ERC721s85832032024-09-10 13:50:219 hrs ago1725976221IN
Element: ElementEx
0 ETH0.000003010.00573272
Transfer ERC721s85831072024-09-10 13:47:099 hrs ago1725976029IN
Element: ElementEx
0 ETH0.000003130.00581996
Fill Batch Signe...85821042024-09-10 13:13:4310 hrs ago1725974023IN
Element: ElementEx
0.0001 ETH0.000001170.00681031
Transfer ERC721s85693882024-09-10 6:09:5117 hrs ago1725948591IN
Element: ElementEx
0 ETH0.000000750.0065737
Transfer ERC721s85673062024-09-10 5:00:2718 hrs ago1725944427IN
Element: ElementEx
0 ETH0.000001440.0052891
Cancel ERC721Ord...85655352024-09-10 4:01:2519 hrs ago1725940885IN
Element: ElementEx
0 ETH0.000000210.00644321
Cancel ERC721Ord...85655172024-09-10 4:00:4919 hrs ago1725940849IN
Element: ElementEx
0 ETH0.000000310.00630744
Transfer ERC721s85586162024-09-10 0:10:4723 hrs ago1725927047IN
Element: ElementEx
0 ETH0.000001070.00935758
Fill Batch Signe...85583802024-09-10 0:02:5523 hrs ago1725926575IN
Element: ElementEx
0.0087 ETH0.000001690.01108946
Transfer ERC721s85582412024-09-09 23:58:1723 hrs ago1725926297IN
Element: ElementEx
0 ETH0.000001080.00945261
Transfer ERC721s85569092024-09-09 23:13:5324 hrs ago1725923633IN
Element: ElementEx
0 ETH0.000000910.00797364
Transfer ERC721s85567212024-09-09 23:07:3724 hrs ago1725923257IN
Element: ElementEx
0 ETH0.000000860.00747779
Transfer ERC721s85563602024-09-09 22:55:3524 hrs ago1725922535IN
Element: ElementEx
0 ETH0.000000730.00636661
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
85821042024-09-10 13:13:4310 hrs ago1725974023
Element: ElementEx
0.000002 ETH
85821042024-09-10 13:13:4310 hrs ago1725974023
Element: ElementEx
0.000097 ETH
85821042024-09-10 13:13:4310 hrs ago1725974023
Element: ElementEx
0.000001 ETH
85583802024-09-10 0:02:5523 hrs ago1725926575
Element: ElementEx
0.000174 ETH
85583802024-09-10 0:02:5523 hrs ago1725926575
Element: ElementEx
0.008091 ETH
85583802024-09-10 0:02:5523 hrs ago1725926575
Element: ElementEx
0.000435 ETH
85324652024-09-09 9:39:0537 hrs ago1725874745
Element: ElementEx
0.0000024 ETH
85324652024-09-09 9:39:0537 hrs ago1725874745
Element: ElementEx
0.0001176 ETH
85084282024-09-08 20:17:512 days ago1725826671
Element: ElementEx
0.000002 ETH
85084282024-09-08 20:17:512 days ago1725826671
Element: ElementEx
0.000097 ETH
85084282024-09-08 20:17:512 days ago1725826671
Element: ElementEx
0.000001 ETH
84950112024-09-08 12:50:372 days ago1725799837
Element: ElementEx
0.00004 ETH
84950112024-09-08 12:50:372 days ago1725799837
Element: ElementEx
0.00186 ETH
84950112024-09-08 12:50:372 days ago1725799837
Element: ElementEx
0.0001 ETH
84822742024-09-08 5:46:032 days ago1725774363
Element: ElementEx
0.00012 ETH
84822742024-09-08 5:46:032 days ago1725774363
Element: ElementEx
0.00588 ETH
84822202024-09-08 5:44:152 days ago1725774255
Element: ElementEx
0.000034 ETH
84822202024-09-08 5:44:152 days ago1725774255
Element: ElementEx
0.001581 ETH
84822202024-09-08 5:44:152 days ago1725774255
Element: ElementEx
0.000085 ETH
84563662024-09-07 15:22:273 days ago1725722547
Element: ElementEx
0.0014 ETH
84563662024-09-07 15:22:273 days ago1725722547
Element: ElementEx
0.0651 ETH
84563662024-09-07 15:22:273 days ago1725722547
Element: ElementEx
0.0035 ETH
84563662024-09-07 15:22:273 days ago1725722547
Element: ElementEx
0.07 ETH
84558012024-09-07 15:03:373 days ago1725721417
Element: ElementEx
0.000068 ETH
84558012024-09-07 15:03:373 days ago1725721417
Element: ElementEx
0.003162 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElementEx

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : ElementEx.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.13;

import "./features/interfaces/IOwnableFeature.sol";
import "./features/interfaces/ISimpleFunctionRegistryFeature.sol";
import "./storage/LibProxyStorage.sol";
import "./storage/LibSimpleFunctionRegistryStorage.sol";
import "./storage/LibOwnableStorage.sol";

/// @dev An extensible proxy contract that serves as a universal entry point for
///      interacting with the 0x protocol.
contract ElementEx {

    constructor(address registryFeature, address ownableFeature) {
        // Initialize RegistryFeature.
        _extend(ISimpleFunctionRegistryFeature.registerMethods.selector, registryFeature);
        _extend(ISimpleFunctionRegistryFeature.extend.selector, registryFeature);
        _extend(ISimpleFunctionRegistryFeature.rollback.selector, registryFeature);
        _extend(ISimpleFunctionRegistryFeature.getRollbackLength.selector, registryFeature);
        _extend(ISimpleFunctionRegistryFeature.getRollbackEntryAtIndex.selector, registryFeature);

        // Initialize OwnableFeature.
        _extend(IOwnableFeature.transferOwnership.selector, ownableFeature);
        _extend(IOwnableFeature.owner.selector, ownableFeature);

        // Transfer ownership to the real owner.
        LibOwnableStorage.getStorage().owner = msg.sender;
    }

    /// @dev Forwards calls to the appropriate implementation contract.
    fallback() external payable {
        address impl = LibProxyStorage.getStorage().impls[msg.sig];
        assembly {
            if impl {
                calldatacopy(0, 0, calldatasize())
                if delegatecall(gas(), impl, 0, calldatasize(), 0, 0) {
                    // Success, copy the returned data and return.
                    returndatacopy(0, 0, returndatasize())
                    return(0, returndatasize())
                }

                // Failed, copy the returned data and revert.
                returndatacopy(0, 0, returndatasize())
                revert(0, returndatasize())
            }
        }
        revert("METHOD_NOT_IMPLEMENTED");
    }

    /// @dev Fallback for just receiving ether.
    receive() external payable {}

    /// @dev Get the implementation contract of a registered function.
    /// @param selector The function selector.
    /// @return impl The implementation contract address.
    function getFunctionImplementation(bytes4 selector) public view returns (address impl) {
        return LibProxyStorage.getStorage().impls[selector];
    }

    event ProxyFunctionUpdated(bytes4 indexed selector, address oldImpl, address newImpl);

    function _extend(bytes4 selector, address impl) private {
        LibSimpleFunctionRegistryStorage.Storage storage stor = LibSimpleFunctionRegistryStorage.getStorage();
        LibProxyStorage.Storage storage proxyStor = LibProxyStorage.getStorage();

        address oldImpl = proxyStor.impls[selector];
        address[] storage history = stor.implHistory[selector];
        history.push(oldImpl);
        proxyStor.impls[selector] = impl;
        emit ProxyFunctionUpdated(selector, oldImpl, impl);
    }
}

File 2 of 7 : IOwnableFeature.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.13;


// solhint-disable no-empty-blocks
/// @dev Owner management and migration features.
interface IOwnableFeature {

    /// @dev Emitted by Ownable when ownership is transferred.
    /// @param previousOwner The previous owner of the contract.
    /// @param newOwner The new owner of the contract.
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @dev Transfers ownership of the contract to a new address.
    /// @param newOwner The address that will become the owner.
    function transferOwnership(address newOwner) external;

    /// @dev The owner of this contract.
    /// @return ownerAddress The owner address.
    function owner() external view returns (address ownerAddress);
}

File 3 of 7 : ISimpleFunctionRegistryFeature.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.13;


/// @dev Basic registry management features.
interface ISimpleFunctionRegistryFeature {

    /// @dev A function implementation was updated via `extend()` or `rollback()`.
    /// @param selector The function selector.
    /// @param oldImpl The implementation contract address being replaced.
    /// @param newImpl The replacement implementation contract address.
    event ProxyFunctionUpdated(bytes4 indexed selector, address oldImpl, address newImpl);

    function registerMethods(address impl, bytes4[] calldata methodIDs) external;

    /// @dev Roll back to a prior implementation of a function.
    /// @param selector The function selector.
    /// @param targetImpl The address of an older implementation of the function.
    function rollback(bytes4 selector, address targetImpl) external;

    /// @dev Register or replace a function.
    /// @param selector The function selector.
    /// @param impl The implementation contract for the function.
    function extend(bytes4 selector, address impl) external;

    /// @dev Retrieve the length of the rollback history for a function.
    /// @param selector The function selector.
    /// @return rollbackLength The number of items in the rollback history for
    ///         the function.
    function getRollbackLength(bytes4 selector) external view returns (uint256);

    /// @dev Retrieve an entry in the rollback history for a function.
    /// @param selector The function selector.
    /// @param idx The index in the rollback history.
    /// @return impl An implementation address for the function at
    ///         index `idx`.
    function getRollbackEntryAtIndex(bytes4 selector, uint256 idx)
        external
        view
        returns (address impl);
}

File 4 of 7 : LibOwnableStorage.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.13;

import "./LibStorage.sol";


/// @dev Storage helpers for the `Ownable` feature.
library LibOwnableStorage {

    /// @dev Storage bucket for this feature.
    struct Storage {
        // The owner of this contract.
        address owner;
    }

    /// @dev Get the storage bucket for this contract.
    function getStorage() internal pure returns (Storage storage stor) {
        uint256 storageSlot = LibStorage.STORAGE_ID_OWNABLE;
        // Dip into assembly to change the slot pointed to by the local
        // variable `stor`.
        // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries
        assembly { stor.slot := storageSlot }
    }
}

File 5 of 7 : LibProxyStorage.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.13;

import "./LibStorage.sol";


/// @dev Storage helpers for the proxy contract.
library LibProxyStorage {

    /// @dev Storage bucket for proxy contract.
    struct Storage {
        // Mapping of function selector -> function implementation
        mapping(bytes4 => address) impls;
    }

    /// @dev Get the storage bucket for this contract.
    function getStorage() internal pure returns (Storage storage stor) {
        uint256 storageSlot = LibStorage.STORAGE_ID_PROXY;
        // Dip into assembly to change the slot pointed to by the local
        // variable `stor`.
        // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries
        assembly { stor.slot := storageSlot }
    }
}

File 6 of 7 : LibSimpleFunctionRegistryStorage.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.13;

import "./LibStorage.sol";


/// @dev Storage helpers for the `SimpleFunctionRegistry` feature.
library LibSimpleFunctionRegistryStorage {

    /// @dev Storage bucket for this feature.
    struct Storage {
        // Mapping of function selector -> implementation history.
        mapping(bytes4 => address[]) implHistory;
    }

    /// @dev Get the storage bucket for this contract.
    function getStorage() internal pure returns (Storage storage stor) {
        uint256 storageSlot = LibStorage.STORAGE_ID_SIMPLE_FUNCTION_REGISTRY;
        // Dip into assembly to change the slot pointed to by the local
        // variable `stor`.
        // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries
        assembly { stor.slot := storageSlot }
    }
}

File 7 of 7 : LibStorage.sol
// SPDX-License-Identifier: Apache-2.0
/*

  Modifications Copyright 2022 Element.Market
  Copyright 2020 ZeroEx Intl.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/

pragma solidity ^0.8.17;


/// @dev Common storage helpers
library LibStorage {

    /// @dev What to bit-shift a storage ID by to get its slot.
    ///      This gives us a maximum of 2**128 inline fields in each bucket.
    uint256 constant STORAGE_ID_PROXY = 1 << 128;
    uint256 constant STORAGE_ID_SIMPLE_FUNCTION_REGISTRY = 2 << 128;
    uint256 constant STORAGE_ID_OWNABLE = 3 << 128;
    uint256 constant STORAGE_ID_COMMON_NFT_ORDERS = 4 << 128;
    uint256 constant STORAGE_ID_ERC721_ORDERS = 5 << 128;
    uint256 constant STORAGE_ID_ERC1155_ORDERS = 6 << 128;
    uint256 constant STORAGE_ID_REENTRANCY_GUARD = 7 << 128;
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"registryFeature","type":"address"},{"internalType":"address","name":"ownableFeature","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"oldImpl","type":"address"},{"indexed":false,"internalType":"address","name":"newImpl","type":"address"}],"name":"ProxyFunctionUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getFunctionImplementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516103c53803806103c583398101604081905261002f916101e4565b610040634f333d3560e01b836100df565b610051636eb224cb60e01b836100df565b610062630276d92960e61b836100df565b61007363dfd0074960e01b836100df565b6100846335d35de160e11b836100df565b61009563f2fde38b60e01b826100df565b6100a6638da5cb5b60e01b826100df565b336100b96101b060201b6101281760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506102179050565b60006100f36101b860201b6101301760201c565b905060006101096101c060201b6101201760201c565b6001600160e01b03198516600081815260208381526040808320805488845282852080546001810182558187528587200180546001600160a01b039384166001600160a01b03199182168117909255968890528886528354909616918b16918217909255825185815293840152949550919392917f2ae221083467de52078b0096696ab88d8d53a7ecb44bb65b56a2bab687598367910160405180910390a2505050505050565b600360801b90565b600160811b90565b600160801b90565b80516001600160a01b03811681146101df57600080fd5b919050565b600080604083850312156101f757600080fd5b610200836101c8565b915061020e602084016101c8565b90509250929050565b61019f806102266000396000f3fe6080604052600436106100225760003560e01c8063972fdd26146100c157610029565b3661002957005b600080356001600160e01b0319168152600160801b60205260409020546001600160a01b0316801561007c573660008037600080366000845af415610072573d6000803e3d6000f35b3d6000803e3d6000fd5b60405162461bcd60e51b81526020600482015260166024820152751351551213d117d393d517d25354131153515395115160521b604482015260640160405180910390fd5b3480156100cd57600080fd5b506101046100dc366004610138565b6001600160e01b0319166000908152600160801b60205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b600160801b90565b600360801b90565b600160811b90565b60006020828403121561014a57600080fd5b81356001600160e01b03198116811461016257600080fd5b939250505056fea26469706673582212203f5941c7b3c3ab12aade22fff3191c27f42f8a3e9504faa87202a71aab0428a464736f6c63430008110033000000000000000000000000a39a5f160a1952ddf38781bd76e402b0006912a90000000000000000000000002317d8b224328644759319dffa2a5da77c72e0e9

Deployed Bytecode

0x6080604052600436106100225760003560e01c8063972fdd26146100c157610029565b3661002957005b600080356001600160e01b0319168152600160801b60205260409020546001600160a01b0316801561007c573660008037600080366000845af415610072573d6000803e3d6000f35b3d6000803e3d6000fd5b60405162461bcd60e51b81526020600482015260166024820152751351551213d117d393d517d25354131153515395115160521b604482015260640160405180910390fd5b3480156100cd57600080fd5b506101046100dc366004610138565b6001600160e01b0319166000908152600160801b60205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b600160801b90565b600360801b90565b600160811b90565b60006020828403121561014a57600080fd5b81356001600160e01b03198116811461016257600080fd5b939250505056fea26469706673582212203f5941c7b3c3ab12aade22fff3191c27f42f8a3e9504faa87202a71aab0428a464736f6c63430008110033

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

000000000000000000000000a39a5f160a1952ddf38781bd76e402b0006912a90000000000000000000000002317d8b224328644759319dffa2a5da77c72e0e9

-----Decoded View---------------
Arg [0] : registryFeature (address): 0xa39A5f160a1952dDf38781Bd76E402B0006912A9
Arg [1] : ownableFeature (address): 0x2317D8B224328644759319DFFA2A5da77C72e0e9

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a39a5f160a1952ddf38781bd76e402b0006912a9
Arg [1] : 0000000000000000000000002317d8b224328644759319dffa2a5da77c72e0e9


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