Sepolia Testnet

Contract

0xe2011488ea6B02692Ee58717698aecDdfBf4756F
Source Code Source Code

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Transfer Ownersh...44542372023-10-09 3:51:48858 days ago1696823508IN
0xe2011488...dfBf4756F
0 ETH0.000071621.5043915
Accept Proxy And...44542362023-10-09 3:51:36858 days ago1696823496IN
0xe2011488...dfBf4756F
0 ETH0.000130681.50402055
Accept Proxy And...44542322023-10-09 3:50:24858 days ago1696823424IN
0xe2011488...dfBf4756F
0 ETH0.000164651.50463439
Accept Proxy And...44542282023-10-09 3:49:36858 days ago1696823376IN
0xe2011488...dfBf4756F
0 ETH0.000279021.5048617
Accept Proxy And...44542252023-10-09 3:49:00858 days ago1696823340IN
0xe2011488...dfBf4756F
0 ETH0.000000430.00503961
Accept Proxy And...44542222023-10-09 3:48:12858 days ago1696823292IN
0xe2011488...dfBf4756F
0 ETH0.00000110.00545376
Accept Proxy And...44542172023-10-09 3:47:12858 days ago1696823232IN
0xe2011488...dfBf4756F
0 ETH0.0002762.00539274
Accept Proxy And...44542122023-10-09 3:46:12858 days ago1696823172IN
0xe2011488...dfBf4756F
0 ETH0.000282211.50604405
Accept Proxy And...44542092023-10-09 3:45:36858 days ago1696823136IN
0xe2011488...dfBf4756F
0 ETH0.000086681.00694362
Accept Proxy And...44542042023-10-09 3:44:36858 days ago1696823076IN
0xe2011488...dfBf4756F
0 ETH0.000003730.02427457

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading

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:
GraphProxyAdmin

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.7.6;

import { Governed } from "../governance/Governed.sol";

import { IGraphProxy } from "./IGraphProxy.sol";
import { GraphUpgradeable } from "./GraphUpgradeable.sol";

/**
 * @title GraphProxyAdmin
 * @dev This is the owner of upgradeable proxy contracts.
 * Proxy contracts use a TransparentProxy pattern, any admin related call
 * like upgrading a contract or changing the admin needs to be send through
 * this contract.
 */
