Sepolia Testnet

Contract

0x283881aBB99b3bFD870e9Da240aDcd545C5A7cB4

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Contract Name:
HashiManager

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 100 runs

Other Settings:
byzantium EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : HashiManager.sol
pragma solidity 0.4.24;

import "./Ownable.sol";
import "openzeppelin-solidity/contracts/math/SafeMath.sol";
import "./InitializableBridge.sol";

contract HashiManager is InitializableBridge, Ownable {
    bytes32 internal constant N_ADAPTERS = 0xdcf7815b28c450099ee39fe328212215e261dd8ce26acdea76caf742d778991e; // keccak256(abi.encodePacked("nAdapters"))
    bytes32 internal constant N_REPORTERS = 0x7759f17e5239c7f5c713a5c2ca4f103cbe6896de01dabfb0d08276642d579e33; // keccak256(abi.encodePacked("nReporters"))
    bytes32 internal constant YAHO = 0xb947d41ce6141eb4dc972fcad3b49fe0eb8d5f59730728c86b8f6e1427912f0e; // keccak256(abi.encodePacked("yaho"))
    bytes32 internal constant YARU = 0x524607f5322f856f1415d60956f8220a13a3abe3281979fdb843027035724c76; // keccak256(abi.encodePacked("yaru"))
    bytes32 internal constant TARGET_ADDRESS = 0x2f1696ba9bd43014bc580768c9270c32ad765cbf97d2a2ba5e81ab9f1ee90561; // keccak256(abi.encodePacked("targetAddress"))
    bytes32 internal constant TARGET_CHAIN_ID = 0xbd2b577e24554caf96874c1f333079c108fe5afbd441f36a76920df41d10820c; // keccak256(abi.encodePacked("targetChainId"))
    bytes32 internal constant THRESHOLD = 0xd46c2b20c7303c2e50535d224276492e8a1eda2a3d7398e0bea254640c1154e7; // keccak256(abi.encodePacked("threshold"))
    bytes32 internal constant EXPECTED_THRESHOLD = 0x8d22a2c372a80e72edabc4af18641f1c8144f8c3c74dce591bace2af2a167b88; // keccak256(abi.encodePacked("expectedThreshold"))
    bytes32 internal constant EXPECTED_ADAPTERS_HASH = 0x21aa67cae9293b939ada82eb9133293e592da66aa847a5596523bd6d2bf2529b; // keccak256(abi.encodePacked("expectedAdapters"))

    function initialize(address _owner) external onlyRelevantSender returns (bool) {
        require(!isInitialized());
        _setOwner(_owner);
        setInitialize();
        return isInitialized();
    }

    function setReportersAdaptersAndThreshold(address[] reporters, address[] adapters, uint256 threshold)
        external
        onlyOwner
    {
        _setArray(N_REPORTERS, "reporters", reporters);
        _setArray(N_ADAPTERS, "adapters", adapters);
        uintStorage[THRESHOLD] = threshold;
    }

    function adapters() external view returns (address[]) {
        return _getArray(N_ADAPTERS, "adapters");
    }

    function reporters() external view returns (address[]) {
        return _getArray(N_REPORTERS, "reporters");
    }

    function expectedAdaptersHash() external view returns (bytes32) {
        return bytes32(uintStorage[EXPECTED_ADAPTERS_HASH]);
    }

    function setExpectedAdaptersHash(address[] adapters_) external onlyOwner {
        uintStorage[EXPECTED_ADAPTERS_HASH] = uint256(keccak256(abi.encodePacked(adapters_)));
    }

    function expectedThreshold() external view returns (uint256) {
        return uintStorage[EXPECTED_THRESHOLD];
    }

    function setExpectedThreshold(uint256 expectedThreshold_) external onlyOwner {
        uintStorage[EXPECTED_THRESHOLD] = expectedThreshold_;
    }

    function yaho() external view returns (address) {
        return addressStorage[YAHO];
    }

    function setYaho(address yaho_) external onlyOwner {
        addressStorage[YAHO] = yaho_;
    }

    function yaru() external view returns (address) {
        return addressStorage[YARU];
    }

    function setYaru(address yaru_) external onlyOwner {
        addressStorage[YARU] = yaru_;
    }

    function targetAddress() external view returns (address) {
        return addressStorage[TARGET_ADDRESS];
    }

    function setTargetAddress(address targetAddress_) external onlyOwner {
        addressStorage[TARGET_ADDRESS] = targetAddress_;
    }

    function targetChainId() external view returns (uint256) {
        return uintStorage[TARGET_CHAIN_ID];
    }

    function setTargetChainId(uint256 targetChainId_) external onlyOwner {
        uintStorage[TARGET_CHAIN_ID] = targetChainId_;
    }

    function threshold() external view returns (uint256) {
        return uintStorage[THRESHOLD];
    }

    function _getArray(bytes32 keyLength, bytes32 key) internal view returns (address[]) {
        uint256 n = uintStorage[keyLength];
        address[] memory values = new address[](n);
        for (uint256 i = 0; i < n; i++) values[i] = addressStorage[keccak256(abi.encodePacked(key, i))];
        return values;
    }

    function _setArray(bytes32 keyLength, bytes32 key, address[] values) internal {
        uint256 n = uintStorage[keyLength];
        for (uint256 i = 0; i < n; i++) delete addressStorage[keccak256(abi.encodePacked(key, i))];
        uintStorage[keyLength] = values.length;
        for (uint256 j = 0; j < values.length; j++) addressStorage[keccak256(abi.encodePacked(key, j))] = values[j];
    }
}

