ETH Price: $3,117.72 (+1.00%)
Gas: 3 Gwei

Contract

0x5c42faC7eEa7e724986bB5e4F3B12912F046120a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Deploy With Crea...194372422024-03-15 2:00:3564 days ago1710468035IN
0x5c42faC7...2F046120a
0 ETH0.0436671550
Deploy With Crea...194372372024-03-15 1:59:3564 days ago1710467975IN
0x5c42faC7...2F046120a
0 ETH0.031553850
Deploy With Crea...194372282024-03-15 1:57:4764 days ago1710467867IN
0x5c42faC7...2F046120a
0 ETH0.063164550
Deploy With Crea...194372172024-03-15 1:55:3564 days ago1710467735IN
0x5c42faC7...2F046120a
0 ETH0.085521850
Deploy With Crea...194372122024-03-15 1:54:3564 days ago1710467675IN
0x5c42faC7...2F046120a
0 ETH0.050938250
Deploy With Crea...194371992024-03-15 1:51:5964 days ago1710467519IN
0x5c42faC7...2F046120a
0 ETH0.1600672260
Deploy With Crea...194371932024-03-15 1:50:4764 days ago1710467447IN
0x5c42faC7...2F046120a
0 ETH0.0486398460
Deploy With Crea...194371832024-03-15 1:48:4764 days ago1710467327IN
0x5c42faC7...2F046120a
0 ETH0.108413460
Deploy With Crea...194371712024-03-15 1:46:2364 days ago1710467183IN
0x5c42faC7...2F046120a
0 ETH0.075546960
Deploy With Crea...194371652024-03-15 1:45:1164 days ago1710467111IN
0x5c42faC7...2F046120a
0 ETH0.278901660
Deploy With Crea...194371592024-03-15 1:43:5964 days ago1710467039IN
0x5c42faC7...2F046120a
0 ETH0.3245579460
Deploy With Crea...194371532024-03-15 1:42:4764 days ago1710466967IN
0x5c42faC7...2F046120a
0 ETH0.2865596460
Deploy With Crea...194371472024-03-15 1:41:3564 days ago1710466895IN
0x5c42faC7...2F046120a
0 ETH0.1057299660
0x60806040194371432024-03-15 1:40:4764 days ago1710466847IN
 Contract Creation
0 ETH0.065370660

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
194372422024-03-15 2:00:3564 days ago1710468035
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194372372024-03-15 1:59:3564 days ago1710467975
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194372282024-03-15 1:57:4764 days ago1710467867
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194372172024-03-15 1:55:3564 days ago1710467735
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194372122024-03-15 1:54:3564 days ago1710467675
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371992024-03-15 1:51:5964 days ago1710467519
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371932024-03-15 1:50:4764 days ago1710467447
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371832024-03-15 1:48:4764 days ago1710467327
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371712024-03-15 1:46:2364 days ago1710467183
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371652024-03-15 1:45:1164 days ago1710467111
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371592024-03-15 1:43:5964 days ago1710467039
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371532024-03-15 1:42:4764 days ago1710466967
0x5c42faC7...2F046120a
 Contract Creation0 ETH
194371472024-03-15 1:41:3564 days ago1710466895
0x5c42faC7...2F046120a
 Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0b52Bc69...5C93F873a
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
EBTCDeployer

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : EBTCDeployer.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

import "./Dependencies/Create3.sol";
import "./Dependencies/Ownable.sol";

