// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {IUniswapV3FactoryLike, IUniswapV3PoolImmutablesLike} from "./interfaces/ILaunchpad.sol";
/**
* @title PonsLauncherToken
* @notice Fixed-supply ERC-20 deployed by PonsLaunchFactory for a V3 launch.
* Launch protections only apply to buys from the canonical pool during the
* configured restriction window. Afterward the token behaves as a plain ERC-20.
*/
contract PonsLauncherToken is ERC20 {
struct Socials {
string twitter;
string telegram;
string discord;
string website;
string farcaster;
}
error LaunchBlockBuyBlocked(address recipient);
error MaxWalletExceeded(address account, uint256 balance, uint256 limit);
error MaxTxExceeded(address recipient, uint256 attempted, uint256 limit);
error NotLaunchFactory();
error ZeroAddress();
address public immutable deployer;
address public immutable launchFactory;
address public immutable dexFactory;
address public immutable positionManager;
address public immutable pairToken;
uint24 public immutable poolFee;
uint256 public immutable launchBlock;
uint256 public immutable restrictionBlocks;
uint256 public immutable restrictionEndBlock;
uint16 public immutable maxWalletBps;
uint16 public immutable maxTxBps;
string public logo;
string public description;
Socials private _socials;
address private _initialBuyRecipient;
mapping(address recipient => uint256 amount) private _restrictedPoolBuys;
/**
* @notice Creates a launch token and mints its entire supply to the factory.
*/
constructor(
string memory name_,
string memory symbol_,
string memory logo_,
string memory description_,
Socials memory socials_,
address deployer_,
address dexFactory_,
address positionManager_,
address pairToken_,
uint24 poolFee_,
uint256 supply_,
uint16 maxWalletBps_,
uint16 maxTxBps_,
uint32 restrictionBlocks_
) ERC20(name_, symbol_) {
if (
deployer_ == address(0) || dexFactory_ == address(0) || positionManager_ == address(0)
|| pairToken_ == address(0)
) {
revert ZeroAddress();
}
deployer = deployer_;
launchFactory = msg.sender;
dexFactory = dexFactory_;
positionManager = positionManager_;
pairToken = pairToken_;
poolFee = poolFee_;
launchBlock = block.number;
restrictionBlocks = restrictionBlocks_;
restrictionEndBlock = block.number + restrictionBlocks_;
maxWalletBps = maxWalletBps_;
maxTxBps = maxTxBps_;
logo = logo_;
description = description_;
_socials = socials_;
_mint(msg.sender, supply_);
}
/**
* @notice Returns the canonical V3 pool once the factory has created it.
*/
function liquidityPool() public view returns (address) {
return IUniswapV3FactoryLike(dexFactory).getPool(address(this), pairToken, poolFee);
}
/**
* @notice Returns the launch token's five social metadata fields.
*/
function socials()
external
view
returns (
string memory twitter,
string memory telegram,
string memory discord,
string memory website,
string memory farcaster
)
{
Socials memory values = _socials;
return (values.twitter, values.telegram, values.discord, values.website, values.farcaster);
}
/**
* @notice Returns creator and metadata in the launcher-compatible tuple.
*/
function getTokenInfo()
external
view
returns (
address tokenDeployer,
string memory tokenLogo,
string memory tokenDescription,
Socials memory tokenSocials
)
{
return (deployer, logo, description, _socials);
}
/**
* @notice Maximum recipient balance during the restricted launch window.
*/
function maxWalletLimit() public view returns (uint256) {
return (totalSupply() * maxWalletBps) / 10_000;
}
/**
* @notice Compatibility alias for maxWalletLimit.
*/
function maxWalletAmount() external view returns (uint256) {
return maxWalletLimit();
}
/**
* @notice Base cumulative pool-buy limit during the restricted window.
*/
function maxTxLimit() public view returns (uint256) {
return (totalSupply() * maxTxBps) / 10_000;
}
/**
* @notice Compatibility alias for maxTxLimit.
*/
function maxTxAmount() external view returns (uint256) {
return maxTxLimit();
}
/**
* @notice Opens or closes the one-call exemption used by the factory's atomic initial buy.
*/
function setInitialBuyRecipient(address recipient) external {
if (msg.sender != launchFactory) revert NotLaunchFactory();
_initialBuyRecipient = recipient;
}
/**
* @dev Applies the observed launch restrictions only to pool-to-user buys.
* The factory opens a narrow recipient exemption only while its atomic
* initial buy is executing.
*/
function _update(address from, address to, uint256 value) internal override {
if (from != address(0) && to != address(0) && block.number <= restrictionEndBlock) {
bool isRestrictedBuy = _isPairPool(from);
if (!isRestrictedBuy) {
super._update(from, to, value);
return;
}
bool isAtomicLaunchBuy =
block.number == launchBlock && _initialBuyRecipient != address(0) && to == _initialBuyRecipient;
if (!isAtomicLaunchBuy && block.number == launchBlock) {
revert LaunchBlockBuyBlocked(to);
}
if (!isAtomicLaunchBuy) {
uint256 walletLimit = maxWalletLimit();
uint256 resultingBalance = balanceOf(to) + value;
if (resultingBalance > walletLimit) {
revert MaxWalletExceeded(to, resultingBalance, walletLimit);
}
uint256 cumulative = _restrictedPoolBuys[to] + value;
uint256 cumulativeLimit = maxTxLimit();
if (cumulative > cumulativeLimit) {
revert MaxTxExceeded(to, cumulative, cumulativeLimit);
}
_restrictedPoolBuys[to] = cumulative;
}
}
super._update(from, to, value);
}
/**
* @notice Identifies any V3 pool registered by the configured factory for
* this token and its paired asset, regardless of fee tier.
*/
function _isPairPool(address candidate) private view returns (bool) {
address canonicalPool = liquidityPool();
if (candidate == canonicalPool && canonicalPool != address(0)) return true;
if (candidate.code.length == 0) return false;
(bool feeRead, bytes memory feeData) =
candidate.staticcall(abi.encodeCall(IUniswapV3PoolImmutablesLike.fee, ()));
if (!feeRead || feeData.length < 32) return false;
uint24 candidateFee = abi.decode(feeData, (uint24));
return IUniswapV3FactoryLike(dexFactory).getPool(address(this), pairToken, candidateFee) == candidate;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "logo_",
"type": "string",
"internalType": "string"
},
{
"name": "description_",
"type": "string",
"internalType": "string"
},
{
"name": "socials_",
"type": "tuple",
"components": [
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "telegram",
"type": "string",
"internalType": "string"
},
{
"name": "discord",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "farcaster",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct PonsLauncherToken.Socials"
},
{
"name": "deployer_",
"type": "address",
"internalType": "address"
},
{
"name": "dexFactory_",
"type": "address",
"internalType": "address"
},
{
"name": "positionManager_",
"type": "address",
"internalType": "address"
},
{
"name": "pairToken_",
"type": "address",
"internalType": "address"
},
{
"name": "poolFee_",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "supply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxWalletBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "maxTxBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "restrictionBlocks_",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "LaunchBlockBuyBlocked",
"type": "error",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "MaxTxExceeded",
"type": "error",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
},
{
"name": "attempted",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "limit",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "MaxWalletExceeded",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "limit",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "NotLaunchFactory",
"type": "error",
"inputs": []
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"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": "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": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"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": "deployer",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "description",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "dexFactory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getTokenInfo",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "tokenDeployer",
"type": "address",
"internalType": "address"
},
{
"name": "tokenLogo",
"type": "string",
"internalType": "string"
},
{
"name": "tokenDescription",
"type": "string",
"internalType": "string"
},
{
"name": "tokenSocials",
"type": "tuple",
"components": [
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "telegram",
"type": "string",
"internalType": "string"
},
{
"name": "discord",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "farcaster",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct PonsLauncherToken.Socials"
}
],
"stateMutability": "view"
},
{
"name": "launchBlock",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "launchFactory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "liquidityPool",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "logo",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "maxTxAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxTxBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "maxTxLimit",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxWalletAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxWalletBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "maxWalletLimit",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "pairToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "poolFee",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "restrictionBlocks",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "restrictionEndBlock",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "setInitialBuyRecipient",
"type": "function",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "socials",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "telegram",
"type": "string",
"internalType": "string"
},
{
"name": "discord",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "farcaster",
"type": "string",
"internalType": "string"
}
],
"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": "value",
"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": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a105780630861ac61146109d6578063089fe6aa14610997578063095ea7b31461091557806312f16a07146108d757806318160ddd146108ba57806323b872dd146107d5578063313ce567146107ba5780633de35b7914610777578063536dac9b1461073457806353cd512a146106a8578063665a11ca1461067d57806366a88d961461043c57806370a082311461064657806370bffe1b146105c95780637284e416146105ae578063791b98bc1461056b5780638036d590146105665780638c0b5e221461056657806395d89b4114610472578063a9059cbb14610441578063aa4bde281461043c578063abb1dc4414610326578063b8d8fbb4146102e3578063baed0765146102a9578063d00efb2f1461026f578063d5f394881461022c578063dd62ed3e146101d8578063fb7f21eb146101a55763ff8ea3e514610163575f80fd5b346101a1575f3660031901126101a157602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000226168152f35b5f80fd5b346101a1575f3660031901126101a1576101d46101c0610c5d565b604051918291602083526020830190610acb565b0390f35b346101a15760403660031901126101a1576101f1610aef565b6001600160a01b03610201610b05565b91165f5260016020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b346101a1575f3660031901126101a15760206040516001600160a01b037f0000000000000000000000003c4d11926811be10fe3e5982d5c4c5c1428646b9168152f35b346101a1575f3660031901126101a15760206040517f0000000000000000000000000000000000000000000000000000000001870bbd8152f35b346101a1575f3660031901126101a15760206040517f00000000000000000000000000000000000000000000000000000000000000028152f35b346101a1575f3660031901126101a15760206040516001600160a01b037f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa168152f35b346101a1575f3660031901126101a1576060608060405161034681610b3d565b828152826020820152826040820152828082015201526103c1610367610c5d565b6101d4610372610b8f565b6103cf61037d610dd9565b916040519586956001600160a01b037f0000000000000000000000003c4d11926811be10fe3e5982d5c4c5c1428646b9168752608060208801526080870190610acb565b908582036040870152610acb565b8381036060850152608061042b6104196104076103f5865160a0875260a0870190610acb565b60208701518682036020880152610acb565b60408601518582036040870152610acb565b60608501518482036060860152610acb565b920151906080818403910152610acb565b610b1b565b346101a15760403660031901126101a15761046761045d610aef565b6024359033610fce565b602060405160018152f35b346101a1575f3660031901126101a1576040515f6004548060011c9060018116801561055c575b6020831081146105485782855290811561052457506001146104c6575b6101d4836101c081850382610b6d565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b80821061050a575090915081016020016101c06104b6565b9192600181602092548385880101520191019092916104f2565b60ff191660208086019190915291151560051b840190910191506101c090506104b6565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610499565b610dbf565b346101a1575f3660031901126101a15760206040516001600160a01b037f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d3168152f35b346101a1575f3660031901126101a1576101d46101c0610b8f565b346101a15760203660031901126101a1576105e2610aef565b6001600160a01b037f000000000000000000000000a5aab3f0c6eeadf30ef1d3eb997108e976351feb163303610637576001600160a01b03166bffffffffffffffffffffffff60a01b600c541617600c555f80f35b639f5f2caf60e01b5f5260045ffd5b346101a15760203660031901126101a1576001600160a01b03610667610aef565b165f525f602052602060405f2054604051908152f35b346101a1575f3660031901126101a1576020610697610e50565b6001600160a01b0360405191168152f35b346101a1575f3660031901126101a1576106fc6106c3610dd9565b6101d4815191610726602082015191610718604082015161070a6080606085015194015195604051998a9960a08b5260a08b0190610acb565b9089820360208b0152610acb565b908782036040890152610acb565b908582036060870152610acb565b908382036080850152610acb565b346101a1575f3660031901126101a15760206040516001600160a01b037f000000000000000000000000a5aab3f0c6eeadf30ef1d3eb997108e976351feb168152f35b346101a1575f3660031901126101a15760206040516001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73168152f35b346101a1575f3660031901126101a157602060405160128152f35b346101a15760603660031901126101a1576107ee610aef565b6107f6610b05565b604435906001600160a01b03831692835f52600160205260405f206001600160a01b0333165f5260205260405f20545f198110610839575b506104679350610fce565b83811061089f57841561088c57331561087957610467945f52600160205260405f206001600160a01b0333165f526020528360405f20910390558461082e565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b346101a1575f3660031901126101a1576020600254604051908152f35b346101a1575f3660031901126101a157602060405161ffff7f00000000000000000000000000000000000000000000000000000000000001f4168152f35b346101a15760403660031901126101a15761092e610aef565b60243590331561088c576001600160a01b031690811561087957335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346101a1575f3660031901126101a157602060405162ffffff7f0000000000000000000000000000000000000000000000000000000000002710168152f35b346101a1575f3660031901126101a15760206040517f0000000000000000000000000000000000000000000000000000000001870bbf8152f35b346101a1575f3660031901126101a1576040515f6003548060011c90600181168015610ac1575b602083108114610548578285529081156105245750600114610a63576101d4836101c081850382610b6d565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b808210610aa7575090915081016020016101c06104b6565b919260018160209254838588010152019101909291610a8f565b91607f1691610a37565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101a157565b602435906001600160a01b03821682036101a157565b346101a1575f3660031901126101a1576020610b35610f62565b604051908152f35b60a0810190811067ffffffffffffffff821117610b5957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610b5957604052565b604051905f6006548060011c9160018216918215610c53575b602084108314610548578386528592908115610c345750600114610bd5575b610bd392500383610b6d565b565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b818310610c18575050906020610bd392820101610bc7565b6020919350806001915483858901015201910190918492610c00565b60209250610bd394915060ff191682840152151560051b820101610bc7565b92607f1692610ba8565b604051905f6005548060011c9160018216918215610cff575b602084108314610548578386528592908115610c345750600114610ca057610bd392500383610b6d565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b818310610ce3575050906020610bd392820101610bc7565b6020919350806001915483858901015201910190918492610ccb565b92607f1692610c76565b90604051915f8154908160011c9260018316928315610db5575b602085108414610548578487528693908115610d935750600114610d4f575b50610bd392500383610b6d565b90505f9291925260205f20905f915b818310610d77575050906020610bd3928201015f610d42565b6020919350806001915483858901015201910190918492610d5e565b905060209250610bd394915060ff191682840152151560051b8201015f610d42565b93607f1693610d23565b346101a1575f3660031901126101a1576020610b35610f9a565b60405190610de682610b3d565b81610df16007610d09565b8152610dfd6008610d09565b6020820152610e0c6009610d09565b6040820152610e1b600a610d09565b60608201526080610e2c600b610d09565b910152565b908160209103126101a157516001600160a01b03811681036101a15790565b604051630b4c774160e11b81523060048201526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316602482015262ffffff7f0000000000000000000000000000000000000000000000000000000000002710166044820152602081806064810103816001600160a01b037f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa165afa908115610f30575f91610f04575090565b610f26915060203d602011610f29575b610f1e8183610b6d565b810190610e31565b90565b503d610f14565b6040513d5f823e3d90fd5b81810292918115918404141715610f4e57565b634e487b7160e01b5f52601160045260245ffd5b612710610f9660025461ffff7f00000000000000000000000000000000000000000000000000000000000001f41690610f3b565b0490565b612710610f9660025461ffff7f00000000000000000000000000000000000000000000000000000000000002261690610f3b565b91906001600160a01b0383161561100a576001600160a01b03811615610ff757610bd39261102a565b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b91908201809211610f4e57565b9291906001600160a01b0384161515806111c6575b8061119c575b611054575b610bd3929361137e565b61105d846111d8565b1561104a57437f0000000000000000000000000000000000000000000000000000000001870bbd148080611188575b8061116b575b1580918192611163575b50611147571561104a576110ae610f62565b936001600160a01b03821694855f525f6020526110cf8460405f205461101d565b81811161112e575050845f52600d6020526110ee8360405f205461101d565b6110f6610f9a565b95868211611113575f908152600d6020526040902055935061104a565b8692506334e5f8b760e21b5f5260045260245260445260645ffd5b866304a43e8b60e51b5f5260045260245260445260645ffd5b6001600160a01b03826385234f9760e01b5f521660045260245ffd5b90505f61109c565b506001600160a01b03600c54166001600160a01b03831614611092565b506001600160a01b03600c5416151561108c565b507f0000000000000000000000000000000000000000000000000000000001870bbf431115611045565b506001600160a01b038116151561103f565b6001600160a01b036111e8610e50565b16906001600160a01b038116918083149081611374575b5061136d57803b15611354575f8091604051602081019063ddca3f4360e01b82526004815261122f602482610b6d565b51915afa3d15611365573d9067ffffffffffffffff8211610b595760405191611262601f8201601f191660200184610b6d565b82523d5f602084013e5b15801561135a575b611354576020818051810103126101a1576020015162ffffff811681036101a157604051630b4c774160e11b81523060048201526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316602482015262ffffff9091166044820152602081806064810103816001600160a01b037f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa165afa8015610f30576001600160a01b03915f91611335575b50161490565b61134e915060203d602011610f2957610f1e8183610b6d565b5f61132f565b50505f90565b506020815110611274565b60609061126c565b5050600190565b905015155f6111ff565b6001600160a01b031690816113f75760206001600160a01b037fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926113c58660025461101d565b6002555b1693846113e25780600254036002555b604051908152a3565b845f525f825260405f208181540190556113d9565b815f525f60205260405f2054838110611449576001600160a01b037fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9285602093865f525f85520360405f20556113c9565b91905063391434e360e21b5f5260045260245260445260645ffdfea2646970667358221220d8bb5c056858dbf647eee176f2719eb6bb7f485aa2ad17c5be6b0555608dd26164736f6c634300081e0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x5b6825…116162 | Approve | 38,705,055 | 20 hrs agoMon, 17 Aug 2026 08:48:19 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0xe711bd…8a1c6a | Approve | 38,704,728 | 20 hrs agoMon, 17 Aug 2026 08:47:46 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0xe417af…4c9f87 | Approve | 38,703,857 | 20 hrs agoMon, 17 Aug 2026 08:46:18 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0xa4750d…05a179 | Approve | 38,703,585 | 20 hrs agoMon, 17 Aug 2026 08:45:51 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x4e5a6a…5cbd4a | Approve | 38,703,438 | 20 hrs agoMon, 17 Aug 2026 08:45:36 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000093 | |
| 0x081d7e…601979 | Approve | 38,703,171 | 20 hrs agoMon, 17 Aug 2026 08:45:09 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x34de89…928e4f | Approve | 38,702,975 | 20 hrs agoMon, 17 Aug 2026 08:44:49 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x1c67c2…6038db | Approve | 38,702,762 | 20 hrs agoMon, 17 Aug 2026 08:44:28 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0xde8566…c79c0f | Approve | 38,702,495 | 20 hrs agoMon, 17 Aug 2026 08:44:01 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x706fcb…05b4df | Approve | 38,702,208 | 20 hrs agoMon, 17 Aug 2026 08:43:32 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x70a371…e346c0 | Approve | 38,701,988 | 20 hrs agoMon, 17 Aug 2026 08:43:10 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x8fc7cb…f8c36e | Approve | 38,701,828 | 20 hrs agoMon, 17 Aug 2026 08:42:54 UTC | 0x228b…ee08 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x547b77…48d875 | Approve | 38,698,033 | 20 hrs agoMon, 17 Aug 2026 08:36:33 UTC | 0xb1c1…6b63 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0xa91908…c7dbb0 | Approve | 38,697,430 | 20 hrs agoMon, 17 Aug 2026 08:35:33 UTC | 0x63e2…0332 | IN | Jason Brett | $0.000 ETH | 0.00000093 | |
| 0xc9da83…7b7f64 | Approve | 38,697,329 | 20 hrs agoMon, 17 Aug 2026 08:35:23 UTC | 0x31d8…21ba | IN | Jason Brett | $0.000 ETH | 0.00000093 | |
| 0xfe5585…016a45 | Approve | 38,697,000 | 20 hrs agoMon, 17 Aug 2026 08:34:50 UTC | 0x5b30…f55a | IN | Jason Brett | $0.000 ETH | 0.00000093 | |
| 0xdc804c…81ddbb | Approve | 38,696,672 | 20 hrs agoMon, 17 Aug 2026 08:34:17 UTC | 0x43f9…bb86 | IN | Jason Brett | $0.000 ETH | 0.00000093 | |
| 0x38209d…e7b44a | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0xaa95…b3e5 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0xd1a9d3…37ed7b | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0x0d7c…846a | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x1c3f1a…f2967f | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0x8e28…c900 | IN | Jason Brett | $0.000 ETH | 0.00000052 | |
| 0xc86903…1ef69a | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0x37d8…841b | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x3e321f…067c0b | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0xfd75…4b0a | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x6b21ba…519596 | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0x613d…dbd1 | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x6d8933…514a6d | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0xd101…a44e | IN | Jason Brett | $0.000 ETH | 0.00000092 | |
| 0x7a3073…bae5c3 | Approve | 38,695,564 | 20 hrs agoMon, 17 Aug 2026 08:32:26 UTC | 0xa8d6…ff59 | IN | Jason Brett | $0.000 ETH | 0.00000052 |
| Rank | Holder | Balance | Percentage | USD Value |
|---|---|---|---|---|
| 1 | 0x6739…ee1f | 994,284,706.791935 | 99.4285% | $2,596.57 |
| 2 | 0x68cf…308c | 82,441.580888 | 0.0082% | $0.22 |
| 3 | 0xc676…53a5 | 8,162.398477 | 0.0008% | $0.02 |
| 4 | 0x9dff…8d5b | 0.000786 | 0.0000% | $0 |
| 5 | 0x8a18…1c76 | 729,062.041283 | 0.0729% | $1.9 |
| 6 | 0xdcd9…d7ce | 65,351.834280 | 0.0065% | $0.17 |
| 7 | 0xdd79…6843 | 5,463.456295 | 0.0005% | $0.01 |
| 8 | 0x8b98…8590 | 4,660.388659 | 0.0005% | $0.01 |
| 9 | 0xf1ad…87ab | 4,523.933560 | 0.0005% | $0.01 |
| 10 | 0x8c28…a7b3 | 4,461.459699 | 0.0004% | $0.01 |
| 11 | 0x9b4c…9d9d | 4,458.882731 | 0.0004% | $0.01 |
| 12 | 0xda4b…3968 | 4,150,763.270321 | 0.4151% | $10.84 |
| 13 | 0xe07e…bd7f | 25,952.681515 | 0.0026% | $0.07 |
| 14 | 0xaada…a312 | 22,981.233282 | 0.0023% | $0.06 |
| 15 | 0x8822…0f0e | 22,957.975488 | 0.0023% | $0.06 |
| 16 | 0xa8ab…8bd1 | 22,549.630874 | 0.0023% | $0.06 |
| 17 | 0x6514…1ff1 | 19,304.605206 | 0.0019% | $0.05 |
| 18 | 0xe091…cf8a | 176,537.811593 | 0.0177% | $0.46 |
| 19 | 0xd9bc…1b80 | 17,500.648469 | 0.0018% | $0.05 |
| 20 | 0xfca4…e450 | 169,821.492796 | 0.0170% | $0.44 |
| 21 | 0x465f…1fea | 14,910.175365 | 0.0015% | $0.04 |
| 22 | 0xa5ba…f7a0 | 14,235.850427 | 0.0014% | $0.04 |
| 23 | 0xac08…d23b | 13,147.272017 | 0.0013% | $0.03 |
| 24 | 0xcd8b…b33d | 124,381.486894 | 0.0124% | $0.32 |
| 25 | 0xa5aa…1feb | 0.000000 | 0.0000% | $0 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 21,143,886 | 21 days agoMon, 27 Jul 2026 23:58:39 UTC | 0x5a6502…3a36ce | CREATE2 | launchToken | 0xa5aa…1feb | IN | 0x1778…e676 | 0 ETH |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x72925e…aacecb | 15 hrs agoMon, 17 Aug 2026 14:09:32 UTC | Transfer | [0] 0x000000000000…428646b9 [1] 0x000000000000…91ecee1f data: 0x000000000000000000…88e35d40 |
| 0xea1f08…752398 | 15 hrs agoMon, 17 Aug 2026 14:09:30 UTC | Transfer | [0] 0x000000000000…471f7f35 [1] 0x000000000000…428646b9 data: 0x000000000000000000…2403bf07 |
| 0xea1f08…752398 | 15 hrs agoMon, 17 Aug 2026 14:09:30 UTC | Transfer | [0] 0x000000000000…471f7f35 [1] 0x000000000000…42043968 data: 0x000000000000000000…c64abf95 |
| 0xea1f08…752398 | 15 hrs agoMon, 17 Aug 2026 14:09:30 UTC | Transfer | [0] 0x000000000000…91ecee1f [1] 0x000000000000…471f7f35 data: 0x000000000000000000…ea4e7e9c |
| 0xd29033…295ed5 | 16 hrs agoMon, 17 Aug 2026 13:18:21 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…91ecee1f data: 0x000000000000000000…79e402a5 |
| 0xd29033…295ed5 | 16 hrs agoMon, 17 Aug 2026 13:18:21 UTC | Approval | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…72c22734 data: 0x000000000000000000…79e402a5 |
| 0xd29033…295ed5 | 16 hrs agoMon, 17 Aug 2026 13:18:21 UTC | Transfer | [0] 0x000000000000…7b267159 [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…79e402a5 |
| 0xd29033…295ed5 | 16 hrs agoMon, 17 Aug 2026 13:18:21 UTC | Approval | [0] 0x000000000000…7b267159 [1] 0x000000000000…f1c315be data: 0x000000000000000000…79e402a5 |
| 0x3a70fc…5aed61 | 16 hrs agoMon, 17 Aug 2026 13:18:14 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…7b267159 data: 0x000000000000000000…8b43644d |
| 0x3a70fc…5aed61 | 16 hrs agoMon, 17 Aug 2026 13:18:14 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…8b43644d |
| 0x3a70fc…5aed61 | 16 hrs agoMon, 17 Aug 2026 13:18:14 UTC | Transfer | [0] 0x000000000000…91ecee1f [1] 0x000000000000…d113f996 data: 0x000000000000000000…8b43644d |
| 0x94fc4d…ccce9a | 20 hrs agoMon, 17 Aug 2026 08:53:56 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…91ecee1f data: 0x000000000000000000…1e3f076c |
| 0x94fc4d…ccce9a | 20 hrs agoMon, 17 Aug 2026 08:53:56 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…d113f996 data: 0x000000000000000000…1e3f076c |
| 0x94fc4d…ccce9a | 20 hrs agoMon, 17 Aug 2026 08:53:56 UTC | Approval | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…b66337b5 data: 0x000000000000000000…1e3f076c |
| 0x94fc4d…ccce9a | 20 hrs agoMon, 17 Aug 2026 08:53:56 UTC | Transfer | [0] 0x000000000000…b8140537 [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…1e3f076c |
| 0x94fc4d…ccce9a | 20 hrs agoMon, 17 Aug 2026 08:53:56 UTC | Approval | [0] 0x000000000000…b8140537 [1] 0x000000000000…f1c315be data: 0x000000000000000000…1e3f076c |
| 0x9f85ae…0272f7 | 20 hrs agoMon, 17 Aug 2026 08:53:49 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…b8140537 data: 0x000000000000000000…99b9aa3a |
| 0x9f85ae…0272f7 | 20 hrs agoMon, 17 Aug 2026 08:53:49 UTC | Transfer | [0] 0x000000000000…91ecee1f [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…99b9aa3a |
| 0x57b09b…be1471 | 20 hrs agoMon, 17 Aug 2026 08:53:23 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…b8140537 data: 0x000000000000000000…dd210929 |
| 0x57b09b…be1471 | 20 hrs agoMon, 17 Aug 2026 08:53:23 UTC | Transfer | [0] 0x000000000000…91ecee1f [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…dd210929 |
| 0x5d37a1…48610b | 20 hrs agoMon, 17 Aug 2026 08:52:37 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…11c41c76 data: 0x000000000000000000…91121e95 |
| 0x5d37a1…48610b | 20 hrs agoMon, 17 Aug 2026 08:52:37 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…91121e95 |
| 0x5d37a1…48610b | 20 hrs agoMon, 17 Aug 2026 08:52:37 UTC | Transfer | [0] 0x000000000000…91ecee1f [1] 0x000000000000…d113f996 data: 0x000000000000000000…91121e95 |
| 0x8719a6…3cf0b6 | 20 hrs agoMon, 17 Aug 2026 08:48:31 UTC | Transfer | [0] 0x000000000000…d724a44e [1] 0x000000000000…91ecee1f data: 0x000000000000000000…5f27ec05 |
| 0xe5d441…cb67f8 | 20 hrs agoMon, 17 Aug 2026 08:48:31 UTC | Transfer | [0] 0x000000000000…2e8f841b [1] 0x000000000000…91ecee1f data: 0x000000000000000000…98ffe525 |