ETH Price: $3,714.89 (+3.37%)

Contract

0x391fD52903D1531fd45F41c4A354533c91289F5F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy180114142023-08-28 6:40:35460 days ago1693204835IN
0x391fD529...c91289F5F
0 ETH0.041020220
Deploy180101342023-08-28 2:23:11460 days ago1693189391IN
0x391fD529...c91289F5F
0 ETH0.0408266420
Transfer Ownersh...179329522023-08-17 7:09:11471 days ago1692256151IN
0x391fD529...c91289F5F
0 ETH0.0008286317.95991232
Transact179329092023-08-17 7:00:35471 days ago1692255635IN
0x391fD529...c91289F5F
0 ETH0.0008150522
Set Target179329082023-08-17 7:00:23471 days ago1692255623IN
0x391fD529...c91289F5F
0 ETH0.0006354422
Transact179328842023-08-17 6:55:35471 days ago1692255335IN
0x391fD529...c91289F5F
0 ETH0.0008176922
Set Target179328832023-08-17 6:55:23471 days ago1692255323IN
0x391fD529...c91289F5F
0 ETH0.0010116422
Deploy179328512023-08-17 6:48:59471 days ago1692254939IN
0x391fD529...c91289F5F
0 ETH0.0859999620
Deploy179326172023-08-17 6:01:47471 days ago1692252107IN
0x391fD529...c91289F5F
0 ETH0.0407985820
Deploy179326162023-08-17 6:01:35471 days ago1692252095IN
0x391fD529...c91289F5F
0 ETH0.0031308420
Deploy179326152023-08-17 6:01:23471 days ago1692252083IN
0x391fD529...c91289F5F
0 ETH0.0111390820
Deploy179326142023-08-17 6:01:11471 days ago1692252071IN
0x391fD529...c91289F5F
0 ETH0.0859951620
Deploy179326132023-08-17 6:00:59471 days ago1692252059IN
0x391fD529...c91289F5F
0 ETH0.0344436420
Deploy179326122023-08-17 6:00:47471 days ago1692252047IN
0x391fD529...c91289F5F
0 ETH0.0438040620
Deploy179326112023-08-17 6:00:35471 days ago1692252035IN
0x391fD529...c91289F5F
0 ETH0.0281144420
Deploy179326102023-08-17 6:00:23471 days ago1692252023IN
0x391fD529...c91289F5F
0 ETH0.0283750620
Deploy179326092023-08-17 6:00:11471 days ago1692252011IN
0x391fD529...c91289F5F
0 ETH0.0260272620
Deploy179326082023-08-17 5:59:59471 days ago1692251999IN
0x391fD529...c91289F5F
0 ETH0.0311024420
Deploy179319532023-08-17 3:47:35471 days ago1692244055IN
0x391fD529...c91289F5F
0 ETH0.0103896820
Deploy179319432023-08-17 3:45:35471 days ago1692243935IN
0x391fD529...c91289F5F
0 ETH0.052241320
Deploy179318542023-08-17 3:27:35471 days ago1692242855IN
0x391fD529...c91289F5F
0 ETH0.060179720
Deploy179318342023-08-17 3:23:35471 days ago1692242615IN
0x391fD529...c91289F5F
0 ETH0.0093512820
Claim Ownership179315102023-08-17 2:17:59471 days ago1692238679IN
0x391fD529...c91289F5F
0 ETH0.000624822
Transfer Ownersh...179314342023-08-17 2:02:47471 days ago1692237767IN
0x391fD529...c91289F5F
0 ETH0.0010585822.94399067

Latest 17 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
180114142023-08-28 6:40:35460 days ago1693204835
0x391fD529...c91289F5F
 Contract Creation0 ETH
180101342023-08-28 2:23:11460 days ago1693189391
0x391fD529...c91289F5F
 Contract Creation0 ETH
179328512023-08-17 6:48:59471 days ago1692254939
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326172023-08-17 6:01:47471 days ago1692252107
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326162023-08-17 6:01:35471 days ago1692252095
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326152023-08-17 6:01:23471 days ago1692252083
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326142023-08-17 6:01:11471 days ago1692252071
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326132023-08-17 6:00:59471 days ago1692252059
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326122023-08-17 6:00:47471 days ago1692252047
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326112023-08-17 6:00:35471 days ago1692252035
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326102023-08-17 6:00:23471 days ago1692252023
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326092023-08-17 6:00:11471 days ago1692252011
0x391fD529...c91289F5F
 Contract Creation0 ETH