File 2 of 7 : IUpgradeabilityOwnerStorage.sol
pragma solidity 0.4.24;

interface IUpgradeabilityOwnerStorage {
    function upgradeabilityOwner() external view returns (address);
}

File 3 of 7 : EternalStorage.sol
pragma solidity 0.4.24;

/**
 * @title EternalStorage
 * @dev This contract holds all the necessary state variables to carry out the storage of any contract.
 */
contract EternalStorage {
    mapping(bytes32 => uint256) internal uintStorage;
    mapping(bytes32 => string) internal stringStorage;
    mapping(bytes32 => address) internal addressStorage;
    mapping(bytes32 => bytes) internal bytesStorage;
    mapping(bytes32 => bool) internal boolStorage;
    mapping(bytes32 => int256) internal intStorage;

}

File 4 of 7 : Initializable.sol
pragma solidity 0.4.24;

import "../upgradeability/EternalStorage.sol";

contract Initializable is EternalStorage {
    bytes32 internal constant INITIALIZED = 0x0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba; // keccak256(abi.encodePacked("isInitialized"))

    function setInitialize() internal {
        boolStorage[INITIALIZED] = true;
    }

    function isInitialized() public view returns (bool) {
        return boolStorage[INITIALIZED];
    }
}

File 5 of 7 : InitializableBridge.sol
pragma solidity 0.4.24;

import "./Initializable.sol";

contract InitializableBridge is Initializable {
    bytes32 internal constant DEPLOYED_AT_BLOCK = 0xb120ceec05576ad0c710bc6e85f1768535e27554458f05dcbb5c65b8c7a749b0; // keccak256(abi.encodePacked("deployedAtBlock"))

    function deployedAtBlock() external view returns (uint256) {
        return uintStorage[DEPLOYED_AT_BLOCK];
    }
}

File 6 of 7 : Ownable.sol
pragma solidity 0.4.24;

import "../upgradeability/EternalStorage.sol";
import "../interfaces/IUpgradeabilityOwnerStorage.sol";

/**
 * @title Ownable
 * @dev This contract has an owner address providing basic authorization control
 */
