ETH Price: $3,089.17 (-0.55%)
 

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

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60808060153035742022-08-08 19:59:001250 days ago1659988740  Contract Creation0 ETH
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:
UpgradeBeacon

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 19066 runs

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

import { TwoStepOwnable } from "../access/TwoStepOwnable.sol";

// prettier-ignore
import { 
    UpgradeBeaconInterface 
} from "../interfaces/UpgradeBeaconInterface.sol";

/**
 * @title   UpgradeBeacon
 * @author  OpenSea Protocol Team
 * @notice  UpgradeBeacon is a ownable contract that is used as a beacon for a
 *          proxy, to retreive it's implementation.
 *
 */
contract UpgradeBeacon is TwoStepOwnable, UpgradeBeaconInterface {
    address private _implementation;

    /**
     * @notice Sets the owner of the beacon as the msg.sender.  Requires
     *         the caller to be an approved deployer.
     *
  
     */
    constructor() {
        // Ensure the origin is an approved deployer.
        require(
            (tx.origin == address(0x939C8d89EBC11fA45e576215E2353673AD0bA18A) ||
                tx.origin ==
                address(0xe80a65eB7a3018DedA407e621Ef5fb5B416678CA) ||
                tx.origin ==
                address(0x86D26897267711ea4b173C8C124a0A73612001da) ||
                tx.origin ==
                address(0x3B52ad533687Ce908bA0485ac177C5fb42972962)),
            "Deployment must originate from an approved deployer."
        );
    }

    /**
     * @notice Upgrades the beacon to a new implementation. Requires
     *         the caller must be the owner, and the new implementation
     *         must be a contract.
     *
     * @param newImplementationAddress The address to be set as the new
     *                                 implementation contract.
     */
    function upgradeTo(address newImplementationAddress)
        external
        override
        onlyOwner
    {
        _setImplementation(newImplementationAddress);
        emit Upgraded(newImplementationAddress);
    }

    function initialize(address owner_, address implementation_) external {
        // Ensure the origin is an approved deployer.
        require(
            (tx.origin == address(0x939C8d89EBC11fA45e576215E2353673AD0bA18A) ||
                tx.origin ==
                address(0xe80a65eB7a3018DedA407e621Ef5fb5B416678CA) ||
                tx.origin ==
                address(0x86D26897267711ea4b173C8C124a0A73612001da) ||
                tx.origin ==
                address(0x3B52ad533687Ce908bA0485ac177C5fb42972962)) &&
                _implementation == address(0),
            "Initialize must originate from an approved deployer, and the implementation must not be set."
        );

        // Call initialize.
        _initialize(owner_, implementation_);
    }

    function _initialize(address owner_, address implementation_) internal {
        // Set the Initial Owner
        _setInitialOwner(owner_);

        // Set the Implementation
        _setImplementation(implementation_);

        // Emit the Event
        emit Upgraded(implementation_);
    }

    /**
     * @notice This function returns the address to the implentation contract.
     */
    function implementation() external view override returns (address) {
        return _implementation;
    }

    /**
     * @notice Sets the implementation contract address for this beacon.
     *         Requires the address to be a contract.
     *
     * @param newImplementationAddress The address to be set as the new
     *                                 implementation contract.
     */
    function _setImplementation(address newImplementationAddress) internal {
        if (address(newImplementationAddress).code.length == 0) {
            revert InvalidImplementation(newImplementationAddress);
        }
        _implementation = newImplementationAddress;
    }
}

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

import "../interfaces/TwoStepOwnableInterface.sol";

/**
 * @title   TwoStepOwnable
 * @author  OpenSea Protocol Team
 * @notice  TwoStepOwnable is a module which provides access control
 *          where the ownership of a contract can be exchanged via a
 *          two step process. A potential owner is set by the current
 *          owner using transferOwnership, then accepted by the new
 *          potential owner using acceptOwnership.
 */
