Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EvmHelpers
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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]
);
}
}
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
60808060405234610016576112a7908161001b8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630f28c97d14610d46575080632a72283914610d0e5780632ddb301b14610cd5578063489dba1614610b5a57806370a0823114610aff578063c078e90c146101cd578063caa5c23f146100f45763d699fe1514610074575f80fd5b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f0576100d26100c96100e6923690600401610e0f565b602435906111bf565b604051928392604084526040840190610f3c565b9060208301520390f35b5f80fd5b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610144903690600401610e0f565b61014e8151610fdf565b915f5b82518110156101b357805f8073ffffffffffffffffffffffffffffffffffffffff61017e60019588611045565b5151168561018c8589611045565b51015190828783519301915af1506101a2611086565b6101ac8287611045565b5201610151565b604051602080825281906101c990820187610f3c565b0390f35b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f0576024358060020b81036100f0576040517fd0c93a7c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f91610ac5575b50604051917f3850c7bd00000000000000000000000000000000000000000000000000000000835260408360048173ffffffffffffffffffffffffffffffffffffffff88165afa92831561085c575f93610a77575b50816102dc916110e4565b916102e783826110fb565b9260020b9060020b017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000627fffff8183128184131761047c57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618808760020b12610a6f575b50620d89e8809160020b13610a67575b50600161036a86856110fb565b60020b019182129082131761047c578261038391611135565b60020b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103ca6103b484610dbd565b936103c26040519586610d7c565b808552610dbd565b013660208401375f926103dd8186611135565b60020b60081d60010b956103f18284611135565b60020b60081d60010b965b8060010b88811361086757604051907f5339c296000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f9161082a575b50805b6104a9575060010b617fff811461047c576001016103fc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8060ff6fffffffffffffffffffffffffffffffff82161561081e5750607f5b67ffffffffffffffff8216156108145760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0015b63ffffffff82161561080a5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b61ffff8216156108005760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b60ff8216156107f65760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b600f8216156107ec5760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b8560038316156107df575060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818316011161047c5760017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff88931601925b16610787575b60ff6107209216926001841b189260020b8460081b60020b176110e4565b60020b8860020b8112158061077a575b61073c575b5080610463565b87907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461047c5761077460018493019989611045565b52610735565b508560020b811315610730565b5060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0184610702565b909160019060021c6106fc565b9060041c9061069a565b9060081c9061063f565b9060101c906105e4565b9060201c90610588565b9060401c9061052a565b90508160801c906104c8565b90506020813d602011610854575b8161084560209383610d7c565b810103126100f0575189610460565b3d9150610838565b6040513d5f823e3d90fd5b85878461087382610fdf565b925f5b83811061089357604051602080825281906101c990820188610f3c565b61089d8183611045565b5160020b90604051917ff30dba930000000000000000000000000000000000000000000000000000000083526004830152610100808360248173ffffffffffffffffffffffffffffffffffffffff89165afa90811561085c575f915f945f925f926109c4575b505061090f8487611045565b5191604051957fffffffffffffffffffffffffffffffff00000000000000000000000000000000608095861b166020880152841b60308701526040860152606085015260e81b908301526063825260a082019180831067ffffffffffffffff841117610997576001926040526109858288611045565b526109908187611045565b5001610876565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b93509450505082813d8311610a60575b6109de8183610d7c565b810103126100f0578151916fffffffffffffffffffffffffffffffff831683036100f05760208101519081600f0b82036100f05760408101519360608201519160808101518060060b036100f057610a3860a082016110c3565b5060c081015163ffffffff8116036100f05760e00151801515036100f0579193908980610903565b503d6109d4565b92508661035d565b95508761034d565b9092506040813d604011610abd575b81610a9360409383610d7c565b810103126100f05781610ab5602083610aae6102dc956110c3565b50016110b5565b9391506102d1565b3d9150610a86565b90506020813d602011610af7575b81610ae060209383610d7c565b810103126100f057610af1906110b5565b8361027c565b3d9150610ad3565b346100f05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f05760209031604051908152f35b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610baa903690600401610e0f565b90610bb58251610fdf565b91805192610bdb610bc585610dbd565b94610bd36040519687610d7c565b808652610dbd565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081860194013685375f5b8351811015610c80575a905f8073ffffffffffffffffffffffffffffffffffffffff610c338489611045565b51511685610c41858a611045565b51015190828783519301915af150610c57611086565b610c618286611045565b525a820391821161047c57600191610c798289611045565b5201610c07565b509083610c9d928681604051958695604087526040870190610f3c565b918583038287015251918281520192915f5b828110610cbe57505050500390f35b835185528695509381019392810192600101610caf565b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760205a604051908152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f0576020604051458152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f057602090428152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761099757604052565b67ffffffffffffffff81116109975760051b60200190565b67ffffffffffffffff811161099757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100f057803591602091610e2984610dbd565b93604091610e3983519687610d7c565b818652848087019260051b820101938085116100f057858201925b858410610e65575050505050505090565b67ffffffffffffffff9084358281116100f057840191867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084860301126100f057865192878401848110838211176109975788528981013573ffffffffffffffffffffffffffffffffffffffff811681036100f0578452878101359182116100f057019083603f830112156100f0578882013592610f0284610dd5565b610f0e89519182610d7c565b848152858986860101116100f0575f8b8681978c839801838601378301015283820152815201930192610e54565b9080825180825260208092019180808360051b8601019501935f905b838210610f685750505050505090565b909192939495837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08084840301885288518051908185525f5b828110610fcb5750505f818501840152601f01169091018101968101950193929160010190610f58565b818101850151868201860152889401610fa1565b90610fe982610dbd565b610ff66040519182610d7c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110248294610dbd565b01905f5b82811061103457505050565b806060602080938501015201611028565b80518210156110595760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3d156110b0573d9061109782610dd5565b916110a56040519384610d7c565b82523d5f602084013e565b606090565b51908160020b82036100f057565b519073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b9060020b9060020b02908160020b91820361047c57565b9060020b9060020b0390627fffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083121761047c57565b60020b9060020b908115611192577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082141661047c570590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b91906111cb8351610fdf565b905f5b845181101561123e575f8073ffffffffffffffffffffffffffffffffffffffff6111f88489611045565b515116602090828261120a878c611045565b51015180519301915af15061121d611086565b6112278285611045565b52815a10611237576001016111ce565b9350509190565b50509151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192831161047c57919056fea2646970667358221220832431e12bfb8e276404d7b4bb44486f21c3216fd481772d0d64725aabd9bf3f64736f6c63430008170033
Deployed Bytecode
0x6080806040526004361015610012575f80fd5b5f3560e01c9081630f28c97d14610d46575080632a72283914610d0e5780632ddb301b14610cd5578063489dba1614610b5a57806370a0823114610aff578063c078e90c146101cd578063caa5c23f146100f45763d699fe1514610074575f80fd5b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f0576100d26100c96100e6923690600401610e0f565b602435906111bf565b604051928392604084526040840190610f3c565b9060208301520390f35b5f80fd5b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610144903690600401610e0f565b61014e8151610fdf565b915f5b82518110156101b357805f8073ffffffffffffffffffffffffffffffffffffffff61017e60019588611045565b5151168561018c8589611045565b51015190828783519301915af1506101a2611086565b6101ac8287611045565b5201610151565b604051602080825281906101c990820187610f3c565b0390f35b346100f05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f0576024358060020b81036100f0576040517fd0c93a7c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f91610ac5575b50604051917f3850c7bd00000000000000000000000000000000000000000000000000000000835260408360048173ffffffffffffffffffffffffffffffffffffffff88165afa92831561085c575f93610a77575b50816102dc916110e4565b916102e783826110fb565b9260020b9060020b017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000627fffff8183128184131761047c57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618808760020b12610a6f575b50620d89e8809160020b13610a67575b50600161036a86856110fb565b60020b019182129082131761047c578261038391611135565b60020b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103ca6103b484610dbd565b936103c26040519586610d7c565b808552610dbd565b013660208401375f926103dd8186611135565b60020b60081d60010b956103f18284611135565b60020b60081d60010b965b8060010b88811361086757604051907f5339c296000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa90811561085c575f9161082a575b50805b6104a9575060010b617fff811461047c576001016103fc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8060ff6fffffffffffffffffffffffffffffffff82161561081e5750607f5b67ffffffffffffffff8216156108145760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0015b63ffffffff82161561080a5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b61ffff8216156108005760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b60ff8216156107f65760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b600f8216156107ec5760ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc818316011161047c5760ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b8560038316156107df575060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818316011161047c5760017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff88931601925b16610787575b60ff6107209216926001841b189260020b8460081b60020b176110e4565b60020b8860020b8112158061077a575b61073c575b5080610463565b87907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461047c5761077460018493019989611045565b52610735565b508560020b811315610730565b5060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316011161047c5760ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0184610702565b909160019060021c6106fc565b9060041c9061069a565b9060081c9061063f565b9060101c906105e4565b9060201c90610588565b9060401c9061052a565b90508160801c906104c8565b90506020813d602011610854575b8161084560209383610d7c565b810103126100f0575189610460565b3d9150610838565b6040513d5f823e3d90fd5b85878461087382610fdf565b925f5b83811061089357604051602080825281906101c990820188610f3c565b61089d8183611045565b5160020b90604051917ff30dba930000000000000000000000000000000000000000000000000000000083526004830152610100808360248173ffffffffffffffffffffffffffffffffffffffff89165afa90811561085c575f915f945f925f926109c4575b505061090f8487611045565b5191604051957fffffffffffffffffffffffffffffffff00000000000000000000000000000000608095861b166020880152841b60308701526040860152606085015260e81b908301526063825260a082019180831067ffffffffffffffff841117610997576001926040526109858288611045565b526109908187611045565b5001610876565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b93509450505082813d8311610a60575b6109de8183610d7c565b810103126100f0578151916fffffffffffffffffffffffffffffffff831683036100f05760208101519081600f0b82036100f05760408101519360608201519160808101518060060b036100f057610a3860a082016110c3565b5060c081015163ffffffff8116036100f05760e00151801515036100f0579193908980610903565b503d6109d4565b92508661035d565b95508761034d565b9092506040813d604011610abd575b81610a9360409383610d7c565b810103126100f05781610ab5602083610aae6102dc956110c3565b50016110b5565b9391506102d1565b3d9150610a86565b90506020813d602011610af7575b81610ae060209383610d7c565b810103126100f057610af1906110b5565b8361027c565b3d9150610ad3565b346100f05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043573ffffffffffffffffffffffffffffffffffffffff811681036100f05760209031604051908152f35b346100f0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760043567ffffffffffffffff81116100f057610baa903690600401610e0f565b90610bb58251610fdf565b91805192610bdb610bc585610dbd565b94610bd36040519687610d7c565b808652610dbd565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081860194013685375f5b8351811015610c80575a905f8073ffffffffffffffffffffffffffffffffffffffff610c338489611045565b51511685610c41858a611045565b51015190828783519301915af150610c57611086565b610c618286611045565b525a820391821161047c57600191610c798289611045565b5201610c07565b509083610c9d928681604051958695604087526040870190610f3c565b918583038287015251918281520192915f5b828110610cbe57505050500390f35b835185528695509381019392810192600101610caf565b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f05760205a604051908152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f0576020604051458152f35b346100f0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f057602090428152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761099757604052565b67ffffffffffffffff81116109975760051b60200190565b67ffffffffffffffff811161099757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156100f057803591602091610e2984610dbd565b93604091610e3983519687610d7c565b818652848087019260051b820101938085116100f057858201925b858410610e65575050505050505090565b67ffffffffffffffff9084358281116100f057840191867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084860301126100f057865192878401848110838211176109975788528981013573ffffffffffffffffffffffffffffffffffffffff811681036100f0578452878101359182116100f057019083603f830112156100f0578882013592610f0284610dd5565b610f0e89519182610d7c565b848152858986860101116100f0575f8b8681978c839801838601378301015283820152815201930192610e54565b9080825180825260208092019180808360051b8601019501935f905b838210610f685750505050505090565b909192939495837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08084840301885288518051908185525f5b828110610fcb5750505f818501840152601f01169091018101968101950193929160010190610f58565b818101850151868201860152889401610fa1565b90610fe982610dbd565b610ff66040519182610d7c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110248294610dbd565b01905f5b82811061103457505050565b806060602080938501015201611028565b80518210156110595760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3d156110b0573d9061109782610dd5565b916110a56040519384610d7c565b82523d5f602084013e565b606090565b51908160020b82036100f057565b519073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b9060020b9060020b02908160020b91820361047c57565b9060020b9060020b0390627fffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083121761047c57565b60020b9060020b908115611192577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082141661047c570590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b91906111cb8351610fdf565b905f5b845181101561123e575f8073ffffffffffffffffffffffffffffffffffffffff6111f88489611045565b515116602090828261120a878c611045565b51015180519301915af15061121d611086565b6112278285611045565b52815a10611237576001016111ce565b9350509190565b50509151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192831161047c57919056fea2646970667358221220832431e12bfb8e276404d7b4bb44486f21c3216fd481772d0d64725aabd9bf3f64736f6c63430008170033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.