179326082023-08-17 5:59:59471 days ago1692251999
0x391fD529...c91289F5F
 Contract Creation0 ETH
179319532023-08-17 3:47:35471 days ago1692244055
0x391fD529...c91289F5F
 Contract Creation0 ETH
179319432023-08-17 3:45:35471 days ago1692243935
0x391fD529...c91289F5F
 Contract Creation0 ETH
179318542023-08-17 3:27:35471 days ago1692242855
0x391fD529...c91289F5F
 Contract Creation0 ETH
179318342023-08-17 3:23:35471 days ago1692242615
0x391fD529...c91289F5F
 Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LoopringCreate2Deployer

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-17
*/

// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.7.0;
// Sources flattened with hardhat v2.13.0 https://hardhat.org

// File contracts/lib/Ownable.sol

// Copyright 2017 Loopring Technology Limited.


/// @title Ownable
/// @author Brecht Devos - <[email protected]>
/// @dev The Ownable contract has an owner address, and provides basic
///      authorization control functions, this simplifies the implementation of
///      "user permissions".
contract Ownable
{
    address public owner;

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

    /// @dev The Ownable constructor sets the original `owner` of the contract
    ///      to the sender.
    constructor()
    {
        owner = msg.sender;
    }

    /// @dev Throws if called by any account other than the owner.
    modifier onlyOwner()
    {
        require(msg.sender == owner, "UNAUTHORIZED");
        _;
    }

    /// @dev Allows the current owner to transfer control of the contract to a
    ///      new owner.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(
        address newOwner
        )
        public
        virtual
        onlyOwner
    {
        require(newOwner != address(0), "ZERO_ADDRESS");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function renounceOwnership()
        public
        onlyOwner
    {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }
}


// File contracts/lib/Claimable.sol

// Copyright 2017 Loopring Technology Limited.

/// @title Claimable
/// @author Brecht Devos - <[email protected]>
/// @dev Extension for the Ownable contract, where the ownership needs
///      to be claimed. This allows the new owner to accept the transfer.
contract Claimable is Ownable
{
    address public pendingOwner;

    /// @dev Modifier throws if called by any account other than the pendingOwner.
    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner, "UNAUTHORIZED");
        _;
    }

    /// @dev Allows the current owner to set the pendingOwner address.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(
        address newOwner
        )
        public
        override
        onlyOwner
    {
        require(newOwner != address(0) && newOwner != owner, "INVALID_ADDRESS");
        pendingOwner = newOwner;
    }

    /// @dev Allows the pendingOwner address to finalize the transfer.
    function claimOwnership()
        public
        onlyPendingOwner
    {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0);
    }
}


// File contracts/thirdparty/BytesUtil.sol

//Mainly taken from https://github.com/GNSPS/solidity-bytes-utils/blob/master/contracts/BytesLib.sol