contract GraphProxyAdmin is Governed {
    /**
     * @notice Contract constructor.
     */
    constructor() {
        Governed._initialize(msg.sender);
    }

    /**
     * @notice Returns the current implementation of a proxy.
     * @dev This is needed because only the proxy admin can query it.
     * @param _proxy Address of the proxy for which to get the implementation.
     * @return The address of the current implementation of the proxy.
     */
    function getProxyImplementation(IGraphProxy _proxy) external view returns (address) {
        // We need to manually run the static call since the getter cannot be flagged as view
        // bytes4(keccak256("implementation()")) == 0x5c60da1b
        (bool success, bytes memory returndata) = address(_proxy).staticcall(hex"5c60da1b");
        require(success, "Proxy impl call failed");
        return abi.decode(returndata, (address));
    }

    /**
     * @notice Returns the pending implementation of a proxy.
     * @dev This is needed because only the proxy admin can query it.
     * @param _proxy Address of the proxy for which to get the pending implementation.
     * @return The address of the pending implementation of the proxy.
     */
    function getProxyPendingImplementation(IGraphProxy _proxy) external view returns (address) {
        // We need to manually run the static call since the getter cannot be flagged as view
        // bytes4(keccak256("pendingImplementation()")) == 0x396f7b23
        (bool success, bytes memory returndata) = address(_proxy).staticcall(hex"396f7b23");
        require(success, "Proxy pendingImpl call failed");
        return abi.decode(returndata, (address));
    }

    /**
     * @notice Returns the admin of a proxy. Only the admin can query it.
     * @param _proxy Address of the proxy for which to get the admin.
     * @return The address of the current admin of the proxy.
     */
    function getProxyAdmin(IGraphProxy _proxy) external view returns (address) {
        // We need to manually run the static call since the getter cannot be flagged as view
        // bytes4(keccak256("admin()")) == 0xf851a440
        (bool success, bytes memory returndata) = address(_proxy).staticcall(hex"f851a440");
        require(success, "Proxy admin call failed");
        return abi.decode(returndata, (address));
    }

    /**
     * @notice Changes the admin of a proxy.
     * @param _proxy Proxy to change admin.
     * @param _newAdmin Address to transfer proxy administration to.
     */
    function changeProxyAdmin(IGraphProxy _proxy, address _newAdmin) external onlyGovernor {
        _proxy.setAdmin(_newAdmin);
    }

    /**
     * @notice Upgrades a proxy to the newest implementation of a contract.
     * @param _proxy Proxy to be upgraded.
     * @param _implementation the address of the Implementation.
     */
    function upgrade(IGraphProxy _proxy, address _implementation) external onlyGovernor {
        _proxy.upgradeTo(_implementation);
    }

    /**
     * @notice Accepts a proxy.
     * @param _implementation Address of the implementation accepting the proxy.
     * @param _proxy Address of the proxy being accepted.
     */
    function acceptProxy(GraphUpgradeable _implementation, IGraphProxy _proxy)
        external
        onlyGovernor
    {
        _implementation.acceptProxy(_proxy);
    }

    /**
     * @notice Accepts a proxy and call a function on the implementation.
     * @param _implementation Address of the implementation accepting the proxy.
     * @param _proxy Address of the proxy being accepted.
     * @param _data Encoded function to call on the implementation after accepting the proxy.
     */
    function acceptProxyAndCall(
        GraphUpgradeable _implementation,
        IGraphProxy _proxy,
        bytes calldata _data
    ) external onlyGovernor {
        _implementation.acceptProxyAndCall(_proxy, _data);
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.7.6;

/**
 * @title Graph Governance contract
 * @dev All contracts that will be owned by a Governor entity should extend this contract.
 */
abstract contract Governed {
    // -- State --

    /// Address of the governor
    address public governor;
    /// Address of the new governor that is pending acceptance
    address public pendingGovernor;

    // -- Events --

    /// Emitted when a new owner/governor has been set, but is pending acceptance
    event NewPendingOwnership(address indexed from, address indexed to);
    /// Emitted when a new owner/governor has accepted their role
    event NewOwnership(address indexed from, address indexed to);

    /**
     * @dev Check if the caller is the governor.
     */
    modifier onlyGovernor() {
        require(msg.sender == governor, "Only Governor can call");
        _;
    }

    /**
     * @dev Initialize the governor for this contract
     * @param _initGovernor Address of the governor
     */
    function _initialize(address _initGovernor) internal {
        governor = _initGovernor;
    }

    /**
     * @notice Admin function to begin change of governor. The `_newGovernor` must call
     * `acceptOwnership` to finalize the transfer.
     * @param _newGovernor Address of new `governor`
     */
    function transferOwnership(address _newGovernor) external onlyGovernor {
        require(_newGovernor != address(0), "Governor must be set");

        address oldPendingGovernor = pendingGovernor;
        pendingGovernor = _newGovernor;

        emit NewPendingOwnership(oldPendingGovernor, pendingGovernor);
    }

    /**
     * @notice Admin function for pending governor to accept role and update governor.
     * This function must called by the pending governor.
     */
    function acceptOwnership() external {
        address oldPendingGovernor = pendingGovernor;

        require(
            oldPendingGovernor != address(0) && msg.sender == oldPendingGovernor,
            "Caller must be pending governor"
        );

        address oldGovernor = governor;

        governor = oldPendingGovernor;
        pendingGovernor = address(0);

        emit NewOwnership(oldGovernor, governor);
        emit NewPendingOwnership(oldPendingGovernor, pendingGovernor);
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.7.6;

interface IGraphProxy {
    function admin() external returns (address);

    function setAdmin(address _newAdmin) external;

    function implementation() external returns (address);

    function pendingImplementation() external returns (address);

    function upgradeTo(address _newImplementation) external;

    function acceptUpgrade() external;

    function acceptUpgradeAndCall(bytes calldata data) external;
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.7.6;

import { IGraphProxy } from "./IGraphProxy.sol";

/**
 * @title Graph Upgradeable
 * @dev This contract is intended to be inherited from upgradeable contracts.
 */
abstract contract GraphUpgradeable {
    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant IMPLEMENTATION_SLOT =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Check if the caller is the proxy admin.
     */
    modifier onlyProxyAdmin(IGraphProxy _proxy) {
        require(msg.sender == _proxy.admin(), "Caller must be the proxy admin");
        _;
    }

    /**
     * @dev Check if the caller is the implementation.
     */
    modifier onlyImpl() {
        require(msg.sender == _implementation(), "Only implementation");
        _;
    }

    /**
     * @dev Returns the current implementation.
     * @return impl Address of the current implementation
     */
    function _implementation() internal view returns (address impl) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @notice Accept to be an implementation of proxy.
     * @param _proxy Proxy to accept
     */
    function acceptProxy(IGraphProxy _proxy) external onlyProxyAdmin(_proxy) {
        _proxy.acceptUpgrade();
    }

    /**
     * @notice Accept to be an implementation of proxy and then call a function from the new
     * implementation as specified by `_data`, which should be an encoded function call. This is
     * useful to initialize new storage variables in the proxied contract.
     * @param _proxy Proxy to accept
     * @param _data Calldata for the initialization function call (including selector)
     */
    function acceptProxyAndCall(IGraphProxy _proxy, bytes calldata _data)
        external
        onlyProxyAdmin(_proxy)
    {
        _proxy.acceptUpgradeAndCall(_data);
    }
}

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

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"NewOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"NewPendingOwnership","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract GraphUpgradeable","name":"_implementation","type":"address"},{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"}],"name":"acceptProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract GraphUpgradeable","name":"_implementation","type":"address"},{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"acceptProxyAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"},{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"}],"name":"getProxyPendingImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IGraphProxy","name":"_proxy","type":"address"},{"internalType":"address","name":"_implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506100243361002960201b610a0c1760201c565b61004b565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610a648061005a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637eff275e116100715780637eff275e146101b157806399a88ec4146101df578063e3056a341461020d578063eb451a0214610215578063f2fde38b14610243578063f3b7dead14610269576100a9565b806307ebde0e146100ae5780630c340a2414610139578063204e1c7a1461015d5780635bf410eb1461018357806379ba5097146101a9575b600080fd5b610137600480360360608110156100c457600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100f857600080fd5b82018360208201111561010a57600080fd5b8035906020019184600183028401116401000000008311171561012c57600080fd5b50909250905061028f565b005b610141610388565b604080516001600160a01b039092168252519081900360200190f35b6101416004803603602081101561017357600080fd5b50356001600160a01b0316610397565b6101416004803603602081101561019957600080fd5b50356001600160a01b031661046a565b610137610525565b610137600480360360408110156101c757600080fd5b506001600160a01b0381358116916020013516610633565b610137600480360360408110156101f557600080fd5b506001600160a01b03813581169160200135166106f6565b61014161079d565b6101376004803603604081101561022b57600080fd5b506001600160a01b03813581169160200135166107ac565b6101376004803603602081101561025957600080fd5b50356001600160a01b0316610853565b6101416004803603602081101561027f57600080fd5b50356001600160a01b0316610951565b6000546001600160a01b031633146102e7576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b836001600160a01b0316639ce7abe58484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031681565b6000806000836001600160a01b03166040518080635c60da1b60e01b8152506004019050600060405180830381855afa9150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b50915091508161044b576040805162461bcd60e51b8152602060048201526016602482015275141c9bde1e481a5b5c1b0818d85b1b0819985a5b195960521b604482015290519081900360640190fd5b80806020019051602081101561046057600080fd5b5051949350505050565b6000806000836001600160a01b0316604051808063396f7b2360e01b8152506004019050600060405180830381855afa9150503d80600081146104c9576040519150601f19603f3d011682016040523d82523d6000602084013e6104ce565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601d60248201527f50726f78792070656e64696e67496d706c2063616c6c206661696c6564000000604482015290519081900360640190fd5b6001546001600160a01b031680158015906105485750336001600160a01b038216145b610599576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206d7573742062652070656e64696e6720676f7665726e6f7200604482015290519081900360640190fd5b600080546001600160a01b038381166001600160a01b031980841691909117808555600180549092169091556040519282169391169183917f0ac6deed30eef60090c749850e10f2fa469e3e25fec1d1bef2853003f6e6f18f91a36001546040516001600160a01b03918216918416907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000546001600160a01b0316331461068b576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461074e576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b0316633659cfe6826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6001546001600160a01b031681565b6000546001600160a01b03163314610804576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663a2594d82826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6000546001600160a01b031633146108ab576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b6001600160a01b0381166108fd576040805162461bcd60e51b815260206004820152601460248201527311dbdd995c9b9bdc881b5d5cdd081899481cd95d60621b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b03198316179283905560405191811692169082907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000806000836001600160a01b031660405180806303e1469160e61b8152506004019050600060405180830381855afa9150503d80600081146109b0576040519150601f19603f3d011682016040523d82523d6000602084013e6109b5565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601760248201527f50726f78792061646d696e2063616c6c206661696c6564000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b039290921691909117905556fea26469706673582212203d85cafb1ace3c0ea3e024837f86cb92af141321649c5d2f8caf377a5f67acba64736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80637eff275e116100715780637eff275e146101b157806399a88ec4146101df578063e3056a341461020d578063eb451a0214610215578063f2fde38b14610243578063f3b7dead14610269576100a9565b806307ebde0e146100ae5780630c340a2414610139578063204e1c7a1461015d5780635bf410eb1461018357806379ba5097146101a9575b600080fd5b610137600480360360608110156100c457600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100f857600080fd5b82018360208201111561010a57600080fd5b8035906020019184600183028401116401000000008311171561012c57600080fd5b50909250905061028f565b005b610141610388565b604080516001600160a01b039092168252519081900360200190f35b6101416004803603602081101561017357600080fd5b50356001600160a01b0316610397565b6101416004803603602081101561019957600080fd5b50356001600160a01b031661046a565b610137610525565b610137600480360360408110156101c757600080fd5b506001600160a01b0381358116916020013516610633565b610137600480360360408110156101f557600080fd5b506001600160a01b03813581169160200135166106f6565b61014161079d565b6101376004803603604081101561022b57600080fd5b506001600160a01b03813581169160200135166107ac565b6101376004803603602081101561025957600080fd5b50356001600160a01b0316610853565b6101416004803603602081101561027f57600080fd5b50356001600160a01b0316610951565b6000546001600160a01b031633146102e7576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b836001600160a01b0316639ce7abe58484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031681565b6000806000836001600160a01b03166040518080635c60da1b60e01b8152506004019050600060405180830381855afa9150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b50915091508161044b576040805162461bcd60e51b8152602060048201526016602482015275141c9bde1e481a5b5c1b0818d85b1b0819985a5b195960521b604482015290519081900360640190fd5b80806020019051602081101561046057600080fd5b5051949350505050565b6000806000836001600160a01b0316604051808063396f7b2360e01b8152506004019050600060405180830381855afa9150503d80600081146104c9576040519150601f19603f3d011682016040523d82523d6000602084013e6104ce565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601d60248201527f50726f78792070656e64696e67496d706c2063616c6c206661696c6564000000604482015290519081900360640190fd5b6001546001600160a01b031680158015906105485750336001600160a01b038216145b610599576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206d7573742062652070656e64696e6720676f7665726e6f7200604482015290519081900360640190fd5b600080546001600160a01b038381166001600160a01b031980841691909117808555600180549092169091556040519282169391169183917f0ac6deed30eef60090c749850e10f2fa469e3e25fec1d1bef2853003f6e6f18f91a36001546040516001600160a01b03918216918416907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000546001600160a01b0316331461068b576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461074e576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b0316633659cfe6826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6001546001600160a01b031681565b6000546001600160a01b03163314610804576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663a2594d82826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6000546001600160a01b031633146108ab576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b6001600160a01b0381166108fd576040805162461bcd60e51b815260206004820152601460248201527311dbdd995c9b9bdc881b5d5cdd081899481cd95d60621b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b03198316179283905560405191811692169082907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000806000836001600160a01b031660405180806303e1469160e61b8152506004019050600060405180830381855afa9150503d80600081146109b0576040519150601f19603f3d011682016040523d82523d6000602084013e6109b5565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601760248201527f50726f78792061646d696e2063616c6c206661696c6564000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b039290921691909117905556fea26469706673582212203d85cafb1ace3c0ea3e024837f86cb92af141321649c5d2f8caf377a5f67acba64736f6c63430007060033

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