Goerli Testnet

Contract

0xf73280D617AB4BDff2558adcD1a1659ccD1B4fF9
Source Code
Transaction Hash
Method
Block
From
To
Value
Approve101880222023-12-10 5:31:482 hrs ago1702186308IN
0xf73280...cD1B4fF9
0 ETH0.000081.5
Transfer101880192023-12-10 5:31:002 hrs ago1702186260IN
0xf73280...cD1B4fF9
0.04 ETH0.000753951.5
Transfer101878682023-12-10 4:54:242 hrs 37 mins ago1702184064IN
0xf73280...cD1B4fF9
0.03 ETH0.000753951.5
Transfer101873702023-12-10 2:39:244 hrs 52 mins ago1702175964IN
0xf73280...cD1B4fF9
5 ETH0.000753951.5
Transfer101871542023-12-10 1:42:365 hrs 49 mins ago1702172556IN
0xf73280...cD1B4fF9
0.01 ETH0.00072831.5
Register Node101859182023-12-09 20:23:4811 hrs 8 mins ago1702153428IN
0xf73280...cD1B4fF9
0 ETH0.000303221.5
Approve101857902023-12-09 19:53:1211 hrs 38 mins ago1702151592IN
0xf73280...cD1B4fF9
0 ETH0.000053871.01
Transfer101857882023-12-09 19:52:4811 hrs 39 mins ago1702151568IN
0xf73280...cD1B4fF9
0.003 ETH0.000185641.01
Transfer101857872023-12-09 19:52:3611 hrs 39 mins ago1702151556IN
0xf73280...cD1B4fF9
0.002 ETH0.000185641.01
Transfer101857862023-12-09 19:52:2411 hrs 39 mins ago1702151544IN
0xf73280...cD1B4fF9
0.001 ETH0.000185641.01
Transfer101857852023-12-09 19:52:1211 hrs 39 mins ago1702151532IN
0xf73280...cD1B4fF9
0.01 ETH0.000490391.01
Transfer101856932023-12-09 19:29:0012 hrs 2 mins ago1702150140IN
0xf73280...cD1B4fF9
0.25 ETH0.000753951.5
Transfer101855022023-12-09 18:41:4812 hrs 50 mins ago1702147308IN
0xf73280...cD1B4fF9
0.003 ETH00.00000004
Transfer101853082023-12-09 17:50:3613 hrs 41 mins ago1702144236IN
0xf73280...cD1B4fF9
1 ETH0.000753951.5
Register Node101844392023-12-09 14:01:4817 hrs 30 mins ago1702130508IN
0xf73280...cD1B4fF9
0 ETH0.000197981.50000003
Register Node101844052023-12-09 13:52:4817 hrs 39 mins ago1702129968IN
0xf73280...cD1B4fF9
0 ETH0.000303221.50000005
Register Node101843682023-12-09 13:42:1217 hrs 49 mins ago1702129332IN
0xf73280...cD1B4fF9
0 ETH0.0001981.50000001
Transfer101804852023-12-08 20:41:481 day 10 hrs ago1702068108IN
0xf73280...cD1B4fF9
0.015 ETH0.000753951.50000002
Transfer101794522023-12-08 16:08:361 day 15 hrs ago1702051716IN
0xf73280...cD1B4fF9
0.01 ETH0.000600582
Transfer101794282023-12-08 16:01:121 day 15 hrs ago1702051272IN
0xf73280...cD1B4fF9
0.01 ETH0.000366352
Transfer101794022023-12-08 15:53:481 day 15 hrs ago1702050828IN
0xf73280...cD1B4fF9
0.01 ETH0.000777872
Transfer101793752023-12-08 15:46:481 day 15 hrs ago1702050408IN
0xf73280...cD1B4fF9
0.01 ETH0.000600362
Transfer101793462023-12-08 15:39:241 day 15 hrs ago1702049964IN
0xf73280...cD1B4fF9
0.01 ETH0.000812072
Transfer101793172023-12-08 15:31:481 day 16 hrs ago1702049508IN
0xf73280...cD1B4fF9
0.01 ETH0.000600362
Transfer101792902023-12-08 15:24:121 day 16 hrs ago1702049052IN
0xf73280...cD1B4fF9
0.01 ETH0.000812072
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
101880242023-12-10 5:32:121 hr 59 mins ago1702186332
0xf73280...cD1B4fF9
0 ETH
101880242023-12-10 5:32:121 hr 59 mins ago1702186332
0xf73280...cD1B4fF9
0 ETH
101880242023-12-10 5:32:121 hr 59 mins ago1702186332
0xf73280...cD1B4fF9
0 ETH
101880242023-12-10 5:32:121 hr 59 mins ago1702186332
0xf73280...cD1B4fF9
0 ETH
101880222023-12-10 5:31:482 hrs ago1702186308
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
101880192023-12-10 5:31:002 hrs ago1702186260
0xf73280...cD1B4fF9
0 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x549165...7dAf48D2
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.14+commit.80d49f37

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 3 : Diamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8;

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

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

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

        // Add the diamondCut external function from the diamondCutFacet
        IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1);
        bytes4[] memory functionSelectors = new bytes4[](1);
        functionSelectors[0] = IDiamondCut.diamondCut.selector;
        cut[0] = IDiamondCut.FacetCut({
            facetAddress: _diamondCutFacet,
            action: IDiamondCut.FacetCutAction.Add,
            functionSelectors: functionSelectors
        });
        LibDiamond.diamondCut(cut, address(0), "");
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        // get diamond storage
        assembly {
            ds.slot := position
        }
        // get facet from function selector
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
        require(facet != address(0), "Diamond: Function does not exist");
        // Execute external function from facet using delegatecall and return any value.
        assembly {
            // copy function selector and any arguments
            calldatacopy(0, 0, calldatasize())
            // execute function call using the facet
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            // get any return value
            returndatacopy(0, 0, returndatasize())
            // return any return value or error back to the caller
            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    receive() external payable {
        (bool success, bytes memory data) = address(this).delegatecall(abi.encodeWithSignature("submit()"));
        require(success, "Diamond::receive::swap ETH for divETH failed");
    }
}

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

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

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

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

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external;

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

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

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

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

