// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
/*
█ █ ███ ███ ████ ████ █ █ █████ █ █ █████
█ █ █ █ █ █ █ █ █ ██ ██ █ ██ ██ █
█████ █ █ █ █ █ █ ███ █ █ █ ████ █ █ █ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ ███ ███ ████ ████ █ █ █ █████ █ █ █████
The most rewarding place to launch and trade.
Fixed supply · LP burned forever · fees flow to creators.
web https://hoods.meme
x https://x.com/hoodsmeme
tg https://t.me/hoods_meme
*/
import { BaseHook } from "./vendor/BaseHook.sol";
import { Hooks } from "v4-core/src/libraries/Hooks.sol";
import { IPoolManager } from "v4-core/src/interfaces/IPoolManager.sol";
import { PoolKey } from "v4-core/src/types/PoolKey.sol";
import { PoolId } from "v4-core/src/types/PoolId.sol";
import { Currency } from "v4-core/src/types/Currency.sol";
import { BalanceDelta } from "v4-core/src/types/BalanceDelta.sol";
import { BeforeSwapDelta, toBeforeSwapDelta } from "v4-core/src/types/BeforeSwapDelta.sol";
import { StateLibrary } from "v4-core/src/libraries/StateLibrary.sol";
import { PoolIdLibrary } from "v4-core/src/types/PoolId.sol";
import { FullMath } from "v4-core/src/libraries/FullMath.sol";
interface IHoodsSplitter {
function credit(address token) external payable;
}
/// @title HoodsHook — singleton fee hook for every hoods.meme pool (arc §2.3)
/// @notice Pool LP fee = 0; this hook takes an ETH fee on every swap, sized by a MARKET-CAP tier curve:
/// high at launch (anti-snipe economics + revenue), decaying at scale so a lower-fee clone pool can't
/// undercut the canonical one. The fee splits platform → treasury, creator → HoodsSplitter (current
/// Creator NFT holder). Launch LIMITS live in HoodsToken (tx.origin-based, non-spoofable), not here.
///
/// Fee-taking follows the verified production pattern (native ETH is always currency0):
/// • ETH is the SPECIFIED currency (buy exactIn) → take in beforeSwap, return +delta on specified.
/// • ETH is the UNSPECIFIED currency (buy exactOut, sell exactIn) → take in afterSwap, return +delta.
/// • sell exactOut is rejected (would need a pre-swap price lookup to size the ETH fee).
///
/// NO OWNER. The hook holds no admin function of any kind: the treasury is immutable, and each pool's
/// fee schedule is SNAPSHOTTED from the factory at launch and can never be altered afterwards. Fees
/// ACCRUE inside the hook and are pulled later, so a swap makes no external call and nothing
/// downstream can revert a trade. Tunable launch parameters live in the factory, where they only ever
/// affect FUTURE launches.
contract HoodsHook is BaseHook {
using StateLibrary for IPoolManager;
using PoolIdLibrary for PoolKey;
uint256 public constant BPS = 10_000;
uint256 public constant MAX_FEE_BPS = 100; // 1% — the hard cap the owner can never exceed
uint256 public constant TOTAL_SUPPLY = 1_000_000_000e18; // 1B (mirrors the factory) — for mcap
uint256 private constant Q96 = 0x1000000000000000000000000; // 2^96
/// Market-cap fee tier. `totalBps` = fee as bps of the ETH swapped; `platformBps` = the platform's
/// slice of that fee (creator gets total − platform). Tiers ascending by threshold; the LAST tier
/// has threshold 0 — the floor that catches every mcap above the previous bound.
struct FeeTier {
uint128 mcapThresholdWei; // upper bound in ETH wei (exclusive); ignored on the last tier
uint16 totalBps;
uint16 platformBps;
}
/// Fee table SNAPSHOTTED per pool at launch (supplied by the factory). Once registered, a pool's
/// schedule is fixed forever — no function anywhere can change a live pool's fees.
mapping(bytes32 => FeeTier[]) private _poolTiers;
address public immutable treasury; // platform fee sink — IMMUTABLE, cannot be redirected
IHoodsSplitter public immutable splitter;
address public immutable deployer; // one-shot setFactory authority (hook is CREATE2-deployed, M-1)
/// Fees ACCRUE here and are pulled later — a swap never calls out, so nothing downstream can
/// revert a trade or halt the market.
uint256 public treasuryAccrued;
mapping(address => uint256) public creatorAccrued; // token => creator ETH awaiting settleCreator()
// Launch registry (set once per pool by the factory) — drives the UI/indexer "graduated" flag.
address public factory; // set-once binding (deploy ordering: hook before factory)
struct Launch {
bool exists;
bool graduated; // one-way latch; UI/indexer "graduated"
int24 graduationTick;
}
mapping(bytes32 => Launch) public launches; // poolId => launch data
mapping(bytes32 => uint256) public poolDeploymentBlock; // no fee on the launch block
event LaunchRegistered(bytes32 indexed poolId, address indexed token, int24 graduationTick);
event Graduated(bytes32 indexed poolId, address indexed token, int24 tick);
event FeeCharged(
bytes32 indexed poolId, address indexed token, bool isBuy, uint256 feeAmount, uint256 platformShare, uint256 creatorShare
);
event TreasuryWithdrawn(address indexed treasury, uint256 amount);
event CreatorSettled(address indexed token, uint256 amount);
constructor(IPoolManager _poolManager, address treasury_, address splitter_, address wirer_) BaseHook(_poolManager) {
require(treasury_ != address(0) && splitter_ != address(0) && wirer_ != address(0), "zero");
treasury = treasury_;
splitter = IHoodsSplitter(splitter_);
deployer = wirer_; // the EOA allowed to wire `factory` — hook is CREATE2-deployed so ctor
// msg.sender is the deterministic CREATE2 factory, not the deployer (M-1).
}
/// Pull accrued platform ETH to the IMMUTABLE treasury. Permissionless — the destination is fixed
/// at deploy, so anyone may trigger it and it can only ever pay the treasury.
function withdrawTreasury() external {
uint256 amount = treasuryAccrued;
require(amount > 0, "nothing");
treasuryAccrued = 0;
(bool ok,) = payable(treasury).call{ value: amount }("");
require(ok, "send failed");
emit TreasuryWithdrawn(treasury, amount);
}
/// Forward a token's accrued creator fees to the splitter (which pays the Creator NFT holder).
/// Permissionless and OUTSIDE the swap path: if the splitter ever reverted, the ETH simply stays
/// accrued here and trading is unaffected.
function settleCreator(address token) external {
uint256 amount = creatorAccrued[token];
require(amount > 0, "nothing");
creatorAccrued[token] = 0;
splitter.credit{ value: amount }(token);
emit CreatorSettled(token, amount);
}
/// One-shot binding of the factory (breaks the hook↔factory deploy cycle). Deployer-only so it can't
/// be front-run into a griefing address before the real factory binds (would brick trading, M-1).
function setFactory(address factory_) external {
require(msg.sender == deployer, "not deployer");
require(factory == address(0) && factory_ != address(0), "factory set");
factory = factory_;
}
/// Factory-only, once per pool: record the graduation latch tick.
/// Registers a launch AND snapshots its fee schedule. The factory supplies the table; the hook
/// validates it (each total ≤ MAX_FEE_BPS, platform ≤ total, ascending thresholds) and stores it
/// against the pool. This is the ONLY time a pool's fees are ever written — after this, that
/// token's schedule is immutable for the life of the pool.
function registerLaunch(PoolKey calldata key, int24 graduationTick, FeeTier[] calldata tiers) external {
require(msg.sender == factory, "not factory");
bytes32 id = PoolId.unwrap(_toId(key));
require(!launches[id].exists, "registered");
require(tiers.length > 0, "empty tiers");
uint256 prev = 0;
for (uint256 i = 0; i < tiers.length; i++) {
require(tiers[i].totalBps <= MAX_FEE_BPS, "fee > 1%");
require(tiers[i].platformBps <= tiers[i].totalBps, "platform > total");
if (i < tiers.length - 1) {
require(tiers[i].mcapThresholdWei > prev, "not ascending");
prev = tiers[i].mcapThresholdWei;
}
_poolTiers[id].push(tiers[i]);
}
launches[id] = Launch({ exists: true, graduated: false, graduationTick: graduationTick });
emit LaunchRegistered(id, _token(key), graduationTick);
}
/// A pool's snapshotted fee schedule (empty only for a pool that was never registered).
function poolTiers(bytes32 poolId) external view returns (FeeTier[] memory) {
return _poolTiers[poolId];
}
function poolTierCount(bytes32 poolId) external view returns (uint256) {
return _poolTiers[poolId].length;
}
/// Permissionless: latch graduation from the current tick without needing a swap (keeper/indexer).
function poke(PoolKey calldata key) external {
_updateLatch(key);
}
/// One-way latch: sets graduated once the pool tick has fallen to/through graduationTick (buys move
/// the tick DOWN). Purely informational now — limits live in the token on a time window.
function _updateLatch(PoolKey calldata key) internal {
bytes32 id = PoolId.unwrap(_toId(key));
Launch storage L = launches[id];
if (!L.exists || L.graduated) return;
(, int24 tick,,) = poolManager.getSlot0(key.toId());
if (tick <= L.graduationTick) {
L.graduated = true;
emit Graduated(id, _token(key), tick);
}
}
// ── fee sizing (market-cap tiered) ──
/// Fully-diluted market cap in ETH wei from the current pool price (ETH is currency0). Zero if the
/// pool is uninitialised. mcap = totalSupply × ethPerToken, where ethPerToken = (2^96 / sqrtP)^2.
function marketCapWei(PoolKey calldata key) public view returns (uint256) {
(uint160 sqrtP,,,) = poolManager.getSlot0(key.toId());
if (sqrtP == 0) return 0;
uint256 inv = FullMath.mulDiv(Q96, Q96, sqrtP); // = sqrt(ethPerToken) × 2^96
return FullMath.mulDiv(FullMath.mulDiv(TOTAL_SUPPLY, inv, Q96), inv, Q96);
}
/// (totalBps, platformBps) for a pool at a given market cap — first tier it's under, else the floor
/// (last tier). Reads the pool's OWN snapshot, so the answer can never change for a live token.
function feeFor(bytes32 poolId, uint256 mcapWei) public view returns (uint256 totalBps, uint256 platformBps) {
FeeTier[] storage tiers = _poolTiers[poolId];
uint256 n = tiers.length;
for (uint256 i = 0; i < n; i++) {
if (i == n - 1 || mcapWei < tiers[i].mcapThresholdWei) {
return (tiers[i].totalBps, tiers[i].platformBps);
}
}
return (0, 0); // unregistered pool → no fee (cannot happen for a launched token)
}
function _feeBps(PoolKey calldata key) private view returns (uint256 totalBps, uint256 platformBps) {
return feeFor(PoolId.unwrap(_toId(key)), marketCapWei(key));
}
// ── permissions ──
function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
return Hooks.Permissions({
beforeInitialize: true,
afterInitialize: false,
beforeAddLiquidity: false,
afterAddLiquidity: false,
beforeRemoveLiquidity: false,
afterRemoveLiquidity: false,
beforeSwap: true,
afterSwap: true,
beforeDonate: false,
afterDonate: false,
beforeSwapReturnDelta: true,
afterSwapReturnDelta: true,
afterAddLiquidityReturnDelta: false,
afterRemoveLiquidityReturnDelta: false
});
}
function _beforeInitialize(address, PoolKey calldata key, uint160) internal override returns (bytes4) {
poolDeploymentBlock[PoolId.unwrap(_toId(key))] = block.number;
return BaseHook.beforeInitialize.selector;
}
// ─────────────────────────────── fee taking ───────────────────────────────
/// ETH-specified path: buy exactIn (fee peeled from the ETH input). Sell exactOut is rejected.
function _beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, bytes calldata)
internal
override
returns (bytes4, BeforeSwapDelta, uint24)
{
address token = _token(key);
if (token == address(0)) return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(0, 0), 0);
// Only charge fees on factory-registered pools. A rogue ETH/X pool that attaches this hook would
// otherwise accrue creator `pending` for a token with no Creator NFT → stranded forever (M-3).
if (!launches[PoolId.unwrap(_toId(key))].exists) return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(0, 0), 0);
_updateLatch(key); // one-way graduation check from the pre-swap tick
bool isBuy = _isBuy(key, params);
bool isExactInput = params.amountSpecified < 0;
// sell exactOut: ETH is specified but sizing the fee needs a pre-swap price lookup → reject.
require(isBuy || isExactInput, "exactOutput sells unsupported");
// handled in afterSwap when ETH is the unspecified side (buy exactOut, sell exactIn)
if (!(isBuy && isExactInput)) return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(0, 0), 0);
uint256 ethIn = uint256(-params.amountSpecified);
if (_noFee(key)) return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(0, 0), 0);
(uint256 totalBps, uint256 platformBps) = _feeBps(key);
uint256 feeAmount = (ethIn * totalBps) / BPS;
if (feeAmount == 0) return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(0, 0), 0);
poolManager.take(key.currency0, address(this), feeAmount); // currency0 == ETH
_distribute(key, token, feeAmount, true, platformBps, totalBps);
return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(int128(int256(feeAmount)), 0), 0);
}
/// ETH-unspecified path: buy exactOut or sell exactIn (fee peeled from the ETH leg of the delta).
function _afterSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, BalanceDelta delta, bytes calldata)
internal
override
returns (bytes4, int128)
{
address token = _token(key);
if (token == address(0)) return (BaseHook.afterSwap.selector, 0);
if (!launches[PoolId.unwrap(_toId(key))].exists) return (BaseHook.afterSwap.selector, 0); // unregistered pool — no fee (M-3)
// Latch graduation from the POST-swap tick so the crossing trade graduates instantly.
// (_beforeSwap latches from the pre-swap tick, which is one trade late for the crosser;
// cheap once latched — _updateLatch early-returns on the one-way flag.)
_updateLatch(key);
bool isBuy = _isBuy(key, params);
// ETH is specified iff (isBuy == isExactInput); the fee for those was already taken in beforeSwap.
if (isBuy == (params.amountSpecified < 0)) return (BaseHook.afterSwap.selector, 0);
int128 ethDelta = delta.amount0(); // currency0 == ETH
uint256 ethMoved = ethDelta < 0 ? uint256(int256(-ethDelta)) : uint256(int256(ethDelta));
if (_noFee(key)) return (BaseHook.afterSwap.selector, 0);
(uint256 totalBps, uint256 platformBps) = _feeBps(key);
uint256 feeAmount = (ethMoved * totalBps) / BPS;
if (feeAmount == 0) return (BaseHook.afterSwap.selector, 0);
poolManager.take(key.currency0, address(this), feeAmount);
_distribute(key, token, feeAmount, false, platformBps, totalBps);
return (BaseHook.afterSwap.selector, int128(int256(feeAmount)));
}
// ── internals ──
function _distribute(PoolKey calldata key, address token, uint256 feeAmount, bool isBuy, uint256 platformBps, uint256 totalBps)
private
{
uint256 platformShare = totalBps == 0 ? 0 : (feeAmount * platformBps) / totalBps;
uint256 creatorShare = feeAmount - platformShare;
// ACCRUE ONLY — no external call in the swap path (review H-1). A push to a treasury or splitter
// that reverted would brick ALL trading; accrual makes that impossible. Both balances are pulled
// later via withdrawTreasury() / settleCreator(), which anyone may call.
if (platformShare > 0) treasuryAccrued += platformShare;
if (creatorShare > 0) creatorAccrued[token] += creatorShare;
emit FeeCharged(PoolId.unwrap(_toId(key)), token, isBuy, feeAmount, platformShare, creatorShare);
}
/// No fee on the pool's launch block (the atomic dev-buy is free).
function _noFee(PoolKey calldata key) private view returns (bool) {
return block.number == poolDeploymentBlock[PoolId.unwrap(_toId(key))];
}
/// Token is the non-ETH currency; our pools always have currency0 == native ETH.
function _token(PoolKey calldata key) private pure returns (address) {
if (Currency.unwrap(key.currency0) == address(0)) return Currency.unwrap(key.currency1);
if (Currency.unwrap(key.currency1) == address(0)) return Currency.unwrap(key.currency0);
return address(0);
}
function _isBuy(PoolKey calldata key, IPoolManager.SwapParams calldata params) private pure returns (bool) {
// buy = acquiring the token with ETH. ETH is currency0 ⇒ zeroForOne is a buy.
return Currency.unwrap(key.currency0) == address(0) ? params.zeroForOne : !params.zeroForOne;
}
function _toId(PoolKey calldata key) private pure returns (PoolId) {
return PoolId.wrap(keccak256(abi.encode(key)));
}
receive() external payable { }
}[
{
"type": "constructor",
"inputs": [
{
"name": "_poolManager",
"type": "address",
"internalType": "contract IPoolManager"
},
{
"name": "treasury_",
"type": "address",
"internalType": "address"
},
{
"name": "splitter_",
"type": "address",
"internalType": "address"
},
{
"name": "wirer_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "HookNotImplemented",
"type": "error",
"inputs": []
},
{
"name": "NotPoolManager",
"type": "error",
"inputs": []
},
{
"name": "CreatorSettled",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FeeCharged",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "isBuy",
"type": "bool",
"indexed": false,
"internalType": "bool"
},
{
"name": "feeAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "platformShare",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "creatorShare",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Graduated",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tick",
"type": "int24",
"indexed": false,
"internalType": "int24"
}
],
"anonymous": false
},
{
"name": "LaunchRegistered",
"type": "event",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "graduationTick",
"type": "int24",
"indexed": false,
"internalType": "int24"
}
],
"anonymous": false
},
{
"name": "TreasuryWithdrawn",
"type": "event",
"inputs": [
{
"name": "treasury",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TOTAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "afterAddLiquidity",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "params",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct IPoolManager.ModifyLiquidityParams"
},
{
"name": "delta",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "feesAccrued",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
}
],
"stateMutability": "nonpayable"
},
{
"name": "afterDonate",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "amount0",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amount1",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "afterInitialize",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "sqrtPriceX96",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "tick",
"type": "int24",
"internalType": "int24"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "afterRemoveLiquidity",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "params",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct IPoolManager.ModifyLiquidityParams"
},
{
"name": "delta",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "feesAccrued",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
}
],
"stateMutability": "nonpayable"
},
{
"name": "afterSwap",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "params",
"type": "tuple",
"components": [
{
"name": "zeroForOne",
"type": "bool",
"internalType": "bool"
},
{
"name": "amountSpecified",
"type": "int256",
"internalType": "int256"
},
{
"name": "sqrtPriceLimitX96",
"type": "uint160",
"internalType": "uint160"
}
],
"internalType": "struct IPoolManager.SwapParams"
},
{
"name": "delta",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int128",
"internalType": "int128"
}
],
"stateMutability": "nonpayable"
},
{
"name": "beforeAddLiquidity",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "params",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct IPoolManager.ModifyLiquidityParams"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "beforeDonate",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "amount0",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amount1",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "beforeInitialize",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "sqrtPriceX96",
"type": "uint160",
"internalType": "uint160"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "beforeRemoveLiquidity",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "params",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct IPoolManager.ModifyLiquidityParams"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "nonpayable"
},
{
"name": "beforeSwap",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"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": "params",
"type": "tuple",
"components": [
{
"name": "zeroForOne",
"type": "bool",
"internalType": "bool"
},
{
"name": "amountSpecified",
"type": "int256",
"internalType": "int256"
},
{
"name": "sqrtPriceLimitX96",
"type": "uint160",
"internalType": "uint160"
}
],
"internalType": "struct IPoolManager.SwapParams"
},
{
"name": "hookData",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int256",
"internalType": "BeforeSwapDelta"
},
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "nonpayable"
},
{
"name": "creatorAccrued",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "deployer",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "feeFor",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "mcapWei",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "totalBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "platformBps",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getHookPermissions",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "beforeInitialize",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterInitialize",
"type": "bool",
"internalType": "bool"
},
{
"name": "beforeAddLiquidity",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterAddLiquidity",
"type": "bool",
"internalType": "bool"
},
{
"name": "beforeRemoveLiquidity",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterRemoveLiquidity",
"type": "bool",
"internalType": "bool"
},
{
"name": "beforeSwap",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterSwap",
"type": "bool",
"internalType": "bool"
},
{
"name": "beforeDonate",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterDonate",
"type": "bool",
"internalType": "bool"
},
{
"name": "beforeSwapReturnDelta",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterSwapReturnDelta",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterAddLiquidityReturnDelta",
"type": "bool",
"internalType": "bool"
},
{
"name": "afterRemoveLiquidityReturnDelta",
"type": "bool",
"internalType": "bool"
}
],
"internalType": "struct Hooks.Permissions"
}
],
"stateMutability": "pure"
},
{
"name": "launches",
"type": "function",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "exists",
"type": "bool",
"internalType": "bool"
},
{
"name": "graduated",
"type": "bool",
"internalType": "bool"
},
{
"name": "graduationTick",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "marketCapWei",
"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": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "poke",
"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": [],
"stateMutability": "nonpayable"
},
{
"name": "poolDeploymentBlock",
"type": "function",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "poolManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "poolTierCount",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "poolTiers",
"type": "function",
"inputs": [
{
"name": "poolId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "tuple[]",
"components": [
{
"name": "mcapThresholdWei",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "totalBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "platformBps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct HoodsHook.FeeTier[]"
}
],
"stateMutability": "view"
},
{
"name": "registerLaunch",
"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": "graduationTick",
"type": "int24",
"internalType": "int24"
},
{
"name": "tiers",
"type": "tuple[]",
"components": [
{
"name": "mcapThresholdWei",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "totalBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "platformBps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct HoodsHook.FeeTier[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFactory",
"type": "function",
"inputs": [
{
"name": "factory_",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "settleCreator",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "splitter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IHoodsSplitter"
}
],
"stateMutability": "view"
},
{
"name": "treasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "treasuryAccrued",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "withdrawTreasury",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8063036089b31461124457806303b37bb61461121a578063166bab951461112257806321d0ee70146110b2578063249d39e914611106578063259982e5146110b257806338e61cbc1461108f5780633cd8045e1461104b578063575e24b414610f985780635bb4780814610ea05780635ed536c214610e6857806361d027b314610e245780636c2bbe7e14610d305780636fe7e6eb14610dac578063902d55a514610d865780639f063efc14610d305780639f6a4d5c14610d17578063ad09123014610cce578063b47b2fb114610c21578063b6a8b0fa14610861578063c45a015514610bf9578063c4e833ce14610a8f578063cc27900914610a72578063d55be8c614610a57578063d5f3948814610a13578063dc4c90d3146109cf578063dc98354e146108c5578063e1b4af6914610861578063e512650114610838578063e8f159171461072e578063e96c77fa1461027b5763f257854314610185575061000e565b34610277576020366003190112610277576001600160a01b036101a6611271565b16805f52600260205260405f20546101bf8115156114e8565b5f828152600260205260408120557f0000000000000000000000003df453fd38bb2f35f6e47e9dae129a8a01c1c5f26001600160a01b0316803b15610277575f82916024604051809481936301aba89b60e71b83528860048401525af1801561026c57610256575b5060207fbe626d3764016f7a25b8aabe47969200084cba5e0bd54bc1eb16340eab73435691604051908152a280f35b6102639193505f90611555565b5f916020610227565b6040513d5f823e3d90fd5b5f80fd5b3461027757366003190160e081126102775760a0136102775760a4358060020b8091036102775760c4356001600160401b0381116102775736602382011215610277578060040135906001600160401b0382116102775760248101906024369160608502010111610277576003546001600160a01b031633036106fb5760405160208101906004356001600160a01b038116908190036102775782526024356001600160a01b0381169081900361027757604082015260443562ffffff81168091036102775760608201526064358060020b8091036102775760808201526084356001600160a01b038116908190036102775760a082015260a0815261038260c082611555565b51902091825f52600460205260ff60405f2054166106c9578015610696575f198101818111915f9190825b8181106104585787876040516103c28161153a565b600181525f60208083018281526040808501878152868552600484529320935184549151935160101b64ffffff00001661ff0094151560081b9490941690151560ff1664ffffffffff199092169190911717919091179091557fcd665c043a1f7f71dff7110d865543c537e8b327edfb460461fe61fbe1350311906001600160a01b0361044d612000565b1693604051908152a3005b606461ffff610473602061046d85878c61167a565b0161168a565b161161066657610489604061046d83858a61167a565b61ffff8061049d602061046d86888d61167a565b1691161161062e578461061a578281106105a5575b865f525f60205260405f20906104c981848961167a565b91805468010000000000000000811015610591576104ec9160018201815561142c565b61057e57826001600160801b03610504600195611699565b1690825491806001600160801b0319841617845561ffff60801b61052a6020840161168a565b60801b1691828271ffffffffffffffffffffffffffffffffffff1986161717855561055d604061ffff60901b920161168a565b60901b16926bffffffffffffffffffffffff60a01b161717179055016103ad565b634e487b7160e01b5f525f60045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b926001600160801b036105c16105bc86858a61167a565b611699565b1611156105e5576001600160801b036105de6105bc85848961167a565b16926104b2565b60405162461bcd60e51b815260206004820152600d60248201526c6e6f7420617363656e64696e6760981b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152601060248201526f1c1b185d199bdc9b480f881d1bdd185b60821b6044820152606490fd5b60405162461bcd60e51b8152602060048201526008602482015267666565203e20312560c01b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a656d70747920746965727360a81b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152691c9959da5cdd195c995960b21b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a6e6f7420666163746f727960a81b6044820152606490fd5b34610277576020366003190112610277576004355f525f60205260405f208054906001600160401b038211610591576040519161077160208260051b0184611555565b8083526020830180925f5260205f205f915b8383106107f4578486604051918291602083019060208452518091526040830191905f5b8181106107b5575050500390f35b919350916020606060019261ffff604088516001600160801b0381511684528286820151168685015201511660408201520194019101918493926107a7565b6001602081926040516108068161153a565b61ffff86546001600160801b0381168352818160801c168584015260901c166040820152815201920192019190610783565b34610277576020366003190112610277576004355f525f602052602060405f2054604051908152f35b346102775761086f366113c8565b5050507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b0316330392506108b691505057630a85dc2960e01b5f5260045ffd5b63570c108560e11b5f5260045ffd5b346102775760e0366003190112610277576108de611271565b5060a0366023190112610277576108f3611394565b507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b031633036108b65760405160208101906024356001600160a01b038116908190036102775782526044356001600160a01b0381169081900361027757604082015260643562ffffff81168091036102775760608201526084358060020b80910361027757608082015260a4356001600160a01b038116908190036102775760a082015260a081526109ae60c082611555565b5190205f5260056020524360405f20556020604051636e4c1aa760e11b8152f35b34610277575f366003190112610277576040517f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03168152602090f35b34610277575f366003190112610277576040517f000000000000000000000000e86ad7a92e1eec2ea851fb25c53db7bc470393a36001600160a01b03168152602090f35b34610277575f36600319011261027757602060405160648152f35b34610277575f366003190112610277576020600154604051908152f35b34610277575f366003190112610277575f6101a0604051610aaf8161151e565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c06020604051610b128161151e565b60018152818101905f8252604081015f8152606082015f8152608083015f815260a084015f815260c085016001815260e0860190600182526101008701925f84526101208801945f8652610140890196600188526101608a019860018a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b34610277575f366003190112610277576003546040516001600160a01b039091168152602090f35b346102775761016036600319011261027757610c3b611271565b5060a03660231901126102775760603660c319011261027757610144356001600160401b03811161027757610c7490369060040161129b565b50507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b031633036108b6576040610cb461012435611cc9565b82516001600160e01b03199092168252600f0b6020820152f35b34610277576020366003190112610277576004355f526004602052606060405f20546040519060ff81161515825260ff8160081c161515602083015260101c60020b6040820152f35b346102775760a036600319011261027757610018611b55565b3461027757610d3e3661132b565b5050507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b0316330393506108b69250505057630a85dc2960e01b5f5260045ffd5b34610277575f3660031901126102775760206040516b033b2e3c9fd0803ce80000008152f35b346102775761010036600319011261027757610dc6611271565b5060a036602319011261027757610ddb611394565b50610de46113aa565b507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b031633036108b657630a85dc2960e01b5f5260045ffd5b34610277575f366003190112610277576040517f00000000000000000000000004abc79ce18a2dbcb4e9178492417bacaedac20e6001600160a01b03168152602090f35b34610277576020366003190112610277576001600160a01b03610e89611271565b165f526002602052602060405f2054604051908152f35b3461027757602036600319011261027757610eb9611271565b7f000000000000000000000000e86ad7a92e1eec2ea851fb25c53db7bc470393a36001600160a01b03163303610f6457600354906001600160a01b0382161580610f52575b15610f1f576001600160a01b03166001600160a01b03199190911617600355005b60405162461bcd60e51b815260206004820152600b60248201526a199858dd1bdc9e481cd95d60aa1b6044820152606490fd5b506001600160a01b0381161515610efe565b60405162461bcd60e51b815260206004820152600c60248201526b3737ba103232b83637bcb2b960a11b6044820152606490fd5b346102775761014036600319011261027757610fb2611271565b5060a03660231901126102775760603660c319011261027757610124356001600160401b03811161027757610feb90369060040161129b565b50507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b031633036108b657606062ffffff61102b61186f565b906040939293519363ffffffff60e01b1684526020840152166040820152f35b34610277575f366003190112610277576040517f0000000000000000000000003df453fd38bb2f35f6e47e9dae129a8a01c1c5f26001600160a01b03168152602090f35b346102775760a03660031901126102775760206110aa6115ff565b604051908152f35b34610277576110c0366112c8565b5050507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b0316330391506108b6905057630a85dc2960e01b5f5260045ffd5b34610277575f3660031901126102775760206040516127108152f35b34610277575f366003190112610277576001546111408115156114e8565b5f60018190557f00000000000000000000000004abc79ce18a2dbcb4e9178492417bacaedac20e6001600160a01b0316919080808084865af13d15611215573d6001600160401b03811161059157604051906111a6601f8201601f191660200183611555565b81525f60203d92013e5b156111e25760207f41fdd680478135993bc53fb2ffaf9560951b57ef62ff6badd02b61e018b4f17f91604051908152a2005b60405162461bcd60e51b815260206004820152600b60248201526a1cd95b990819985a5b195960aa1b6044820152606490fd5b6111b0565b34610277576020366003190112610277576004355f526005602052602060405f2054604051908152f35b34610277576040366003190112610277576040611265602435600435611455565b82519182526020820152f35b600435906001600160a01b038216820361027757565b35906001600160a01b038216820361027757565b9181601f84011215610277578235916001600160401b038311610277576020838186019501011161027757565b90610160600319830112610277576004356001600160a01b0381168103610277579160a060231982011261027757602491608060c3198301126102775760c49161014435906001600160401b038211610277576113279160040161129b565b9091565b906101a0600319830112610277576004356001600160a01b0381168103610277579160a060231982011261027757602491608060c3198301126102775760c4916101443591610164359161018435906001600160401b038211610277576113279160040161129b565b60c435906001600160a01b038216820361027757565b60e435908160020b820361027757565b35908160020b820361027757565b610120600319820112610277576004356001600160a01b0381168103610277579160a06023198301126102775760249160c4359160e4359161010435906001600160401b038211610277576113279160040161129b565b9190820391821161061a57565b8054821015611441575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b5f525f60205260405f20908154905f8019830190838211905b848110611481575050505050505f905f90565b8161061a5782811480156114cb575b61149c5760010161146e565b91505061ffff8093506114c292506114b68286979661142c565b505460801c169461142c565b505460901c1690565b506001600160801b036114de828861142c565b5054168410611490565b156114ef57565b60405162461bcd60e51b81526020600482015260076024820152666e6f7468696e6760c81b6044820152606490fd5b6101c081019081106001600160401b0382111761059157604052565b606081019081106001600160401b0382111761059157604052565b90601f801991011681019081106001600160401b0382111761059157604052565b359062ffffff8216820361027757565b91908260a09103126102775760405160a081018181106001600160401b038211176105915760405260806115fa8183956115bf81611287565b85526115cd60208201611287565b60208601526115de60408201611576565b60408601526115ef606082016113ba565b606086015201611287565b910152565b61163660a061160f366004611586565b207f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516116ad565b5050506001600160a01b031680156116655761165461166291611766565b61165d81611775565b6117e1565b90565b505f90565b60a061160f611636923690611586565b9190811015611441576060020190565b3561ffff811681036102775790565b356001600160801b03811681036102775790565b919060209060405182810191825260066040820152604081526116d1606082611555565b519020604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa91821561026c575f92611732575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d60201161175e575b8161174e60209383611555565b810103126102775751905f61170a565b3d9150611741565b801561027757600160c01b0490565b806b033b2e3c9fd0803ce800000002905f19816b033b2e3c9fd0803ce80000000990828083109203918083039283600160601b111561027757146117d957600160601b906b033b2e3c9fd0803ce80000000990828211900360a01b910360601c1790565b505060601c90565b81810291905f1982820991838084109303928084039384600160601b1115610277571461182157600160601b910990828211900360a01b910360601c1790565b50505060601c90565b8181029291811591840414171561061a57565b8115611847570490565b634e487b7160e01b5f52601260045260245ffd5b356001600160a01b03811681036102775790565b611879602461205b565b6001600160a01b0316905f908215611b44576118956024611f72565b5f52600460205260ff60405f20541615611b44576118b36024611c10565b602435926001600160a01b0384168403610277576001600160a01b038416611b325760c4358015158103610277575b60e435905f8212818215611b2b575b15611ae65781611ade575b5015611aca57600160ff1b811461061a576119176024611f72565b5f52600560205260405f20544314611aca576119589061271061194d61193d6024611f72565b611947602461166a565b90611455565b939080935f0361182a565b04958615611ab4576001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409518116908216820361027757803b1561027757604051630b0d9c0960e01b81526001600160a01b03929092166004830152306024830152604482018890525f908290606490829084905af1801561026c57611a9f575b5080611a88575050825b7f25c7ef961c4bb06770e7b0b9ba21ed53144994d8d1ce151aac01dbf6379e48a06080611a15838861141f565b9280611a74575b83611a56575b611a2c6024611f72565b93604051916001835289602084015260408301526060820152a36315d7892d60e21b9260801b9190565b848752600260205260408720611a6d8582546120bc565b9055611a22565b611a80816001546120bc565b600155611a1c565b611a95611a9a928761182a565b61183d565b6119e8565b611aac9195505f90611555565b5f935f6119de565b506315d7892d60e21b95505f9450849392505050565b506315d7892d60e21b93505f925082919050565b90505f6118fc565b60405162461bcd60e51b815260206004820152601d60248201527f65786163744f75747075742073656c6c7320756e737570706f727465640000006044820152606490fd5b50806118f1565b60c435801515810361027757156118e2565b6315d7892d60e21b92505f91508190565b611b5f6004611f72565b805f52600460205260405f209081549160ff8316158015611c03575b611bfe57611b8f60a061160f366004611586565b5050905060020b928060101c60020b841315611bac575b50505050565b61ff0019166101001790557f7faba6275a00bd56b131549397e73ec78e166dfe1c3086f03b0fa36860a6c18360206001600160a01b03611bec600461205b565b1693604051908152a35f808080611ba6565b505050565b5060ff8360081c16611b7b565b611c1981611f72565b805f52600460205260405f20805460ff8116158015611cbc575b611ba657611c4660a061160f3687611586565b5050905060020b938160101c60020b851315611c64575b5050505050565b61ff0019909116610100179091557f7faba6275a00bd56b131549397e73ec78e166dfe1c3086f03b0fa36860a6c183906020906001600160a01b0390611ca99061205b565b1693604051908152a35f80808080611c5d565b5060ff8160081c16611c33565b90611cd4602461205b565b6001600160a01b03165f8115611f6157611cee6024611f72565b5f52600460205260ff60405f20541615611f6157611d0c6024611c10565b602435936001600160a01b0385168503610277576001600160a01b038516611f4f5760c4358015158103610277575b15155f60e4351214611f385760801d600f0b5f811215611f4a576f7fffffffffffffffffffffffffffffff19811461061a575f03600f0b5b611d7d6024611f72565b5f52600560205260405f20544314611f3857611dac90612710611da361193d6024611f72565b9390809361182a565b04958615611f24576001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409518116908216820361027757803b1561027757604051630b0d9c0960e01b81526001600160a01b03929092166004830152306024830152604482018890525f908290606490829084905af1801561026c57611f0f575b5080611ed85750507f25c7ef961c4bb06770e7b0b9ba21ed53144994d8d1ce151aac01dbf6379e48a06080825b611e69848861141f565b84611ec4575b80611ea6575b611e7f6024611f72565b9460405192835288602084015260408301526060820152a363b47b2fb160e01b91600f0b90565b858252600260205260408220611ebd8282546120bc565b9055611e75565b611ed0856001546120bc565b600155611e6f565b611f09608091611a957f25c7ef961c4bb06770e7b0b9ba21ed53144994d8d1ce151aac01dbf6379e48a0948961182a565b92611e5f565b611f1c9193505f90611555565b5f915f611e32565b5063b47b2fb160e01b95505f949350505050565b5063b47b2fb160e01b93505f92915050565b611d73565b60c43580151581036102775715611d3b565b5063b47b2fb160e01b92505f919050565b60405160208101916001600160a01b03611f8b82611287565b1683526001600160a01b03611fa260208301611287565b16604083015262ffffff611fb860408301611576565b166060830152611fca606082016113ba565b60020b6080830152611fe5608060018060a01b039201611287565b1660a082015260a08152611ffa60c082611555565b51902090565b6004356001600160a01b03811690818103610277578115612040576024356001600160a01b0381169081810361027757501561203c5750505f90565b5090565b50506024356001600160a01b03811690818103610277575090565b6001600160a01b0361206c8261185b565b16156120a7576001600160a01b036120866020830161185b565b161561209157505f90565b6001600160a01b03906120a39061185b565b1690565b6001600160a01b03906120a39060200161185b565b9190820180921161061a5756fea2646970667358221220dd6008cfc5230b85a0694f0d6737346165279b3d980e37788f960bbcd80d87b064736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xe59da2…8360fa | 1 day agoFri, 14 Aug 2026 23:58:50 UTC | 0xbe626d…4356 | [0] 0x000000000000…7c249999 data: 0x000000000000000000…17eee000 |
| 0xf765be…0921d6 | 1 day agoFri, 14 Aug 2026 23:58:49 UTC | 0x41fdd6…f17f | [0] 0x000000000000…aedac20e data: 0x000000000000000000…23e65000 |
| 0xc7ebd1…febe2e | 1 day agoFri, 14 Aug 2026 23:58:41 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…17eee000 |
| 0x3ba16c…06190d | 1 day agoFri, 14 Aug 2026 21:02:44 UTC | 0xbe626d…4356 | [0] 0x000000000000…7c249999 data: 0x000000000000000000…9d913fc6 |
| 0xf8e538…faad52 | 1 day agoFri, 14 Aug 2026 21:02:43 UTC | 0x41fdd6…f17f | [0] 0x000000000000…aedac20e data: 0x000000000000000000…ec59dfa7 |
| 0xa829aa…8dcb1d | 1 day agoFri, 14 Aug 2026 20:58:28 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…9d913fc6 |
| 0xe3c18c…c3bdd5 | 1 day agoFri, 14 Aug 2026 20:32:00 UTC | 0xbe626d…4356 | [0] 0x000000000000…7c249999 data: 0x000000000000000000…f77c3ce7 |
| 0xda4664…3151cb | 1 day agoFri, 14 Aug 2026 20:32:00 UTC | 0x41fdd6…f17f | [0] 0x000000000000…aedac20e data: 0x000000000000000000…733a5b52 |
| 0xf46d1f…243278 | 1 day agoFri, 14 Aug 2026 20:28:44 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…ec5c518c |
| 0x3323ef…818139 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…e046f815 |
| 0x443c13…4dd819 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…ee237c9e |
| 0x71af75…488463 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…bb9d325f |
| 0xda16fe…54303d | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…bb0b57d5 |
| 0x2dfbb0…5516c2 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…c60cec74 |
| 0xec2f7d…54fc5d | 1 day agoFri, 14 Aug 2026 20:21:00 UTC | 0xbe626d…4356 | [0] 0x000000000000…7c249999 data: 0x000000000000000000…1c9b40d4 |
| 0xefcacc…487d84 | 1 day agoFri, 14 Aug 2026 20:20:59 UTC | 0x41fdd6…f17f | [0] 0x000000000000…aedac20e data: 0x000000000000000000…aae8e13b |
| 0x2fd6cb…4622d4 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…71297462 |
| 0x8fb013…738296 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…d93edf7c |
| 0xde9772…b42f98 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…e580c72c |
| 0x289593…419c07 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…ecb225ca |
| 0xa17376…74c422 | 1 day agoFri, 14 Aug 2026 20:05:16 UTC | 0xbe626d…4356 | [0] 0x000000000000…7c249999 data: 0x000000000000000000…d30fae29 |
| 0xc16c13…6e9d8c | 1 day agoFri, 14 Aug 2026 20:05:15 UTC | 0x41fdd6…f17f | [0] 0x000000000000…aedac20e data: 0x000000000000000000…3c97853a |
| 0x7dd362…8a3dda | 1 day agoFri, 14 Aug 2026 20:04:00 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…7a04fe29 |
| 0x949eae…d2b0a0 | 1 day agoFri, 14 Aug 2026 20:04:00 UTC | 0x25c7ef…48a0 | [0] 0xc144c9187c07…b97303e1 [1] 0x000000000000…7c249999 data: 0x000000000000000000…590ab000 |
| 0xe737ad…9f8ea3 | 1 day agoFri, 14 Aug 2026 19:54:22 UTC | 0xbe626d…4356 | [0] 0x000000000000…7c249999 data: 0x000000000000000000…e47e6800 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe59da2…8360fa | settleCreator | 36,666,297 | 1 day agoFri, 14 Aug 2026 23:58:50 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000168 | |
| 0xf765be…0921d6 | withdrawTreasury | 36,666,289 | 1 day agoFri, 14 Aug 2026 23:58:49 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000126 | |
| 0x3ba16c…06190d | settleCreator | 36,560,714 | 1 day agoFri, 14 Aug 2026 21:02:44 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000170 | |
| 0xf8e538…faad52 | withdrawTreasury | 36,560,705 | 1 day agoFri, 14 Aug 2026 21:02:43 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000127 | |
| 0xe3c18c…c3bdd5 | settleCreator | 36,542,313 | 1 day agoFri, 14 Aug 2026 20:32:00 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000168 | |
| 0xda4664…3151cb | withdrawTreasury | 36,542,307 | 1 day agoFri, 14 Aug 2026 20:32:00 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000125 | |
| 0xec2f7d…54fc5d | settleCreator | 36,535,734 | 1 day agoFri, 14 Aug 2026 20:21:00 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000167 | |
| 0xefcacc…487d84 | withdrawTreasury | 36,535,725 | 1 day agoFri, 14 Aug 2026 20:20:59 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000126 | |
| 0xa17376…74c422 | settleCreator | 36,526,310 | 1 day agoFri, 14 Aug 2026 20:05:16 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000168 | |
| 0xc16c13…6e9d8c | withdrawTreasury | 36,526,298 | 1 day agoFri, 14 Aug 2026 20:05:15 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000126 | |
| 0xe737ad…9f8ea3 | settleCreator | 36,519,790 | 1 day agoFri, 14 Aug 2026 19:54:22 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000171 | |
| 0xd53550…48ee67 | withdrawTreasury | 36,519,764 | 1 day agoFri, 14 Aug 2026 19:54:21 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000126 | |
| 0xa040ed…2427a4 | settleCreator | 36,498,020 | 1 day agoFri, 14 Aug 2026 19:18:02 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000170 | |
| 0x3a48e5…a95920 | withdrawTreasury | 36,498,011 | 1 day agoFri, 14 Aug 2026 19:18:02 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000128 | |
| 0x2ed5d5…c581b9 | settleCreator | 36,494,777 | 1 day agoFri, 14 Aug 2026 19:12:39 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000171 | |
| 0xa9e37d…c2d922 | withdrawTreasury | 36,494,770 | 1 day agoFri, 14 Aug 2026 19:12:38 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000126 | |
| 0x64585e…ef7593 | settleCreator | 36,491,772 | 1 day agoFri, 14 Aug 2026 19:07:38 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000171 | |
| 0x025789…c5855a | withdrawTreasury | 36,491,764 | 1 day agoFri, 14 Aug 2026 19:07:38 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000129 | |
| 0x53227f…ddfbd6 | settleCreator | 36,488,558 | 1 day agoFri, 14 Aug 2026 19:02:18 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000168 | |
| 0x09222b…4f9410 | withdrawTreasury | 36,488,547 | 1 day agoFri, 14 Aug 2026 19:02:16 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000128 | |
| 0xdd2000…c8d3b3 | settleCreator | 36,485,049 | 1 day agoFri, 14 Aug 2026 18:56:27 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000168 | |
| 0x5bd8f7…b6978d | withdrawTreasury | 36,485,044 | 1 day agoFri, 14 Aug 2026 18:56:26 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000127 | |
| 0xca7512…2764a5 | settleCreator | 36,478,903 | 1 day agoFri, 14 Aug 2026 18:46:11 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000173 | |
| 0xecd338…cecc05 | withdrawTreasury | 36,478,894 | 1 day agoFri, 14 Aug 2026 18:46:10 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000131 | |
| 0x879615…b14472 | settleCreator | 36,475,318 | 1 day agoFri, 14 Aug 2026 18:40:13 UTC | 0x57d9…07ba | IN | HoodsHook | $0.000 ETH | 0.00000168 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 36,940,871 | 18 hrs agoSat, 15 Aug 2026 07:37:50 UTC | 0xc3976d…2588b3 | CALL | Transfer | 0x06c0…a0cc | OUT | 0x3df4…c5f2 | 0.00003 ETH |
| 36,940,864 | 18 hrs agoSat, 15 Aug 2026 07:37:49 UTC | 0xf62405…855538 | CALL | Transfer | 0x06c0…a0cc | OUT | 0x04ab…c20e | 0.00005 ETH |
| 36,938,922 | 18 hrs agoSat, 15 Aug 2026 07:34:34 UTC | 0x52cdf3…693937 | CALL | Transfer | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00009 ETH |
| 36,666,297 | 1 day agoFri, 14 Aug 2026 23:58:50 UTC | 0xe59da2…8360fa | CALL | settleCreator | 0x06c0…a0cc | OUT | 0x3df4…c5f2 | 0.00003 ETH |
| 36,666,289 | 1 day agoFri, 14 Aug 2026 23:58:49 UTC | 0xf765be…0921d6 | CALL | withdrawTreasury | 0x06c0…a0cc | OUT | 0x04ab…c20e | 0.00005 ETH |
| 36,666,208 | 1 day agoFri, 14 Aug 2026 23:58:41 UTC | 0xc7ebd1…febe2e | CALL | swap | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00009 ETH |
| 36,560,714 | 1 day agoFri, 14 Aug 2026 21:02:44 UTC | 0x3ba16c…06190d | CALL | settleCreator | 0x06c0…a0cc | OUT | 0x3df4…c5f2 | 0.00002 ETH |
| 36,560,705 | 1 day agoFri, 14 Aug 2026 21:02:43 UTC | 0xf8e538…faad52 | CALL | withdrawTreasury | 0x06c0…a0cc | OUT | 0x04ab…c20e | 0.00003 ETH |
| 36,558,169 | 1 day agoFri, 14 Aug 2026 20:58:28 UTC | 0xa829aa…8dcb1d | CALL | swap | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00005 ETH |
| 36,542,313 | 1 day agoFri, 14 Aug 2026 20:32:00 UTC | 0xe3c18c…c3bdd5 | CALL | settleCreator | 0x06c0…a0cc | OUT | 0x3df4…c5f2 | 0.00056 ETH |
| 36,542,307 | 1 day agoFri, 14 Aug 2026 20:32:00 UTC | 0xda4664…3151cb | CALL | withdrawTreasury | 0x06c0…a0cc | OUT | 0x04ab…c20e | 0.00084 ETH |
| 36,540,359 | 1 day agoFri, 14 Aug 2026 20:28:44 UTC | 0xf46d1f…243278 | CALL | Execute | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00114 ETH |
| 36,539,830 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x3323ef…818139 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00007 ETH |
| 36,539,828 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x443c13…4dd819 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00005 ETH |
| 36,539,828 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x71af75…488463 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00005 ETH |
| 36,539,828 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0xda16fe…54303d | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00003 ETH |
| 36,539,828 | 1 day agoFri, 14 Aug 2026 20:27:51 UTC | 0x2dfbb0…5516c2 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00002 ETH |
| 36,535,734 | 1 day agoFri, 14 Aug 2026 20:21:00 UTC | 0xec2f7d…54fc5d | CALL | settleCreator | 0x06c0…a0cc | OUT | 0x3df4…c5f2 | 0.00031 ETH |
| 36,535,725 | 1 day agoFri, 14 Aug 2026 20:20:59 UTC | 0xefcacc…487d84 | CALL | withdrawTreasury | 0x06c0…a0cc | OUT | 0x04ab…c20e | 0.00047 ETH |
| 36,533,768 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x2fd6cb…4622d4 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00023 ETH |
| 36,533,768 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x8fb013…738296 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00026 ETH |
| 36,533,766 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0xde9772…b42f98 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00013 ETH |
| 36,533,766 | 1 day agoFri, 14 Aug 2026 20:17:44 UTC | 0x289593…419c07 | CALL | axiomTrade | 0x8366…0951 | IN | 0x06c0…a0cc | 0.00016 ETH |
| 36,526,310 | 1 day agoFri, 14 Aug 2026 20:05:16 UTC | 0xa17376…74c422 | CALL | settleCreator | 0x06c0…a0cc | OUT | 0x3df4…c5f2 | 0.00008 ETH |
| 36,526,298 | 1 day agoFri, 14 Aug 2026 20:05:15 UTC | 0xc16c13…6e9d8c | CALL | withdrawTreasury | 0x06c0…a0cc | OUT | 0x04ab…c20e | 0.00012 ETH |