ETH Price: $1,920.16 (-2.88%)
 

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

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
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

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

Contract Name:
ChainlinkOracleFeed

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : ChainlinkOracleFeed.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.26;

import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

import {OracleFeed} from "./OracleFeed.sol";
import {Errors} from "../libraries/Errors.sol";

/// @title ChainlinkOracleFeed
/// @author luoyhang003
/// @notice Oracle adapter that integrates with Chainlink price feeds.
/// @dev Inherits from the abstract OracleFeed contract and implements the
///      peek function by querying a Chainlink AggregatorV3Interface.
contract ChainlinkOracleFeed is OracleFeed {
    /*//////////////////////////////////////////////////////////////////////////
                                    STATE VARIABLES
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Chainlink price feed contract (AggregatorV3Interface).
    /// @dev Immutable after deployment to ensure oracle integrity.
    AggregatorV3Interface public immutable priceFeed;

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

    /// @notice Deploys the Chainlink oracle feed wrapper.
    /// @param _token The address of the token this oracle is associated with.
    /// @param _name A human-readable name for this oracle feed.
    /// @param _priceFeed The address of the Chainlink AggregatorV3 price feed.
    constructor(
        address _token,
        string memory _name,
        address _priceFeed
    ) OracleFeed(_token, _name) {
        if (_priceFeed == address(0)) revert Errors.ZeroAddress();

        priceFeed = AggregatorV3Interface(_priceFeed);
    }

    /*//////////////////////////////////////////////////////////////////////////
                                    VIEW FUNCTIONS
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Returns the latest price from the Chainlink feed, normalized to 18 decimals.
    /// @dev Performs several safety checks:
    ///      - Ensures the returned price is positive.
    ///      - Ensures the round is not stale.
    ///      - Ensures the round data is complete and not from the future.
    ///      - Adjusts decimals from the Chainlink feed to a standard 18-decimal format.
    /// @return price_ The latest valid price, scaled to 18 decimals.
    function peek() external view override returns (uint256 price_) {
        (
            uint80 roundId,
            int256 answer,
            ,
            uint256 updatedAt,
            uint80 answeredInRound
        ) = priceFeed.latestRoundData();

        if (answer <= 0) revert Errors.InvalidPrice();
        if (answeredInRound < roundId) revert Errors.StalePrice();
        if (updatedAt == 0 || updatedAt > block.timestamp)
            revert Errors.IncompleteRound();

        uint8 decimals = priceFeed.decimals();

        // Convert int256 to uint256 after validation, and normalize to 18 decimals
        if (decimals > 18) {
            // scale down
            return uint256(answer) / (10 ** (decimals - 18));
        } else {
            // scale up
            return uint256(answer) * (10 ** (18 - decimals));
        }
    }
}

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

// solhint-disable-next-line interface-starts-with-i
interface AggregatorV3Interface {
  function decimals() external view returns (uint8);

  function description() external view returns (string memory);

  function version() external view returns (uint256);

  function getRoundData(
    uint80 _roundId
  ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);

  function latestRoundData()
    external
    view
    returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}

File 3 of 4 : OracleFeed.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.26;

/// @title OracleFeed
/// @author luoyhang003
/// @notice Abstract contract for oracle price feeds. Provides a standard interface
///         for retrieving asset prices.
/// @dev This contract is meant to be inherited by specific oracle implementations
///      that define the logic for fetching asset prices.
abstract contract OracleFeed {
    /*//////////////////////////////////////////////////////////////////////////
                                    STATE VARIABLES
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice The token address associated with this oracle feed.
    /// @dev Immutable after deployment to ensure the oracle is tied to a specific token.
    address public immutable token;

    /// @notice The human-readable name of the oracle feed.
    /// @dev Can be used for UI or off-chain identification purposes.
    string public name;

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

    /// @notice Sets the token address and feed name during deployment.
    /// @param _token The address of the token this oracle is associated with.
    /// @param _name The descriptive name for this oracle feed.
    constructor(address _token, string memory _name) {
        token = _token;
        name = _name;
    }

    /*//////////////////////////////////////////////////////////////////////////
                                    VIEW FUNCTIONS
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Returns the current price of the specified asset.
    /// @dev Implementations must override this function to provide actual price logic.
    /// @return price_ The price of the asset with 18 decimals of precision.
    function peek() external view virtual returns (uint256 price_);
}

File 4 of 4 : Errors.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.26;