contract EBTCDeployer is Ownable {
    string public constant name = "eBTC Deployer";

    string public constant AUTHORITY = "ebtc.v1.authority";
    string public constant LIQUIDATION_LIBRARY = "ebtc.v1.liquidationLibrary";
    string public constant CDP_MANAGER = "ebtc.v1.cdpManager";
    string public constant BORROWER_OPERATIONS = "ebtc.v1.borrowerOperations";

    string public constant PRICE_FEED = "ebtc.v1.priceFeed";
    string public constant EBTC_FEED = "ebtc.v1.ebtcFeed";
    string public constant SORTED_CDPS = "ebtc.v1.sortedCdps";

    string public constant ACTIVE_POOL = "ebtc.v1.activePool";
    string public constant COLL_SURPLUS_POOL = "ebtc.v1.collSurplusPool";

    string public constant HINT_HELPERS = "ebtc.v1.hintHelpers";
    string public constant EBTC_TOKEN = "ebtc.v1.eBTCToken";
    string public constant FEE_RECIPIENT = "ebtc.v1.feeRecipient";
    string public constant MULTI_CDP_GETTER = "ebtc.v1.multiCdpGetter";

    event ContractDeployed(address indexed contractAddress, string contractName, bytes32 salt);

    struct EbtcAddresses {
        address authorityAddress;
        address liquidationLibraryAddress;
        address cdpManagerAddress;
        address borrowerOperationsAddress;
        address priceFeedAddress;
        address sortedCdpsAddress;
        address activePoolAddress;
        address collSurplusPoolAddress;
        address hintHelpersAddress;
        address ebtcTokenAddress;
        address feeRecipientAddress;
        address multiCdpGetterAddress;
        address ebtcFeedAddress;
    }

    /**
    @notice Helper method to return a set of future addresses for eBTC. Intended to be used in the order specified.
    
    @dev The order is as follows:
    0: authority
    1: liquidationLibrary
    2: cdpManager
    3: borrowerOperations
    4: priceFeed
    5; sortedCdps
    6: activePool
    7: collSurplusPool
    8: hintHelpers
    9: eBTCToken
    10: feeRecipient
    11: multiCdpGetter
    12: ebtcFeed


     */
    function getFutureEbtcAddresses() public view returns (EbtcAddresses memory) {
        EbtcAddresses memory addresses = EbtcAddresses(
            Create3.addressOf(keccak256(abi.encodePacked(AUTHORITY))),
            Create3.addressOf(keccak256(abi.encodePacked(LIQUIDATION_LIBRARY))),
            Create3.addressOf(keccak256(abi.encodePacked(CDP_MANAGER))),
            Create3.addressOf(keccak256(abi.encodePacked(BORROWER_OPERATIONS))),
            Create3.addressOf(keccak256(abi.encodePacked(PRICE_FEED))),
            Create3.addressOf(keccak256(abi.encodePacked(SORTED_CDPS))),
            Create3.addressOf(keccak256(abi.encodePacked(ACTIVE_POOL))),
            Create3.addressOf(keccak256(abi.encodePacked(COLL_SURPLUS_POOL))),
            Create3.addressOf(keccak256(abi.encodePacked(HINT_HELPERS))),
            Create3.addressOf(keccak256(abi.encodePacked(EBTC_TOKEN))),
            Create3.addressOf(keccak256(abi.encodePacked(FEE_RECIPIENT))),
            Create3.addressOf(keccak256(abi.encodePacked(MULTI_CDP_GETTER))),
            Create3.addressOf(keccak256(abi.encodePacked(EBTC_FEED)))
        );

        return addresses;
    }

    /**
        @notice Deploy a contract using salt in string format and arbitrary runtime code.
        @dev Intended use is: get the future eBTC addresses, then deploy the appropriate contract to each address via this method, building the constructor using the mapped addresses
        @dev no enforcment of bytecode at address as we can't know the runtime code in this contract due to space constraints
        @dev gated to given deployer EOA to ensure no interference with process, given proper actions by deployer
     */
    function deploy(
        string memory _saltString,
        bytes memory _creationCode
    ) public returns (address deployedAddress) {
        require(msg.sender == 0x68682e8857D24A5Bb71fCd5C6Dc5867731226B62, "EBTCDeployer: only deployer can deploy");
        bytes32 _salt = keccak256(abi.encodePacked(_saltString));
        deployedAddress = Create3.create3(_salt, _creationCode);
        emit ContractDeployed(deployedAddress, _saltString, _salt);
    }

    function deployWithCreationCodeAndConstructorArgs(
        string memory _saltString,
        bytes memory creationCode,
        bytes memory constructionArgs
    ) external returns (address) {
        bytes memory _data = abi.encodePacked(creationCode, constructionArgs);
        return deploy(_saltString, _data);
    }

    function deployWithCreationCode(
        string memory _saltString,
        bytes memory creationCode
    ) external returns (address) {
        return deploy(_saltString, creationCode);
    }

    function addressOf(string memory _saltString) external view returns (address) {
        bytes32 _salt = keccak256(abi.encodePacked(_saltString));
        return Create3.addressOf(_salt);
    }

    function addressOfSalt(bytes32 _salt) external view returns (address) {
        return Create3.addressOf(_salt);
    }

    /**
        @notice Create the creation code for a contract with the given runtime code.
        @dev credit: https://github.com/0xsequence/create3/blob/master/contracts/test_utils/Create3Imp.sol
     */
    function creationCodeFor(bytes memory _code) internal pure returns (bytes memory) {
        /*
      0x00    0x63         0x63XXXXXX  PUSH4 _code.length  size
      0x01    0x80         0x80        DUP1                size size
      0x02    0x60         0x600e      PUSH1 14            14 size size
      0x03    0x60         0x6000      PUSH1 00            0 14 size size
      0x04    0x39         0x39        CODECOPY            size
      0x05    0x60         0x6000      PUSH1 00            0 size
      0x06    0xf3         0xf3        RETURN
      <CODE>
    */

        return
            abi.encodePacked(hex"63", uint32(_code.length), hex"80_60_0E_60_00_39_60_00_F3", _code);
    }
}

