ETH Price: $2,707.72 (-1.31%)

Contract

0x750c1b699552cAf908D67F5cCFd20A261305328c

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

Please try again later

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EvmHelpers

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
shanghai EvmVersion
File 1 of 6 : EvmHelpers.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

import "./Ether.sol";
import "./MultiCall.sol";
import "./UniV3Helper.sol";

//solhint-disable-next-line no-empty-blocks
contract EvmHelpers is Ether, MultiCall, UniV3Helper {}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

/// @title BitMath
/// @dev This library provides functionality for computing bit properties of an unsigned integer
library BitMath {
    /// @notice Returns the index of the most significant bit of the number,
    ///     where the least significant bit is at index 0 and the most significant bit is at index 255
    /// @dev The function satisfies the property:
    ///     x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)
    /// @param x the value for which to compute the most significant bit, must be greater than 0
    /// @return r the index of the most significant bit
    function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {
        require(x > 0);

        if (x >= 0x100000000000000000000000000000000) {
            x >>= 128;
            r += 128;
        }
        if (x >= 0x10000000000000000) {
            x >>= 64;
            r += 64;
        }
        if (x >= 0x100000000) {
            x >>= 32;
            r += 32;
        }
        if (x >= 0x10000) {
            x >>= 16;
            r += 16;
        }
        if (x >= 0x100) {
            x >>= 8;
            r += 8;
        }
        if (x >= 0x10) {
            x >>= 4;
            r += 4;
        }
        if (x >= 0x4) {
            x >>= 2;
            r += 2;
        }
        if (x >= 0x2) r += 1;
    }

    /// @notice Returns the index of the least significant bit of the number,
    ///     where the least significant bit is at index 0 and the most significant bit is at index 255
    /// @dev The function satisfies the property:
    ///     (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)
    /// @param x the value for which to compute the least significant bit, must be greater than 0
    /// @return r the index of the least significant bit
    function leastSignificantBit(uint256 x) internal pure returns (uint8 r) {
        require(x > 0);

        r = 255;
        if (x & type(uint128).max > 0) {
            r -= 128;
        } else {
            x >>= 128;
        }
        if (x & type(uint64).max > 0) {
            r -= 64;
        } else {
            x >>= 64;
        }
        if (x & type(uint32).max > 0) {
            r -= 32;
        } else {
            x >>= 32;
        }
        if (x & type(uint16).max > 0) {
            r -= 16;
        } else {
            x >>= 16;
        }
        if (x & type(uint8).max > 0) {
            r -= 8;
        } else {
            x >>= 8;
        }
        if (x & 0xf > 0) {
            r -= 4;
        } else {
            x >>= 4;
        }
        if (x & 0x3 > 0) {
            r -= 2;
        } else {
            x >>= 2;
        }
        if (x & 0x1 > 0) r -= 1;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;


contract Ether {
    function balanceOf(address wallet) external view returns (uint256) {
        return wallet.balance;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;


interface IUniswapV3 {
    function tickSpacing() external view returns (int24);

    function slot0()
        external
        view
        returns (
            uint160 sqrtPriceX96,
            int24 tick
            // the rest is ignored
        );

    function feeGrowthGlobal0X128() external view returns (uint256);

    function feeGrowthGlobal1X128() external view returns (uint256);

    function protocolFees() external view returns (uint128 token0, uint128 token1);

    function liquidity() external view returns (uint128);

    function ticks(int24 tick)
        external
        view
        returns (
            uint128 liquidityGross,
            int128 liquidityNet,
            uint256 feeGrowthOutside0X128,
            uint256 feeGrowthOutside1X128,
            int56 tickCumulativeOutside,
            uint160 secondsPerLiquidityOutsideX128,
            uint32 secondsOutside,
            bool initialized
        );

    function tickBitmap(int16 wordPosition) external view returns (uint256);

    function positions(bytes32 key)
        external
        view
        returns (
            uint128 _liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function observations(uint256 index)
        external
        view
        returns (
            uint32 blockTimestamp,
            int56 tickCumulative,
            uint160 secondsPerLiquidityCumulativeX128,
            bool initialized
        );
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

/// @title MultiCall
/// @dev A contract for batching multiple contract function calls into a single transaction.
contract MultiCall {

    /// @dev A struct representing a single call to a contract function.
    struct Call {
        address to; // The address of the contract to call.
        bytes data; // The calldata to send with the call.
    }

    /**
     * @notice Executes multiple calls in a single transaction.
     * @dev The function is not gas-limited and may revert due to out of gas errors.
     * @param calls An array of Call structs, each representing a function call.
     * @return results An array of bytes, each entry being the result of the respective function call.
     */
   function multicall(Call[] memory calls) public returns (bytes[] memory results) {
        results = new bytes[](calls.length);
        for (uint256 i = 0; i < calls.length; i++) {
            (, results[i]) = calls[i].to.call(calls[i].data);  // solhint-disable-line avoid-low-level-calls
        }
    }

    /**
     * @notice Executes multiple calls in a single transaction with gas limitations.
     * @dev The function will stop making calls when the remaining gas is less than `gasBuffer`.
     * Passing emtpy calls array (calls.length == 0) will result in having lastSuccessIndex = uint256.max.
     * @param calls An array of Call struct instances representing each call.
     * @param gasBuffer The amount of gas that should remain after the last function call.
     * @return results An array of bytes. Each entry represents the return data of each call.
     * @return lastSuccessIndex The index of the last successful call in the `calls` array.
     */
    function multicallWithGasLimitation(Call[] memory calls, uint256 gasBuffer) public returns (bytes[] memory results, uint256 lastSuccessIndex) {
        results = new bytes[](calls.length);
        for (uint256 i = 0; i < calls.length; i++) {
            (, results[i]) = calls[i].to.call(calls[i].data);  // solhint-disable-line avoid-low-level-calls
            if (gasleft() < gasBuffer) {
                return (results, i);
            }
        }
        return (results, calls.length - 1);
    }

    /**
     * @notice Executes multiple calls in a single transaction and measures the gas used by each call.
     * @dev This function is not gas-limited and may revert due to out of gas errors.
     * @param calls An array of Call struct instances representing each call.
     * @return results An array of bytes. Each entry represents the return data of each call.
     * @return gasUsed An array of uint256. Each entry represents the amount of gas used by the corresponding call.
     */
   function multicallWithGas(Call[] memory calls) public returns (bytes[] memory results, uint256[] memory gasUsed) {
        results = new bytes[](calls.length);
        gasUsed = new uint256[](calls.length);
        for (uint256 i = 0; i < calls.length; i++) {
            uint256 initialGas = gasleft();
            (, results[i]) = calls[i].to.call(calls[i].data);  // solhint-disable-line avoid-low-level-calls
            gasUsed[i] = initialGas - gasleft();
        }
    }

    /// @notice Fetches the block gas limit.
    /// @return result The block gas limit.
    function gaslimit() external view returns (uint256) {
        return block.gaslimit;
    }

    /// @notice Fetches the remaining gas available for the current transaction.
    /// @return result The remaining gas.
    function gasLeft() external view returns (uint256) {
        return gasleft();
    }

    /// @notice Fetches the block timestamp.
    /// @return result timestamp of the block.
    function getCurrentBlockTimestamp() external view returns (uint256) {
        // solhint-disable-next-line not-rely-on-time
        return block.timestamp;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

import "@uniswap/v3-core/contracts/libraries/BitMath.sol";
import "./interfaces/IUniswapV3.sol";

/// @title UniV3Helper
/// @dev Helper contract to interact with Uniswap V3 pool contracts.
contract UniV3Helper {
    int24 private constant _MIN_TICK = -887272;
    int24 private constant _MAX_TICK = -_MIN_TICK;

    /**
     * @notice Fetches tick data for a specified range from a Uniswap V3 pool.
     * @dev The function returns an array of bytes each containing packed data about each tick in the specified range.
     * The returned tick data includes the total liquidity, liquidity delta, outer fee growth for the two tokens, and
     * the tick value itself. The tick range is centered around the current tick of the pool and spans tickRange*2.
     * The tick range is constrained by the global min and max tick values.
     * If there are no initialized ticks in the range, the function returns an empty array.
     * @param pool The Uniswap V3 pool from which to fetch tick data.
     * @param tickRange The range (either side of the current tick) within which to fetch tick data.
     * @return ticks An array of bytes each containing packed data about each tick in the specified range.
     */
    function getTicks(IUniswapV3 pool, int24 tickRange) external view returns (bytes[] memory ticks) {
        int24 tickSpacing = pool.tickSpacing();
        (,int24 tick) = pool.slot0();

        tickRange *= tickSpacing;
        int24 fromTick = tick - tickRange;
        int24 toTick = tick + tickRange;
        if (fromTick < _MIN_TICK) {
            fromTick = _MIN_TICK;
        }
        if (toTick > _MAX_TICK) {
            toTick = _MAX_TICK;
        }

        int24[] memory initTicks = new int24[](uint256(int256((toTick - fromTick + 1) / tickSpacing)));

        uint256 counter = 0;
        int16 pos = int16((fromTick / tickSpacing) >> 8);
        int16 endPos = int16((toTick / tickSpacing) >> 8);
        for (; pos <= endPos; pos++) {
            uint256 bm = pool.tickBitmap(pos);

            while (bm != 0) {
                uint8 bit = BitMath.leastSignificantBit(bm);
                bm ^= 1 << bit;
                int24 extractedTick = ((int24(pos) << 8) | int24(uint24(bit))) * tickSpacing;
                if (extractedTick >= fromTick && extractedTick <= toTick) {
                    initTicks[counter++] = extractedTick;
                }
            }
        }

        ticks = new bytes[](counter);
        for (uint256 i = 0; i < counter; i++) {
            (
                uint128 liquidityGross,
                int128 liquidityNet,
                uint256 feeGrowthOutside0X128,
                uint256 feeGrowthOutside1X128
                , // int56 tickCumulativeOutside,
                , // secondsPerLiquidityOutsideX128
                , // uint32 secondsOutside
                , // init
            ) = pool.ticks(initTicks[i]);

            ticks[i] = abi.encodePacked(
                liquidityGross,
                liquidityNet,
                feeGrowthOutside0X128,
                feeGrowthOutside1X128,
                // tickCumulativeOutside,
                // secondsPerLiquidityOutsideX128,
                // secondsOutside,
                initTicks[i]
            );
        }
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasLeft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gaslimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUniswapV3","name":"pool","type":"address"},{"internalType":"int24","name":"tickRange","type":"int24"}],"name":"getTicks","outputs":[{"internalType":"bytes[]","name":"ticks","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MultiCall.Call[]","name":"calls","type":"tuple[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MultiCall.Call[]","name":"calls","type":"tuple[]"}],"name":"multicallWithGas","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"},{"internalType":"uint256[]","name":"gasUsed","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MultiCall.Call[]","name":"calls","type":"tuple[]"},{"internalType":"uint256","name":"gasBuffer","type":"uint256"}],"name":"multicallWithGasLimitation","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"},{"internalType":"uint256","name":"lastSuccessIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60808060405234610016576112a7908161001b8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630f28c97d14610d46575080632a72283914610d0e5780632ddb301b14610cd5578063489dba1614610b5a57806370a0823114610aff578063c078e90c146101cd578063caa5c23f146100f45763d699fe1514610074575f80fd5b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f0576100d26100c96100e6923690600401610e0f565b602435906111bf565b604051928392604084526040840190610f3c565b9060208301520390f35b5f80fd5b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610144903690600401610e0f565b61014e8151610fdf565b915f5b82518110156101b357805f8073ffffffffffffffffffffffffffffffffffffffff61017e60019588611045565b5151168561018c8589611045565b51015190828783519301915af1506101a2611086565b6101ac8287611045565b5201610151565b604051602080825281906101c990820187610f3c565b0390f35b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f0576024358060020b81036100f0576040517fd0c93a7c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f91610ac5575b50604051917f3850c7bd00000000000000000000000000000000000000000000000000000000835260408360048173ffffffffffffffffffffffffffffffffffffffff88165afa92831561085c575f93610a77575b50816102dc916110e4565b916102e783826110fb565b9260020b9060020b017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000627fffff8183128184131761047c57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618808760020b12610a6f575b50620d89e8809160020b13610a67575b50600161036a86856110fb565b60020b019182129082131761047c578261038391611135565b60020b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103ca6103b484610dbd565b936103c26040519586610d7c565b808552610dbd565b013660208401375f926103dd8186611135565b60020b60081d60010b956103f18284611135565b60020b60081d60010b965b8060010b88811361086757604051907f5339c296000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f9161082a575b50805b6104a9575060010b617fff811461047c576001016103fc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8060ff6fffffffffffffffffffffffffffffffff82161561081e5750607f5b67ffffffffffffffff8216156108145760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0015b63ffffffff82161561080a5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b61ffff8216156108005760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b60ff8216156107f65760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b600f8216156107ec5760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b8560038316156107df575060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818316011161047c5760017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff88931601925b16610787575b60ff6107209216926001841b189260020b8460081b60020b176110e4565b60020b8860020b8112158061077a575b61073c575b5080610463565b87907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461047c5761077460018493019989611045565b52610735565b508560020b811315610730565b5060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0184610702565b909160019060021c6106fc565b9060041c9061069a565b9060081c9061063f565b9060101c906105e4565b9060201c90610588565b9060401c9061052a565b90508160801c906104c8565b90506020813d602011610854575b8161084560209383610d7c565b810103126100f0575189610460565b3d9150610838565b6040513d5f823e3d90fd5b85878461087382610fdf565b925f5b83811061089357604051602080825281906101c990820188610f3c565b61089d8183611045565b5160020b90604051917ff30dba930000000000000000000000000000000000000000000000000000000083526004830152610100808360248173ffffffffffffffffffffffffffffffffffffffff89165afa90811561085c575f915f945f925f926109c4575b505061090f8487611045565b5191604051957fffffffffffffffffffffffffffffffff00000000000000000000000000000000608095861b166020880152841b60308701526040860152606085015260e81b908301526063825260a082019180831067ffffffffffffffff841117610997576001926040526109858288611045565b526109908187611045565b5001610876565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b93509450505082813d8311610a60575b6109de8183610d7c565b810103126100f0578151916fffffffffffffffffffffffffffffffff831683036100f05760208101519081600f0b82036100f05760408101519360608201519160808101518060060b036100f057610a3860a082016110c3565b5060c081015163ffffffff8116036100f05760e00151801515036100f0579193908980610903565b503d6109d4565b92508661035d565b95508761034d565b9092506040813d604011610abd575b81610a9360409383610d7c565b810103126100f05781610ab5602083610aae6102dc956110c3565b50016110b5565b9391506102d1565b3d9150610a86565b90506020813d602011610af7575b81610ae060209383610d7c565b810103126100f057610af1906110b5565b8361027c565b3d9150610ad3565b346100f05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f05760209031604051908152f35b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610baa903690600401610e0f565b90610bb58251610fdf565b91805192610bdb610bc585610dbd565b94610bd36040519687610d7c565b808652610dbd565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081860194013685375f5b8351811015610c80575a905f8073ffffffffffffffffffffffffffffffffffffffff610c338489611045565b51511685610c41858a611045565b51015190828783519301915af150610c57611086565b610c618286611045565b525a820391821161047c57600191610c798289611045565b5201610c07565b509083610c9d928681604051958695604087526040870190610f3c565b918583038287015251918281520192915f5b828110610cbe57505050500390f35b835185528695509381019392810192600101610caf565b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760205a604051908152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f0576020604051458152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f057602090428152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761099757604052565b67ffffffffffffffff81116109975760051b60200190565b67ffffffffffffffff811161099757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100f057803591602091610e2984610dbd565b93604091610e3983519687610d7c565b818652848087019260051b820101938085116100f057858201925b858410610e65575050505050505090565b67ffffffffffffffff9084358281116100f057840191867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084860301126100f057865192878401848110838211176109975788528981013573ffffffffffffffffffffffffffffffffffffffff811681036100f0578452878101359182116100f057019083603f830112156100f0578882013592610f0284610dd5565b610f0e89519182610d7c565b848152858986860101116100f0575f8b8681978c839801838601378301015283820152815201930192610e54565b9080825180825260208092019180808360051b8601019501935f905b838210610f685750505050505090565b909192939495837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08084840301885288518051908185525f5b828110610fcb5750505f818501840152601f01169091018101968101950193929160010190610f58565b818101850151868201860152889401610fa1565b90610fe982610dbd565b610ff66040519182610d7c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110248294610dbd565b01905f5b82811061103457505050565b806060602080938501015201611028565b80518210156110595760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3d156110b0573d9061109782610dd5565b916110a56040519384610d7c565b82523d5f602084013e565b606090565b51908160020b82036100f057565b519073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b9060020b9060020b02908160020b91820361047c57565b9060020b9060020b0390627fffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083121761047c57565b60020b9060020b908115611192577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082141661047c570590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b91906111cb8351610fdf565b905f5b845181101561123e575f8073ffffffffffffffffffffffffffffffffffffffff6111f88489611045565b515116602090828261120a878c611045565b51015180519301915af15061121d611086565b6112278285611045565b52815a10611237576001016111ce565b9350509190565b50509151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192831161047c57919056fea2646970667358221220832431e12bfb8e276404d7b4bb44486f21c3216fd481772d0d64725aabd9bf3f64736f6c63430008170033

Deployed Bytecode

0x6080806040526004361015610012575f80fd5b5f3560e01c9081630f28c97d14610d46575080632a72283914610d0e5780632ddb301b14610cd5578063489dba1614610b5a57806370a0823114610aff578063c078e90c146101cd578063caa5c23f146100f45763d699fe1514610074575f80fd5b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f0576100d26100c96100e6923690600401610e0f565b602435906111bf565b604051928392604084526040840190610f3c565b9060208301520390f35b5f80fd5b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610144903690600401610e0f565b61014e8151610fdf565b915f5b82518110156101b357805f8073ffffffffffffffffffffffffffffffffffffffff61017e60019588611045565b5151168561018c8589611045565b51015190828783519301915af1506101a2611086565b6101ac8287611045565b5201610151565b604051602080825281906101c990820187610f3c565b0390f35b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f0576024358060020b81036100f0576040517fd0c93a7c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f91610ac5575b50604051917f3850c7bd00000000000000000000000000000000000000000000000000000000835260408360048173ffffffffffffffffffffffffffffffffffffffff88165afa92831561085c575f93610a77575b50816102dc916110e4565b916102e783826110fb565b9260020b9060020b017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000627fffff8183128184131761047c57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618808760020b12610a6f575b50620d89e8809160020b13610a67575b50600161036a86856110fb565b60020b019182129082131761047c578261038391611135565b60020b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103ca6103b484610dbd565b936103c26040519586610d7c565b808552610dbd565b013660208401375f926103dd8186611135565b60020b60081d60010b956103f18284611135565b60020b60081d60010b965b8060010b88811361086757604051907f5339c296000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f9161082a575b50805b6104a9575060010b617fff811461047c576001016103fc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8060ff6fffffffffffffffffffffffffffffffff82161561081e5750607f5b67ffffffffffffffff8216156108145760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0015b63ffffffff82161561080a5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b61ffff8216156108005760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b60ff8216156107f65760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b600f8216156107ec5760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b8560038316156107df575060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818316011161047c5760017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff88931601925b16610787575b60ff6107209216926001841b189260020b8460081b60020b176110e4565b60020b8860020b8112158061077a575b61073c575b5080610463565b87907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461047c5761077460018493019989611045565b52610735565b508560020b811315610730565b5060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0184610702565b909160019060021c6106fc565b9060041c9061069a565b9060081c9061063f565b9060101c906105e4565b9060201c90610588565b9060401c9061052a565b90508160801c906104c8565b90506020813d602011610854575b8161084560209383610d7c565b810103126100f0575189610460565b3d9150610838565b6040513d5f823e3d90fd5b85878461087382610fdf565b925f5b83811061089357604051602080825281906101c990820188610f3c565b61089d8183611045565b5160020b90604051917ff30dba930000000000000000000000000000000000000000000000000000000083526004830152610100808360248173ffffffffffffffffffffffffffffffffffffffff89165afa90811561085c575f915f945f925f926109c4575b505061090f8487611045565b5191604051957fffffffffffffffffffffffffffffffff00000000000000000000000000000000608095861b166020880152841b60308701526040860152606085015260e81b908301526063825260a082019180831067ffffffffffffffff841117610997576001926040526109858288611045565b526109908187611045565b5001610876565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b93509450505082813d8311610a60575b6109de8183610d7c565b810103126100f0578151916fffffffffffffffffffffffffffffffff831683036100f05760208101519081600f0b82036100f05760408101519360608201519160808101518060060b036100f057610a3860a082016110c3565b5060c081015163ffffffff8116036100f05760e00151801515036100f0579193908980610903565b503d6109d4565b92508661035d565b95508761034d565b9092506040813d604011610abd575b81610a9360409383610d7c565b810103126100f05781610ab5602083610aae6102dc956110c3565b50016110b5565b9391506102d1565b3d9150610a86565b90506020813d602011610af7575b81610ae060209383610d7c565b810103126100f057610af1906110b5565b8361027c565b3d9150610ad3565b346100f05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f05760209031604051908152f35b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610baa903690600401610e0f565b90610bb58251610fdf565b91805192610bdb610bc585610dbd565b94610bd36040519687610d7c565b808652610dbd565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081860194013685375f5b8351811015610c80575a905f8073ffffffffffffffffffffffffffffffffffffffff610c338489611045565b51511685610c41858a611045565b51015190828783519301915af150610c57611086565b610c618286611045565b525a820391821161047c57600191610c798289611045565b5201610c07565b509083610c9d928681604051958695604087526040870190610f3c565b918583038287015251918281520192915f5b828110610cbe57505050500390f35b835185528695509381019392810192600101610caf565b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760205a604051908152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f0576020604051458152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f057602090428152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761099757604052565b67ffffffffffffffff81116109975760051b60200190565b67ffffffffffffffff811161099757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100f057803591602091610e2984610dbd565b93604091610e3983519687610d7c565b818652848087019260051b820101938085116100f057858201925b858410610e65575050505050505090565b67ffffffffffffffff9084358281116100f057840191867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084860301126100f057865192878401848110838211176109975788528981013573ffffffffffffffffffffffffffffffffffffffff811681036100f0578452878101359182116100f057019083603f830112156100f0578882013592610f0284610dd5565b610f0e89519182610d7c565b848152858986860101116100f0575f8b8681978c839801838601378301015283820152815201930192610e54565b9080825180825260208092019180808360051b8601019501935f905b838210610f685750505050505090565b909192939495837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08084840301885288518051908185525f5b828110610fcb5750505f818501840152601f01169091018101968101950193929160010190610f58565b818101850151868201860152889401610fa1565b90610fe982610dbd565b610ff66040519182610d7c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110248294610dbd565b01905f5b82811061103457505050565b806060602080938501015201611028565b80518210156110595760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3d156110b0573d9061109782610dd5565b916110a56040519384610d7c565b82523d5f602084013e565b606090565b51908160020b82036100f057565b519073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b9060020b9060020b02908160020b91820361047c57565b9060020b9060020b0390627fffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083121761047c57565b60020b9060020b908115611192577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082141661047c570590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b91906111cb8351610fdf565b905f5b845181101561123e575f8073ffffffffffffffffffffffffffffffffffffffff6111f88489611045565b515116602090828261120a878c611045565b51015180519301915af15061121d611086565b6112278285611045565b52815a10611237576001016111ce565b9350509190565b50509151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192831161047c57919056fea2646970667358221220832431e12bfb8e276404d7b4bb44486f21c3216fd481772d0d64725aabd9bf3f64736f6c63430008170033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.