library BytesUtil {

    function concat(
        bytes memory _preBytes,
        bytes memory _postBytes
    )
        internal
        pure
        returns (bytes memory)
    {
        bytes memory tempBytes;

        assembly {
            // Get a location of some free memory and store it in tempBytes as
            // Solidity does for memory variables.
            tempBytes := mload(0x40)

            // Store the length of the first bytes array at the beginning of
            // the memory for tempBytes.
            let length := mload(_preBytes)
            mstore(tempBytes, length)

            // Maintain a memory counter for the current write location in the
            // temp bytes array by adding the 32 bytes for the array length to
            // the starting location.
            let mc := add(tempBytes, 0x20)
            // Stop copying when the memory counter reaches the length of the
            // first bytes array.
            let end := add(mc, length)

            for {
                // Initialize a copy counter to the start of the _preBytes data,
                // 32 bytes into its memory.
                let cc := add(_preBytes, 0x20)
            } lt(mc, end) {
                // Increase both counters by 32 bytes each iteration.
                mc := add(mc, 0x20)
                cc := add(cc, 0x20)
            } {
                // Write the _preBytes data into the tempBytes memory 32 bytes
                // at a time.
                mstore(mc, mload(cc))
            }

            // Add the length of _postBytes to the current length of tempBytes
            // and store it as the new length in the first 32 bytes of the
            // tempBytes memory.
            length := mload(_postBytes)
            mstore(tempBytes, add(length, mload(tempBytes)))

            // Move the memory counter back from a multiple of 0x20 to the
            // actual end of the _preBytes data.
            mc := end
            // Stop copying when the memory counter reaches the new combined
            // length of the arrays.
            end := add(mc, length)

            for {
                let cc := add(_postBytes, 0x20)
            } lt(mc, end) {
                mc := add(mc, 0x20)
                cc := add(cc, 0x20)
            } {
                mstore(mc, mload(cc))
            }

            // Update the free-memory pointer by padding our last write location
            // to 32 bytes: add 31 bytes to the end of tempBytes to move to the
            // next 32 byte block, then round down to the nearest multiple of
            // 32. If the sum of the length of the two arrays is zero then add
            // one before rounding down to leave a blank 32 bytes (the length block with 0).
            mstore(0x40, and(
              add(add(end, iszero(add(length, mload(_preBytes)))), 31),
              not(31) // Round down to the nearest 32 bytes.
            ))
        }

        return tempBytes;
    }

    function slice(
        bytes memory _bytes,
        uint _start,
        uint _length
    )
        internal
        pure
        returns (bytes memory)
    {
        require(_bytes.length >= (_start + _length));

        bytes memory tempBytes;

        assembly {
            switch iszero(_length)
            case 0 {
                // Get a location of some free memory and store it in tempBytes as
                // Solidity does for memory variables.
                tempBytes := mload(0x40)

                // The first word of the slice result is potentially a partial
                // word read from the original array. To read it, we calculate
                // the length of that partial word and start copying that many
                // bytes into the array. The first word we copy will start with
                // data we don't care about, but the last `lengthmod` bytes will
                // land at the beginning of the contents of the new array. When
                // we're done copying, we overwrite the full first word with
                // the actual length of the slice.
                let lengthmod := and(_length, 31)

                // The multiplication in the next line is necessary
                // because when slicing multiples of 32 bytes (lengthmod == 0)
                // the following copy loop was copying the origin's length
                // and then ending prematurely not copying everything it should.
                let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))
                let end := add(mc, _length)

                for {
                    // The multiplication in the next line has the same exact purpose
                    // as the one above.
                    let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)
                } lt(mc, end) {
                    mc := add(mc, 0x20)
                    cc := add(cc, 0x20)
                } {
                    mstore(mc, mload(cc))
                }

                mstore(tempBytes, _length)

                //update free-memory pointer
                //allocating the array padded to 32 bytes like the compiler does now
                mstore(0x40, and(add(mc, 31), not(31)))
            }
            //if we want a zero-length slice let's just return a zero-length array
            default {
                tempBytes := mload(0x40)

                mstore(0x40, add(tempBytes, 0x20))
            }
        }

        return tempBytes;
    }

    function toAddress(bytes memory _bytes, uint _start) internal  pure returns (address) {
        require(_bytes.length >= (_start + 20));
        address tempAddress;

        assembly {
            tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)
        }

        return tempAddress;
    }

    function toUint8(bytes memory _bytes, uint _start) internal  pure returns (uint8) {
        require(_bytes.length >= (_start + 1));
        uint8 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x1), _start))
        }

        return tempUint;
    }

    function toUint16(bytes memory _bytes, uint _start) internal  pure returns (uint16) {
        require(_bytes.length >= (_start + 2));
        uint16 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x2), _start))
        }

        return tempUint;
    }

    function toUint24(bytes memory _bytes, uint _start) internal  pure returns (uint24) {
        require(_bytes.length >= (_start + 3));
        uint24 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x3), _start))
        }

        return tempUint;
    }

    function toUint32(bytes memory _bytes, uint _start) internal  pure returns (uint32) {
        require(_bytes.length >= (_start + 4));
        uint32 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x4), _start))
        }

        return tempUint;
    }

    function toUint64(bytes memory _bytes, uint _start) internal  pure returns (uint64) {
        require(_bytes.length >= (_start + 8));
        uint64 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x8), _start))
        }

        return tempUint;
    }

    function toUint96(bytes memory _bytes, uint _start) internal  pure returns (uint96) {
        require(_bytes.length >= (_start + 12));
        uint96 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0xc), _start))
        }

        return tempUint;
    }

    function toUint128(bytes memory _bytes, uint _start) internal  pure returns (uint128) {
        require(_bytes.length >= (_start + 16));
        uint128 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x10), _start))
        }

        return tempUint;
    }

    function toUint(bytes memory _bytes, uint _start) internal  pure returns (uint256) {
        require(_bytes.length >= (_start + 32));
        uint256 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x20), _start))
        }

        return tempUint;
    }

    function toBytes4(bytes memory _bytes, uint _start) internal  pure returns (bytes4) {
        require(_bytes.length >= (_start + 4));
        bytes4 tempBytes4;

        assembly {
            tempBytes4 := mload(add(add(_bytes, 0x20), _start))
        }

        return tempBytes4;
    }

    function toBytes20(bytes memory _bytes, uint _start) internal  pure returns (bytes20) {
        require(_bytes.length >= (_start + 20));
        bytes20 tempBytes20;

        assembly {
            tempBytes20 := mload(add(add(_bytes, 0x20), _start))
        }

        return tempBytes20;
    }

    function toBytes32(bytes memory _bytes, uint _start) internal  pure returns (bytes32) {
        require(_bytes.length >= (_start + 32));
        bytes32 tempBytes32;

        assembly {
            tempBytes32 := mload(add(add(_bytes, 0x20), _start))
        }

        return tempBytes32;
    }


    function toAddressUnsafe(bytes memory _bytes, uint _start) internal  pure returns (address) {
        address tempAddress;

        assembly {
            tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)
        }

        return tempAddress;
    }

    function toUint8Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint8) {
        uint8 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x1), _start))
        }

        return tempUint;
    }

    function toUint16Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint16) {
        uint16 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x2), _start))
        }

        return tempUint;
    }

    function toUint24Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint24) {
        uint24 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x3), _start))
        }

        return tempUint;
    }

    function toUint32Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint32) {
        uint32 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x4), _start))
        }

        return tempUint;
    }

    function toUint64Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint64) {
        uint64 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x8), _start))
        }

        return tempUint;
    }

    function toUint96Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint96) {
        uint96 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0xc), _start))
        }

        return tempUint;
    }

    function toUint128Unsafe(bytes memory _bytes, uint _start) internal  pure returns (uint128) {
        uint128 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x10), _start))
        }

        return tempUint;
    }

    function toUintUnsafe(bytes memory _bytes, uint _start) internal  pure returns (uint256) {
        uint256 tempUint;

        assembly {
            tempUint := mload(add(add(_bytes, 0x20), _start))
        }

        return tempUint;
    }

    function toBytes4Unsafe(bytes memory _bytes, uint _start) internal  pure returns (bytes4) {
        bytes4 tempBytes4;

        assembly {
            tempBytes4 := mload(add(add(_bytes, 0x20), _start))
        }

        return tempBytes4;
    }

    function toBytes20Unsafe(bytes memory _bytes, uint _start) internal  pure returns (bytes20) {
        bytes20 tempBytes20;

        assembly {
            tempBytes20 := mload(add(add(_bytes, 0x20), _start))
        }

        return tempBytes20;
    }

    function toBytes32Unsafe(bytes memory _bytes, uint _start) internal  pure returns (bytes32) {
        bytes32 tempBytes32;

        assembly {
            tempBytes32 := mload(add(add(_bytes, 0x20), _start))
        }

        return tempBytes32;
    }


    function fastSHA256(
        bytes memory data
        )
        internal
        view
        returns (bytes32)
    {
        bytes32[] memory result = new bytes32[](1);
        bool success;
        assembly {
             let ptr := add(data, 32)
             success := staticcall(sub(gas(), 2000), 2, ptr, mload(data), add(result, 32), 32)
        }
        require(success, "SHA256_FAILED");
        return result[0];
    }
}