File 2 of 4 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity 0.8.17;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 4 : Create3.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.8.17;

/**
  @title A library for deploying contracts EIP-3171 style.
  @author Agustin Aguilar <[email protected]>
*/
library Create3 {
    error ErrorCreatingProxy();
    error ErrorCreatingContract();
    error TargetAlreadyExists();

    /**
    @notice The bytecode for a contract that proxies the creation of another contract
    @dev If this code is deployed using CREATE2 it can be used to decouple `creationCode` from the child contract address

  0x67363d3d37363d34f03d5260086018f3:
      0x00  0x67  0x67XXXXXXXXXXXXXXXX  PUSH8 bytecode  0x363d3d37363d34f0
      0x01  0x3d  0x3d                  RETURNDATASIZE  0 0x363d3d37363d34f0
      0x02  0x52  0x52                  MSTORE
      0x03  0x60  0x6008                PUSH1 08        8
      0x04  0x60  0x6018                PUSH1 18        24 8
      0x05  0xf3  0xf3                  RETURN

  0x363d3d37363d34f0:
      0x00  0x36  0x36                  CALLDATASIZE    cds
      0x01  0x3d  0x3d                  RETURNDATASIZE  0 cds
      0x02  0x3d  0x3d                  RETURNDATASIZE  0 0 cds
      0x03  0x37  0x37                  CALLDATACOPY
      0x04  0x36  0x36                  CALLDATASIZE    cds
      0x05  0x3d  0x3d                  RETURNDATASIZE  0 cds
      0x06  0x34  0x34                  CALLVALUE       val 0 cds
      0x07  0xf0  0xf0                  CREATE          addr
  */

    bytes internal constant PROXY_CHILD_BYTECODE =
        hex"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3";

    //                        KECCAK256_PROXY_CHILD_BYTECODE = keccak256(PROXY_CHILD_BYTECODE);
    bytes32 internal constant KECCAK256_PROXY_CHILD_BYTECODE =
        0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f;

    /**
    @notice Returns the size of the code on a given address
    @param _addr Address that may or may not contain code
    @return size of the code on the given `_addr`
  */
    function codeSize(address _addr) internal view returns (uint256 size) {
        assembly {
            size := extcodesize(_addr)
        }
    }

    /**
    @notice Creates a new contract with given `_creationCode` and `_salt`
    @param _salt Salt of the contract creation, resulting address will be derivated from this value only
    @param _creationCode Creation code (constructor) of the contract to be deployed, this value doesn't affect the resulting address
    @return addr of the deployed contract, reverts on error
  */
    function create3(bytes32 _salt, bytes memory _creationCode) internal returns (address addr) {
        return create3(_salt, _creationCode, 0);
    }

    /**
    @notice Creates a new contract with given `_creationCode` and `_salt`
    @param _salt Salt of the contract creation, resulting address will be derivated from this value only
    @param _creationCode Creation code (constructor) of the contract to be deployed, this value doesn't affect the resulting address
    @param _value In WEI of ETH to be forwarded to child contract
    @return addr of the deployed contract, reverts on error
  */
    function create3(
        bytes32 _salt,
        bytes memory _creationCode,
        uint256 _value
    ) internal returns (address addr) {
        // Creation code
        bytes memory creationCode = PROXY_CHILD_BYTECODE;

        // Get target final address
        addr = addressOf(_salt);
        if (codeSize(addr) != 0) revert TargetAlreadyExists();

        // Create CREATE2 proxy
        address proxy;
        assembly {
            proxy := create2(0, add(creationCode, 32), mload(creationCode), _salt)
        }
        if (proxy == address(0)) revert ErrorCreatingProxy();

        // Call proxy with final init code
        (bool success, ) = proxy.call{value: _value}(_creationCode);
        if (!success || codeSize(addr) == 0) revert ErrorCreatingContract();
    }

    /**
    @notice Computes the resulting address of a contract deployed using address(this) and the given `_salt`
    @param _salt Salt of the contract creation, resulting address will be derivated from this value only
    @return addr of the deployed contract, reverts on error

    @dev The address creation formula is: keccak256(rlp([keccak256(0xff ++ address(this) ++ _salt ++ keccak256(childBytecode))[12:], 0x01]))
  */
    function addressOf(bytes32 _salt) internal view returns (address) {
        address proxy = address(
            uint160(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            hex"ff",
                            address(this),
                            _salt,
                            KECCAK256_PROXY_CHILD_BYTECODE
                        )
                    )
                )
            )
        );

        return address(uint160(uint256(keccak256(abi.encodePacked(hex"d6_94", proxy, hex"01")))));
    }
}

