ETH Price: $3,456.19 (+1.42%)
Gas: 0.12 Gwei

Contract

0x190eb447E37489975D5DE9977BF8Ad6C9Ae096f3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
Transfer*231515572025-08-16 5:36:5985 days ago1755322619
0x190eb447...C9Ae096f3
0 ETH
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StolenNftFilterOracle

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "solmate/auth/Owned.sol";
import "reservoir-oracle/ReservoirOracle.sol";

/// @title StolenNftFilterOracle
/// @author out.eth (@outdoteth)
/// @notice A contract to check that a set of NFTs are not stolen.
contract StolenNftFilterOracle is ReservoirOracle, Owned {
    bytes32 private constant TOKEN_TYPE_HASH = keccak256("Token(address contract,uint256 tokenId)");
    uint256 public cooldownPeriod = 0;
    uint256 public validFor = 60 minutes;

    constructor() Owned(msg.sender) ReservoirOracle(0xAeB1D03929bF87F69888f381e73FBf75753d75AF) {}

    /// @notice Sets the cooldown period.
    /// @param _cooldownPeriod The cooldown period.
    function setCooldownPeriod(uint256 _cooldownPeriod) public onlyOwner {
        cooldownPeriod = _cooldownPeriod;
    }

    /// @notice Sets the valid for period.
    /// @param _validFor The valid for period.
    function setValidFor(uint256 _validFor) public onlyOwner {
        validFor = _validFor;
    }

    function updateReservoirOracleAddress(address newReservoirOracleAddress) public override onlyOwner {
        RESERVOIR_ORACLE_ADDRESS = newReservoirOracleAddress;
    }

    /// @notice Checks that a set of NFTs are not stolen.
    /// @param tokenAddress The address of the NFT contract.
    /// @param tokenIds The ids of the NFTs.
    /// @param messages The messages signed by the reservoir oracle.
    function validateTokensAreNotStolen(address tokenAddress, uint256[] calldata tokenIds, Message[] calldata messages)
        public
        view
    {
        for (uint256 i = 0; i < tokenIds.length; i++) {
            Message calldata message = messages[i];

            // check that the signer is correct and message id matches token id + token address
            bytes32 expectedMessageId = keccak256(abi.encode(TOKEN_TYPE_HASH, tokenAddress, tokenIds[i]));
            require(_verifyMessage(expectedMessageId, validFor, message), "Message has invalid signature");

            (bool isFlagged, uint256 lastTransferTime) = abi.decode(message.payload, (bool, uint256));

            // check that the NFT is not stolen
            require(!isFlagged, "NFT is flagged as suspicious");

            // check that the NFT was not transferred too recently
            require(lastTransferTime + cooldownPeriod < block.timestamp, "NFT was transferred too recently");
        }
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

// Inspired by https://github.com/ZeframLou/trustus
abstract contract ReservoirOracle {
    // --- Structs ---

    struct Message {
        bytes32 id;
        bytes payload;
        // The UNIX timestamp when the message was signed by the oracle
        uint256 timestamp;
        // ECDSA signature or EIP-2098 compact signature
        bytes signature;
    }

    // --- Errors ---

    error InvalidMessage();

    // --- Fields ---

    address public RESERVOIR_ORACLE_ADDRESS;

    // --- Constructor ---

    constructor(address reservoirOracleAddress) {
        RESERVOIR_ORACLE_ADDRESS = reservoirOracleAddress;
    }

    // --- Public methods ---

    function updateReservoirOracleAddress(address newReservoirOracleAddress)
        public
        virtual;

    // --- Internal methods ---

    function _verifyMessage(
        bytes32 id,
        uint256 validFor,
        Message memory message
    ) internal view virtual returns (bool success) {
        // Ensure the message matches the requested id
        if (id != message.id) {
            return false;
        }

        // Ensure the message timestamp is valid
        if (
            message.timestamp > block.timestamp ||
            message.timestamp + validFor < block.timestamp
        ) {
            return false;
        }

        bytes32 r;
        bytes32 s;
        uint8 v;

        // Extract the individual signature fields from the signature
        bytes memory signature = message.signature;
        if (signature.length == 64) {
            // EIP-2098 compact signature
            bytes32 vs;
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
                s := and(
                    vs,
                    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
                )
                v := add(shr(255, vs), 27)
            }
        } else if (signature.length == 65) {
            // ECDSA signature
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
        } else {
            return false;
        }

        address signerAddress = ecrecover(
            keccak256(
                abi.encodePacked(
                    "\x19Ethereum Signed Message:\n32",
                    // EIP-712 structured-data hash
                    keccak256(
                        abi.encode(
                            keccak256(
                                "Message(bytes32 id,bytes payload,uint256 timestamp)"
                            ),
                            message.id,
                            keccak256(message.payload),
                            message.timestamp
                        )
                    )
                )
            ),
            v,
            r,
            s
        );

        // Ensure the signer matches the designated oracle address
        return signerAddress == RESERVOIR_ORACLE_ADDRESS;
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnershipTransferred(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function transferOwnership(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

Settings
{
  "remappings": [
    "@manifoldxyz/libraries-solidity/=lib/royalty-registry-solidity/lib/libraries-solidity/",
    "@openzeppelin/contracts-upgradeable/=lib/royalty-registry-solidity/lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/royalty-registry-solidity/lib/openzeppelin-contracts/contracts/",
    "ERC721A/=lib/ERC721A/contracts/",
    "create2-helpers/=lib/royalty-registry-solidity/lib/create2-helpers/src/",
    "create2-scripts/=lib/royalty-registry-solidity/lib/create2-helpers/script/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "libraries-solidity/=lib/royalty-registry-solidity/lib/libraries-solidity/contracts/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
    "openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "oracle/=lib/oracle/contracts/",
    "reservoir-oracle/=lib/oracle/contracts/",
    "royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 100
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidMessage","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"RESERVOIR_ORACLE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cooldownPeriod","type":"uint256"}],"name":"setCooldownPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_validFor","type":"uint256"}],"name":"setValidFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReservoirOracleAddress","type":"address"}],"name":"updateReservoirOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct ReservoirOracle.Message[]","name":"messages","type":"tuple[]"}],"name":"validateTokensAreNotStolen","outputs":[],"stateMutability":"view","type":"function"}]