// File contracts/aux/access/DelayTargetSelectorBasedAccessManager.sol

// Copyright 2017 Loopring Technology Limited.


/// @title  SelectorBasedAccessManager
/// @author Daniel Wang - <[email protected]>
contract DelayTargetSelectorBasedAccessManager is Claimable
{
    using BytesUtil for bytes;

    event PermissionUpdate(
        address indexed user,
        bytes4  indexed selector,
        bool            allowed
    );

    address public target;
    mapping(address => mapping(bytes4 => bool)) public permissions;

    modifier withAccess(bytes4 selector)
    {
        require(hasAccessTo(msg.sender, selector), "PERMISSION_DENIED");
        _;
    }

    constructor()
    {

    }

    function grantAccess(
        address user,
        bytes4  selector,
        bool    granted
        )
        external
        onlyOwner
    {
        require(permissions[user][selector] != granted, "INVALID_VALUE");
        permissions[user][selector] = granted;
        emit PermissionUpdate(user, selector, granted);
    }

    receive() payable external {}

    fallback()
        payable
        external
    {
        transact(msg.data);
    }

    function setTarget(address _target) public onlyOwner {
        require(_target != address(0), "ZERO_ADDRESS");
        target = _target;
    }

    function transact(bytes memory data)
        payable
        public
        withAccess(data.toBytes4(0))
    {
        require(target != address(0), "ZERO_ADDRESS");
        (bool success, bytes memory returnData) = target
            .call{value: msg.value}(data);

        if (!success) {
            assembly { revert(add(returnData, 32), mload(returnData)) }
        }
    }

    function hasAccessTo(address user, bytes4 selector)
        public
        view
        returns (bool)
    {
        return user == owner || permissions[user][selector];
    }
}