contract TwoStepOwnable is TwoStepOwnableInterface {
    // The address of the owner.
    address private _owner;

    // The address of the new potential owner.
    address private _potentialOwner;

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        // Ensure the caller is the owner.
        if (msg.sender != _owner) {
            revert CallerIsNotOwner();
        }
        // Continue with function execution.
        _;
    }

    /**
     * @notice Initiate ownership transfer by assigning a new potential owner
     *         to this contract. Once set, the new potential owner may call
     *         `acceptOwnership` to claim ownership. Only the owner may call
     *         this function.
     *
     * @param newPotentialOwner The address for which to initiate ownership
     *                          transfer to.
     */
    function transferOwnership(address newPotentialOwner)
        external
        override
        onlyOwner
    {
        // Ensure the new potential owner is not an invalid address.
        if (newPotentialOwner == address(0)) {
            revert NewPotentialOwnerIsNullAddress();
        }

        // Emit an event indicating that the potential owner has been updated.
        emit PotentialOwnerUpdated(newPotentialOwner);

        // Set the new potential owner as the potential owner.
        _potentialOwner = newPotentialOwner;
    }

    /**
     * @notice Clear the currently set potential owner, if any.
     *         Only the owner of this contract may call this function.
     */
    function cancelOwnershipTransfer() external override onlyOwner {
        // Emit an event indicating that the potential owner has been cleared.
        emit PotentialOwnerUpdated(address(0));

        // Clear the current new potential owner.
        delete _potentialOwner;
    }

    /**
     * @notice Accept ownership of this contract. Only the account that the
     *         current owner has set as the new potential owner may call this
     *         function.
     */
    function acceptOwnership() external override {
        // Ensure the caller is the potential owner.
        if (msg.sender != _potentialOwner) {
            // Revert, indicating that caller is not current potential owner.
            revert CallerIsNotNewPotentialOwner();
        }

        // Emit an event indicating that the potential owner has been cleared.
        emit PotentialOwnerUpdated(address(0));

        // Clear the current new potential owner.
        delete _potentialOwner;

        // Emit an event indicating ownership has been transferred.
        emit OwnershipTransferred(_owner, msg.sender);

        // Set the caller as the owner of this contract.
        _owner = msg.sender;
    }

    /**
     * @notice An external view function that returns the potential owner.
     *
     * @return The address of the potential owner.
     */
    function potentialOwner() external view override returns (address) {
        return _potentialOwner;
    }

    /**
     * @notice A public view function that returns the owner.
     *
     * @return The address of the owner.
     */
    function owner() public view override returns (address) {
        return _owner;
    }

    /**
     * @notice Internal function that sets the inital owner of the
     *         base contract. The initial owner must not be set
     *         previously.
     *
     * @param initialOwner The address to set for initial ownership.
     */
    function _setInitialOwner(address initialOwner) internal {
        // Ensure the initial owner is not an invalid address.
        if (initialOwner == address(0)) {
            revert InitialOwnerIsNullAddress();
        }

        // Ensure the owner has not already been set.
        if (_owner != address(0)) {
            revert OwnerAlreadySet(_owner);
        }

        // Emit an event indicating ownership has been set.
        emit OwnershipTransferred(address(0), initialOwner);

        // Set the initial owner.
        _owner = initialOwner;
    }
}

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

/**
 * @title   UpgradeBeaconInterface
 * @notice  UpgradeBeaconInterface contains all external function
 *          interfaces, events and errors related to the payable proxy.
 */
interface UpgradeBeaconInterface {
    /**
     * @dev Emit an event whenever the implementation has been upgraded.
     *
     * @param implementation  The new implementation address.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Revert with an error when attempting to call an operation
     *      while the caller is not the owner of the proxy.
     */
    error InvalidOwner();

    /**
     * @dev Revert with an error when attempting to set an non-contract
     *      address as the implementation.
     */
    error InvalidImplementation(address newImplementationAddress);

    /**
     * @notice Upgrades the beacon to a new implementation. Requires
     *         the caller must be the owner, and the new implementation
     *         must be a contract.
     *
     * @param newImplementationAddress The address to be set as the new
     *                                 implementation contract.
     */
    function upgradeTo(address newImplementationAddress) external;

    /**
     * @notice An external view function that returns the implementation.
     *
     * @return The address of the implementation.
     */
    function implementation() external view returns (address);
}

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

/**
 * @title   TwoStepOwnableInterface
 * @author  OpenSea Protocol Team
 * @notice  TwoStepOwnableInterface contains all external function interfaces,
 *          events and errors for the two step ownable access control module.
 */
interface TwoStepOwnableInterface {
    /**
     * @dev Emit an event whenever the contract owner registers a
     *      new potential owner.
     *
     * @param newPotentialOwner The new potential owner of the contract.
     */
    event PotentialOwnerUpdated(address newPotentialOwner);

    /**
     * @dev Emit an event whenever contract ownership is transferred.
     *
     * @param previousOwner The previous owner of the contract.
     * @param newOwner      The new owner of the contract.
     */
    event OwnershipTransferred(address previousOwner, address newOwner);

    /**
     * @dev Revert with an error when attempting to set an owner
     *      that is already set.
     */
    error OwnerAlreadySet(address currentOwner);