/// @title Errors Library
/// @author luoyhang003
/// @notice Centralized custom errors for all contracts in the protocol.
/// @dev Each error saves gas compared to revert strings. The @dev comment
///      also includes the corresponding 4-byte selector for debugging
///      and off-chain tooling.
library Errors {
    /*//////////////////////////////////////////////////////////////////////////
                                    GENERAL
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when array lengths do not match or are zero.
    /// @dev Selector: 0x9d89020a
    error InvalidArrayLength();

    /// @notice Thrown when a provided address is zero.
    /// @dev Selector: 0xd92e233d
    error ZeroAddress();

    /// @notice Thrown when a provided amount is zero.
    /// @dev Selector: 0x1f2a2005
    error ZeroAmount();

    /// @notice Thrown when an index is out of bounds.
    /// @dev Selector: 0x4e23d035
    error IndexOutOfBounds();

    /// @notice Thrown when a user is not whitelisted but tries to interact.
    /// @dev Selector: 0x2ba75b25
    error UserNotWhitelisted();

    /// @notice Thrown when a token has invalid decimals (e.g., >18).
    /// @dev Selector: 0xd25598a0
    error InvalidDecimals();

    /// @notice Thrown when an asset is not supported.
    /// @dev Selector: 0x24a01144
    error UnsupportedAsset();

    /// @notice Thrown when trying to add an already added asset.
    /// @dev Selector: 0x5ed26801
    error AssetAlreadyAdded();

    /// @notice Thrown when trying to remove an asset that was already removed.
    /// @dev Selector: 0x422afd8f
    error AssetAlreadyRemoved();

    /// @notice Thrown when a common token address conflict with the vault token address.
    /// @dev Selector: 0x8a7ea521
    error ConflictiveToken();

    /// @notice Thrown when an array is reach to the length limit.
    /// @dev Selector: 0x951becfa
    error ExceedArrayLengthLimit();

    /*//////////////////////////////////////////////////////////////////////////
                                    Token.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when transfer is attempted by/for a blacklisted address.
    /// @dev Selector: 0x6554e8c5
    error TransferBlacklisted();

    /*//////////////////////////////////////////////////////////////////////////
                                    DepositVault.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when deposits are paused.
    /// @dev Selector: 0x35edea30
    error DepositPaused();

    /// @notice Thrown when a deposit exceeds per-token deposit cap.
    /// @dev Selector: 0xcc60dc5b
    error ExceedTokenDepositCap();

    /// @notice Thrown when a deposit exceeds global deposit cap.
    /// @dev Selector: 0x5054f250
    error ExceedTotalDepositCap();

    /// @notice Thrown when minting results in zero shares.
    /// @dev Selector: 0x1d31001e
    error MintZeroShare();

    /// @notice Thrown when attempting to deposit zero assets.
    /// @dev Selector: 0xd69b89cc
    error DepositZeroAsset();

    /// @notice Thrown when the oracle for an asset is invalid or missing.
    /// @dev Selector: 0x9589a27d
    error InvalidOracle();

    /*//////////////////////////////////////////////////////////////////////////
                                WithdrawController.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when withdrawals are paused.
    /// @dev Selector: 0xe0a39803
    error WithdrawPaused();

    /// @notice Thrown when attempting to request withdrawal of zero shares.
    /// @dev Selector: 0xef9c351b
    error RequestZeroShare();

    /// @notice Thrown when a withdrawal receipt has invalid status for the operation.
    /// @dev Selector: 0x3bb3ba88
    error InvalidReceiptStatus();

    /// @notice Thrown when a caller is not the original withdrawal requester.
    /// @dev Selector: 0xe39da59e
    error NotRequester();

    /// @notice Thrown when a caller is blacklisted.
    /// @dev Selector: 0x473250af
    error UserBlacklisted();

    /*//////////////////////////////////////////////////////////////////////////
                                  AssetsRouter.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when a recipient is already added.
    /// @dev Selector: 0xce2c4eb3
    error RecipientAlreadyAdded();

    /// @notice Thrown when a recipient is already removed.
    /// @dev Selector: 0x1c7dcc84
    error RecipientAlreadyRemoved();

    /// @notice Thrown when attempting to set auto-route to its current state.
    /// @dev Selector: 0xdf2e473d
    error InvalidRouteEnabledStatus();

    /// @notice Thrown when a non-registered recipient is used.
    /// @dev Selector: 0xf29851db
    error NotRouterRecipient();

    /// @notice Thrown when attempting to remove the currently active recipient.
    /// @dev Selector: 0xa453bd1b
    error RemoveActiveRouter();

    /// @notice Thrown when attempting to manual route the asstes when auto route is enabled.
    /// @dev Selector: 0x92d56bf7
    error AutoRouteEnabled();

    /// @notice Thrown when setting the same router address.
    /// @dev Selector: 0x23b920b6
    error SameRouterAddress();

    /*//////////////////////////////////////////////////////////////////////////
                                  AccessRegistry.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when trying to blacklist an already blacklisted user.
    /// @dev Selector: 0xf53de75f
    error AlreadyBlacklisted();

    /// @notice Thrown when trying to whitelist an already whitelisted user.
    /// @dev Selector: 0xb73e95e1
    error AlreadyWhitelisted();

    /// @notice Reverts when the requested state matches the current state.
    /// @dev Selector: 0x3fbc93f3
    error AlreadyInSameState();

    /*//////////////////////////////////////////////////////////////////////////
                                  OracleRegister.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when an oracle is already registered for an asset.
    /// @dev Selector: 0x652a449e
    error OracleAlreadyAdded();

    /// @notice Thrown when an oracle does not exist for an asset.
    /// @dev Selector: 0x4dca4f7d
    error OracleNotExist();

    /// @notice Thrown when price deviation exceeds maximum allowed.
    /// @dev Selector: 0x8774ad87
    error ExceedMaxDeviation();

    /// @notice Thrown when price updates are attempted too frequently.
    /// @dev Selector: 0x8f46908a
    error PriceUpdateTooFrequent();

    /// @notice Thrown when a price validity period has expired.
    /// @dev Selector: 0x7c9d063a
    error PriceValidityExpired();

    /// @notice Thrown when a price is zero.
    /// @dev Selector: 0x10256287
    error InvalidZeroPrice();

    /*//////////////////////////////////////////////////////////////////////////
                                  ParamRegister.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when tolerance basis points exceed maximum deviation.
    /// @dev Selector: 0xb8d855e2
    error ExceedMaxDeviationBps();

    /// @notice Thrown when price update interval is invalid.
    /// @dev Selector: 0xfff67f52
    error InvalidPriceUpdateInterval();

    /// @notice Thrown when price validity duration exceeds allowed maximum.
    /// @dev Selector: 0x6eca7e24
    error PriceMaxValidityExceeded();

    /// @notice Thrown when mint fee rate exceeds maximum allowed.
    /// @dev Selector: 0x8f59faf8
    error ExceedMaxMintFeeRate();

    /// @notice Thrown when redeem fee rate exceeds maximum allowed.
    /// @dev Selector: 0x86871089
    error ExceedMaxRedeemFeeRate();

    /*//////////////////////////////////////////////////////////////////////////
                              ChainlinkOracleFeed.sol
    //////////////////////////////////////////////////////////////////////////*/

    /// @notice Thrown when a reported price is invalid.
    /// @dev Selector: 0x00bfc921
    error InvalidPrice();

    /// @notice Thrown when a reported price is stale.
    /// @dev Selector: 0x19abf40e
    error StalePrice();

    /// @notice Thrown when a Chainlink round is incomplete.
    /// @dev Selector: 0x8ad52bdd
    error IncompleteRound();
}