// File contracts/aux/create2/LoopringCreate2Deployer.sol


contract LoopringCreate2Deployer is DelayTargetSelectorBasedAccessManager{
  event Deployed(address addr, uint256 salt);

  function deploy(bytes memory code, uint256 salt) public {
    address addr;
    assembly {
      addr := create2(0, add(code, 0x20), mload(code), salt)
      if iszero(extcodesize(addr)) {
        revert(0, 0)
      }
    }

    emit Deployed(addr, salt);
  }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"salt","type":"uint256"}],"name":"Deployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"PermissionUpdate","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"code","type":"bytes"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"deploy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bool","name":"granted","type":"bool"}],"name":"grantAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"hasAccessTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transact","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610f64806100326000396000f3fe6080604052600436106100cb5760003560e01c80638da5cb5b11610074578063d4b839921161004e578063d4b839921461046b578063e30c397814610480578063f2fde38b14610495576100d2565b80638da5cb5b146103105780639c4ae2d01461034e578063cdb999f314610403576100d2565b80636d6f41cc116100a55780636d6f41cc14610215578063715018a6146102bb578063776d1a01146102d0576100d2565b8063313861251461011457806331ad7333146101905780634e71e0c814610200576100d2565b366100d257005b6101126000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104d592505050565b005b34801561012057600080fd5b5061017c6004803603604081101561013757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff00000000000000000000000000000000000000000000000000000000166106ca565b604080519115158252519081900360200190f35b34801561019c57600080fd5b50610112600480360360608110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516907fffffffff000000000000000000000000000000000000000000000000000000006020820135169060400135151561074d565b34801561020c57600080fd5b50610112610957565b6101126004803603602081101561022b57600080fd5b81019060208101813564010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104d5945050505050565b3480156102c757600080fd5b50610112610a73565b3480156102dc57600080fd5b50610112600480360360208110156102f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b68565b34801561031c57600080fd5b50610325610cb7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b506101126004803603604081101561037157600080fd5b81019060208101813564010000000081111561038c57600080fd5b82018360208201111561039e57600080fd5b803590602001918460018302840111640100000000831117156103c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610cd3915050565b34801561040f57600080fd5b5061017c6004803603604081101561042657600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff0000000000000000000000000000000000000000000000000000000016610d42565b34801561047757600080fd5b50610325610d62565b34801561048c57600080fd5b50610325610d7e565b3480156104a157600080fd5b50610112600480360360208110156104b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9a565b6104e0816000610f12565b6104ea33826106ca565b61055557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5045524d495353494f4e5f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff166105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b6002546040518351600092839273ffffffffffffffffffffffffffffffffffffffff9091169134918791819060208401908083835b6020831061064b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161060e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146106ad576040519150601f19603f3d011682016040523d82523d6000602084013e6106b2565b606091505b5091509150816106c457805160208201fd5b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff84811691161480610746575073ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff161515811515141561089b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f56414c554500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526003602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927fa159e1c330823fd09e2338c9ca6e89b1423fee32c0d427a0764ed2d28d163bf8929181900390910190a3505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000818351602085016000f59050803b610cec57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810184905281517fb03c53b28e78a88e31607a27e1fa48234dce28d5d9d9ec7b295aeb02e674a1e1929181900390910190a1505050565b600360209081526000928352604080842090915290825290205460ff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590610e60575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b610ecb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414444524553530000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008160040183511015610f2557600080fd5b5001602001519056fea2646970667358221220cece4abb8a6db8205df2d7c490b42d20faa504f7d7393356b52e159ea984f3ba64736f6c63430007060033

