// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {Ownable} from "openzeppelin-contracts/access/Ownable.sol";
import {ReentrancyGuard} from "openzeppelin-contracts/utils/ReentrancyGuard.sol";
import {Math} from "openzeppelin-contracts/utils/math/Math.sol";
import {XToken} from "./XToken.sol";
interface INonfungiblePositionManager {
struct MintParams {
address token0;
address token1;
uint24 fee;
int24 tickLower;
int24 tickUpper;
uint256 amount0Desired;
uint256 amount1Desired;
uint256 amount0Min;
uint256 amount1Min;
address recipient;
uint256 deadline;
}
struct CollectParams {
uint256 tokenId;
address recipient;
uint128 amount0Max;
uint128 amount1Max;
}
function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96)
external
payable
returns (address pool);
function mint(MintParams calldata params)
external
payable
returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
function collect(CollectParams calldata params)
external
payable
returns (uint256 amount0, uint256 amount1);
}
interface IWETH9 {
function deposit() external payable;
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function balanceOf(address owner) external view returns (uint256);
}
interface IAmmConfig {
function ammConfig() external view returns (address positionManager, address weth);
}
interface IUniswapV3PoolMinimal {
function slot0()
external
view
returns (uint160 sqrtPriceX96, int24, uint16, uint16, uint16, uint8, bool);
}
/// @title XCurve — pump.fun-style bonding curve, the token's sole venue until graduation
/// @notice Constant-product curve with a virtual ETH reserve:
/// (virtualEth + ethReserve) * tokenReserve >= k, k = virtualEth * SALE_SUPPLY.
/// The X bot's backend calls buy/sell from users' embedded wallets; peer-to-peer
/// transfers are blocked by XToken until graduation, so this contract is the only
/// place the token can change hands — and it is only reachable through X.
/// When the real ETH reserve hits `graduationEth`, the token graduates: the
/// transfer restriction lifts, the curve closes, and `migrate` moves the reserve
/// plus LP_SUPPLY into an AMM pool (LP tokens are burned to the dead address).
/// @dev Rounding always favors the protocol (ceilDiv on the invariant term), so the
/// curve can never be drained below its books by buy/sell roundtrips.
contract XCurve is Ownable, ReentrancyGuard {
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 ether; // 1B tokens
uint256 public constant SALE_SUPPLY = 800_000_000 ether; // 80% sold on the curve
uint256 public constant LP_SUPPLY = TOTAL_SUPPLY - SALE_SUPPLY; // 20% seeds the AMM
uint256 public constant FEE_BPS = 100; // 总手续费 1%
uint256 public constant CREATOR_FEE_BPS = 50; // 其中一半分给代币创建者(Bankr/Clanker 式激励)
uint256 private constant BPS = 10_000;
uint256 public constant MAX_BUY_BPS = 200; // 内盘单笔买入上限:总供应量的 2%(防狙击)
uint256 public constant MAX_BUY_TOKENS = (TOTAL_SUPPLY * MAX_BUY_BPS) / 10_000;
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
XToken public immutable token;
address public immutable treasury;
address public immutable creator;
address public immutable factory; // 部署本曲线的工厂,外盘 AMM 配置的来源
uint256 public immutable virtualEth;
uint256 public immutable graduationEth;
uint256 private immutable k;
uint256 public ethReserve; // real ETH backing the curve (fees excluded)
uint256 public tokenReserve; // unsold portion of SALE_SUPPLY
bool public graduated;
// ---- 外盘(Uniswap V3)锁仓仓位:本合约无任何撤池函数,本金永久锁死 ----
uint24 public constant LP_FEE_TIER = 10_000; // 1% 池(meme 常规档)
int24 private constant TICK_LOWER = -887_200; // 全区间(tier 10000 的 spacing=200)
int24 private constant TICK_UPPER = 887_200;
address public positionManager;
address public weth;
uint256 public lpTokenId; // 非 0 即已迁移
event Bought(address indexed buyer, uint256 ethIn, uint256 fee, uint256 tokensOut, uint256 refund);
event Sold(address indexed seller, uint256 tokensIn, uint256 fee, uint256 ethOut);
event GraduatedAt(uint256 ethReserve, uint256 unsoldTokens);
event Migrated(address indexed positionManager, uint256 lpTokenId, uint256 ethInPool, uint256 tokensInPool);
event LpFeesCollected(address indexed caller, uint256 ethFees, uint256 tokenFees);
error CurveClosed();
error NotGraduated();
error NotMigrated();
error AlreadyMigrated();
error AmmNotConfigured();
error PoolPriceOutOfRange();
error ZeroAmount();
error Slippage();
error EthTransferFailed();
error TokenTransferFailed();
constructor(
string memory name_,
string memory symbol_,
uint256 virtualEth_,
uint256 graduationEth_,
address treasury_,
address owner_,
address creator_,
string memory metadataURI_
) Ownable(owner_) {
require(
virtualEth_ > 0 && graduationEth_ > 0 && treasury_ != address(0) && creator_ != address(0),
"bad params"
);
token = new XToken(name_, symbol_, TOTAL_SUPPLY, address(this), metadataURI_);
factory = msg.sender;
virtualEth = virtualEth_;
graduationEth = graduationEth_;
treasury = treasury_;
creator = creator_;
tokenReserve = SALE_SUPPLY;
k = virtualEth_ * SALE_SUPPLY;
}
// ---------------------------------------------------------------- views
/// @notice Tokens received for `ethIn`(gross, fee included in the input)。
/// 两道封顶,取更严者,多付部分计入 `refund` 同笔退回:
/// ① 毕业线精确压线:净流入不超过距 graduationEth 的差额(最后一单
/// 只收补线所需,毕业储备恒等于毕业线,所有代币的外盘 LP 规格一致);
/// ② 单笔限购:成交不超过总供应量的 2%。
function quoteBuy(uint256 ethIn)
public
view
returns (uint256 tokensOut, uint256 fee, uint256 refund)
{
if (graduated) return (0, 0, 0);
fee = (ethIn * FEE_BPS) / BPS;
uint256 net = ethIn - fee;
uint256 headroom = graduationEth - ethReserve; // 曲线未毕业 ⇒ 恒为正
if (net > headroom) net = headroom;
uint256 newTokenReserve = Math.ceilDiv(k, virtualEth + ethReserve + net);
tokensOut = tokenReserve > newTokenReserve ? tokenReserve - newTokenReserve : 0;
if (tokensOut > MAX_BUY_TOKENS) {
tokensOut = MAX_BUY_TOKENS;
net = Math.ceilDiv(k, tokenReserve - MAX_BUY_TOKENS) - (virtualEth + ethReserve);
}
if (net < ethIn - fee) {
// 任一封顶生效:按最终净额倒推含税总额(protocol-favoring 取整)与退款
uint256 gross = Math.ceilDiv(net * BPS, BPS - FEE_BPS);
fee = (gross * FEE_BPS) / BPS;
refund = ethIn - gross;
}
}
/// @notice ETH received for selling `tokensIn` (net of fee).
function quoteSell(uint256 tokensIn) public view returns (uint256 ethOut, uint256 fee) {
uint256 gross = (virtualEth + ethReserve) - Math.ceilDiv(k, tokenReserve + tokensIn);
fee = (gross * FEE_BPS) / BPS;
ethOut = gross - fee;
}
/// @notice Spot price in ETH per whole token, 1e18-scaled. Feeds the OG price card.
function spotPrice() external view returns (uint256) {
return ((virtualEth + ethReserve) * 1e18) / tokenReserve;
}
// -------------------------------------------------------------- trading
/// @notice Buy tokens with ETH. Called by users' embedded wallets via the X bot.
/// 单笔最多买到总供应量的 2%;多付的 ETH 在同一笔交易里退回。
function buy(uint256 minTokensOut) external payable nonReentrant returns (uint256 tokensOut) {
if (graduated) revert CurveClosed();
if (msg.value == 0) revert ZeroAmount();
uint256 fee;
uint256 refund;
(tokensOut, fee, refund) = quoteBuy(msg.value);
if (tokensOut == 0) revert ZeroAmount();
if (tokensOut < minTokensOut) revert Slippage();
uint256 charged = msg.value - refund;
ethReserve += charged - fee;
tokenReserve -= tokensOut;
_payFee(fee);
if (!token.transfer(msg.sender, tokensOut)) revert TokenTransferFailed();
if (refund > 0) _pay(msg.sender, refund);
emit Bought(msg.sender, charged, fee, tokensOut, refund);
if (ethReserve >= graduationEth) _graduate();
}
/// @notice Sell tokens back to the curve. Requires prior approval.
function sell(uint256 tokensIn, uint256 minEthOut) external nonReentrant returns (uint256 ethOut) {
ethOut = _sell(tokensIn, minEthOut);
}
/// @notice Sell in a single transaction using an EIP-2612 permit signature —
/// lets the bot backend skip the separate approve step.
function sellWithPermit(
uint256 tokensIn,
uint256 minEthOut,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external nonReentrant returns (uint256 ethOut) {
// Front-running a permit only wastes the attacker's gas; tolerate failure.
try token.permit(msg.sender, address(this), tokensIn, deadline, v, r, s) {} catch {}
ethOut = _sell(tokensIn, minEthOut);
}
function _sell(uint256 tokensIn, uint256 minEthOut) internal returns (uint256 ethOut) {
if (graduated) revert CurveClosed();
if (tokensIn == 0) revert ZeroAmount();
uint256 fee;
(ethOut, fee) = quoteSell(tokensIn);
if (ethOut < minEthOut) revert Slippage();
tokenReserve += tokensIn;
ethReserve -= ethOut + fee;
if (!token.transferFrom(msg.sender, address(this), tokensIn)) revert TokenTransferFailed();
_payFee(fee);
_pay(msg.sender, ethOut);
emit Sold(msg.sender, tokensIn, fee, ethOut);
}
// ----------------------------------------------------------- graduation
function _graduate() internal {
graduated = true;
token.graduate();
emit GraduatedAt(ethReserve, tokenReserve);
}
/// @notice 毕业后迁往外盘:**任何人可调用**(无许可,杜绝平台失联导致的永久悬置)。
/// AMM 地址读工厂统一配置;滑点下限链上自动计算;若池价被抢跑操纵至
/// 偏离毕业价 ±约2% 之外则本次回滚,等套利者拉回价格后任何人重试即可。
/// 在 Uniswap V3 开 1% 费率全区间仓位(经济学等价 V2),仓位 NFT 由本
/// 合约持有——合约不存在任何撤池函数,本金永久锁死;手续费经
/// collectLpFees() 持续领取(创建者/平台五五分)。
function migrate() external nonReentrant {
if (!graduated) revert NotGraduated();
if (lpTokenId != 0) revert AlreadyMigrated();
(address npm, address weth_) = IAmmConfig(factory).ammConfig();
if (npm == address(0) || weth_ == address(0)) revert AmmNotConfigured();
uint256 ethLp = ethReserve;
ethReserve = 0;
uint256 unsold = tokenReserve;
tokenReserve = 0;
uint256 tokenLp = (ethLp * unsold) / (virtualEth + ethLp);
positionManager = npm;
weth = weth_;
IWETH9(weth_).deposit{value: ethLp}();
IWETH9(weth_).approve(npm, ethLp);
token.approve(npm, tokenLp);
(address t0, address t1, uint256 a0, uint256 a1) = address(token) < weth_
? (address(token), weth_, tokenLp, ethLp)
: (weth_, address(token), ethLp, tokenLp);
// 目标初始价 = 毕业价(sqrt 两段计算避免 Q192 溢出,相对误差 ~1e-13)
uint160 sqrtPriceX96 = uint160((Math.sqrt(a1) * (1 << 96)) / Math.sqrt(a0));
address pool =
INonfungiblePositionManager(npm).createAndInitializePoolIfNecessary(t0, t1, LP_FEE_TIER, sqrtPriceX96);
// 池价守卫:实际池价须在毕业价 ±约2% 内(sqrt 域 ±1%),防抢跑初始化/搬价
(uint160 poolSqrtPrice,,,,,,) = IUniswapV3PoolMinimal(pool).slot0();
if (
uint256(poolSqrtPrice) < (uint256(sqrtPriceX96) * 99) / 100
|| uint256(poolSqrtPrice) > (uint256(sqrtPriceX96) * 101) / 100
) revert PoolPriceOutOfRange();
(uint256 tokenId,, uint256 out0, uint256 out1) = INonfungiblePositionManager(npm).mint(
INonfungiblePositionManager.MintParams({
token0: t0,
token1: t1,
fee: LP_FEE_TIER,
tickLower: TICK_LOWER,
tickUpper: TICK_UPPER,
amount0Desired: a0,
amount1Desired: a1,
amount0Min: (a0 * 98) / 100, // 链上自动滑点下限
amount1Min: (a1 * 98) / 100,
recipient: address(this),
deadline: block.timestamp
})
);
lpTokenId = tokenId;
// 清理:未售出/未入池代币烧毁,零头 WETH 与流浪 ETH 归金库
token.approve(npm, 0);
uint256 leftoverTokens = token.balanceOf(address(this));
if (leftoverTokens > 0 && !token.transfer(DEAD, leftoverTokens)) revert TokenTransferFailed();
uint256 leftoverWeth = IWETH9(weth_).balanceOf(address(this));
if (leftoverWeth > 0) IWETH9(weth_).transfer(treasury, leftoverWeth);
if (address(this).balance > 0) _pay(treasury, address(this).balance);
(uint256 ethInPool, uint256 tokensInPool) = t0 == weth_ ? (out0, out1) : (out1, out0);
emit Migrated(npm, tokenId, ethInPool, tokensInPool);
}
/// @notice 领取外盘 LP 手续费(任何人可触发,分配对象固定):
/// 创建者与平台金库五五分,WETH 以 ERC-20 形式发放。本金不可触碰。
function collectLpFees() external nonReentrant returns (uint256 ethFees, uint256 tokenFees) {
if (lpTokenId == 0) revert NotMigrated();
(uint256 a0, uint256 a1) = INonfungiblePositionManager(positionManager).collect(
INonfungiblePositionManager.CollectParams({
tokenId: lpTokenId,
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max
})
);
(ethFees, tokenFees) = weth < address(token) ? (a0, a1) : (a1, a0);
uint256 creatorEth = (ethFees * CREATOR_FEE_BPS) / FEE_BPS;
uint256 creatorTok = (tokenFees * CREATOR_FEE_BPS) / FEE_BPS;
if (creatorEth > 0) IWETH9(weth).transfer(creator, creatorEth);
if (ethFees - creatorEth > 0) IWETH9(weth).transfer(treasury, ethFees - creatorEth);
if (creatorTok > 0 && !token.transfer(creator, creatorTok)) revert TokenTransferFailed();
if (tokenFees - creatorTok > 0 && !token.transfer(treasury, tokenFees - creatorTok)) {
revert TokenTransferFailed();
}
emit LpFeesCollected(msg.sender, ethFees, tokenFees);
}
/// @dev Accepts refunds from the AMM router during migrate.
receive() external payable {}
function _pay(address to, uint256 amount) internal {
if (amount == 0) return;
(bool ok,) = to.call{value: amount}("");
if (!ok) revert EthTransferFailed();
}
/// @dev 手续费分账:一半给创建者,其余给平台金库。
function _payFee(uint256 fee) internal {
uint256 creatorCut = (fee * CREATOR_FEE_BPS) / FEE_BPS;
_pay(creator, creatorCut);
_pay(treasury, fee - creatorCut);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "virtualEth_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "graduationEth_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "treasury_",
"type": "address",
"internalType": "address"
},
{
"name": "owner_",
"type": "address",
"internalType": "address"
},
{
"name": "creator_",
"type": "address",
"internalType": "address"
},
{
"name": "metadataURI_",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyMigrated",
"type": "error",
"inputs": []
},
{
"name": "AmmNotConfigured",
"type": "error",
"inputs": []
},
{
"name": "CurveClosed",
"type": "error",
"inputs": []
},
{
"name": "EthTransferFailed",
"type": "error",
"inputs": []
},
{
"name": "NotGraduated",
"type": "error",
"inputs": []
},
{
"name": "NotMigrated",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "PoolPriceOutOfRange",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "Slippage",
"type": "error",
"inputs": []
},
{
"name": "TokenTransferFailed",
"type": "error",
"inputs": []
},
{
"name": "ZeroAmount",
"type": "error",
"inputs": []
},
{
"name": "Bought",
"type": "event",
"inputs": [
{
"name": "buyer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "ethIn",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensOut",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "refund",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "GraduatedAt",
"type": "event",
"inputs": [
{
"name": "ethReserve",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "unsoldTokens",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LpFeesCollected",
"type": "event",
"inputs": [
{
"name": "caller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "ethFees",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenFees",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Migrated",
"type": "event",
"inputs": [
{
"name": "positionManager",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "lpTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ethInPool",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensInPool",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Sold",
"type": "event",
"inputs": [
{
"name": "seller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokensIn",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ethOut",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "CREATOR_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "LP_FEE_TIER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "LP_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_BUY_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_BUY_TOKENS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "SALE_SUPPLY",
"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": "buy",
"type": "function",
"inputs": [
{
"name": "minTokensOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "tokensOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"name": "collectLpFees",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "ethFees",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tokenFees",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "creator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ethReserve",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "graduated",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "graduationEth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lpTokenId",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "migrate",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "quoteBuy",
"type": "function",
"inputs": [
{
"name": "ethIn",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "tokensOut",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "refund",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "quoteSell",
"type": "function",
"inputs": [
{
"name": "tokensIn",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "ethOut",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "fee",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sell",
"type": "function",
"inputs": [
{
"name": "tokensIn",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minEthOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "ethOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "sellWithPermit",
"type": "function",
"inputs": [
{
"name": "tokensIn",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minEthOut",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "v",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "r",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "ethOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "spotPrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract XToken"
}
],
"stateMutability": "view"
},
{
"name": "tokenReserve",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "treasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "virtualEth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630242d7121461199e5750806302d05d3f1461195a5780630e4605c914611891578063398482d8146118075780633fc8cef3146117de5780634bd387e1146117a35780634beb394c14611762578063615bb4531461172757806361d027b3146116e2578063670171fd146116bc57806368d350d2146116a0578063715018a61461164657806379039a3e1461161e578063791b98bc146115f15780638da5cb5b146115ca5780638fd3ab8014610b96578063902d55a514610b6f578063a64190c414610b44578063af187f5a1461064f578063bf333f2c14610633578063c45a0155146105ee578063cbcb3171146105d0578063cbf6fff9146105a9578063cc3cbd2a1461058d578063d62ccb3f1461056f578063d79875eb1461052c578063d96a094a1461028e578063e7c2b7721461026b578063eceffa9e1461024e578063f2fde38b146101c05763fc0c546a0361000f57346101bd57806003193601126101bd576040517f00000000000000000000000025775b9e68165a35051ff10d41c66be76e4e1f246001600160a01b03168152602090f35b80fd5b50346101bd5760203660031901126101bd576004356001600160a01b0381169081900361024a576101ef611e89565b80156102365781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b50346101bd57806003193601126101bd5760206040516127108152f35b50346101bd57806003193601126101bd57602060ff600354166040519015158152f35b5060203660031901126101bd576102a3611c9e565b60ff6003541661051d57341561050e576102bc34611a3a565b82156104ff5760043583106104f0576102d581346119b8565b906102eb6102e384846119b8565b600154611a2d565b6001556102fa846002546119b8565b60025561030683612036565b60405163a9059cbb60e01b8152336004820152602481018590526001600160a01b037f00000000000000000000000025775b9e68165a35051ff10d41c66be76e4e1f241693906020816044818a895af19081156104e55787916104a7575b50156104985781610489575b604051928352602083015283604083015260608201527f27330bd7589580547b6437e08f9c60653de63691d2d2b2c13bff9ee67da2a68d60803392a26001547f0000000000000000000000000000000000000000000000003782dace9d90000011156103f3575b60208260015f5160206120ac5f395f51905f5255604051908152f35b8290600160ff196003541617600355803b1561024a5781906004604051809481936369b0c66560e11b83525af1801561047e57610469575b50602091507f403316a4282b851a6a8282103685a8f1ef8b41c1ff042ebc4a3026c9aebac0816040600154600254825191825285820152a15f6103d7565b6104748380926119f7565b61024a578161042b565b6040513d85823e3d90fd5b6104938233611fd1565b610370565b63022e258160e11b8652600486fd5b90506020813d6020116104dd575b816104c2602093836119f7565b810103126104d9576104d390611bf9565b5f610364565b8680fd5b3d91506104b5565b6040513d89823e3d90fd5b6307dd37f760e41b8452600484fd5b631f2a200560e01b8452600484fd5b631f2a200560e01b8152600490fd5b63210b9e2d60e01b8152600490fd5b50346101bd5760403660031901126101bd57610546611c9e565b6020610556602435600435611cd6565b60015f5160206120ac5f395f51905f5255604051908152f35b50346101bd57806003193601126101bd576020600154604051908152f35b50346101bd57806003193601126101bd57602060405160328152f35b50346101bd57806003193601126101bd5760206040516b0295be96e6406697200000008152f35b50346101bd57806003193601126101bd576020600254604051908152f35b50346101bd57806003193601126101bd576040517f000000000000000000000000bc664fe31110d2c53fd44b0633e8e3792fd3016c6001600160a01b03168152602090f35b50346101bd57806003193601126101bd57602060405160648152f35b50346101bd57806003193601126101bd57610668611c9e565b6005548015610b355760035460405160089190911c6001600160a01b0316916080820167ffffffffffffffff811183821017610b2157604090815290825230602083019081526001600160801b0383830181815260608501828152845163fc6f786560e01b81529551600487015292516001600160a01b031660248601525181166044850152905116606483015290918290608490829086905af1908115610b165782908392610adc575b506004546001600160a01b037f00000000000000000000000025775b9e68165a35051ff10d41c66be76e4e1f2481169291169082821015610ad65792915b6032840284810460321485151715610ac257606490046032840284810460321485151715610aae579060648792049381610a14575b5061079181876119b8565b6109a7575b5050811515806108fb575b6108ec5784906107b183856119b8565b15159283610821575b505050610812576040809350518281528160208201527fa5cbe0e1b0c50960e263c4c7edaae241113bbc4725c12b413b4a515fda0d68f0843392a260015f5160206120ac5f395f51905f525582519182526020820152f35b63022e258160e11b8352600483fd5b60209293509061083461088792866119b8565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000cd03f7e0d6a9db0bfa2806a95bbe11d2ad9ce3e7166004820152602481019190915293849283919082906044820190565b03925af19081156108e15784916108a3575b5015835f806107ba565b90506020813d6020116108d9575b816108be602093836119f7565b810103126108d5576108cf90611bf9565b5f610899565b8380fd5b3d91506108b1565b6040513d86823e3d90fd5b63022e258160e11b8552600485fd5b5060405163a9059cbb60e01b81527f0000000000000000000000005eda86f1acd9b1fc957ffc545a8d9458a33f99326001600160a01b031660048201526024810183905260208160448189865af190811561099c57869161095e575b50156107a1565b90506020813d602011610994575b81610979602093836119f7565b810103126109905761098a90611bf9565b5f610957565b8580fd5b3d915061096c565b6040513d88823e3d90fd5b6004546020916109c5916001600160a01b03169061083490896119b8565b03925af1801561099c576109db575b8590610796565b6020813d602011610a0c575b816109f4602093836119f7565b8101031261099057610a0590611bf9565b505f6109d4565b3d91506109e7565b60405163a9059cbb60e01b81527f0000000000000000000000005eda86f1acd9b1fc957ffc545a8d9458a33f99326001600160a01b0316600482015260248101839052906020908290604490829087905af1801561047e5715610786576020813d602011610aa6575b81610a8a602093836119f7565b81010312610aa257610a9b90611bf9565b505f610786565b8280fd5b3d9150610a7d565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b86526011600452602486fd5b91610751565b9150506040813d604011610b0e575b81610af8604093836119f7565b8101031261024a5760208151910151905f610713565b3d9150610aeb565b6040513d84823e3d90fd5b634e487b7160e01b85526041600452602485fd5b63d7b2559b60e01b8252600482fd5b50346101bd5760203660031901126101bd576040610b63600435611c15565b82519182526020820152f35b50346101bd57806003193601126101bd5760206040516b033b2e3c9fd0803ce80000008152f35b50346101bd57806003193601126101bd57610baf611c9e565b60035460ff8116156115bb576005546115ac5760408051632e50e5db60e01b81529190826004817f000000000000000000000000bc664fe31110d2c53fd44b0633e8e3792fd3016c6001600160a01b03165afa801561047e5783928491611565575b506001600160a01b0383169283158015611554575b611545576001548560015560025486600255808202908282041482151715610aae57610c7c90610c76837f0000000000000000000000000000000000000000000000000b1a2bc2ec500000611a2d565b906119d9565b610100600160a81b0319909416600883901b610100600160a81b031617600355600480546001600160a01b0319166001600160a01b03851690811790915592833b156104d957604051630d0e30db60e41b815287908181600481878a5af18015610b1657611530575b505060405163095ea7b360e01b81526001600160a01b0384166004820152602481018390526020816044818b895af180156111ae576114f9575b5060405163095ea7b360e01b81526001600160a01b039384166004820152602481018690527f00000000000000000000000025775b9e68165a35051ff10d41c66be76e4e1f24909316926020816044818b885af180156111ae576114c2575b50838310156114b8578290945b610d9483611eaf565b8060601b90808204600160601b149015171561137a576001600160a01b0390610dc090610c7684611eaf565b6040516309f56ab160e11b81526001600160a01b03948516600482018190529890941660248501819052612710604486015291166064840181905290926020816084818d8d5af190811561146e578a91611479575b50604051633850c7bd60e01b81529060e090829060049082906001600160a01b03165afa90811561146e578a916113d2575b5060018060a01b031660638202918015928181046063148417156113be5760649004821092831561139d575b50505061138e57606281028181046062148215171561137a576062840290848204606214851517156113665760405194610160860186811067ffffffffffffffff82111761135257604052888652602086019485526040860193612710855260608701620d899f1981526080880190620d89a0825260a0890192835260c08901938452606460e08a019504855260646101008a019604865262ffffff6101208a01973089526101408b0199428b526040519b634418b22b60e11b8d5260018060a01b0390511660048d015260018060a01b0390511660248c0152511660448a01525160020b60648901525160020b60848801525160a48701525160c48601525160e48501525161010484015260018060a01b03905116610124830152516101448201526080816101648189895af192831561099c578692879288956112f8575b508360055560405163095ea7b360e01b81528760048201528860248201526020816044818c865af180156112ed576112b2575b506040516370a0823160e01b8152306004820152908890602083602481845afa928315610b1657829361127b575b508215159283611200575b5050506111f1576040516370a0823160e01b815230600482015294602086602481855afa9586156111ae5788966111b9575b50856110f8575b7f6b60d326d3c4023c7cb9b6755fc31af3cfbccdeb07a7a8b4d79e201f732324ee9550476110c9575b036110c0576110a990925b604051938493846040919493926060820195825260208201520152565b0390a260015f5160206120ac5f395f51905f525580f35b6110a99061108c565b6110f3477f000000000000000000000000cd03f7e0d6a9db0bfa2806a95bbe11d2ad9ce3e7611fd1565b611081565b60405163a9059cbb60e01b81527f000000000000000000000000cd03f7e0d6a9db0bfa2806a95bbe11d2ad9ce3e76001600160a01b0316600482015260248101969096526020866044818b865af180156111ae5715611058576020863d6020116111a6575b8161116a602093836119f7565b810103126111a25761119c7f6b60d326d3c4023c7cb9b6755fc31af3cfbccdeb07a7a8b4d79e201f732324ee96611bf9565b50611058565b8780fd5b3d915061115d565b6040513d8a823e3d90fd5b9095506020813d6020116111e9575b816111d5602093836119f7565b810103126111e55751945f611051565b5f80fd5b3d91506111c8565b63022e258160e11b8752600487fd5b6020929350604490604051948593849263a9059cbb60e01b845261dead600485015260248401525af19081156111ae578891611241575b5015875f8061101f565b90506020813d602011611273575b8161125c602093836119f7565b810103126111a25761126d90611bf9565b5f611237565b3d915061124f565b915091506020813d6020116112aa575b81611298602093836119f7565b810103126111e557889051915f611014565b3d915061128b565b6020813d6020116112e5575b816112cb602093836119f7565b810103126112e1576112dc90611bf9565b610fe6565b8880fd5b3d91506112be565b6040513d8b823e3d90fd5b9350935090506080823d60801161134a575b81611317608093836119f7565b810103126109905781519060208301516001600160801b038116036104d95760606040840151930151919291935f610fb3565b3d915061130a565b634e487b7160e01b8c52604160045260248cfd5b634e487b7160e01b8a52601160045260248afd5b634e487b7160e01b89526011600452602489fd5b63f862ffd960e01b8852600488fd5b909192506065820291820460651417156113665760649004105f8080610e73565b634e487b7160e01b8c52601160045260248cfd5b905060e0813d60e011611466575b816113ed60e093836119f7565b81010312611462578051906001600160a01b038216820361145e5760208101518060020b0361145e5761142260408201611c06565b5061142f60608201611c06565b5061143c60808201611c06565b5060a081015160ff81160361145e5760c06114579101611bf9565b505f610e47565b8a80fd5b8980fd5b3d91506113e0565b6040513d8c823e3d90fd5b90506020813d6020116114b0575b81611494602093836119f7565b810103126114625760e06114a9600492611be5565b9150610e15565b3d9150611487565b9390938294610d8b565b6020813d6020116114f1575b816114db602093836119f7565b810103126111a2576114ec90611bf9565b610d7e565b3d91506114ce565b6020813d602011611528575b81611512602093836119f7565b810103126111a25761152390611bf9565b610d1f565b3d9150611505565b8161153a916119f7565b6104d957865f610ce5565b63b92baf4160e01b8552600485fd5b506001600160a01b03821615610c26565b9250506040823d6040116115a4575b81611581604093836119f7565b81010312610aa25761159e602061159784611be5565b9301611be5565b5f610c11565b3d9150611574565b6332870f2f60e21b8252600482fd5b63d66173a560e01b8252600482fd5b50346101bd57806003193601126101bd57546040516001600160a01b039091168152602090f35b50346101bd57806003193601126101bd5760035460405160089190911c6001600160a01b03168152602090f35b50346101bd57806003193601126101bd575060206a108b2a2c28029094000000604051908152f35b50346101bd57806003193601126101bd5761165f611e89565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101bd57806003193601126101bd57602060405160c88152f35b50346101bd57806003193601126101bd5760206040516aa56fa5b99019a5c80000008152f35b50346101bd57806003193601126101bd576040517f000000000000000000000000cd03f7e0d6a9db0bfa2806a95bbe11d2ad9ce3e76001600160a01b03168152602090f35b50346101bd57806003193601126101bd5760206040517f0000000000000000000000000000000000000000000000003782dace9d9000008152f35b50346101bd5760203660031901126101bd5761179f611782600435611a3a565b604080519384526020840192909252908201529081906060820190565b0390f35b50346101bd57806003193601126101bd5760206040517f0000000000000000000000000000000000000000000000000b1a2bc2ec5000008152f35b50346101bd57806003193601126101bd576004546040516001600160a01b039091168152602090f35b50346101bd57806003193601126101bd576118446001547f0000000000000000000000000000000000000000000000000b1a2bc2ec500000611a2d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561187d57602061187583600254906119d9565b604051908152f35b634e487b7160e01b81526011600452602490fd5b346111e55760c03660031901126111e55760043560643560ff81168091036111e5576118bb611c9e565b7f00000000000000000000000025775b9e68165a35051ff10d41c66be76e4e1f246001600160a01b031691823b156111e5575f8060209460e461055695604051948593849263d505accf60e01b84523360048501523060248501528860448501526044356064850152608484015260843560a484015260a43560c48401525af161194a575b5060243590611cd6565b5f611954916119f7565b5f611940565b346111e5575f3660031901126111e5576040517f0000000000000000000000005eda86f1acd9b1fc957ffc545a8d9458a33f99326001600160a01b03168152602090f35b346111e5575f3660031901126111e5576020906005548152f35b919082039182116119c557565b634e487b7160e01b5f52601160045260245ffd5b81156119e3570490565b634e487b7160e01b5f52601260045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611a1957604052565b634e487b7160e01b5f52604160045260245ffd5b919082018092116119c557565b905f60ff60035416611bdb5760648302838104606414841517156119c557612710900491611a6883856119b8565b9360015494611a97867f0000000000000000000000000000000000000000000000003782dace9d9000006119b8565b808211611bd3575b507f0000000000000000000000000000000000000000000000000b1a2bc2ec5000007f000000000000000000000000001cb2d6f618c878e32db399a0ba000000000000611afe611af884611af38b86611a2d565b611a2d565b82611e59565b600254929080841115611bcb57611b1590846119b8565b925b83996a108b2a2c28029094000000809511611b94575b5050505050611b3c85836119b8565b8110611b46575050565b61271091945080929350029080820461271014901517156119c55760016126ac5f1983010401901515026064810290808204606414811517156119c557612710611b919204936119b8565b90565b919399509193508882039182116119c557611bb5611bbb92611bc195611e59565b92611a2d565b906119b8565b5f80808080611b2d565b505f92611b17565b90505f611a9f565b505f915081908190565b51906001600160a01b03821682036111e557565b519081151582036111e557565b519061ffff821682036111e557565b611c7a90611bbb611c54611c4b6001547f0000000000000000000000000000000000000000000000000b1a2bc2ec500000611a2d565b92600254611a2d565b7f000000000000000000000000001cb2d6f618c878e32db399a0ba000000000000611e59565b60648102818104606414821517156119c557612710611c9b910480926119b8565b91565b60025f5160206120ac5f395f51905f525414611cc75760025f5160206120ac5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b91909160ff60035416611e4a578015611e3b57611cf281611c15565b9080948110611e2c57611d0783600254611a2d565b600255611d1f611d178383611a2d565b6001546119b8565b6001556040516323b872dd60e01b8152336004820152306024820152604481018490526020816064815f7f00000000000000000000000025775b9e68165a35051ff10d41c66be76e4e1f246001600160a01b03165af1908115611e21575f91611de7575b5015611dd85781611db47fe029f26dbcf8c42dd2f352c10214a7fc26773dc62482c6241334a0402ac09a8093612036565b611dbe8233611fd1565b6040805194855260208501919091528301523391606090a2565b63022e258160e11b5f5260045ffd5b90506020813d602011611e19575b81611e02602093836119f7565b810103126111e557611e1390611bf9565b5f611d83565b3d9150611df5565b6040513d5f823e3d90fd5b6307dd37f760e41b5f5260045ffd5b631f2a200560e01b5f5260045ffd5b63210b9e2d60e01b5f5260045ffd5b908015611e7757611e6f6001915f1984016119d9565b019015150290565b634e487b715f5260126020526024601cfd5b5f546001600160a01b03163303611e9c57565b63118cdaa760e01b5f523360045260245ffd5b6001811115611b9157806001600160801b821015611fc0575b600482600160401b611f72941015611fb3575b640100000000811015611fa6575b62010000811015611f99575b610100811015611f8d575b6010811015611f81575b1015611f79575b60030260011c611f2181846119d9565b0160011c611f2f81846119d9565b0160011c611f3d81846119d9565b0160011c611f4b81846119d9565b0160011c611f5981846119d9565b0160011c611f6781846119d9565b0160011c80926119d9565b8111900390565b60011b611f11565b811c9160021b91611f0a565b60081c91811b91611f00565b60101c9160081b91611ef5565b60201c9160101b91611ee9565b60401c9160201b91611edb565b5050608081901c600160401b611ec8565b8115612032575f80809381935af13d1561202d573d67ffffffffffffffff8111611a19576040519061200d601f8201601f1916602001836119f7565b81525f60203d92013e5b1561201e57565b630db2c7f160e31b5f5260045ffd5b612017565b5050565b60328102818104603214821517156119c5576120a991606461208392049061207e827f0000000000000000000000005eda86f1acd9b1fc957ffc545a8d9458a33f9932611fd1565b6119b8565b7f000000000000000000000000cd03f7e0d6a9db0bfa2806a95bbe11d2ad9ce3e7611fd1565b56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220a46bc6b4d381cfec27867011862c7fc44958470dc897aabe1e056b8518486acf64736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Uniswap V3 Positions NFT-V1 (UNI-V3-POS) | UNI-V3-POS | 1 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x5813be92…463038 | Transfer | 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x0000…0000 | IN | 0x1250…36af | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #665964 |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb73673…9fb4a0 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0xa5cbe0…68f0 | [0] 0x000000000000…ad9ce3e7 data: 0x000000000000000000…1138ffe9 |
| 0xc91312…7ee268 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0xa5cbe0…68f0 | [0] 0x000000000000…ad9ce3e7 data: 0x000000000000000000…cde29988 |
| 0x5813be…463038 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x6b60d3…24ee | [0] 0x000000000000…638de0d3 data: 0x000000000000000000…b0183f19 |
| 0x7c25cb…53d0f3 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0x403316…c081 | data: 0x000000000000000000…85555556 |
| 0x7c25cb…53d0f3 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0x27330b…a68d | [0] 0x000000000000…d7eb2c31 data: 0x000000000000000000…b0a80327 |
| 0xd5ad5f…fd8a0b | 5 days agoWed, 12 Aug 2026 07:43:37 UTC | 0x27330b…a68d | [0] 0x000000000000…cd0d4269 data: 0x000000000000000000…00000000 |
| 0xb04ed6…c0e960 | 5 days agoWed, 12 Aug 2026 07:43:36 UTC | 0x27330b…a68d | [0] 0x000000000000…52cf890b data: 0x000000000000000000…00000000 |
| 0xef28f9…784160 | 5 days agoWed, 12 Aug 2026 07:43:35 UTC | 0x27330b…a68d | [0] 0x000000000000…47280c72 data: 0x000000000000000000…00000000 |
| 0x7c0aaa…b3d017 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x27330b…a68d | [0] 0x000000000000…fd725d2c data: 0x000000000000000000…00000000 |
| 0x32825e…776f5b | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x27330b…a68d | [0] 0x000000000000…da3229e6 data: 0x000000000000000000…00000000 |
| 0xc92c49…7fbdf4 | 5 days agoWed, 12 Aug 2026 07:43:17 UTC | 0x27330b…a68d | [0] 0x000000000000…d7eb2c31 data: 0x000000000000000000…00000000 |
| 0x7ad1c9…4e1eda | 5 days agoWed, 12 Aug 2026 07:43:16 UTC | 0x27330b…a68d | [0] 0x000000000000…ecbdec84 data: 0x000000000000000000…00000000 |
| 0x10c28b…a87860 | 5 days agoWed, 12 Aug 2026 07:43:15 UTC | 0x27330b…a68d | [0] 0x000000000000…47280c72 data: 0x000000000000000000…00000000 |
| 0xbc01fa…72f390 | 5 days agoWed, 12 Aug 2026 07:43:00 UTC | 0x27330b…a68d | [0] 0x000000000000…c0c9b91e data: 0x000000000000000000…00000000 |
| 0x28bfd3…36a598 | 5 days agoWed, 12 Aug 2026 07:42:59 UTC | 0x27330b…a68d | [0] 0x000000000000…90981f14 data: 0x000000000000000000…00000000 |
| 0xd37eba…4bb3be | 5 days agoWed, 12 Aug 2026 07:42:58 UTC | 0x27330b…a68d | [0] 0x000000000000…0544774f data: 0x000000000000000000…00000000 |
| 0x305e52…c62e35 | 5 days agoWed, 12 Aug 2026 07:42:58 UTC | 0x27330b…a68d | [0] 0x000000000000…a71c6a97 data: 0x000000000000000000…00000000 |
| 0x1e972a…85c69b | 5 days agoWed, 12 Aug 2026 07:42:57 UTC | 0x27330b…a68d | [0] 0x000000000000…4b6ad781 data: 0x000000000000000000…00000000 |
| 0xd72de7…a0ef4c | 5 days agoWed, 12 Aug 2026 07:42:56 UTC | 0x27330b…a68d | [0] 0x000000000000…08b7af78 data: 0x000000000000000000…00000000 |
| 0x3b523e…6304be | 5 days agoWed, 12 Aug 2026 07:42:55 UTC | 0x27330b…a68d | [0] 0x000000000000…d7eb2c31 data: 0x000000000000000000…00000000 |
| 0xf181a3…1e7c42 | 5 days agoWed, 12 Aug 2026 07:42:37 UTC | 0x27330b…a68d | [0] 0x000000000000…71c0f56b data: 0x000000000000000000…00000000 |
| 0xc4bd4a…332393 | 5 days agoWed, 12 Aug 2026 07:42:36 UTC | 0x27330b…a68d | [0] 0x000000000000…cd0d4269 data: 0x000000000000000000…00000000 |
| 0xabd8c1…0b2136 | 5 days agoWed, 12 Aug 2026 07:42:36 UTC | 0x27330b…a68d | [0] 0x000000000000…eb167f99 data: 0x000000000000000000…00000000 |
| 0x97cd53…9b69c5 | 5 days agoWed, 12 Aug 2026 07:42:35 UTC | 0x27330b…a68d | [0] 0x000000000000…3d53500c data: 0x000000000000000000…00000000 |
| 0x43e1bf…0c33d2 | 5 days agoWed, 12 Aug 2026 07:42:18 UTC | 0x27330b…a68d | [0] 0x000000000000…fd725d2c data: 0x000000000000000000…00000000 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb736733d…9fb4a0 | Transfer | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0x1250…36af | OUT | 0xcd03…e3e7 | $NaN6,230,678.562158 CXT | COALAXTOEKN (CXT) | |
| 0xb736733d…9fb4a0 | Transfer | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0x1250…36af | OUT | 0x5eda…9932 | $NaN6,230,678.562158 CXT | COALAXTOEKN (CXT) | |
| 0xb736733d…9fb4a0 | Transfer | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.076493 WETH | WETH (WETH) | |
| 0xb736733d…9fb4a0 | Transfer | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0x1250…36af | OUT | 0x5eda…9932 | 0.076493 WETH | WETH (WETH) | |
| 0xb736733d…9fb4a0 | Transfer | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0x42e8…c18e | IN | 0x1250…36af | $NaN12,461,357.124316 CXT | COALAXTOEKN (CXT) | |
| 0xb736733d…9fb4a0 | Transfer | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0x42e8…c18e | IN | 0x1250…36af | 0.152987 WETH | WETH (WETH) | |
| 0xc9131200…7ee268 | Transfer | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0x1250…36af | OUT | 0xcd03…e3e7 | $NaN10,341,746.812286 CXT | COALAXTOEKN (CXT) | |
| 0xc9131200…7ee268 | Transfer | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0x1250…36af | OUT | 0x5eda…9932 | $NaN10,341,746.812286 CXT | COALAXTOEKN (CXT) | |
| 0xc9131200…7ee268 | Transfer | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.471112 WETH | WETH (WETH) | |
| 0xc9131200…7ee268 | Transfer | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0x1250…36af | OUT | 0x5eda…9932 | 0.471112 WETH | WETH (WETH) | |
| 0xc9131200…7ee268 | Transfer | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0x42e8…c18e | IN | 0x1250…36af | $NaN20,683,493.624572 CXT | COALAXTOEKN (CXT) | |
| 0xc9131200…7ee268 | Transfer | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0x42e8…c18e | IN | 0x1250…36af | 0.942225 WETH | WETH (WETH) | |
| 0x5813be92…463038 | Transfer | 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x1250…36af | OUT | 0x0000…dead | $NaN222,222,222.222234 CXT | COALAXTOEKN (CXT) | |
| 0x5813be92…463038 | Transfer | 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x1250…36af | OUT | 0x42e8…c18e | $NaN111,111,111.111098 CXT | COALAXTOEKN (CXT) | |
| 0x5813be92…463038 | Transfer | 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x1250…36af | OUT | 0x42e8…c18e | 4 WETH | WETH (WETH) | |
| 0x5813be92…463038 | Transfer | 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x0000…0000 | IN | 0x1250…36af | 4 WETH | WETH (WETH) | |
| 0x7c25cba6…53d0f3 | Transfer | 34,356,774 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0x1250…36af | OUT | 0xeb28…2c31 | $NaN794,983.004473 CXT | COALAXTOEKN (CXT) | |
| 0xd5ad5f8f…fd8a0b | Transfer | 34,356,767 | 5 days agoWed, 12 Aug 2026 07:43:37 UTC | 0x1250…36af | OUT | 0xd384…4269 | $NaN264,896.753796 CXT | COALAXTOEKN (CXT) | |
| 0xb04ed63a…c0e960 | Transfer | 34,356,759 | 5 days agoWed, 12 Aug 2026 07:43:36 UTC | 0x1250…36af | OUT | 0x2616…890b | $NaN5,588.019953 CXT | COALAXTOEKN (CXT) | |
| 0xef28f989…784160 | Transfer | 34,356,750 | 5 days agoWed, 12 Aug 2026 07:43:35 UTC | 0x1250…36af | OUT | 0xc727…0c72 | $NaN2,853,448.822275 CXT | COALAXTOEKN (CXT) | |
| 0x7c0aaad0…b3d017 | Transfer | 34,356,581 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x1250…36af | OUT | 0xe910…5d2c | $NaN2,977,241.416078 CXT | COALAXTOEKN (CXT) | |
| 0x32825e2e…776f5b | Transfer | 34,356,573 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x1250…36af | OUT | 0x33a2…29e6 | $NaN274,299.572565 CXT | COALAXTOEKN (CXT) | |
| 0xc92c49fd…7fbdf4 | Transfer | 34,356,566 | 5 days agoWed, 12 Aug 2026 07:43:17 UTC | 0x1250…36af | OUT | 0xeb28…2c31 | $NaN1,543,642.251818 CXT | COALAXTOEKN (CXT) | |
| 0x7ad1c9d8…4e1eda | Transfer | 34,356,558 | 5 days agoWed, 12 Aug 2026 07:43:16 UTC | 0x1250…36af | OUT | 0x1964…ec84 | $NaN1,259,551.590523 CXT | COALAXTOEKN (CXT) | |
| 0x10c28b3c…a87860 | Transfer | 34,356,549 | 5 days agoWed, 12 Aug 2026 07:43:15 UTC | 0x1250…36af | OUT | 0xc727…0c72 | $NaN1,606,203.226836 CXT | COALAXTOEKN (CXT) |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb73673…9fb4a0 | collectLpFees | 34,414,738 | 5 days agoWed, 12 Aug 2026 09:20:09 UTC | 0xcd03…e3e7 | IN | XCurve | $0.000 ETH | 0.00001180 | |
| 0xc91312…7ee268 | collectLpFees | 34,372,711 | 5 days agoWed, 12 Aug 2026 08:10:12 UTC | 0xcd03…e3e7 | IN | XCurve | $0.000 ETH | 0.00001286 | |
| 0x5813be…463038 | migrate | 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0xaaaa…f6b5 | IN | XCurve | $0.000 ETH | 0.00023399 | |
| !0x08661e…140c5e | migrate | 34,359,653 | 5 days agoWed, 12 Aug 2026 07:48:26 UTC | 0xcd03…e3e7 | IN | XCurve | $0.000 ETH | 0.00003372 | |
| 0x7c25cb…53d0f3 | buy | 34,356,774 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0xeb28…2c31 | IN | XCurve | $152.100.08 ETH | 0.00000493 | |
| 0xd5ad5f…fd8a0b | buy | 34,356,767 | 5 days agoWed, 12 Aug 2026 07:43:37 UTC | 0xd384…4269 | IN | XCurve | $18.060.0095 ETH | 0.00000348 | |
| 0xb04ed6…c0e960 | buy | 34,356,759 | 5 days agoWed, 12 Aug 2026 07:43:36 UTC | 0x2616…890b | IN | XCurve | $0.380.0002 ETH | 0.00000431 | |
| 0xef28f9…784160 | buy | 34,356,750 | 5 days agoWed, 12 Aug 2026 07:43:35 UTC | 0xc727…0c72 | IN | XCurve | $190.120.1 ETH | 0.00000350 | |
| 0x7c0aaa…b3d017 | buy | 34,356,581 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0xe910…5d2c | IN | XCurve | $190.120.1 ETH | 0.00000351 | |
| 0x32825e…776f5b | buy | 34,356,573 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x33a2…29e6 | IN | XCurve | $17.110.009 ETH | 0.00000429 | |
| 0xc92c49…7fbdf4 | buy | 34,356,566 | 5 days agoWed, 12 Aug 2026 07:43:17 UTC | 0xeb28…2c31 | IN | XCurve | $95.060.05 ETH | 0.00000348 | |
| 0x7ad1c9…4e1eda | buy | 34,356,558 | 5 days agoWed, 12 Aug 2026 07:43:16 UTC | 0x1964…ec84 | IN | XCurve | $76.050.04 ETH | 0.00000355 | |
| 0x10c28b…a87860 | buy | 34,356,549 | 5 days agoWed, 12 Aug 2026 07:43:15 UTC | 0xc727…0c72 | IN | XCurve | $95.060.05 ETH | 0.00000351 | |
| 0xbc01fa…72f390 | buy | 34,356,398 | 5 days agoWed, 12 Aug 2026 07:43:00 UTC | 0xc5cf…b91e | IN | XCurve | $380.240.2 ETH | 0.00000423 | |
| 0x28bfd3…36a598 | buy | 34,356,390 | 5 days agoWed, 12 Aug 2026 07:42:59 UTC | 0x2900…1f14 | IN | XCurve | $57.040.03 ETH | 0.00000425 | |
| 0xd37eba…4bb3be | buy | 34,356,382 | 5 days agoWed, 12 Aug 2026 07:42:58 UTC | 0x99a0…774f | IN | XCurve | $39.930.021 ETH | 0.00000355 | |
| 0x305e52…c62e35 | buy | 34,356,374 | 5 days agoWed, 12 Aug 2026 07:42:58 UTC | 0xfd5b…6a97 | IN | XCurve | $190.120.1 ETH | 0.00000426 | |
| 0x1e972a…85c69b | buy | 34,356,366 | 5 days agoWed, 12 Aug 2026 07:42:57 UTC | 0xb221…d781 | IN | XCurve | $95.060.05 ETH | 0.00000346 | |
| 0xd72de7…a0ef4c | buy | 34,356,358 | 5 days agoWed, 12 Aug 2026 07:42:56 UTC | 0x2383…af78 | IN | XCurve | $76.050.04 ETH | 0.00000348 | |
| 0x3b523e…6304be | buy | 34,356,350 | 5 days agoWed, 12 Aug 2026 07:42:55 UTC | 0xeb28…2c31 | IN | XCurve | $190.120.1 ETH | 0.00000424 | |
| 0xf181a3…1e7c42 | buy | 34,356,171 | 5 days agoWed, 12 Aug 2026 07:42:37 UTC | 0x6965…f56b | IN | XCurve | $19.010.01 ETH | 0.00000423 | |
| 0xc4bd4a…332393 | buy | 34,356,162 | 5 days agoWed, 12 Aug 2026 07:42:36 UTC | 0xd384…4269 | IN | XCurve | $0.380.0002 ETH | 0.00000424 | |
| 0xabd8c1…0b2136 | buy | 34,356,155 | 5 days agoWed, 12 Aug 2026 07:42:36 UTC | 0x701f…7f99 | IN | XCurve | $9.510.005 ETH | 0.00000353 | |
| 0x97cd53…9b69c5 | buy | 34,356,148 | 5 days agoWed, 12 Aug 2026 07:42:35 UTC | 0x4583…500c | IN | XCurve | $62.740.033 ETH | 0.00000347 | |
| 0x43e1bf…0c33d2 | buy | 34,355,980 | 5 days agoWed, 12 Aug 2026 07:42:18 UTC | 0xe910…5d2c | IN | XCurve | $38.020.02 ETH | 0.00000350 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 34,359,906 | 5 days agoWed, 12 Aug 2026 07:48:51 UTC | 0x5813be…463038 | CALL | migrate | 0x1250…36af | OUT | 0x0bd7…ad73 | 4 ETH |
| 34,359,653 | 5 days agoWed, 12 Aug 2026 07:48:26 UTC | 0x08661e…140c5e | CALL | migrate | 0x1250…36af | OUT | 0x0bd7…ad73 | 4 ETH |
| 34,356,774 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0x7c25cb…53d0f3 | CALL | buy | 0x1250…36af | OUT | 0xeb28…2c31 | 0.05126 ETH |
| 34,356,774 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0x7c25cb…53d0f3 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00014 ETH |
| 34,356,774 | 5 days agoWed, 12 Aug 2026 07:43:38 UTC | 0x7c25cb…53d0f3 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00014 ETH |
| 34,356,767 | 5 days agoWed, 12 Aug 2026 07:43:37 UTC | 0xd5ad5f…fd8a0b | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00004 ETH |
| 34,356,767 | 5 days agoWed, 12 Aug 2026 07:43:37 UTC | 0xd5ad5f…fd8a0b | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00004 ETH |
| 34,356,759 | 5 days agoWed, 12 Aug 2026 07:43:36 UTC | 0xb04ed6…c0e960 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00000 ETH |
| 34,356,759 | 5 days agoWed, 12 Aug 2026 07:43:36 UTC | 0xb04ed6…c0e960 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00000 ETH |
| 34,356,750 | 5 days agoWed, 12 Aug 2026 07:43:35 UTC | 0xef28f9…784160 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.0005 ETH |
| 34,356,750 | 5 days agoWed, 12 Aug 2026 07:43:35 UTC | 0xef28f9…784160 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.0005 ETH |
| 34,356,581 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x7c0aaa…b3d017 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.0005 ETH |
| 34,356,581 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x7c0aaa…b3d017 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.0005 ETH |
| 34,356,573 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x32825e…776f5b | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00004 ETH |
| 34,356,573 | 5 days agoWed, 12 Aug 2026 07:43:18 UTC | 0x32825e…776f5b | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00004 ETH |
| 34,356,566 | 5 days agoWed, 12 Aug 2026 07:43:17 UTC | 0xc92c49…7fbdf4 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00025 ETH |
| 34,356,566 | 5 days agoWed, 12 Aug 2026 07:43:17 UTC | 0xc92c49…7fbdf4 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00025 ETH |
| 34,356,558 | 5 days agoWed, 12 Aug 2026 07:43:16 UTC | 0x7ad1c9…4e1eda | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.0002 ETH |
| 34,356,558 | 5 days agoWed, 12 Aug 2026 07:43:16 UTC | 0x7ad1c9…4e1eda | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.0002 ETH |
| 34,356,549 | 5 days agoWed, 12 Aug 2026 07:43:15 UTC | 0x10c28b…a87860 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00025 ETH |
| 34,356,549 | 5 days agoWed, 12 Aug 2026 07:43:15 UTC | 0x10c28b…a87860 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00025 ETH |
| 34,356,398 | 5 days agoWed, 12 Aug 2026 07:43:00 UTC | 0xbc01fa…72f390 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.001 ETH |
| 34,356,398 | 5 days agoWed, 12 Aug 2026 07:43:00 UTC | 0xbc01fa…72f390 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.001 ETH |
| 34,356,390 | 5 days agoWed, 12 Aug 2026 07:42:59 UTC | 0x28bfd3…36a598 | CALL | buy | 0x1250…36af | OUT | 0xcd03…e3e7 | 0.00015 ETH |
| 34,356,390 | 5 days agoWed, 12 Aug 2026 07:42:59 UTC | 0x28bfd3…36a598 | CALL | buy | 0x1250…36af | OUT | 0x5eda…9932 | 0.00015 ETH |