File 4 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity 0.8.17;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"ErrorCreatingContract","type":"error"},{"inputs":[],"name":"ErrorCreatingProxy","type":"error"},{"inputs":[],"name":"TargetAlreadyExists","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"contractName","type":"string"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"ContractDeployed","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"},{"inputs":[],"name":"ACTIVE_POOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUTHORITY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BORROWER_OPERATIONS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CDP_MANAGER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COLL_SURPLUS_POOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EBTC_FEED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EBTC_TOKEN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_RECIPIENT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HINT_HELPERS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDATION_LIBRARY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MULTI_CDP_GETTER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_FEED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SORTED_CDPS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"name":"addressOfSalt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"},{"internalType":"bytes","name":"_creationCode","type":"bytes"}],"name":"deploy","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"},{"internalType":"bytes","name":"creationCode","type":"bytes"}],"name":"deployWithCreationCode","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"},{"internalType":"bytes","name":"creationCode","type":"bytes"},{"internalType":"bytes","name":"constructionArgs","type":"bytes"}],"name":"deployWithCreationCodeAndConstructorArgs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFutureEbtcAddresses","outputs":[{"components":[{"internalType":"address","name":"authorityAddress","type":"address"},{"internalType":"address","name":"liquidationLibraryAddress","type":"address"},{"internalType":"address","name":"cdpManagerAddress","type":"address"},{"internalType":"address","name":"borrowerOperationsAddress","type":"address"},{"internalType":"address","name":"priceFeedAddress","type":"address"},{"internalType":"address","name":"sortedCdpsAddress","type":"address"},{"internalType":"address","name":"activePoolAddress","type":"address"},{"internalType":"address","name":"collSurplusPoolAddress","type":"address"},{"internalType":"address","name":"hintHelpersAddress","type":"address"},{"internalType":"address","name":"ebtcTokenAddress","type":"address"},{"internalType":"address","name":"feeRecipientAddress","type":"address"},{"internalType":"address","name":"multiCdpGetterAddress","type":"address"},{"internalType":"address","name":"ebtcFeedAddress","type":"address"}],"internalType":"struct EBTCDeployer.EbtcAddresses","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806389fcd796116100c3578063c145208f1161007c578063c145208f146103f0578063ccf1454a14610422578063d0d4407514610435578063ebd0905414610466578063f2fde38b14610499578063fe36a95b146104ac57600080fd5b806389fcd796146103155780638da5cb5b1461034557806396c7137714610356578063a47618b81461038c578063a616236a146103a1578063be3397e9146103dd57600080fd5b80634be8e5a6116101155780634be8e5a6146102375780635ad63cab1461026857806369a120791461027b578063715018a6146102aa5780637f761668146102b4578063826f02d3146102e557600080fd5b806306fdde031461015257806317355ca4146101945780631ab4a721146101bf57806331eb318a146101f45780633ce9858214610224575b600080fd5b61017e6040518060400160405280600d81526020016c32a12a21902232b83637bcb2b960991b81525081565b60405161018b9190610e61565b60405180910390f35b6101a76101a2366004610e74565b6104e8565b6040516001600160a01b03909116815260200161018b565b61017e6040518060400160405280601681526020017532b13a31973b189736bab63a34a1b23823b2ba3a32b960511b81525081565b61017e6040518060400160405280601181526020017019589d18cb9d8c4b9c1c9a58d951995959607a1b81525081565b6101a7610232366004610f30565b6104f9565b61017e6040518060400160405280601281526020017132b13a31973b189731b23826b0b730b3b2b960711b81525081565b6101a7610276366004610fb8565b610533565b61017e6040518060400160405280601081526020016f19589d18cb9d8c4b99589d18d199595960821b81525081565b6102b2610546565b005b61017e60405180604001604052806012815260200171656274632e76312e736f727465644364707360701b81525081565b61017e6040518060400160405280601181526020017032b13a31973b189732a12a21aa37b5b2b760791b81525081565b61017e60405180604001604052806011815260200170656274632e76312e617574686f7269747960781b81525081565b6000546001600160a01b03166101a7565b61017e6040518060400160405280601781526020017619589d18cb9d8c4b98dbdb1b14dd5c9c1b1d5cd41bdbdb604a1b81525081565b61039461055a565b60405161018b919061101c565b61017e6040518060400160405280601a81526020017f656274632e76312e626f72726f7765724f7065726174696f6e7300000000000081525081565b6101a76103eb366004610fb8565b6109e4565b61017e60405180604001604052806013815260200172656274632e76312e68696e7448656c7065727360681b81525081565b6101a761043036600461113e565b610ade565b61017e6040518060400160405280601281526020017119589d18cb9d8c4b9858dd1a5d99541bdbdb60721b81525081565b61017e6040518060400160405280601481526020017319589d18cb9d8c4b999959549958da5c1a595b9d60621b81525081565b6102b26104a736600461117b565b610b13565b61017e6040518060400160405280601a81526020017f656274632e76312e6c69717569646174696f6e4c69627261727900000000000081525081565b60006104f382610b8c565b92915050565b600080838360405160200161050f9291906111a4565b604051602081830303815290604052905061052a85826109e4565b95945050505050565b600061053f83836109e4565b9392505050565b61054e610c3f565b6105586000610c99565b565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152604080516101e08101825260116101a0820190815270656274632e76312e617574686f7269747960781b6101c0830152915160009282916106259161060a916020016111d3565b60405160208183030381529060405280519060200120610b8c565b6001600160a01b0316815260200161067c6040518060400160405280601a81526020017f656274632e76312e6c69717569646174696f6e4c69627261727900000000000081525060405160200161060a91906111d3565b6001600160a01b031681526020016106c86040518060400160405280601281526020017132b13a31973b189731b23826b0b730b3b2b960711b81525060405160200161060a91906111d3565b6001600160a01b0316815260200161071f6040518060400160405280601a81526020017f656274632e76312e626f72726f7765724f7065726174696f6e7300000000000081525060405160200161060a91906111d3565b6001600160a01b0316815260200161076a6040518060400160405280601181526020017019589d18cb9d8c4b9c1c9a58d951995959607a1b81525060405160200161060a91906111d3565b6001600160a01b031681526020016107b660405180604001604052806012815260200171656274632e76312e736f727465644364707360701b81525060405160200161060a91906111d3565b6001600160a01b031681526020016108026040518060400160405280601281526020017119589d18cb9d8c4b9858dd1a5d99541bdbdb60721b81525060405160200161060a91906111d3565b6001600160a01b031681526020016108536040518060400160405280601781526020017619589d18cb9d8c4b98dbdb1b14dd5c9c1b1d5cd41bdbdb604a1b81525060405160200161060a91906111d3565b6001600160a01b031681526020016108a060405180604001604052806013815260200172656274632e76312e68696e7448656c7065727360681b81525060405160200161060a91906111d3565b6001600160a01b031681526020016108eb6040518060400160405280601181526020017032b13a31973b189732a12a21aa37b5b2b760791b81525060405160200161060a91906111d3565b6001600160a01b031681526020016109396040518060400160405280601481526020017319589d18cb9d8c4b999959549958da5c1a595b9d60621b81525060405160200161060a91906111d3565b6001600160a01b031681526020016109896040518060400160405280601681526020017532b13a31973b189736bab63a34a1b23823b2ba3a32b960511b81525060405160200161060a91906111d3565b6001600160a01b031681526020016109d36040518060400160405280601081526020016f19589d18cb9d8c4b99589d18d199595960821b81525060405160200161060a91906111d3565b6001600160a01b0316905292915050565b60007368682e8857d24a5bb71fcd5c6dc5867731226b623314610a5d5760405162461bcd60e51b815260206004820152602660248201527f454254434465706c6f7965723a206f6e6c79206465706c6f7965722063616e206044820152656465706c6f7960d01b60648201526084015b60405180910390fd5b600083604051602001610a7091906111d3565b604051602081830303815290604052805190602001209050610a928184610ce9565b9150816001600160a01b03167ff69d55da19b60d2a59ccf297aa416a80611050db35f7e5dfb9319a99d7c594ab8583604051610acf9291906111ef565b60405180910390a25092915050565b60008082604051602001610af291906111d3565b60405160208183030381529060405280519060200120905061053f81610b8c565b610b1b610c3f565b6001600160a01b038116610b805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a54565b610b8981610c99565b50565b604080516001600160f81b031960208083019190915230606090811b6bffffffffffffffffffffffff19908116602185015260358401959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580850191909152845180850390910181526075840185528051908301206135a560f21b6095850152901b9093166097820152600160f81b60ab8201528151608c81830301815260ac909101909152805191012090565b6000546001600160a01b031633146105585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a54565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061053f8383600060408051808201909152601081526f67363d3d37363d34f03d5260086018f360801b6020820152600090610d2585610b8c565b9150813b15610d475760405163cd43efa160e01b815260040160405180910390fd5b6000858251602084016000f590506001600160a01b038116610d7c5760405163bbd2fe8760e01b815260040160405180910390fd5b6000816001600160a01b03168587604051610d9791906111d3565b60006040518083038185875af1925050503d8060008114610dd4576040519150601f19603f3d011682016040523d82523d6000602084013e610dd9565b606091505b50509050801580610de95750833b155b15610e07576040516353de54b960e01b815260040160405180910390fd5b5050509392505050565b60005b83811015610e2c578181015183820152602001610e14565b50506000910152565b60008151808452610e4d816020860160208601610e11565b601f01601f19169290920160200192915050565b60208152600061053f6020830184610e35565b600060208284031215610e8657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610eb457600080fd5b813567ffffffffffffffff80821115610ecf57610ecf610e8d565b604051601f8301601f19908116603f01168101908282118183101715610ef757610ef7610e8d565b81604052838152866020858801011115610f1057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610f4557600080fd5b833567ffffffffffffffff80821115610f5d57600080fd5b610f6987838801610ea3565b94506020860135915080821115610f7f57600080fd5b610f8b87838801610ea3565b93506040860135915080821115610fa157600080fd5b50610fae86828701610ea3565b9150509250925092565b60008060408385031215610fcb57600080fd5b823567ffffffffffffffff80821115610fe357600080fd5b610fef86838701610ea3565b9350602085013591508082111561100557600080fd5b5061101285828601610ea3565b9150509250929050565b81516001600160a01b031681526101a08101602083015161104860208401826001600160a01b03169052565b50604083015161106360408401826001600160a01b03169052565b50606083015161107e60608401826001600160a01b03169052565b50608083015161109960808401826001600160a01b03169052565b5060a08301516110b460a08401826001600160a01b03169052565b5060c08301516110cf60c08401826001600160a01b03169052565b5060e08301516110ea60e08401826001600160a01b03169052565b50610100838101516001600160a01b03908116918401919091526101208085015182169084015261014080850151821690840152610160808501518216908401526101809384015116929091019190915290565b60006020828403121561115057600080fd5b813567ffffffffffffffff81111561116757600080fd5b61117384828501610ea3565b949350505050565b60006020828403121561118d57600080fd5b81356001600160a01b038116811461053f57600080fd5b600083516111b6818460208801610e11565b8351908301906111ca818360208801610e11565b01949350505050565b600082516111e5818460208701610e11565b9190910192915050565b6040815260006112026040830185610e35565b9050826020830152939250505056fea2646970667358221220ee14ec2b70c6e7f0468ca23e5a8a060e01c2cd6913690ee299d3625547f1c6f364736f6c63430008110033

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.