Deployed Bytecode

0x6080604052600436106100cb5760003560e01c80638da5cb5b11610074578063d4b839921161004e578063d4b839921461046b578063e30c397814610480578063f2fde38b14610495576100d2565b80638da5cb5b146103105780639c4ae2d01461034e578063cdb999f314610403576100d2565b80636d6f41cc116100a55780636d6f41cc14610215578063715018a6146102bb578063776d1a01146102d0576100d2565b8063313861251461011457806331ad7333146101905780634e71e0c814610200576100d2565b366100d257005b6101126000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104d592505050565b005b34801561012057600080fd5b5061017c6004803603604081101561013757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff00000000000000000000000000000000000000000000000000000000166106ca565b604080519115158252519081900360200190f35b34801561019c57600080fd5b50610112600480360360608110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516907fffffffff000000000000000000000000000000000000000000000000000000006020820135169060400135151561074d565b34801561020c57600080fd5b50610112610957565b6101126004803603602081101561022b57600080fd5b81019060208101813564010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104d5945050505050565b3480156102c757600080fd5b50610112610a73565b3480156102dc57600080fd5b50610112600480360360208110156102f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b68565b34801561031c57600080fd5b50610325610cb7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b506101126004803603604081101561037157600080fd5b81019060208101813564010000000081111561038c57600080fd5b82018360208201111561039e57600080fd5b803590602001918460018302840111640100000000831117156103c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610cd3915050565b34801561040f57600080fd5b5061017c6004803603604081101561042657600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff0000000000000000000000000000000000000000000000000000000016610d42565b34801561047757600080fd5b50610325610d62565b34801561048c57600080fd5b50610325610d7e565b3480156104a157600080fd5b50610112600480360360208110156104b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9a565b6104e0816000610f12565b6104ea33826106ca565b61055557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5045524d495353494f4e5f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff166105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b6002546040518351600092839273ffffffffffffffffffffffffffffffffffffffff9091169134918791819060208401908083835b6020831061064b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161060e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146106ad576040519150601f19603f3d011682016040523d82523d6000602084013e6106b2565b606091505b5091509150816106c457805160208201fd5b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff84811691161480610746575073ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff161515811515141561089b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f56414c554500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526003602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927fa159e1c330823fd09e2338c9ca6e89b1423fee32c0d427a0764ed2d28d163bf8929181900390910190a3505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000818351602085016000f59050803b610cec57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810184905281517fb03c53b28e78a88e31607a27e1fa48234dce28d5d9d9ec7b295aeb02e674a1e1929181900390910190a1505050565b600360209081526000928352604080842090915290825290205460ff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590610e60575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b610ecb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414444524553530000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008160040183511015610f2557600080fd5b5001602001519056fea2646970667358221220cece4abb8a6db8205df2d7c490b42d20faa504f7d7393356b52e159ea984f3ba64736f6c63430007060033

Deployed Bytecode Sourcemap