contract Ownable is EternalStorage {
    bytes4 internal constant UPGRADEABILITY_OWNER = 0x6fde8202; // upgradeabilityOwner()

    /**
    * @dev Event to show ownership has been transferred
    * @param previousOwner representing the address of the previous owner
    * @param newOwner representing the address of the new owner
    */
    event OwnershipTransferred(address previousOwner, address newOwner);

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner());
        /* solcov ignore next */
        _;
    }

    /**
    * @dev Throws if called by any account other than contract itself or owner.
    */
    modifier onlyRelevantSender() {
        // proxy owner if used through proxy, address(0) otherwise
        require(
            !address(this).call(abi.encodeWithSelector(UPGRADEABILITY_OWNER)) || // covers usage without calling through storage proxy
                msg.sender == IUpgradeabilityOwnerStorage(this).upgradeabilityOwner() || // covers usage through regular proxy calls
                msg.sender == address(this) // covers calls through upgradeAndCall proxy method
        );
        /* solcov ignore next */
        _;
    }

    bytes32 internal constant OWNER = 0x02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0; // keccak256(abi.encodePacked("owner"))

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function owner() public view returns (address) {
        return addressStorage[OWNER];
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param newOwner the address to transfer ownership to.
    */
    function transferOwnership(address newOwner) external onlyOwner {
        _setOwner(newOwner);
    }

    /**
    * @dev Sets a new owner address
    */
    function _setOwner(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner(), newOwner);
        addressStorage[OWNER] = newOwner;
    }
}

File 7 of 7 : SafeMath.sol
pragma solidity ^0.4.24;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    c = _a * _b;
    assert(c / _a == _b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // assert(_b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold
    return _a / _b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    assert(_b <= _a);
    return _a - _b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    c = _a + _b;
    assert(c >= _a);
    return c;
  }
}

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

Contract ABI

[{"constant":false,"inputs":[{"name":"expectedThreshold_","type":"uint256"}],"name":"setExpectedThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"yaho_","type":"address"}],"name":"setYaho","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"targetChainId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"reporters","type":"address[]"},{"name":"adapters","type":"address[]"},{"name":"threshold","type":"uint256"}],"name":"setReportersAdaptersAndThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"expectedThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isInitialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"threshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"targetAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adapters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"yaru","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deployedAtBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"initialize","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"targetChainId_","type":"uint256"}],"name":"setTargetChainId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"yaru_","type":"address"}],"name":"setYaru","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"adapters_","type":"address[]"}],"name":"setExpectedAdaptersHash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"yaho","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reporters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"expectedAdaptersHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"targetAddress_","type":"address"}],"name":"setTargetAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Deployed Bytecode