    /**
     * @dev Revert with an error when attempting to set the initial
     *      owner and supplying the null address.
     */
    error InitialOwnerIsNullAddress();

    /**
     * @dev Revert with an error when attempting to call an operation
     *      while the caller is not the owner.
     */
    error CallerIsNotOwner();

    /**
     * @dev Revert with an error when attempting to register a new potential
     *      owner and supplying the null address.
     */
    error NewPotentialOwnerIsNullAddress();

    /**
     * @dev Revert with an error when attempting to claim ownership of the
     *      contract with a caller that is not the current potential owner.
     */
    error CallerIsNotNewPotentialOwner();

    /**
     * @notice Initiate ownership transfer by assigning a new potential owner
     *         to this contract. Once set, the new potential owner may call
     *         `acceptOwnership` to claim ownership. Only the owner may call
     *         this function.
     *
     * @param newPotentialOwner The address for which to initiate ownership
     *                          transfer to.
     */
    function transferOwnership(address newPotentialOwner) external;

    /**
     * @notice Clear the currently set potential owner, if any.
     *         Only the owner of this contract may call this function.
     */
    function cancelOwnershipTransfer() external;

    /**
     * @notice Accept ownership of this contract. Only the account that the
     *         current owner has set as the new potential owner may call this
     *         function.
     */
    function acceptOwnership() external;

    /**
     * @notice An external view function that returns the potential owner.
     *
     * @return The address of the potential owner.
     */
    function potentialOwner() external view returns (address);