17971:399:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17133:18;17142:8;;17133:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17133:8:0;;-1:-1:-1;;;17133:18:0:i;:::-;17971:399;17718:181;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17718:181:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16688:338;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16688:338:0;;;;;;;;;;;;;;;;;;:::i;2653:205::-;;;;;;;;;;;;;:::i;17320:390::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17320:390:0;;-1:-1:-1;17320:390:0;;-1:-1:-1;;;;;17320:390:0:i;1437:161::-;;;;;;;;;;;;;:::i;17167:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17167:145:0;;;;:::i;497:20::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18098:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18098:269:0;;-1:-1:-1;;18098:269:0;;;-1:-1:-1;18098:269:0;;-1:-1:-1;;18098:269:0:i;16436:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16436:62:0;;;;;;;;;;;:::i;16408:21::-;;;;;;;;;;;;;:::i;1953:27::-;;;;;;;;;;;;;:::i;2326:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2326:247:0;;;;:::i;17320:390::-;17410:16;:4;17424:1;17410:13;:16::i;:::-;16568:33;16580:10;16592:8;16568:11;:33::i;:::-;16560:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17452:6:::1;::::0;:20:::1;:6;17444:45;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17542:6;::::0;:49:::1;::::0;;;17501:12:::1;::::0;;;17542:6:::1;::::0;;::::1;::::0;17575:9:::1;::::0;17586:4;;17542:49;;::::1;::::0;::::1;::::0;;;;::::1;;;;;;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17500:91;;;;17609:7;17604:99;;17678:10;17672:17;17667:2;17655:10;17651:19;17644:46;17642:50;16634:1;;17320:390:::0;;:::o;17718:181::-;17818:4;17855:5;;;17847:13;;;17855:5;;17847:13;;:44;;-1:-1:-1;17864:17:0;;;;;;;:11;:17;;;;;;;;:27;;;;;;;;;;;;;17847:44;17840:51;17718:181;-1:-1:-1;;;17718:181:0:o;16688:338::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16857:17:::1;::::0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;:27;;::::1;::::0;;;;;;;;::::1;;:38;;::::0;::::1;;;;16849:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16924:17;::::0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;:27;;::::1;::::0;;;;;;;;;;:37;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;16977:41;;;;;;;16924:27;;:17;16977:41:::1;::::0;;;;;;;;;::::1;16688:338:::0;;;:::o;2653:205::-;2134:12;;;;2120:10;:26;2112:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2770:12:::1;::::0;::::1;2763:5:::0;;2742:41:::1;::::0;2770:12:::1;::::0;;::::1;::::0;2763:5;;::::1;::::0;2742:41:::1;::::0;::::1;2802:12;::::0;;::::1;2794:20:::0;;;;;::::1;2802:12;::::0;::::1;2794:20;::::0;;;2825:25:::1;::::0;;2653:205::o;1437:161::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1558:1:::1;1543:5:::0;;1522:39:::1;::::0;::::1;1543:5:::0;;::::1;::::0;1522:39:::1;::::0;1558:1;;1522:39:::1;1588:1;1572:18:::0;;;::::1;::::0;;1437:161::o;17167:145::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17239:21:::1;::::0;::::1;17231:46;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17288:6;:16:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;17167:145::o;497:20::-;;;;;;:::o;18098:269::-;18161:12;18247:4;18240;18234:11;18227:4;18221;18217:15;18214:1;18206:46;18198:54;;18282:4;18270:17;18260:2;;18310:1;18307;18300:12;18260:2;18341:20;;;;;;;;;;;;;;;;;;;;;;;;;;;18098:269;;;:::o;16436:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16408:21::-;;;;;;:::o;1953:27::-;;;;;;:::o;2326:247::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2468:22:::1;::::0;::::1;::::0;;::::1;::::0;:43:::1;;-1:-1:-1::0;2506:5:0::1;::::0;::::1;2494:17:::0;;::::1;2506:5:::0;::::1;2494:17;;2468:43;2460:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2542:12;:23:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2326:247::o;11425:297::-;11501:6;11546;11555:1;11546:10;11528:6;:13;:29;;11520:38;;;;;;-1:-1:-1;11643:30:0;11659:4;11643:30;11637:37;;11425:297::o

Swarm Source

ipfs://cece4abb8a6db8205df2d7c490b42d20faa504f7d7393356b52e159ea984f3ba

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