error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata);

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

    struct FacetAddressAndPosition {
        address facetAddress;
        uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint256 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
        // pending owner for transfer ownership
        address nominatedOwner;
    }

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

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

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

    function nominateOwner(address _newNominatedOwner) internal {
        DiamondStorage storage ds = diamondStorage();
        ds.nominatedOwner = _newNominatedOwner;
        emit NewOwnerNominated(_newNominatedOwner);
    }
    
    function acceptOwnnership() internal {
        DiamondStorage storage ds = diamondStorage();
        if(ds.nominatedOwner == msg.sender) {
            address previousOwner = ds.contractOwner;
            ds.contractOwner = msg.sender;
            emit OwnershipTransferred(previousOwner, msg.sender);
        } 
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = diamondStorage().contractOwner;
    }
    function nominatedOwner() internal view returns (address nominatedOwner_) {
        nominatedOwner_ = diamondStorage().nominatedOwner;
    }

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

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

    // Internal function version of diamondCut
    function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal {
        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else {
                revert("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        DiamondStorage storage ds = diamondStorage();
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists");
            addFunction(ds, selector, selectorPosition, _facetAddress);
            selectorPosition++;
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        DiamondStorage storage ds = diamondStorage();
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function");
            removeFunction(ds, oldFacetAddress, selector);
            addFunction(ds, selector, selectorPosition, _facetAddress);
            selectorPosition++;
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(ds, oldFacetAddress, selector);
        }
    }

    function addFacet(DiamondStorage storage ds, address _facetAddress) internal {
        enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
        ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;
        ds.facetAddresses.push(_facetAddress);
    }

    function addFunction(
        DiamondStorage storage ds,
        bytes4 _selector,
        uint96 _selectorPosition,
        address _facetAddress
    ) internal {
        ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);
        ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;
    }

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

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;
            }
            ds.facetAddresses.pop();
            delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
        }
    }

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

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

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFunctionReverted","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040523661014a5760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5bcb2fc60000000000000000000000000000000000000000000000000000000017905290516000918291309161007191611608565b600060405180830381855af49150503d80600081146100ac576040519150601f19603f3d011682016040523d82523d6000602084013e6100b1565b606091505b509150915081610148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4469616d6f6e643a3a726563656976653a3a737761702045544820666f72206460448201527f6976455448206661696c6564000000000000000000000000000000000000000060648201526084015b60405180910390fd5b005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff168061021d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161013f565b3660008037600080366000845af43d6000803e80801561023c573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156104f157600084828151811061031b5761031b611624565b60200260200101516020015190506000600281111561033c5761033c611653565b81600281111561034e5761034e611653565b0361039c5761039785838151811061036857610368611624565b60200260200101516000015186848151811061038657610386611624565b60200260200101516040015161053c565b6104de565b60018160028111156103b0576103b0611653565b036103f9576103978583815181106103ca576103ca611624565b6020026020010151600001518684815181106103e8576103e8611624565b6020026020010151604001516108f2565b600281600281111561040d5761040d611653565b036104565761039785838151811061042757610427611624565b60200260200101516000015186848151811061044557610445611624565b602002602001015160400151610cb1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e00000000000000000000000000000000000000000000000000606482015260840161013f565b50806104e9816116b1565b9150506102fe565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161052593929190611733565b60405180910390a16105378282610ea4565b505050565b60008151116105cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161013f565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f6520616464726573732830290000000000000000000000000000000000000000606482015260840161013f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600182016020526040812054906bffffffffffffffffffffffff821690036106d9576106d98285610f9d565b60005b83518110156108eb5760008482815181106106f9576106f9611624565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff1680156107de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840161013f565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff000000000000000000000000000000000000000016179055836108d38161189b565b945050505080806108e3906116b1565b9150506106dc565b5050505050565b6000815111610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161013f565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610a47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f6520616464726573732830290000000000000000000000000000000000000000606482015260840161013f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600182016020526040812054906bffffffffffffffffffffffff82169003610a8f57610a8f8285610f9d565b60005b83518110156108eb576000848281518110610aaf57610aaf611624565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff9081169087168103610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161013f565b610ba485828461102c565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610c998161189b565b94505050508080610ca9906116b1565b915050610a92565b6000815111610d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161013f565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610e07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d757374206265206164647265737328302900000000000000000000606482015260840161013f565b60005b8251811015610e9e576000838281518110610e2757610e27611624565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16610e8984828461102c565b50508080610e96906116b1565b915050610e0a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ec3575050565b610ee58260405180606001604052806028815260200161195e602891396115a1565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610f0d9190611608565b600060405180830381855af49150503d8060008114610f48576040519150601f19603f3d011682016040523d82523d6000602084013e610f4d565b606091505b509150915081610e9e57805115610f675780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040161013f9291906118c6565b610fbf81604051806060016040528060248152602001611986602491396115a1565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff82166110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161013f565b3073ffffffffffffffffffffffffffffffffffffffff831603611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e000000000000000000000000000000000000606482015260840161013f565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916111fe916118fd565b90508082146113455773ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040812080548390811061124057611240611624565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061129e5761129e611624565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061137b5761137b611914565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081208190558190036108eb576002850154600090611414906001906118fd565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260018089016020526040909120015490915080821461150257600087600201838154811061146057611460611624565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061149e5761149e611624565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b8660020180548061151557611515611914565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b813b8181610e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013f9190611943565b60005b838110156115f75781810151838201526020016115df565b83811115610e9e5750506000910152565b6000825161161a8184602087016115dc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116e2576116e2611682565b5060010190565b600081518084526117018160208601602086016115dc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561185e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff825116865284820151600381106117e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118495783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611807565b5097850197955050509082019060010161175c565b505073ffffffffffffffffffffffffffffffffffffffff8a1690880152868103604088015261188d81896116e9565b9a9950505050505050505050565b60006bffffffffffffffffffffffff8083168181036118bc576118bc611682565b6001019392505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006118f560408301846116e9565b949350505050565b60008282101561190f5761190f611682565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60208152600061195660208301846116e9565b939250505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220280ca20027be0fd87b6d9d37a252c542bdcd6d4da3792c242aa0796a3b13ce8864736f6c634300080e0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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