// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {IPoolManager} from "@uniswap/v4-core/src/interfaces/IPoolManager.sol";
import {IUnlockCallback} from "@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.sol";
import {PoolKey} from "@uniswap/v4-core/src/types/PoolKey.sol";
import {PoolId, PoolIdLibrary} from "@uniswap/v4-core/src/types/PoolId.sol";
import {BalanceDelta} from "@uniswap/v4-core/src/types/BalanceDelta.sol";
import {Currency, CurrencyLibrary} from "@uniswap/v4-core/src/types/Currency.sol";
import {TickMath} from "@uniswap/v4-core/src/libraries/TickMath.sol";
import {ModifyLiquidityParams} from "@uniswap/v4-core/src/types/PoolOperation.sol";
import {LiquidityAmounts} from "@uniswap/v4-periphery/src/libraries/LiquidityAmounts.sol";
import {StateLibrary} from "@uniswap/v4-core/src/libraries/StateLibrary.sol";
import {MultiPoolsFeeVault} from "./MultiPoolsFeeVault.sol";
/**
* @title AutoLPSeeder
* @notice Adds ETH-only concentrated liquidity using accumulated auto-LP buffers from the FeeVault.
* @custom:url https://multipools.trade
*/
contract AutoLPSeeder is IUnlockCallback {
using PoolIdLibrary for PoolKey;
using CurrencyLibrary for Currency;
using StateLibrary for IPoolManager;
uint256 public constant TRIGGER_THRESHOLD = 0.1 ether;
int24 public constant RANGE_TICKS = 4080;
int24 public constant TICK_SPACING = 60;
Currency internal constant ETH = Currency.wrap(address(0));
IPoolManager public immutable poolManager;
MultiPoolsFeeVault public immutable feeVault;
event AutoLPAdded(bytes32 indexed poolId, uint256 ethAmount, int24 tickLower, int24 tickUpper, uint128 liquidity);
error NotPoolManager();
error BufferInsufficient(uint256 have, uint256 need);
error UnexpectedTokenDebt();
struct UnlockData {
PoolKey key;
int24 tickLower;
int24 tickUpper;
uint256 ethAmount;
bytes32 poolId;
}
constructor(IPoolManager poolManager_, MultiPoolsFeeVault feeVault_) {
poolManager = poolManager_;
feeVault = feeVault_;
}
function triggerAutoLP(PoolKey calldata key, int24 currentTick) external {
bytes32 poolId = PoolId.unwrap(key.toId());
uint256 buffer = feeVault.autoLpBuffer(poolId);
if (buffer < TRIGGER_THRESHOLD) revert BufferInsufficient(buffer, TRIGGER_THRESHOLD);
int24 tickLower = _roundUpToSpacing(currentTick);
int24 tickUpper = tickLower + RANGE_TICKS;
if (tickUpper > TickMath.MAX_TICK) tickUpper = (TickMath.MAX_TICK / TICK_SPACING) * TICK_SPACING;
feeVault.consumeAutoLpBuffer(poolId, buffer);
bytes memory result = poolManager.unlock(abi.encode(UnlockData({
key: key,
tickLower: tickLower,
tickUpper: tickUpper,
ethAmount: buffer,
poolId: poolId
})));
uint128 liquidity = abi.decode(result, (uint128));
emit AutoLPAdded(poolId, buffer, tickLower, tickUpper, liquidity);
}
function unlockCallback(bytes calldata data)
external override returns (bytes memory)
{
if (msg.sender != address(poolManager)) revert NotPoolManager();
UnlockData memory d = abi.decode(data, (UnlockData));
uint160 sqrtA = TickMath.getSqrtPriceAtTick(d.tickLower);
uint160 sqrtB = TickMath.getSqrtPriceAtTick(d.tickUpper);
uint128 liquidity = LiquidityAmounts.getLiquidityForAmount0(sqrtA, sqrtB, d.ethAmount);
(BalanceDelta delta,) = poolManager.modifyLiquidity(
d.key,
ModifyLiquidityParams({
tickLower: d.tickLower,
tickUpper: d.tickUpper,
liquidityDelta: int256(uint256(liquidity)),
salt: bytes32(0)
}),
""
);
int128 d0 = delta.amount0();
if (d0 < 0) {
uint256 owed = uint256(uint128(-d0));
poolManager.settle{value: owed}();
uint256 dust = d.ethAmount - owed;
if (dust > 0) feeVault.refundAutoLpDust{value: dust}(d.poolId);
}
if (delta.amount1() < 0) revert UnexpectedTokenDebt();
return abi.encode(liquidity);
}
function isReady(PoolKey calldata key) external view returns (bool ready, uint256 buffer) {
buffer = feeVault.autoLpBuffer(PoolId.unwrap(key.toId()));
ready = buffer >= TRIGGER_THRESHOLD;
}
function getCurrentTick(PoolKey calldata key) external view returns (int24 tick) {
(, tick,,) = StateLibrary.getSlot0(poolManager, key.toId());
}
function _roundUpToSpacing(int24 tick) internal pure returns (int24) {
int24 base = (tick / TICK_SPACING) * TICK_SPACING;
if (base <= tick) base += TICK_SPACING;
return base;
}
receive() external payable {}
}[
{
"type": "constructor",
"inputs": [
{
"name": "poolManager_",
"type": "address",
"internalType": "contract IPoolManager"
},
{
"name": "feeVault_",
"type": "address",
"internalType": "contract MultiPoolsFeeVault"
}
],
"stateMutability": "nonpayable"
},
{
"name": "BufferInsufficient",
"type": "error",
"inputs": [
{
"name": "have",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "need",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "NotPoolManager",
"type": "error",
"inputs": []
},
{
"name": "UnexpectedTokenDebt",
"type": "error",
"inputs": []
},
{
"name": "AutoLPAdded",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "ethAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tickLower",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "liquidity",
"type": "uint128",
"indexed": false,
"internalType": "uint128"
}
],
"anonymous": false
},
{
"name": "RANGE_TICKS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "TICK_SPACING",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "TRIGGER_THRESHOLD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "feeVault",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract MultiPoolsFeeVault"
}
],
"stateMutability": "view"
},
{
"name": "getCurrentTick",
"type": "function",
"inputs": [
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
}
],
"outputs": [
{
"name": "tick",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "isReady",
"type": "function",
"inputs": [
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
}
],
"outputs": [
{
"name": "ready",
"type": "bool",
"internalType": "bool"
},
{
"name": "buffer",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "poolManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "triggerAutoLP",
"type": "function",
"inputs": [
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "currentTick",
"type": "int24",
"internalType": "int24"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "unlockCallback",
"type": "function",
"inputs": [
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x60c03460b057601f6111dd38819003918201601f19168301916001600160401b0383118484101760b457808492604094855283398101031260b0578051906001600160a01b038216820360b05760200151906001600160a01b038216820360b05760805260a05260405161111490816100c98239608051818181609c01528181610121015281816105e40152610956015260a05181818161040a015281816106840152818161070b01526107e80152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816306419d2614610b4b5750806315f5ea2f1461079c57806327ca0e1c146106cf57806346ca626b146106b3578063478222c21461066e5780635f105e2d146105865780637d50d0a31461056957806391dd7346146100ce5763dc4c90d30361000f57346100cb57806003193601126100cb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b50346100cb5760203660031901126100cb576004359067ffffffffffffffff82116100cb57366023830112156100cb57816004013567ffffffffffffffff8111610484578201903660248301116100cb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163381900361055a57610120848403126104845760a060246040519461016d86610ba3565b8690030160231901126104845760405161018681610ba3565b61019260248601610bf5565b81526101a060448601610bf5565b6020820152606485013562ffffff811681036105155760408201526101c760848601610b6b565b606082015260a48501356001600160a01b038116810361051557608082015283526101f460c48501610b6b565b602084019181835261020860e48701610b6b565b6040860190815261028861023660608801946101048a0135865261012460808a019a01358a5260020b610ce8565b610243835160020b610ce8565b8551919080826001600160a01b038083169082161161054f575b5061027690506001600160a01b03828116908416611015565b9190036001600160a01b03169161105e565b956001600160801b0387168097036105405751935160020b905160020b604051916080830183811067ffffffffffffffff82111761052c57604052825260208201908152604082019087825260608301928784526102f760405197632d35e7ed60e11b89526004890190610ca5565b5160020b60a48701525160020b60c48601525160e485015251610104840152610140610124840152836101448401526040836101648187855af19283156105215784936104e9575b508260801d600f0b848112610399575b50505081929350600f0b1261038a57610386826040519060208201526020815261037a604082610bd3565b60405191829182610b79565b0390f35b634a2ad3e560e01b8152600490fd5b6f7fffffffffffffffffffffffffffffff19811461049757604051630476982d60e21b81529085036001600160801b031692916020908290600490829087905af180156104de576104ab575b505194818603918683116104975784959603610403575b859461034f565b51919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156104935790602485926040519485938492631b60f24760e31b845260048401525af180156104885790839161046f575b809291926103fc565b8161047991610bd3565b61048457815f610466565b5080fd5b6040513d85823e3d90fd5b8480fd5b634e487b7160e01b85526011600452602485fd5b6020813d6020116104d6575b816104c460209383610bd3565b810103126104d257516103e5565b5f80fd5b3d91506104b7565b6040513d87823e3d90fd5b9092506040813d604011610519575b8161050560409383610bd3565b810103126105155751915f61033f565b8380fd5b3d91506104f8565b6040513d86823e3d90fd5b634e487b7160e01b88526041600452602488fd5b6393dafdf160e01b8652600486fd5b915091505f8061025d565b63570c108560e11b8252600482fd5b50346100cb57806003193601126100cb576020604051610ff08152f35b50346100cb5760a03660031901126100cb5760a06105a336610c09565b206040516020810191825260066040820152604081526105c4606082610bd3565b519020604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561066357829161062d575b6020826040519060a01c60020b8152f35b90506020813d60201161065b575b8161064860209383610bd3565b810103126104845760209150515f61061c565b3d915061063b565b6040513d84823e3d90fd5b50346100cb57806003193601126100cb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100cb57806003193601126100cb576020604051603c8152f35b50346100cb5760a03660031901126100cb5760a06106ec36610c09565b206040516303d24af160e11b81526004810191909152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610790579061075d575b60409081519067016345785d8a000081101582526020820152f35b506020813d602011610788575b8161077760209383610bd3565b810103126104d25760409051610742565b3d915061076a565b604051903d90823e3d90fd5b50346104d257366003190160c081126104d25760a0136104d25760a4358060020b8091036104d25760a06107cf36610c09565b206040516303d24af160e11b81526004810182905290917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602082602481865afa918215610aa9575f92610b17575b5067016345785d8a00008210610af857610845603c8205610c90565b908160020b90811315610adb575b5060020b90610ff0820192627fffff198412627fffff851317610ac757620d89e88460020b13610ab4575b803b156104d2575f8091604460405180948193630631588360e41b83528a60048401528760248401525af18015610aa957610a94575b50610951856040516108c581610ba3565b6108ce36610c09565b908181526020810190868252604081019760020b978881526080606083019288845201928a8452610906604051956020870190610ca5565b5160020b60c08501525160020b60e08401525161010083015251610120820152610120815261093761014082610bd3565b604051809381926348c8949160e01b835260048301610b79565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610a895786916109f3575b506020818051810103126109ef57602001516001600160801b0381168091036109ef577f73583fc6518faa589e936f932dc6dd4d0827b2fa7aae166ae2ad2f3c3503ae6e93608093604051938452602084015260408301526060820152a280f35b8580fd5b90503d8087833e610a048183610bd3565b810190602081830312610a815780519067ffffffffffffffff8211610a85570181601f82011215610a8157805167ffffffffffffffff811161052c5790879160405193610a5b6020601f19601f8501160186610bd3565b81855260208284010111610a7d578060208093018386015e830101525f61098e565b8280fd5b8680fd5b8780fd5b6040513d88823e3d90fd5b610aa19195505f90610bd3565b5f935f6108b4565b6040513d5f823e3d90fd5b9250610ac16139c3610c90565b9261087e565b634e487b7160e01b5f52601160045260245ffd5b603c019050627fffff8113627fffff19821217610ac7575f610853565b5063331997a560e21b5f5260045267016345785d8a000060245260445ffd5b9091506020813d602011610b43575b81610b3360209383610bd3565b810103126104d25751905f610829565b3d9150610b26565b346104d2575f3660031901126104d2578067016345785d8a000060209252f35b35908160020b82036104d257565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b60a0810190811067ffffffffffffffff821117610bbf57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610bbf57604052565b35906001600160a01b03821682036104d257565b60a09060031901126104d25760405190610c2282610ba3565b816004356001600160a01b03811681036104d25781526024356001600160a01b03811681036104d257602082015260443562ffffff811681036104d25760408201526064358060020b81036104d2576060820152608435906001600160a01b03821682036104d25760800152565b603c9060020b02908160020b918203610ac757565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60020b908160ff1d82810118620d89e881116110025763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116610fe6575b60048116610fca575b60088116610fae575b60108116610f92575b60208116610f76575b60408116610f5a575b60808116610f3e575b6101008116610f22575b6102008116610f06575b6104008116610eea575b6108008116610ece575b6110008116610eb2575b6120008116610e96575b6140008116610e7a575b6180008116610e5e575b620100008116610e42575b620200008116610e27575b620400008116610e0c575b6208000016610df3575b5f12610deb575b0160201c90565b5f1904610de4565b6b048a170391f7dc42444e8fa290910260801c90610ddd565b6d2216e584f5fa1ea926041bedfe9890920260801c91610dd3565b916e5d6af8dedb81196699c329225ee6040260801c91610dc8565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91610dbd565b916f31be135f97d08fd981231505542fcfa60260801c91610db2565b916f70d869a156d2a1b890bb3df62baf32f70260801c91610da8565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91610d9e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91610d94565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91610d8a565b916ff3392b0822b70005940c7a398e4b70f30260801c91610d80565b916ff987a7253ac413176f2b074cf7815e540260801c91610d76565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91610d6c565b916ffe5dee046a99a2a811c461f1969c30530260801c91610d62565b916fff2ea16466c96a3843ec78b326b528610260801c91610d59565b916fff973b41fa98c081472e6896dfb254c00260801c91610d50565b916fffcb9843d60f6159c9db58835c9266440260801c91610d47565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91610d3e565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91610d35565b916ffff97272373d413259a46990580e213a0260801c91610d2c565b826345c3193d60e11b5f5260045260245ffd5b81810291905f1982820991838084109303928084039384600160601b11156104d2571461105557600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f19818509938380861095039480860395868511156104d257146110d6579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b50509150049056fea264697066735822122058545d50b3db66b1be20b86d4149505e4b8e3bdebc0108ec5434ef43e056bb3364736f6c634300081a00330000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409510000000000000000000000005d8b6ad5c9ea8d3136dac5c114bfd5c2ff44cbc9
0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816306419d2614610b4b5750806315f5ea2f1461079c57806327ca0e1c146106cf57806346ca626b146106b3578063478222c21461066e5780635f105e2d146105865780637d50d0a31461056957806391dd7346146100ce5763dc4c90d30361000f57346100cb57806003193601126100cb576040517f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03168152602090f35b80fd5b50346100cb5760203660031901126100cb576004359067ffffffffffffffff82116100cb57366023830112156100cb57816004013567ffffffffffffffff8111610484578201903660248301116100cb577f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03163381900361055a57610120848403126104845760a060246040519461016d86610ba3565b8690030160231901126104845760405161018681610ba3565b61019260248601610bf5565b81526101a060448601610bf5565b6020820152606485013562ffffff811681036105155760408201526101c760848601610b6b565b606082015260a48501356001600160a01b038116810361051557608082015283526101f460c48501610b6b565b602084019181835261020860e48701610b6b565b6040860190815261028861023660608801946101048a0135865261012460808a019a01358a5260020b610ce8565b610243835160020b610ce8565b8551919080826001600160a01b038083169082161161054f575b5061027690506001600160a01b03828116908416611015565b9190036001600160a01b03169161105e565b956001600160801b0387168097036105405751935160020b905160020b604051916080830183811067ffffffffffffffff82111761052c57604052825260208201908152604082019087825260608301928784526102f760405197632d35e7ed60e11b89526004890190610ca5565b5160020b60a48701525160020b60c48601525160e485015251610104840152610140610124840152836101448401526040836101648187855af19283156105215784936104e9575b508260801d600f0b848112610399575b50505081929350600f0b1261038a57610386826040519060208201526020815261037a604082610bd3565b60405191829182610b79565b0390f35b634a2ad3e560e01b8152600490fd5b6f7fffffffffffffffffffffffffffffff19811461049757604051630476982d60e21b81529085036001600160801b031692916020908290600490829087905af180156104de576104ab575b505194818603918683116104975784959603610403575b859461034f565b51919250907f0000000000000000000000005d8b6ad5c9ea8d3136dac5c114bfd5c2ff44cbc96001600160a01b031690813b156104935790602485926040519485938492631b60f24760e31b845260048401525af180156104885790839161046f575b809291926103fc565b8161047991610bd3565b61048457815f610466565b5080fd5b6040513d85823e3d90fd5b8480fd5b634e487b7160e01b85526011600452602485fd5b6020813d6020116104d6575b816104c460209383610bd3565b810103126104d257516103e5565b5f80fd5b3d91506104b7565b6040513d87823e3d90fd5b9092506040813d604011610519575b8161050560409383610bd3565b810103126105155751915f61033f565b8380fd5b3d91506104f8565b6040513d86823e3d90fd5b634e487b7160e01b88526041600452602488fd5b6393dafdf160e01b8652600486fd5b915091505f8061025d565b63570c108560e11b8252600482fd5b50346100cb57806003193601126100cb576020604051610ff08152f35b50346100cb5760a03660031901126100cb5760a06105a336610c09565b206040516020810191825260066040820152604081526105c4606082610bd3565b519020604051631e2eaeaf60e01b815260048101919091526020816024817f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03165afa90811561066357829161062d575b6020826040519060a01c60020b8152f35b90506020813d60201161065b575b8161064860209383610bd3565b810103126104845760209150515f61061c565b3d915061063b565b6040513d84823e3d90fd5b50346100cb57806003193601126100cb576040517f0000000000000000000000005d8b6ad5c9ea8d3136dac5c114bfd5c2ff44cbc96001600160a01b03168152602090f35b50346100cb57806003193601126100cb576020604051603c8152f35b50346100cb5760a03660031901126100cb5760a06106ec36610c09565b206040516303d24af160e11b81526004810191909152906020826024817f0000000000000000000000005d8b6ad5c9ea8d3136dac5c114bfd5c2ff44cbc96001600160a01b03165afa908115610790579061075d575b60409081519067016345785d8a000081101582526020820152f35b506020813d602011610788575b8161077760209383610bd3565b810103126104d25760409051610742565b3d915061076a565b604051903d90823e3d90fd5b50346104d257366003190160c081126104d25760a0136104d25760a4358060020b8091036104d25760a06107cf36610c09565b206040516303d24af160e11b81526004810182905290917f0000000000000000000000005d8b6ad5c9ea8d3136dac5c114bfd5c2ff44cbc96001600160a01b03169190602082602481865afa918215610aa9575f92610b17575b5067016345785d8a00008210610af857610845603c8205610c90565b908160020b90811315610adb575b5060020b90610ff0820192627fffff198412627fffff851317610ac757620d89e88460020b13610ab4575b803b156104d2575f8091604460405180948193630631588360e41b83528a60048401528760248401525af18015610aa957610a94575b50610951856040516108c581610ba3565b6108ce36610c09565b908181526020810190868252604081019760020b978881526080606083019288845201928a8452610906604051956020870190610ca5565b5160020b60c08501525160020b60e08401525161010083015251610120820152610120815261093761014082610bd3565b604051809381926348c8949160e01b835260048301610b79565b0381837f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03165af1908115610a895786916109f3575b506020818051810103126109ef57602001516001600160801b0381168091036109ef577f73583fc6518faa589e936f932dc6dd4d0827b2fa7aae166ae2ad2f3c3503ae6e93608093604051938452602084015260408301526060820152a280f35b8580fd5b90503d8087833e610a048183610bd3565b810190602081830312610a815780519067ffffffffffffffff8211610a85570181601f82011215610a8157805167ffffffffffffffff811161052c5790879160405193610a5b6020601f19601f8501160186610bd3565b81855260208284010111610a7d578060208093018386015e830101525f61098e565b8280fd5b8680fd5b8780fd5b6040513d88823e3d90fd5b610aa19195505f90610bd3565b5f935f6108b4565b6040513d5f823e3d90fd5b9250610ac16139c3610c90565b9261087e565b634e487b7160e01b5f52601160045260245ffd5b603c019050627fffff8113627fffff19821217610ac7575f610853565b5063331997a560e21b5f5260045267016345785d8a000060245260445ffd5b9091506020813d602011610b43575b81610b3360209383610bd3565b810103126104d25751905f610829565b3d9150610b26565b346104d2575f3660031901126104d2578067016345785d8a000060209252f35b35908160020b82036104d257565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b60a0810190811067ffffffffffffffff821117610bbf57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610bbf57604052565b35906001600160a01b03821682036104d257565b60a09060031901126104d25760405190610c2282610ba3565b816004356001600160a01b03811681036104d25781526024356001600160a01b03811681036104d257602082015260443562ffffff811681036104d25760408201526064358060020b81036104d2576060820152608435906001600160a01b03821682036104d25760800152565b603c9060020b02908160020b918203610ac757565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60020b908160ff1d82810118620d89e881116110025763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116610fe6575b60048116610fca575b60088116610fae575b60108116610f92575b60208116610f76575b60408116610f5a575b60808116610f3e575b6101008116610f22575b6102008116610f06575b6104008116610eea575b6108008116610ece575b6110008116610eb2575b6120008116610e96575b6140008116610e7a575b6180008116610e5e575b620100008116610e42575b620200008116610e27575b620400008116610e0c575b6208000016610df3575b5f12610deb575b0160201c90565b5f1904610de4565b6b048a170391f7dc42444e8fa290910260801c90610ddd565b6d2216e584f5fa1ea926041bedfe9890920260801c91610dd3565b916e5d6af8dedb81196699c329225ee6040260801c91610dc8565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91610dbd565b916f31be135f97d08fd981231505542fcfa60260801c91610db2565b916f70d869a156d2a1b890bb3df62baf32f70260801c91610da8565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91610d9e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91610d94565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91610d8a565b916ff3392b0822b70005940c7a398e4b70f30260801c91610d80565b916ff987a7253ac413176f2b074cf7815e540260801c91610d76565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91610d6c565b916ffe5dee046a99a2a811c461f1969c30530260801c91610d62565b916fff2ea16466c96a3843ec78b326b528610260801c91610d59565b916fff973b41fa98c081472e6896dfb254c00260801c91610d50565b916fffcb9843d60f6159c9db58835c9266440260801c91610d47565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91610d3e565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91610d35565b916ffff97272373d413259a46990580e213a0260801c91610d2c565b826345c3193d60e11b5f5260045260245ffd5b81810291905f1982820991838084109303928084039384600160601b11156104d2571461105557600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f19818509938380861095039480860395868511156104d257146110d6579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b50509150049056fea264697066735822122058545d50b3db66b1be20b86d4149505e4b8e3bdebc0108ec5434ef43e056bb3364736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xeb831f…94f4e2 | 1 day agoSun, 16 Aug 2026 09:17:34 UTC | 0x73583f…ae6e | [0] 0x8e5038f3b92e…3af210a3 data: 0x000000000000000000…0beada73 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xeb831f…94f4e2 | triggerAutoLP | 37,861,707 | 1 day agoSun, 16 Aug 2026 09:17:34 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000420 | |
| !0xc9e3eb…44eb0a | triggerAutoLP | 36,700,351 | 3 days agoSat, 15 Aug 2026 00:55:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000122 | |
| !0x4f4b8e…f01d97 | triggerAutoLP | 36,697,354 | 3 days agoSat, 15 Aug 2026 00:50:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000122 | |
| !0x65d25d…2fdd2e | triggerAutoLP | 36,694,354 | 3 days agoSat, 15 Aug 2026 00:45:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000122 | |
| !0x8097cb…dc065d | triggerAutoLP | 36,691,358 | 3 days agoSat, 15 Aug 2026 00:40:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000122 | |
| !0xd5ed0a…1c0e3b | triggerAutoLP | 36,688,357 | 3 days agoSat, 15 Aug 2026 00:35:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000128 | |
| !0x783bda…29575c | triggerAutoLP | 36,682,385 | 3 days agoSat, 15 Aug 2026 00:25:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000122 | |
| !0x967528…f43a5a | triggerAutoLP | 36,679,391 | 3 days agoSat, 15 Aug 2026 00:20:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000123 | |
| !0x4686bd…1e6168 | triggerAutoLP | 36,676,390 | 3 days agoSat, 15 Aug 2026 00:15:42 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000125 | |
| !0xb4801b…046ef6 | triggerAutoLP | 36,673,423 | 3 days agoSat, 15 Aug 2026 00:10:44 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000125 | |
| !0x7bfd34…398b3a | triggerAutoLP | 36,670,417 | 3 days agoSat, 15 Aug 2026 00:05:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000123 | |
| !0x3c51da…4900ff | triggerAutoLP | 36,667,431 | 3 days agoSat, 15 Aug 2026 00:00:44 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000123 | |
| !0x37ad13…02a750 | triggerAutoLP | 36,664,432 | 3 days agoFri, 14 Aug 2026 23:55:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000123 | |
| !0xe157fd…bf337b | triggerAutoLP | 36,661,433 | 3 days agoFri, 14 Aug 2026 23:50:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000123 | |
| !0xb4978a…904a4e | triggerAutoLP | 36,658,447 | 3 days agoFri, 14 Aug 2026 23:45:42 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000127 | |
| !0x3a5e9b…882702 | triggerAutoLP | 36,655,452 | 3 days agoFri, 14 Aug 2026 23:40:42 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000124 | |
| !0x7c866a…e87a34 | triggerAutoLP | 36,652,452 | 3 days agoFri, 14 Aug 2026 23:35:42 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000127 | |
| !0xb7d51d…491e4d | triggerAutoLP | 36,649,459 | 3 days agoFri, 14 Aug 2026 23:30:42 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000124 | |
| !0xb042f3…51d155 | triggerAutoLP | 36,646,483 | 3 days agoFri, 14 Aug 2026 23:25:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000124 | |
| !0xcadcad…957056 | triggerAutoLP | 36,643,484 | 3 days agoFri, 14 Aug 2026 23:20:43 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000124 | |
| !0xa4b10e…7ab67d | triggerAutoLP | 36,640,484 | 3 days agoFri, 14 Aug 2026 23:15:42 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000125 | |
| !0x5f7a6f…2621f1 | triggerAutoLP | 36,637,505 | 3 days agoFri, 14 Aug 2026 23:10:44 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000125 | |
| !0xb36161…08c3c1 | triggerAutoLP | 36,636,753 | 3 days agoFri, 14 Aug 2026 23:09:28 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000126 | |
| !0x61b091…c53c82 | triggerAutoLP | 36,634,510 | 3 days agoFri, 14 Aug 2026 23:05:44 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000126 | |
| !0x11c68e…a1a91b | triggerAutoLP | 36,634,012 | 3 days agoFri, 14 Aug 2026 23:04:54 UTC | 0x624f…0000 | IN | AutoLPSeeder | $0.000 ETH | 0.00000127 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 37,861,707 | 1 day agoSun, 16 Aug 2026 09:17:34 UTC | 0xeb831f…94f4e2 | CALL | triggerAutoLP | 0xe3ca…3973 | OUT | 0x8366…0951 | 0.28065 ETH |
| 37,861,707 | 1 day agoSun, 16 Aug 2026 09:17:34 UTC | 0xeb831f…94f4e2 | CALL | triggerAutoLP | 0x5d8b…cbc9 | IN | 0xe3ca…3973 | 0.28065 ETH |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||