Settings
{
  "remappings": [
    "@uniswap/v3-periphery/contracts/=lib/v3-periphery/contracts/",
    "@chainlink/contracts/src/v0.8/=lib/chainlink-evm/contracts/src/v0.8/shared/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "chainlink-evm/=lib/chainlink-evm/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "v3-periphery/=lib/v3-periphery/contracts/"
  ],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_priceFeed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"IncompleteRound","type":"error"},{"inputs":[],"name":"InvalidPrice","type":"error"},{"inputs":[],"name":"StalePrice","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"peek","outputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

0x60c060405234801561000f575f80fd5b50604051611044380380611044833981810160405281019061003191906102c0565b82828173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050805f90816100759190610539565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050610608565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101538261012a565b9050919050565b61016381610149565b811461016d575f80fd5b50565b5f8151905061017e8161015a565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6101d28261018c565b810181811067ffffffffffffffff821117156101f1576101f061019c565b5b80604052505050565b5f610203610119565b905061020f82826101c9565b919050565b5f67ffffffffffffffff82111561022e5761022d61019c565b5b6102378261018c565b9050602081019050919050565b8281835e5f83830152505050565b5f61026461025f84610214565b6101fa565b9050828152602081018484840111156102805761027f610188565b5b61028b848285610244565b509392505050565b5f82601f8301126102a7576102a6610184565b5b81516102b7848260208601610252565b91505092915050565b5f805f606084860312156102d7576102d6610122565b5b5f6102e486828701610170565b935050602084015167ffffffffffffffff81111561030557610304610126565b5b61031186828701610293565b925050604061032286828701610170565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061037a57607f821691505b60208210810361038d5761038c610336565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103b4565b6103f986836103b4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043d61043861043384610411565b61041a565b610411565b9050919050565b5f819050919050565b61045683610423565b61046a61046282610444565b8484546103c0565b825550505050565b5f90565b61047e610472565b61048981848461044d565b505050565b5b818110156104ac576104a15f82610476565b60018101905061048f565b5050565b601f8211156104f1576104c281610393565b6104cb846103a5565b810160208510156104da578190505b6104ee6104e6856103a5565b83018261048e565b50505b505050565b5f82821c905092915050565b5f6105115f19846008026104f6565b1980831691505092915050565b5f6105298383610502565b9150826002028217905092915050565b6105428261032c565b67ffffffffffffffff81111561055b5761055a61019c565b5b6105658254610363565b6105708282856104b0565b5f60209050601f8311600181146105a1575f841561058f578287015190505b610599858261051e565b865550610600565b601f1984166105af86610393565b5f5b828110156105d6578489015182556001820191506020850194506020810190506105b1565b868310156105f357848901516105ef601f891682610502565b8355505b6001600288020188555050505b505050505050565b60805160a051610a0d6106375f395f8181610158015281816102bd01526103b701525f6103db0152610a0d5ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c806306fdde031461004e57806359e02dd71461006c578063741bef1a1461008a578063fc0c546a146100a8575b5f80fd5b6100566100c6565b604051610063919061046d565b60405180910390f35b610074610151565b60405161008191906104a5565b60405180910390f35b6100926103b5565b60405161009f9190610538565b60405180910390f35b6100b06103d9565b6040516100bd9190610571565b60405180910390f35b5f80546100d2906105b7565b80601f01602080910402602001604051908101604052809291908181526020018280546100fe906105b7565b80156101495780601f1061012057610100808354040283529160200191610149565b820191905f5260205f20905b81548152906001019060200180831161012c57829003601f168201915b505050505081565b5f805f805f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156101bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e39190610687565b9450945050935093505f8313610224576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161015610276576040517f19abf40e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82148061028357504282115b156102ba576040517f8ad52bdd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610324573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103489190610734565b905060128160ff16111561038657601281610363919061078c565b600a61036f91906108ef565b8461037a9190610966565b955050505050506103b2565b806012610393919061078c565b600a61039f91906108ef565b846103aa9190610996565b955050505050505b90565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61043f826103fd565b6104498185610407565b9350610459818560208601610417565b61046281610425565b840191505092915050565b5f6020820190508181035f8301526104858184610435565b905092915050565b5f819050919050565b61049f8161048d565b82525050565b5f6020820190506104b85f830184610496565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6105006104fb6104f6846104be565b6104dd565b6104be565b9050919050565b5f610511826104e6565b9050919050565b5f61052282610507565b9050919050565b61053281610518565b82525050565b5f60208201905061054b5f830184610529565b92915050565b5f61055b826104be565b9050919050565b61056b81610551565b82525050565b5f6020820190506105845f830184610562565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806105ce57607f821691505b6020821081036105e1576105e061058a565b5b50919050565b5f80fd5b5f69ffffffffffffffffffff82169050919050565b610609816105eb565b8114610613575f80fd5b50565b5f8151905061062481610600565b92915050565b5f819050919050565b61063c8161062a565b8114610646575f80fd5b50565b5f8151905061065781610633565b92915050565b6106668161048d565b8114610670575f80fd5b50565b5f815190506106818161065d565b92915050565b5f805f805f60a086880312156106a05761069f6105e7565b5b5f6106ad88828901610616565b95505060206106be88828901610649565b94505060406106cf88828901610673565b93505060606106e088828901610673565b92505060806106f188828901610616565b9150509295509295909350565b5f60ff82169050919050565b610713816106fe565b811461071d575f80fd5b50565b5f8151905061072e8161070a565b92915050565b5f60208284031215610749576107486105e7565b5b5f61075684828501610720565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610796826106fe565b91506107a1836106fe565b9250828203905060ff8111156107ba576107b961075f565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115610815578086048111156107f1576107f061075f565b5b60018516156108005780820291505b808102905061080e856107c0565b94506107d5565b94509492505050565b5f8261082d57600190506108e8565b8161083a575f90506108e8565b8160018114610850576002811461085a57610889565b60019150506108e8565b60ff84111561086c5761086b61075f565b5b8360020a9150848211156108835761088261075f565b5b506108e8565b5060208310610133831016604e8410600b84101617156108be5782820a9050838111156108b9576108b861075f565b5b6108e8565b6108cb84848460016107cc565b925090508184048111156108e2576108e161075f565b5b81810290505b9392505050565b5f6108f98261048d565b9150610904836106fe565b92506109317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461081e565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6109708261048d565b915061097b8361048d565b92508261098b5761098a610939565b5b828204905092915050565b5f6109a08261048d565b91506109ab8361048d565b92508282026109b98161048d565b915082820484148315176109d0576109cf61075f565b5b509291505056fea2646970667358221220c054752d87359e5a84a4905ddf85350e4d73bfb142e2f7aa898800fc57a056b664736f6c634300081a0033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000600000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f60000000000000000000000000000000000000000000000000000000000000017436861696e6c696e6b20555344432f5553442046656564000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061004a575f3560e01c806306fdde031461004e57806359e02dd71461006c578063741bef1a1461008a578063fc0c546a146100a8575b5f80fd5b6100566100c6565b604051610063919061046d565b60405180910390f35b610074610151565b60405161008191906104a5565b60405180910390f35b6100926103b5565b60405161009f9190610538565b60405180910390f35b6100b06103d9565b6040516100bd9190610571565b60405180910390f35b5f80546100d2906105b7565b80601f01602080910402602001604051908101604052809291908181526020018280546100fe906105b7565b80156101495780601f1061012057610100808354040283529160200191610149565b820191905f5260205f20905b81548152906001019060200180831161012c57829003601f168201915b505050505081565b5f805f805f7f0000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156101bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e39190610687565b9450945050935093505f8313610224576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161015610276576040517f19abf40e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82148061028357504282115b156102ba576040517f8ad52bdd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f0000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610324573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103489190610734565b905060128160ff16111561038657601281610363919061078c565b600a61036f91906108ef565b8461037a9190610966565b955050505050506103b2565b806012610393919061078c565b600a61039f91906108ef565b846103aa9190610996565b955050505050505b90565b7f0000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f681565b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61043f826103fd565b6104498185610407565b9350610459818560208601610417565b61046281610425565b840191505092915050565b5f6020820190508181035f8301526104858184610435565b905092915050565b5f819050919050565b61049f8161048d565b82525050565b5f6020820190506104b85f830184610496565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6105006104fb6104f6846104be565b6104dd565b6104be565b9050919050565b5f610511826104e6565b9050919050565b5f61052282610507565b9050919050565b61053281610518565b82525050565b5f60208201905061054b5f830184610529565b92915050565b5f61055b826104be565b9050919050565b61056b81610551565b82525050565b5f6020820190506105845f830184610562565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806105ce57607f821691505b6020821081036105e1576105e061058a565b5b50919050565b5f80fd5b5f69ffffffffffffffffffff82169050919050565b610609816105eb565b8114610613575f80fd5b50565b5f8151905061062481610600565b92915050565b5f819050919050565b61063c8161062a565b8114610646575f80fd5b50565b5f8151905061065781610633565b92915050565b6106668161048d565b8114610670575f80fd5b50565b5f815190506106818161065d565b92915050565b5f805f805f60a086880312156106a05761069f6105e7565b5b5f6106ad88828901610616565b95505060206106be88828901610649565b94505060406106cf88828901610673565b93505060606106e088828901610673565b92505060806106f188828901610616565b9150509295509295909350565b5f60ff82169050919050565b610713816106fe565b811461071d575f80fd5b50565b5f8151905061072e8161070a565b92915050565b5f60208284031215610749576107486105e7565b5b5f61075684828501610720565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610796826106fe565b91506107a1836106fe565b9250828203905060ff8111156107ba576107b961075f565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115610815578086048111156107f1576107f061075f565b5b60018516156108005780820291505b808102905061080e856107c0565b94506107d5565b94509492505050565b5f8261082d57600190506108e8565b8161083a575f90506108e8565b8160018114610850576002811461085a57610889565b60019150506108e8565b60ff84111561086c5761086b61075f565b5b8360020a9150848211156108835761088261075f565b5b506108e8565b5060208310610133831016604e8410600b84101617156108be5782820a9050838111156108b9576108b861075f565b5b6108e8565b6108cb84848460016107cc565b925090508184048111156108e2576108e161075f565b5b81810290505b9392505050565b5f6108f98261048d565b9150610904836106fe565b92506109317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461081e565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6109708261048d565b915061097b8361048d565b92508261098b5761098a610939565b5b828204905092915050565b5f6109a08261048d565b91506109ab8361048d565b92508282026109b98161048d565b915082820484148315176109d0576109cf61075f565b5b509291505056fea2646970667358221220c054752d87359e5a84a4905ddf85350e4d73bfb142e2f7aa898800fc57a056b664736f6c634300081a0033

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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.