0x6080604052600436106101035763ffffffff60e060020a6000350416630b4a8bbb81146101085780630c0546ca14610122578063146ffb26146101435780631945c31f1461016a5780632690ff8b14610199578063392e53cd146101ae57806342cde4e8146101d75780635210eb56146101ec5780636b6e93d51461021d578063789b11d7146102825780638da5cb5b146102975780639a454b99146102ac578063c4d66de8146102c1578063dbe64a15146102e2578063dfa3e78f146102fa578063e155e6471461031b578063ee4937ba1461033b578063f144d48614610350578063f238ca2614610365578063f2fde38b1461037a578063fd8b23701461039b575b600080fd5b34801561011457600080fd5b506101206004356103bc565b005b34801561012e57600080fd5b50610120600160a060020a0360043516610425565b34801561014f57600080fd5b506101586104ab565b60408051918252519081900360200190f35b34801561017657600080fd5b5061012060246004803582810192908201359181359182019101356044356104f9565b3480156101a557600080fd5b5061015861065c565b3480156101ba57600080fd5b506101c36106aa565b604080519115158252519081900360200190f35b3480156101e357600080fd5b506101586106fb565b3480156101f857600080fd5b50610201610749565b60408051600160a060020a039092168252519081900360200190f35b34801561022957600080fd5b506102326107a0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561026e578181015183820152602001610256565b505050509050019250505060405180910390f35b34801561028e57600080fd5b506102016107f1565b3480156102a357600080fd5b50610201610848565b3480156102b857600080fd5b5061015861089f565b3480156102cd57600080fd5b506101c3600160a060020a03600435166108ed565b3480156102ee57600080fd5b50610120600435610a73565b34801561030657600080fd5b50610120600160a060020a0360043516610adc565b34801561032757600080fd5b506101206004803560248101910135610b62565b34801561034757600080fd5b50610201610c4f565b34801561035c57600080fd5b50610232610ca6565b34801561037157600080fd5b50610158610cf2565b34801561038657600080fd5b50610120600160a060020a0360043516610d40565b3480156103a757600080fd5b50610120600160a060020a0360043516610d68565b6103c4610848565b600160a060020a031633146103d857600080fd5b7f8d22a2c372a80e72edabc4af18641f1c8144f8c3c74dce591bace2af2a167b8860009081526020527fcafa7e41014ddabd84add1a71d8e09bb89a48a4c5a138bd26d9755a66a2f99f555565b61042d610848565b600160a060020a0316331461044157600080fd5b7fb947d41ce6141eb4dc972fcad3b49fe0eb8d5f59730728c86b8f6e1427912f0e60005260026020527f0dadc510f212f2a92515c853e3683a83ce49ff155625dd5456929348b51dec068054600160a060020a031916600160a060020a0392909216919091179055565b7fbd2b577e24554caf96874c1f333079c108fe5afbd441f36a76920df41d10820c60009081526020527fe504c555886dd0dd62c7df3d04fe466666eaa051060b2567353319bed2d7ca5c5490565b610501610848565b600160a060020a0316331461051557600080fd5b6105907f7759f17e5239c7f5c713a5c2ca4f103cbe6896de01dabfb0d08276642d579e336001027f7265706f7274657273000000000000000000000000000000000000000000000087878080602002602001604051908101604052809392919081815260200183836020028082843750610dee945050505050565b61060b7fdcf7815b28c450099ee39fe328212215e261dd8ce26acdea76caf742d778991e6001027f616461707465727300000000000000000000000000000000000000000000000085858080602002602001604051908101604052809392919081815260200183836020028082843750610dee945050505050565b7fd46c2b20c7303c2e50535d224276492e8a1eda2a3d7398e0bea254640c1154e760009081526020527f31926f5037b9212811db282c90f46da69755c6ca200913531b96083e9c1bc42b5550505050565b7f8d22a2c372a80e72edabc4af18641f1c8144f8c3c74dce591bace2af2a167b8860009081526020527fcafa7e41014ddabd84add1a71d8e09bb89a48a4c5a138bd26d9755a66a2f99f55490565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc5460ff1690565b7fd46c2b20c7303c2e50535d224276492e8a1eda2a3d7398e0bea254640c1154e760009081526020527f31926f5037b9212811db282c90f46da69755c6ca200913531b96083e9c1bc42b5490565b7f2f1696ba9bd43014bc580768c9270c32ad765cbf97d2a2ba5e81ab9f1ee9056160005260026020527f0f0d504bd19845c69f8d799010412045606611d637d1764172e2e3257b54526b54600160a060020a031690565b60606107ec7fdcf7815b28c450099ee39fe328212215e261dd8ce26acdea76caf742d778991e7f6164617074657273000000000000000000000000000000000000000000000000610faa565b905090565b7f524607f5322f856f1415d60956f8220a13a3abe3281979fdb843027035724c7660005260026020527f71ae00b468404f7b1185c0b13cbb80b40213288bb12eef462014ce80f3720b9754600160a060020a031690565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e54600160a060020a031690565b7fb120ceec05576ad0c710bc6e85f1768535e27554458f05dcbb5c65b8c7a749b060009081526020527fe66bef0282a446f9848e2903380099bb6e431483ee78778868f33b4a154c818b5490565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fde8202000000000000000000000000000000000000000000000000000000001781529151815160009330939291829190808383895b8381101561096e578181015183820152602001610956565b50505050905090810190601f16801561099b5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150501580610a2d575030600160a060020a0316636fde82026040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156109f557600080fd5b505af1158015610a09573d6000803e3d6000fd5b505050506040513d6020811015610a1f57600080fd5b5051600160a060020a031633145b80610a3757503330145b1515610a4257600080fd5b610a4a6106aa565b15610a5457600080fd5b610a5d826110cd565b610a65611197565b610a6d6106aa565b92915050565b610a7b610848565b600160a060020a03163314610a8f57600080fd5b7fbd2b577e24554caf96874c1f333079c108fe5afbd441f36a76920df41d10820c60009081526020527fe504c555886dd0dd62c7df3d04fe466666eaa051060b2567353319bed2d7ca5c55565b610ae4610848565b600160a060020a03163314610af857600080fd5b7f524607f5322f856f1415d60956f8220a13a3abe3281979fdb843027035724c7660005260026020527f71ae00b468404f7b1185c0b13cbb80b40213288bb12eef462014ce80f3720b978054600160a060020a031916600160a060020a0392909216919091179055565b610b6a610848565b600160a060020a03163314610b7e57600080fd5b8181604051602001808383602002808284378201915050925050506040516020818303038152906040526040518082805190602001908083835b60208310610bd75780518252601f199092019160209182019101610bb8565b51815160209384036101000a60001901801990921691161790526040519190930181900390207f21aa67cae9293b939ada82eb9133293e592da66aa847a5596523bd6d2bf2529b6000908152909252507f804a4d5bac981629ca8de14c2a7f7d91bcaba03d4cb4f521b42784ab471b37b85550505050565b7fb947d41ce6141eb4dc972fcad3b49fe0eb8d5f59730728c86b8f6e1427912f0e60005260026020527f0dadc510f212f2a92515c853e3683a83ce49ff155625dd5456929348b51dec0654600160a060020a031690565b60606107ec7f7759f17e5239c7f5c713a5c2ca4f103cbe6896de01dabfb0d08276642d579e337f7265706f72746572730000000000000000000000000000000000000000000000610faa565b7f21aa67cae9293b939ada82eb9133293e592da66aa847a5596523bd6d2bf2529b60009081526020527f804a4d5bac981629ca8de14c2a7f7d91bcaba03d4cb4f521b42784ab471b37b85490565b610d48610848565b600160a060020a03163314610d5c57600080fd5b610d65816110cd565b50565b610d70610848565b600160a060020a03163314610d8457600080fd5b7f2f1696ba9bd43014bc580768c9270c32ad765cbf97d2a2ba5e81ab9f1ee9056160005260026020527f0f0d504bd19845c69f8d799010412045606611d637d1764172e2e3257b54526b8054600160a060020a031916600160a060020a0392909216919091179055565b60008381526020819052604081205490805b82821015610eb357604080516020808201889052818301859052825180830384018152606090920192839052815160029360009392909182918401908083835b60208310610e5f5780518252601f199092019160209182019101610e40565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000208054600160a060020a031916905550505060019190910190610e00565b5082516000868152602081905260408120919091555b8351811015610fa2578381815181101515610ee057fe5b60209081029091018101516040805180840189905280820185905281518082038301815260609091019182905280519293600293600093918291908401908083835b60208310610f415780518252601f199092019160209182019101610f22565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000208054600160a060020a031916600160a060020a039590951694909417909355505050600101610ec9565b505050505050565b60008281526020818152604080832054815181815281840281019093019091526060929091839190838015610fe9578160200160208202803883390190505b509150600090505b828110156110c457604080516020808201889052818301849052825180830384018152606090920192839052815160029360009392909182918401908083835b602083106110505780518252601f199092019160209182019101611031565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020548551600160a060020a03909116935085925084915081106110a557fe5b600160a060020a03909216602092830290910190910152600101610ff1565b50949350505050565b600160a060020a03811615156110e257600080fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061110b610848565b60408051600160a060020a03928316815291841660208301528051918290030190a17f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e8054600160a060020a031916600160a060020a0392909216919091179055565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc805460ff191660011790555600a165627a7a7230582033d7b03bf05bc77fc261d54a616ecc84407245de6a40eba6f014604553b5d3310029

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.