// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
/*
██╗ ██╗███████╗███████╗████████╗███████╗██╗
╚██╗ ██╔╝██╔════╝██╔════╝╚══██╔══╝██╔════╝██║
╚████╔╝ █████╗ █████╗ ██║ █████╗ ██║
╚██╔╝ ██╔══╝ ██╔══╝ ██║ ██╔══╝ ██║
██║ ███████╗███████╗ ██║ ██║ ██║
╚═╝ ╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝
S A F E L A U N C H E R
─────────────────────────
Permissionless one-transaction token launcher.
No owner, no admin key, no upgrade path.
Docs: https://robinhood.yeetfi.xyz/docs
*/
interface IERC20Min {
function approve(address spender, uint256 amount) external returns (bool);
function transfer(address to, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
interface IWETH9 {
function deposit() external payable;
}
interface IUniswapV3PoolState {
function slot0()
external
view
returns (
uint160 sqrtPriceX96,
int24 tick,
uint16 observationIndex,
uint16 observationCardinality,
uint16 observationCardinalityNext,
uint8 feeProtocol,
bool unlocked
);
}
interface ISwapRouter02 {
struct ExactInputSingleParams {
address tokenIn;
address tokenOut;
uint24 fee;
address recipient;
uint256 amountIn;
uint256 amountOutMinimum;
uint160 sqrtPriceLimitX96;
}
function exactInputSingle(ExactInputSingleParams calldata params)
external
payable
returns (uint256 amountOut);
}
interface INonfungiblePositionManager {
function createAndInitializePoolIfNecessary(
address token0,
address token1,
uint24 fee,
uint160 sqrtPriceX96
) external payable returns (address pool);
struct MintParams {
address token0;
address token1;
uint24 fee;
int24 tickLower;
int24 tickUpper;
uint256 amount0Desired;
uint256 amount1Desired;
uint256 amount0Min;
uint256 amount1Min;
address recipient;
uint256 deadline;
}
function mint(MintParams calldata params)
external
payable
returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
struct CollectParams {
uint256 tokenId;
address recipient;
uint128 amount0Max;
uint128 amount1Max;
}
function collect(CollectParams calldata params)
external
payable
returns (uint256 amount0, uint256 amount1);
}
contract YeetFiLaunchToken {
string public name;
string public symbol;
uint8 public constant decimals = 18;
uint256 public immutable totalSupply;
address public immutable owner;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(string memory _name, string memory _symbol, uint256 _supply, address _mintTo) {
name = _name;
symbol = _symbol;
totalSupply = _supply;
balanceOf[_mintTo] = _supply;
emit Transfer(address(0), _mintTo, _supply);
owner = address(0);
emit OwnershipTransferred(address(0), _mintTo);
emit OwnershipTransferred(_mintTo, address(0));
}
function approve(address spender, uint256 amount) external returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address to, uint256 amount) external returns (bool) {
return _transfer(msg.sender, to, amount);
}
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
uint256 a = allowance[from][msg.sender];
if (a != type(uint256).max) {
require(a >= amount, "allowance");
allowance[from][msg.sender] = a - amount;
}
return _transfer(from, to, amount);
}
function _transfer(address from, address to, uint256 amount) internal returns (bool) {
require(balanceOf[from] >= amount, "balance");
require(to != address(0), "to zero");
unchecked {
balanceOf[from] -= amount;
balanceOf[to] += amount;
}
emit Transfer(from, to, amount);
return true;
}
}
contract yeetFiSafeLauncher {
enum Venue {
UNISWAP_V3,
SUSHISWAP_V3
}
enum Preset {
MC_0_5_ETH,
MC_1_ETH,
MC_2_ETH,
MC_5_ETH
}
struct DevBuy {
address recipient;
uint256 amountIn; // in WETH wei (18-dec)
uint256 minOut;
}
struct Position {
address token;
address pool;
address creator;
bool tokenIsToken0;
}
address public immutable QUOTE;
address public immutable UNI_POSITION_MANAGER;
address public immutable UNI_SWAP_ROUTER;
address public immutable SUSHI_POSITION_MANAGER;
address public immutable SUSHI_SWAP_ROUTER;
address public constant FEE_RECIPIENT = 0x8ab3914eEEE3965f3d680703196e92efcBF3fAbD;
uint256 public constant LAUNCH_FEE = 0.002 ether;
uint256 public constant TOTAL_SUPPLY = 1_000_000_000e18;
uint24 public constant POOL_FEE = 10_000; // 1%
int24 public constant TICK_SPACING = 200;
uint256 public constant CREATOR_SHARE_BPS = 7_000;
uint256 internal constant BPS = 10_000;
uint160 public constant VANITY_SUFFIX = 0x5afe;
uint160 internal constant VANITY_MASK = 0xffff;
int24 internal constant MAX_TICK = 887272; // Uniswap V3 TickMath.MAX_TICK
uint160 internal constant SQRT_MC_0_5 = 1771595571142957102961017;
uint160 internal constant SQRT_MC_1 = 2505414483750479311864138;
uint160 internal constant SQRT_MC_2 = 3543191142285914205922034;
uint160 internal constant SQRT_MC_5 = 5602277097478613991873193;
mapping(Venue => mapping(uint256 => Position)) public positions;
error PoolPriceMismatch(uint160 expected, uint160 actual);
error FeeNotPaid(uint256 sent, uint256 required);
error SaltNot5afe(address wouldBe);
error FeeTransferFailed();
error RefundFailed();
error BadDevBuy();
error QuoteApproveFailed();
error UnknownPosition(uint256 tokenId);
event Yeeted(
address indexed token,
address indexed pool,
address indexed deployer,
uint256 tokenId,
Preset preset,
bool tokenIsToken0,
Venue venue
);
event DevBought(
address indexed token,
address indexed recipient,
uint256 amountIn,
uint256 amountOut
);
event FeePaid(address indexed payer, address indexed recipient, uint256 amount);
event FeesCollected(
Venue indexed venue,
uint256 indexed tokenId,
address indexed token,
uint256 tokenFees,
uint256 tokenSold,
uint256 quoteTotal,
uint256 toCreator,
uint256 toTreasury
);
constructor(
address _quote,
address _uniPositionManager,
address _uniSwapRouter,
address _sushiPositionManager,
address _sushiSwapRouter
) {
require(
_quote != address(0) && _uniPositionManager != address(0)
&& _uniSwapRouter != address(0) && _sushiPositionManager != address(0)
&& _sushiSwapRouter != address(0),
"zero"
);
QUOTE = _quote;
UNI_POSITION_MANAGER = _uniPositionManager;
UNI_SWAP_ROUTER = _uniSwapRouter;
SUSHI_POSITION_MANAGER = _sushiPositionManager;
SUSHI_SWAP_ROUTER = _sushiSwapRouter;
}
function predictTokenAddress(
address deployer,
bytes32 salt,
string calldata name_,
string calldata symbol_
) external view returns (address) {
return address(
uint160(
uint256(
keccak256(
abi.encodePacked(
bytes1(0xff),
address(this),
keccak256(abi.encode(deployer, salt)),
initCodeHash(name_, symbol_)
)
)
)
)
);
}
function initCodeHash(
string calldata name_,
string calldata symbol_
) public view returns (bytes32) {
return keccak256(
abi.encodePacked(
type(YeetFiLaunchToken).creationCode,
abi.encode(name_, symbol_, TOTAL_SUPPLY, address(this))
)
);
}
function yeet(
string calldata name_,
string calldata symbol_,
Preset preset,
bytes32 salt,
DevBuy[] calldata devBuys,
Venue venue
) external payable returns (address token, address pool, uint256 tokenId) {
(address npm, address router) = _venueAddrs(venue);
uint256 devTotal;
for (uint256 i = 0; i < devBuys.length; i++) {
if (devBuys[i].recipient == address(0) || devBuys[i].amountIn == 0) revert BadDevBuy();
devTotal += devBuys[i].amountIn;
}
uint256 required = LAUNCH_FEE + devTotal;
if (msg.value < required) revert FeeNotPaid(msg.value, required);
token = address(
new YeetFiLaunchToken{salt: keccak256(abi.encode(msg.sender, salt))}(
name_, symbol_, TOTAL_SUPPLY, address(this)
)
);
if (uint160(token) & VANITY_MASK != VANITY_SUFFIX) revert SaltNot5afe(token);
bool tokenIsToken0 = token < QUOTE;
(address token0, address token1) = tokenIsToken0 ? (token, QUOTE) : (QUOTE, token);
uint160 sqrtAsToken0 = _presetSqrtPriceX96(preset);
uint160 sqrtPriceX96 = tokenIsToken0
? sqrtAsToken0
: uint160((uint256(1) << 192) / uint256(sqrtAsToken0)); // sqrt(1/P) = 2^192 / S
pool = INonfungiblePositionManager(npm)
.createAndInitializePoolIfNecessary(token0, token1, POOL_FEE, sqrtPriceX96);
(uint160 poolSqrt, int24 curTick, , , , , ) = IUniswapV3PoolState(pool).slot0();
if (poolSqrt != sqrtPriceX96) revert PoolPriceMismatch(sqrtPriceX96, poolSqrt);
int24 maxUsable = (MAX_TICK / TICK_SPACING) * TICK_SPACING;
int24 tickLower;
int24 tickUpper;
uint256 amount0Desired;
uint256 amount1Desired;
if (tokenIsToken0) {
tickLower = _ceilSpacing(curTick + 1, TICK_SPACING);
tickUpper = maxUsable;
amount0Desired = TOTAL_SUPPLY;
} else {
tickLower = -maxUsable;
tickUpper = _floorSpacing(curTick, TICK_SPACING);
amount1Desired = TOTAL_SUPPLY;
}
require(IERC20Min(token).approve(npm, TOTAL_SUPPLY), "approve failed");
(tokenId, , , ) = INonfungiblePositionManager(npm).mint(
INonfungiblePositionManager.MintParams({
token0: token0,
token1: token1,
fee: POOL_FEE,
tickLower: tickLower,
tickUpper: tickUpper,
amount0Desired: amount0Desired,
amount1Desired: amount1Desired,
amount0Min: 0,
amount1Min: 0,
recipient: address(this),
deadline: block.timestamp
})
);
positions[venue][tokenId] =
Position({token: token, pool: pool, creator: msg.sender, tokenIsToken0: tokenIsToken0});
if (devBuys.length > 0) {
IWETH9(QUOTE).deposit{value: devTotal}();
if (!IERC20Min(QUOTE).approve(router, devTotal)) revert QuoteApproveFailed();
for (uint256 i = 0; i < devBuys.length; i++) {
uint256 amountOut = ISwapRouter02(router).exactInputSingle(
ISwapRouter02.ExactInputSingleParams({
tokenIn: QUOTE,
tokenOut: token,
fee: POOL_FEE,
recipient: devBuys[i].recipient,
amountIn: devBuys[i].amountIn,
amountOutMinimum: devBuys[i].minOut,
sqrtPriceLimitX96: 0
})
);
emit DevBought(token, devBuys[i].recipient, devBuys[i].amountIn, amountOut);
}
if (!IERC20Min(QUOTE).approve(router, 0)) revert QuoteApproveFailed();
}
uint256 leftover = IERC20Min(token).balanceOf(address(this));
if (leftover > 0) {
require(IERC20Min(token).transfer(msg.sender, leftover), "dust transfer failed");
}
emit Yeeted(token, pool, msg.sender, tokenId, preset, tokenIsToken0, venue);
(bool feeOk, ) = FEE_RECIPIENT.call{value: LAUNCH_FEE}("");
if (!feeOk) revert FeeTransferFailed();
emit FeePaid(msg.sender, FEE_RECIPIENT, LAUNCH_FEE);
uint256 refund = msg.value - required;
if (refund > 0) {
(bool refundOk, ) = msg.sender.call{value: refund}("");
if (!refundOk) revert RefundFailed();
}
}
function collect(Venue venue, uint256 tokenId)
external
returns (uint256 toCreator, uint256 toTreasury)
{
(address npm, address router) = _venueAddrs(venue);
Position memory p = positions[venue][tokenId];
if (p.token == address(0)) revert UnknownPosition(tokenId);
INonfungiblePositionManager(npm).collect(
INonfungiblePositionManager.CollectParams({
tokenId: tokenId,
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max
})
);
uint256 tokenBal = IERC20Min(p.token).balanceOf(address(this));
uint256 sold;
if (tokenBal > 0) {
if (!IERC20Min(p.token).approve(router, tokenBal)) revert QuoteApproveFailed();
sold = ISwapRouter02(router).exactInputSingle(
ISwapRouter02.ExactInputSingleParams({
tokenIn: p.token,
tokenOut: QUOTE,
fee: POOL_FEE,
recipient: address(this),
amountIn: tokenBal,
amountOutMinimum: 0,
sqrtPriceLimitX96: 0
})
);
if (!IERC20Min(p.token).approve(router, 0)) revert QuoteApproveFailed();
}
uint256 quoteTotal = IERC20Min(QUOTE).balanceOf(address(this));
if (quoteTotal > 0) {
toCreator = (quoteTotal * CREATOR_SHARE_BPS) / BPS;
toTreasury = quoteTotal - toCreator;
if (toCreator > 0) {
require(IERC20Min(QUOTE).transfer(p.creator, toCreator), "creator transfer");
}
require(IERC20Min(QUOTE).transfer(FEE_RECIPIENT, toTreasury), "treasury transfer");
}
uint256 tokenLeft = IERC20Min(p.token).balanceOf(address(this));
emit FeesCollected(
venue, tokenId, p.token, tokenBal, tokenBal - tokenLeft, quoteTotal, toCreator, toTreasury
);
}
function _venueAddrs(Venue venue) internal view returns (address npm, address router) {
return venue == Venue.UNISWAP_V3
? (UNI_POSITION_MANAGER, UNI_SWAP_ROUTER)
: (SUSHI_POSITION_MANAGER, SUSHI_SWAP_ROUTER);
}
function _presetSqrtPriceX96(Preset p) internal pure returns (uint160) {
if (p == Preset.MC_0_5_ETH) return SQRT_MC_0_5;
if (p == Preset.MC_1_ETH) return SQRT_MC_1;
if (p == Preset.MC_2_ETH) return SQRT_MC_2;
return SQRT_MC_5;
}
function _floorSpacing(int24 t, int24 s) internal pure returns (int24) {
int24 q = t / s;
if (t < 0 && t % s != 0) q -= 1;
return q * s;
}
function _ceilSpacing(int24 t, int24 s) internal pure returns (int24) {
int24 q = t / s;
if (t > 0 && t % s != 0) q += 1;
return q * s;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_name",
"type": "string",
"internalType": "string"
},
{
"name": "_symbol",
"type": "string",
"internalType": "string"
},
{
"name": "_supply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_mintTo",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"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": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610478578063095ea7b31461040057806318160ddd146103c657806323b872dd146102c5578063313ce567146102aa57806370a08231146102725780638da5cb5b1461022f57806395d89b4114610111578063a9059cbb146100df5763dd62ed3e14610087575f80fd5b346100db5760403660031901126100db576100a0610574565b6001600160a01b036100b061058a565b91165f5260036020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346100db5760403660031901126100db5760206101076100fd610574565b60243590336105a0565b6040519015158152f35b346100db575f3660031901126100db576040515f6001548060011c90600181168015610225575b602083108114610211578285529081156101f5575060011461019f575b50819003601f01601f191681019067ffffffffffffffff82118183101761018b5760408290528190610187908261054a565b0390f35b634e487b7160e01b5f52604160045260245ffd5b60015f9081529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8282106101df57506020915082010182610155565b60018160209254838588010152019101906101ca565b90506020925060ff191682840152151560051b82010182610155565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610138565b346100db575f3660031901126100db5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100db5760203660031901126100db576001600160a01b03610293610574565b165f526002602052602060405f2054604051908152f35b346100db575f3660031901126100db57602060405160128152f35b346100db5760603660031901126100db576102de610574565b6102e661058a565b604435916001600160a01b038116805f52600360205260405f206001600160a01b0333165f5260205260405f2054905f19820361032b575b60206101078686866105a0565b929093918285106103825782850394851161036e57602094610107945f526003865260405f206001600160a01b0333165f52865260405f2055919381935061031e565b634e487b7160e01b5f52601160045260245ffd5b606460405162461bcd60e51b815260206004820152600960248201527f616c6c6f77616e636500000000000000000000000000000000000000000000006044820152fd5b346100db575f3660031901126100db5760206040517f0000000000000000000000000000000000000000033b2e3c9fd0803ce80000008152f35b346100db5760403660031901126100db57610419610574565b6001600160a01b0360243591335f52600360205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346100db575f3660031901126100db576040515f5f548060011c90600181168015610540575b602083108114610211578285529081156101f557506001146104ec5750819003601f01601f191681019067ffffffffffffffff82118183101761018b5760408290528190610187908261054a565b5f8080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b82821061052a57506020915082010182610155565b6001816020925483858801015201910190610515565b91607f169161049e565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100db57565b602435906001600160a01b03821682036100db57565b6001600160a01b031690815f5260026020528260405f205410610663576001600160a01b031691821561061f5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91835f526002825260405f20818154039055845f526002825260405f20818154019055604051908152a3600190565b606460405162461bcd60e51b815260206004820152600760248201527f746f207a65726f000000000000000000000000000000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152600760248201527f62616c616e6365000000000000000000000000000000000000000000000000006044820152fdfea264697066735822122033fc94f7471166146e2fbc5254cfe81bfb31059d46423e2a7b8649bbad38e91e64736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xc3f16c…26e52e | 11 days agoThu, 06 Aug 2026 02:26:24 UTC | Approval | [0] 0x000000000000…27d91f72 [1] 0x000000000000…bafad669 data: 0x000000000000000000…00000000 |
| 0xc3f16c…26e52e | 11 days agoThu, 06 Aug 2026 02:26:24 UTC | Transfer | [0] 0x000000000000…27d91f72 [1] 0x000000000000…31d19231 data: 0x000000000000000000…582ea810 |
| 0xc3f16c…26e52e | 11 days agoThu, 06 Aug 2026 02:26:24 UTC | Approval | [0] 0x000000000000…27d91f72 [1] 0x000000000000…bafad669 data: 0x000000000000000000…582ea810 |
| 0xc3f16c…26e52e | 11 days agoThu, 06 Aug 2026 02:26:24 UTC | Transfer | [0] 0x000000000000…31d19231 [1] 0x000000000000…27d91f72 data: 0x000000000000000000…582ea810 |
| 0x3eeb89…26f364 | 11 days agoThu, 06 Aug 2026 02:21:16 UTC | Transfer | [0] 0x000000000000…9f355379 [1] 0x000000000000…31d19231 data: 0x000000000000000000…95a7b0b4 |
| 0x3eeb89…26f364 | 11 days agoThu, 06 Aug 2026 02:21:16 UTC | Transfer | [0] 0x000000000000…1d999991 [1] 0x000000000000…9f355379 data: 0x000000000000000000…95a7b0b4 |
| 0xc03592…b95e93 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…10aa7fb3 |
| 0xc03592…b95e93 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | Transfer | [0] 0x000000000000…d37f2e2a [1] 0x000000000000…e8b440ef data: 0x000000000000000000…10aa7fb3 |
| 0x29b903…929220 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | Approval | [0] 0x000000000000…d37f2e2a [1] 0x000000000000…e8b440ef data: 0xffffffffffffffffff…ffffffff |
| 0xfec22b…e72570 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…8021114f |
| 0xfec22b…e72570 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | Transfer | [0] 0x000000000000…0494806a [1] 0x000000000000…e8b440ef data: 0x000000000000000000…8021114f |
| 0x1b59b2…0b963a | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | Approval | [0] 0x000000000000…0494806a [1] 0x000000000000…e8b440ef data: 0xffffffffffffffffff…ffffffff |
| 0x2ccfb0…009fa4 | 11 days agoThu, 06 Aug 2026 02:20:59 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…cdf1123e |
| 0x2ccfb0…009fa4 | 11 days agoThu, 06 Aug 2026 02:20:59 UTC | Transfer | [0] 0x000000000000…6f591159 [1] 0x000000000000…e8b440ef data: 0x000000000000000000…cdf1123e |
| 0xea5cfe…e0e880 | 11 days agoThu, 06 Aug 2026 02:20:59 UTC | Approval | [0] 0x000000000000…6f591159 [1] 0x000000000000…e8b440ef data: 0xffffffffffffffffff…ffffffff |
| 0x6b9651…060ea2 | 11 days agoThu, 06 Aug 2026 02:20:53 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…4a85527a |
| 0x6b9651…060ea2 | 11 days agoThu, 06 Aug 2026 02:20:53 UTC | Transfer | [0] 0x000000000000…08586532 [1] 0x000000000000…e8b440ef data: 0x000000000000000000…4a85527a |
| 0x23d04f…297472 | 11 days agoThu, 06 Aug 2026 02:20:53 UTC | Approval | [0] 0x000000000000…08586532 [1] 0x000000000000…e8b440ef data: 0xffffffffffffffffff…ffffffff |
| 0x7f83c0…4abcac | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…87e63bdc |
| 0x7f83c0…4abcac | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Transfer | [0] 0x000000000000…cfa19dee [1] 0x000000000000…e8b440ef data: 0x000000000000000000…87e63bdc |
| 0x9dfbf2…e98e8d | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Approval | [0] 0x000000000000…cfa19dee [1] 0x000000000000…e8b440ef data: 0xffffffffffffffffff…ffffffff |
| 0xd05fe4…039237 | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…b271630a |
| 0xd05fe4…039237 | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Transfer | [0] 0x000000000000…7857214a [1] 0x000000000000…e8b440ef data: 0x000000000000000000…b271630a |
| 0x0d14bf…574ecd | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Transfer | [0] 0x000000000000…e8b440ef [1] 0x000000000000…31d19231 data: 0x000000000000000000…68485229 |
| 0x0d14bf…574ecd | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | Transfer | [0] 0x000000000000…9af67c25 [1] 0x000000000000…e8b440ef data: 0x000000000000000000…68485229 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x29b903…929220 | Approve | 28,985,019 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | 0x177e…2e2a | IN | pools.fun | $0.000 ETH | 0.00000120 | |
| 0x1b59b2…0b963a | Approve | 28,985,015 | 11 days agoThu, 06 Aug 2026 02:21:00 UTC | 0xb756…806a | IN | pools.fun | $0.000 ETH | 0.00000119 | |
| 0xea5cfe…e0e880 | Approve | 28,985,011 | 11 days agoThu, 06 Aug 2026 02:20:59 UTC | 0xd4d7…1159 | IN | pools.fun | $0.000 ETH | 0.00000121 | |
| 0x23d04f…297472 | Approve | 28,984,951 | 11 days agoThu, 06 Aug 2026 02:20:53 UTC | 0xa395…6532 | IN | pools.fun | $0.000 ETH | 0.00000121 | |
| 0x9dfbf2…e98e8d | Approve | 28,984,941 | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | 0x10f8…9dee | IN | pools.fun | $0.000 ETH | 0.00000123 | |
| 0xbb21ba…a79b14 | Approve | 28,984,937 | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | 0x3576…214a | IN | pools.fun | $0.000 ETH | 0.00000120 | |
| 0xc25cc7…828707 | Approve | 28,984,936 | 11 days agoThu, 06 Aug 2026 02:20:52 UTC | 0x59d5…7c25 | IN | pools.fun | $0.000 ETH | 0.00000120 | |
| 0x61637b…b97c68 | Approve | 28,984,906 | 11 days agoThu, 06 Aug 2026 02:20:49 UTC | 0x7975…fcac | IN | pools.fun | $0.000 ETH | 0.00000120 | |
| 0xaae0ff…ac472b | Approve | 28,984,903 | 11 days agoThu, 06 Aug 2026 02:20:48 UTC | 0x17d5…5927 | IN | pools.fun | $0.000 ETH | 0.00000121 | |
| 0xa4912f…ed21e7 | Approve | 28,984,856 | 11 days agoThu, 06 Aug 2026 02:20:44 UTC | 0x4d97…0018 | IN | pools.fun | $0.000 ETH | 0.00000119 | |
| 0x940670…cffc6d | Approve | 28,984,851 | 11 days agoThu, 06 Aug 2026 02:20:43 UTC | 0xd515…74db | IN | pools.fun | $0.000 ETH | 0.00000121 | |
| 0xac2176…79045e | Approve | 28,984,847 | 11 days agoThu, 06 Aug 2026 02:20:43 UTC | 0xdeee…4de6 | IN | pools.fun | $0.000 ETH | 0.00000120 | |
| 0x6f56ff…4bc7c0 | Approve | 28,984,842 | 11 days agoThu, 06 Aug 2026 02:20:42 UTC | 0xab29…7fa2 | IN | pools.fun | $0.000 ETH | 0.00000122 | |
| 0xcc1308…62cc62 | Approve | 28,984,299 | 11 days agoThu, 06 Aug 2026 02:19:48 UTC | 0xe0b4…9991 | IN | pools.fun | $0.000 ETH | 0.00000119 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 28,982,846 | 11 days agoThu, 06 Aug 2026 02:17:23 UTC | 0xe85187…7d7757 | CREATE2 | 0xeab9327b | 0xeb33…1f72 | IN | 0x17cd…5afe | 0 ETH |