    /**
     * @notice An external view function that returns the owner.
     *
     * @return The address of the owner.
     */
    function owner() external view returns (address);
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CallerIsNotNewPotentialOwner","type":"error"},{"inputs":[],"name":"CallerIsNotOwner","type":"error"},{"inputs":[],"name":"InitialOwnerIsNullAddress","type":"error"},{"inputs":[{"internalType":"address","name":"newImplementationAddress","type":"address"}],"name":"InvalidImplementation","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"NewPotentialOwnerIsNullAddress","type":"error"},{"inputs":[{"internalType":"address","name":"currentOwner","type":"address"}],"name":"OwnerAlreadySet","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"PotentialOwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"potentialOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementationAddress","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608080604052346101095773939c8d89ebc11fa45e576215e2353673ad0ba18a321480156100ec575b80156100cf575b80156100b2575b1561004a5760405161090e908161010f8239f35b62461bcd60e51b815260206004820152603460248201527f4465706c6f796d656e74206d757374206f726967696e6174652066726f6d206160448201527f6e20617070726f766564206465706c6f7965722e0000000000000000000000006064820152608490fd5b50733b52ad533687ce908ba0485ac177c5fb429729623214610036565b507386d26897267711ea4b173c8c124a0a73612001da321461002f565b5073e80a65eb7a3018deda407e621ef5fb5b416678ca3214610028565b600080fdfe608080604052600436101561001357600080fd5b6000803560e01c91826323452b9c146100b857505080633659cfe6146100af578063485cc955146100a65780635c60da1b1461009d5780637762df251461009457806379ba50971461008b5780638da5cb5b146100825763f2fde38b1461007a575b600080fd5b610075610655565b50610075610602565b506100756104d1565b5061007561047e565b5061007561042b565b50610075610288565b506100756101ce565b3461018457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845773ffffffffffffffffffffffffffffffffffffffff825416330361015c57507f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da6020604051838152a17fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155604051f35b807f6db2465f0000000000000000000000000000000000000000000000000000000060049252fd5b5080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361007557565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361007557565b50346100755760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557610206610188565b73ffffffffffffffffffffffffffffffffffffffff908160005416330361025e5760009161023382610849565b60405191167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8383a2f35b60046040517f6db2465f000000000000000000000000000000000000000000000000000000008152fd5b50346100755760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610075576102c0610188565b6102c86101ab565b73939c8d89ebc11fa45e576215e2353673ad0ba18a3214801561040e575b80156103f1575b80156103d4575b806103b4575b1561030a5761030891610739565b005b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605c60248201527f496e697469616c697a65206d757374206f726967696e6174652066726f6d206160448201527f6e20617070726f766564206465706c6f7965722c20616e642074686520696d7060648201527f6c656d656e746174696f6e206d757374206e6f74206265207365742e000000006084820152fd5b5073ffffffffffffffffffffffffffffffffffffffff60025416156102fa565b50733b52ad533687ce908ba0485ac177c5fb4297296232146102f4565b507386d26897267711ea4b173c8c124a0a73612001da32146102ed565b5073e80a65eb7a3018deda407e621ef5fb5b416678ca32146102e6565b50346100755760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b50346100755760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b5034610075576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105ff5760015473ffffffffffffffffffffffffffffffffffffffff9081811633036105d5577f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0917fffffffffffffffffffffffff00000000000000000000000000000000000000006040927f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da60208551888152a1166001558354168151908152336020820152a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055604051f35b60046040517f356e0057000000000000000000000000000000000000000000000000000000008152fd5b80fd5b50346100755760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b50346100755760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100755761068d610188565b73ffffffffffffffffffffffffffffffffffffffff908160005416330361025e5716801561070f577f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da6020604051838152a17fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001556000604051f35b60046040517f7621b061000000000000000000000000000000000000000000000000000000008152fd5b9073ffffffffffffffffffffffffffffffffffffffff809216801561081f57600054838116806107ee57507fffffffffffffffffffffffff0000000000000000000000000000000000000000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06040805160008152856020820152a116176000556107c481610849565b167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b6000604051a2565b602490604051907f62c926120000000000000000000000000000000000000000000000000000000082526004820152fd5b60046040517f3bb4b2ba000000000000000000000000000000000000000000000000000000008152fd5b803b156108915773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f0c760937000000000000000000000000000000000000000000000000000000008352166004820152fdfea26469706673582212201d794bb43deac39ba026a3a9e1f6fd6f030e2b492fd7a0713ed6482aa6d1dd5064736f6c634300080e0033

Deployed Bytecode

0x608080604052600436101561001357600080fd5b6000803560e01c91826323452b9c146100b857505080633659cfe6146100af578063485cc955146100a65780635c60da1b1461009d5780637762df251461009457806379ba50971461008b5780638da5cb5b146100825763f2fde38b1461007a575b600080fd5b610075610655565b50610075610602565b506100756104d1565b5061007561047e565b5061007561042b565b50610075610288565b506100756101ce565b3461018457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845773ffffffffffffffffffffffffffffffffffffffff825416330361015c57507f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da6020604051838152a17fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155604051f35b807f6db2465f0000000000000000000000000000000000000000000000000000000060049252fd5b5080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361007557565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361007557565b50346100755760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557610206610188565b73ffffffffffffffffffffffffffffffffffffffff908160005416330361025e5760009161023382610849565b60405191167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8383a2f35b60046040517f6db2465f000000000000000000000000000000000000000000000000000000008152fd5b50346100755760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610075576102c0610188565b6102c86101ab565b73939c8d89ebc11fa45e576215e2353673ad0ba18a3214801561040e575b80156103f1575b80156103d4575b806103b4575b1561030a5761030891610739565b005b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605c60248201527f496e697469616c697a65206d757374206f726967696e6174652066726f6d206160448201527f6e20617070726f766564206465706c6f7965722c20616e642074686520696d7060648201527f6c656d656e746174696f6e206d757374206e6f74206265207365742e000000006084820152fd5b5073ffffffffffffffffffffffffffffffffffffffff60025416156102fa565b50733b52ad533687ce908ba0485ac177c5fb4297296232146102f4565b507386d26897267711ea4b173c8c124a0a73612001da32146102ed565b5073e80a65eb7a3018deda407e621ef5fb5b416678ca32146102e6565b50346100755760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b50346100755760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b5034610075576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105ff5760015473ffffffffffffffffffffffffffffffffffffffff9081811633036105d5577f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0917fffffffffffffffffffffffff00000000000000000000000000000000000000006040927f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da60208551888152a1166001558354168151908152336020820152a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055604051f35b60046040517f356e0057000000000000000000000000000000000000000000000000000000008152fd5b80fd5b50346100755760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007557602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b50346100755760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100755761068d610188565b73ffffffffffffffffffffffffffffffffffffffff908160005416330361025e5716801561070f577f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da6020604051838152a17fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001556000604051f35b60046040517f7621b061000000000000000000000000000000000000000000000000000000008152fd5b9073ffffffffffffffffffffffffffffffffffffffff809216801561081f57600054838116806107ee57507fffffffffffffffffffffffff0000000000000000000000000000000000000000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06040805160008152856020820152a116176000556107c481610849565b167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b6000604051a2565b602490604051907f62c926120000000000000000000000000000000000000000000000000000000082526004820152fd5b60046040517f3bb4b2ba000000000000000000000000000000000000000000000000000000008152fd5b803b156108915773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f0c760937000000000000000000000000000000000000000000000000000000008352166004820152fdfea26469706673582212201d794bb43deac39ba026a3a9e1f6fd6f030e2b492fd7a0713ed6482aa6d1dd5064736f6c634300080e0033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.