60806040526000600255610e1060035534801561001b57600080fd5b506000805473aeb1d03929bf87f69888f381e73fbf75753d75af6001600160a01b03199182161782556001805433921682179055604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610a058061008b6000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c806304646a4914610088578063149120bc146100a457806372d8fcd5146100ad57806380ea3de1146100c25780638a4fa05b146100d55780638b67ad0f146100e85780638d9d5282146101135780638da5cb5b14610126578063f2fde38b14610139575b600080fd5b61009160025481565b6040519081526020015b60405180910390f35b61009160035481565b6100c06100bb366004610675565b61014c565b005b6100c06100d0366004610690565b6101a1565b6100c06100e33660046106f5565b6101d0565b6000546100fb906001600160a01b031681565b6040516001600160a01b03909116815260200161009b565b6100c0610121366004610690565b6103cf565b6001546100fb906001600160a01b031681565b6100c0610147366004610675565b6103fe565b6001546001600160a01b0316331461017f5760405162461bcd60e51b815260040161017690610776565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146101cb5760405162461bcd60e51b815260040161017690610776565b600255565b60005b838110156103c757368383838181106101ee576101ee61079c565b905060200281019061020091906107b2565b905060007fc0a1ebc1ee06dbc8c69ee4d865db358058921259f8d3cb15d2133d87fa20322e888888868181106102385761023861079c565b9050602002013560405160200161026b939291909283526001600160a01b03919091166020830152604082015260600190565b604051602081830303815290604052805190602001209050610299816003548461029490610875565b610474565b6102e55760405162461bcd60e51b815260206004820152601d60248201527f4d6573736167652068617320696e76616c6964207369676e61747572650000006044820152606401610176565b6000806102f5602085018561090f565b8101906103029190610956565b9150915081156103545760405162461bcd60e51b815260206004820152601c60248201527f4e465420697320666c616767656420617320737573706963696f7573000000006044820152606401610176565b4260025482610363919061099d565b106103b05760405162461bcd60e51b815260206004820181905260248201527f4e465420776173207472616e7366657272656420746f6f20726563656e746c796044820152606401610176565b5050505080806103bf906109b6565b9150506101d3565b505050505050565b6001546001600160a01b031633146103f95760405162461bcd60e51b815260040161017690610776565b600355565b6001546001600160a01b031633146104285760405162461bcd60e51b815260040161017690610776565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b8051600090841461048757506000610652565b42826040015111806104a75750428383604001516104a5919061099d565b105b156104b457506000610652565b6000806000808560600151905080516040036104f057602081015160408201519094506001600160ff1b038116935060ff1c601b019150610523565b8051604103610516576020810151935060408101519250606081015160001a9150610523565b6000945050505050610652565b600060017f395537e76dcb230984fc10f328a95df716a3205146e2e10a6b1405dc0a67059388600001518960200151805190602001208a60400151604051602001610587949392919093845260208401929092526040830152606082015260800190565b60408051601f198184030181529082905280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000091830191909152603c820152605c0160408051601f198184030181528282528051602091820120600084529083018083525260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa15801561062e573d6000803e3d6000fd5b5050604051601f1901516000546001600160a01b0391821691161496505050505050505b9392505050565b80356001600160a01b038116811461067057600080fd5b919050565b60006020828403121561068757600080fd5b61065282610659565b6000602082840312156106a257600080fd5b5035919050565b60008083601f8401126106bb57600080fd5b50813567ffffffffffffffff8111156106d357600080fd5b6020830191508360208260051b85010111156106ee57600080fd5b9250929050565b60008060008060006060868803121561070d57600080fd5b61071686610659565b9450602086013567ffffffffffffffff8082111561073357600080fd5b61073f89838a016106a9565b9096509450604088013591508082111561075857600080fd5b50610765888289016106a9565b969995985093965092949392505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235607e198336030181126107c857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126107f957600080fd5b813567ffffffffffffffff80821115610814576108146107d2565b604051601f8301601f19908116603f0116810190828211818310171561083c5761083c6107d2565b8160405283815286602085880101111561085557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006080823603121561088757600080fd5b6040516080810167ffffffffffffffff82821081831117156108ab576108ab6107d2565b816040528435835260208501359150808211156108c757600080fd5b6108d3368387016107e8565b60208401526040850135604084015260608501359150808211156108f657600080fd5b50610903368286016107e8565b60608301525092915050565b6000808335601e1984360301811261092657600080fd5b83018035915067ffffffffffffffff82111561094157600080fd5b6020019150368190038213156106ee57600080fd5b6000806040838503121561096957600080fd5b8235801515811461097957600080fd5b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109b0576109b0610987565b92915050565b6000600182016109c8576109c8610987565b506001019056fea2646970667358221220d86c14f5e1c31b419a42c8695831125ccb428d79e0b89aefa10b1dcb2cf973cc64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100835760003560e01c806304646a4914610088578063149120bc146100a457806372d8fcd5146100ad57806380ea3de1146100c25780638a4fa05b146100d55780638b67ad0f146100e85780638d9d5282146101135780638da5cb5b14610126578063f2fde38b14610139575b600080fd5b61009160025481565b6040519081526020015b60405180910390f35b61009160035481565b6100c06100bb366004610675565b61014c565b005b6100c06100d0366004610690565b6101a1565b6100c06100e33660046106f5565b6101d0565b6000546100fb906001600160a01b031681565b6040516001600160a01b03909116815260200161009b565b6100c0610121366004610690565b6103cf565b6001546100fb906001600160a01b031681565b6100c0610147366004610675565b6103fe565b6001546001600160a01b0316331461017f5760405162461bcd60e51b815260040161017690610776565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146101cb5760405162461bcd60e51b815260040161017690610776565b600255565b60005b838110156103c757368383838181106101ee576101ee61079c565b905060200281019061020091906107b2565b905060007fc0a1ebc1ee06dbc8c69ee4d865db358058921259f8d3cb15d2133d87fa20322e888888868181106102385761023861079c565b9050602002013560405160200161026b939291909283526001600160a01b03919091166020830152604082015260600190565b604051602081830303815290604052805190602001209050610299816003548461029490610875565b610474565b6102e55760405162461bcd60e51b815260206004820152601d60248201527f4d6573736167652068617320696e76616c6964207369676e61747572650000006044820152606401610176565b6000806102f5602085018561090f565b8101906103029190610956565b9150915081156103545760405162461bcd60e51b815260206004820152601c60248201527f4e465420697320666c616767656420617320737573706963696f7573000000006044820152606401610176565b4260025482610363919061099d565b106103b05760405162461bcd60e51b815260206004820181905260248201527f4e465420776173207472616e7366657272656420746f6f20726563656e746c796044820152606401610176565b5050505080806103bf906109b6565b9150506101d3565b505050505050565b6001546001600160a01b031633146103f95760405162461bcd60e51b815260040161017690610776565b600355565b6001546001600160a01b031633146104285760405162461bcd60e51b815260040161017690610776565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b8051600090841461048757506000610652565b42826040015111806104a75750428383604001516104a5919061099d565b105b156104b457506000610652565b6000806000808560600151905080516040036104f057602081015160408201519094506001600160ff1b038116935060ff1c601b019150610523565b8051604103610516576020810151935060408101519250606081015160001a9150610523565b6000945050505050610652565b600060017f395537e76dcb230984fc10f328a95df716a3205146e2e10a6b1405dc0a67059388600001518960200151805190602001208a60400151604051602001610587949392919093845260208401929092526040830152606082015260800190565b60408051601f198184030181529082905280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000091830191909152603c820152605c0160408051601f198184030181528282528051602091820120600084529083018083525260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa15801561062e573d6000803e3d6000fd5b5050604051601f1901516000546001600160a01b0391821691161496505050505050505b9392505050565b80356001600160a01b038116811461067057600080fd5b919050565b60006020828403121561068757600080fd5b61065282610659565b6000602082840312156106a257600080fd5b5035919050565b60008083601f8401126106bb57600080fd5b50813567ffffffffffffffff8111156106d357600080fd5b6020830191508360208260051b85010111156106ee57600080fd5b9250929050565b60008060008060006060868803121561070d57600080fd5b61071686610659565b9450602086013567ffffffffffffffff8082111561073357600080fd5b61073f89838a016106a9565b9096509450604088013591508082111561075857600080fd5b50610765888289016106a9565b969995985093965092949392505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235607e198336030181126107c857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126107f957600080fd5b813567ffffffffffffffff80821115610814576108146107d2565b604051601f8301601f19908116603f0116810190828211818310171561083c5761083c6107d2565b8160405283815286602085880101111561085557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006080823603121561088757600080fd5b6040516080810167ffffffffffffffff82821081831117156108ab576108ab6107d2565b816040528435835260208501359150808211156108c757600080fd5b6108d3368387016107e8565b60208401526040850135604084015260608501359150808211156108f657600080fd5b50610903368286016107e8565b60608301525092915050565b6000808335601e1984360301811261092657600080fd5b83018035915067ffffffffffffffff82111561094157600080fd5b6020019150368190038213156106ee57600080fd5b6000806040838503121561096957600080fd5b8235801515811461097957600080fd5b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109b0576109b0610987565b92915050565b6000600182016109c8576109c8610987565b506001019056fea2646970667358221220d86c14f5e1c31b419a42c8695831125ccb428d79e0b89aefa10b1dcb2cf973cc64736f6c63430008110033

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

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.