// 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 LemonLauncherToken
* @notice Fixed-supply ERC-20 launched via the lemon.fun launchpad.
* https://lemon.fun
*/
contract LemonLauncherToken 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 LemonLauncherToken.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 LemonLauncherToken.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"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a085780630861ac61146109ce578063089fe6aa1461098f578063095ea7b31461090d57806312f16a07146108cf57806318160ddd146108b257806323b872dd146107d3578063313ce567146107b85780633de35b7914610774578063536dac9b1461073057806353cd512a146106a4578063665a11ca1461067857806366a88d961461043957806370a082311461064157806370bffe1b146105c75780637284e416146105ac578063791b98bc146105685780638036d590146105635780638c0b5e221461056357806395d89b411461046f578063a9059cbb1461043e578063aa4bde2814610439578063abb1dc4414610324578063b8d8fbb4146102e0578063baed0765146102a6578063d00efb2f1461026c578063d5f3948814610228578063dd62ed3e146101d8578063fb7f21eb146101a55763ff8ea3e514610163575f80fd5b346101a1575f3660031901126101a157602060405161ffff7f0000000000000000000000000000000000000000000000000000000000002710168152f35b5f80fd5b346101a1575f3660031901126101a1576101d46101c0610c55565b604051918291602083526020830190610ac3565b0390f35b346101a15760403660031901126101a1576101f1610ae7565b6101f9610afd565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b346101a1575f3660031901126101a1576040517f000000000000000000000000943bc34dab3565eb026306ec46a2f4d0f06d08166001600160a01b03168152602090f35b346101a1575f3660031901126101a15760206040517f000000000000000000000000000000000000000000000000000000000186b1f08152f35b346101a1575f3660031901126101a15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101a1575f3660031901126101a1576040517f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03168152602090f35b346101a1575f3660031901126101a1576060608060405161034481610b35565b828152826020820152826040820152828082015201526103be610365610c55565b6101d4610370610b87565b6103cc61037b610dd1565b9160405195869560018060a01b037f000000000000000000000000943bc34dab3565eb026306ec46a2f4d0f06d0816168752608060208801526080870190610ac3565b908582036040870152610ac3565b838103606085015260806104286104166104046103f2865160a0875260a0870190610ac3565b60208701518682036020880152610ac3565b60408601518582036040870152610ac3565b60608501518482036060860152610ac3565b920151906080818403910152610ac3565b610b13565b346101a15760403660031901126101a15761046461045a610ae7565b6024359033610fc6565b602060405160018152f35b346101a1575f3660031901126101a1576040515f6004548060011c90600181168015610559575b6020831081146105455782855290811561052157506001146104c3575b6101d4836101c081850382610b65565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610507575090915081016020016101c06104b3565b9192600181602092548385880101520191019092916104ef565b60ff191660208086019190915291151560051b840190910191506101c090506104b3565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610496565b610db7565b346101a1575f3660031901126101a1576040517f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d36001600160a01b03168152602090f35b346101a1575f3660031901126101a1576101d46101c0610b87565b346101a15760203660031901126101a1576105e0610ae7565b7f0000000000000000000000002a60adcfe6f1d38141d65dd71f0accc3ee3a3c906001600160a01b0316330361063257600c80546001600160a01b0319166001600160a01b0392909216919091179055005b639f5f2caf60e01b5f5260045ffd5b346101a15760203660031901126101a1576001600160a01b03610662610ae7565b165f525f602052602060405f2054604051908152f35b346101a1575f3660031901126101a1576020610692610e48565b6040516001600160a01b039091168152f35b346101a1575f3660031901126101a1576106f86106bf610dd1565b6101d481519161072260208201519161071460408201516107066080606085015194015195604051998a9960a08b5260a08b0190610ac3565b9089820360208b0152610ac3565b908782036040890152610ac3565b908582036060870152610ac3565b908382036080850152610ac3565b346101a1575f3660031901126101a1576040517f0000000000000000000000002a60adcfe6f1d38141d65dd71f0accc3ee3a3c906001600160a01b03168152602090f35b346101a1575f3660031901126101a1576040517f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168152602090f35b346101a1575f3660031901126101a157602060405160128152f35b346101a15760603660031901126101a1576107ec610ae7565b6107f4610afd565b6001600160a01b0382165f818152600160209081526040808320338452909152902054909260443592915f198110610832575b506104649350610fc6565b83811061089757841561088457331561087157610464945f52600160205260405f2060018060a01b0333165f526020528360405f209103905584610827565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b346101a1575f3660031901126101a1576020600254604051908152f35b346101a1575f3660031901126101a157602060405161ffff7f0000000000000000000000000000000000000000000000000000000000002710168152f35b346101a15760403660031901126101a157610926610ae7565b602435903315610884576001600160a01b031690811561087157335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346101a1575f3660031901126101a157602060405162ffffff7f0000000000000000000000000000000000000000000000000000000000002710168152f35b346101a1575f3660031901126101a15760206040517f000000000000000000000000000000000000000000000000000000000186b1f08152f35b346101a1575f3660031901126101a1576040515f6003548060011c90600181168015610ab9575b602083108114610545578285529081156105215750600114610a5b576101d4836101c081850382610b65565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b808210610a9f575090915081016020016101c06104b3565b919260018160209254838588010152019101909291610a87565b91607f1691610a2f565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101a157565b602435906001600160a01b03821682036101a157565b346101a1575f3660031901126101a1576020610b2d610f5a565b604051908152f35b60a0810190811067ffffffffffffffff821117610b5157604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610b5157604052565b604051905f6006548060011c9160018216918215610c4b575b602084108314610545578386528592908115610c2c5750600114610bcd575b610bcb92500383610b65565b565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b818310610c10575050906020610bcb92820101610bbf565b6020919350806001915483858901015201910190918492610bf8565b60209250610bcb94915060ff191682840152151560051b820101610bbf565b92607f1692610ba0565b604051905f6005548060011c9160018216918215610cf7575b602084108314610545578386528592908115610c2c5750600114610c9857610bcb92500383610b65565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b818310610cdb575050906020610bcb92820101610bbf565b6020919350806001915483858901015201910190918492610cc3565b92607f1692610c6e565b90604051915f8154908160011c9260018316928315610dad575b602085108414610545578487528693908115610d8b5750600114610d47575b50610bcb92500383610b65565b90505f9291925260205f20905f915b818310610d6f575050906020610bcb928201015f610d3a565b6020919350806001915483858901015201910190918492610d56565b905060209250610bcb94915060ff191682840152151560051b8201015f610d3a565b93607f1693610d1b565b346101a1575f3660031901126101a1576020610b2d610f92565b60405190610dde82610b35565b81610de96007610d01565b8152610df56008610d01565b6020820152610e046009610d01565b6040820152610e13600a610d01565b60608201526080610e24600b610d01565b910152565b908160209103126101a157516001600160a01b03811681036101a15790565b604051630b4c774160e11b81523060048201526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316602482015262ffffff7f0000000000000000000000000000000000000000000000000000000000002710166044820152602081806064810103817f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03165afa908115610f28575f91610efc575090565b610f1e915060203d602011610f21575b610f168183610b65565b810190610e29565b90565b503d610f0c565b6040513d5f823e3d90fd5b81810292918115918404141715610f4657565b634e487b7160e01b5f52601160045260245ffd5b612710610f8e60025461ffff7f00000000000000000000000000000000000000000000000000000000000027101690610f33565b0490565b612710610f8e60025461ffff7f00000000000000000000000000000000000000000000000000000000000027101690610f33565b91906001600160a01b03831615611002576001600160a01b03811615610fef57610bcb92611022565b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b91908201809211610f4657565b9291906001600160a01b0384161515806111bc575b80611192575b61104c575b610bcb9293611374565b611055846111ce565b1561104257437f000000000000000000000000000000000000000000000000000000000186b1f014808061117e575b80611167575b158091819261115f575b5061113e5715611042576110a6610f5a565b9360018060a01b03821694855f525f6020526110c68460405f2054611015565b818111611125575050845f52600d6020526110e58360405f2054611015565b6110ed610f92565b9586821161110a575f908152600d60205260409020559350611042565b8692506334e5f8b760e21b5f5260045260245260445260645ffd5b866304a43e8b60e51b5f5260045260245260445260645ffd5b506385234f9760e01b5f9081526001600160a01b0391909116600452602490fd5b90505f611094565b50600c546001600160a01b0383811691161461108a565b50600c546001600160a01b03161515611084565b507f000000000000000000000000000000000000000000000000000000000186b1f043111561103d565b506001600160a01b0381161515611037565b6001600160a01b036111de610e48565b6001600160a01b038316929116828114908161136a575b5061136357803b1561134a575f8091604051602081019063ddca3f4360e01b825260048152611225602482610b65565b51915afa3d1561135b573d9067ffffffffffffffff8211610b515760405191611258601f8201601f191660200184610b65565b82523d5f602084013e5b158015611350575b61134a576020818051810103126101a1576020015162ffffff811681036101a157604051630b4c774160e11b81523060048201526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316602482015262ffffff9091166044820152602081806064810103817f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03165afa908115610f28575f9161132b575b506001600160a01b03161490565b611344915060203d602011610f2157610f168183610b65565b5f61131d565b50505f90565b50602081511061126a565b606090611262565b5050600190565b905015155f6111f5565b6001600160a01b031690816113ed5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916113b385600254611015565b6002555b6001600160a01b031693846113d85780600254036002555b604051908152a3565b845f525f825260405f208181540190556113cf565b815f525f60205260405f2054838110611437577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9184602092855f525f84520360405f20556113b7565b91905063391434e360e21b5f5260045260245260445260645ffdfea26469706673582212202545fb3c701fcfdaae214f66ac7612406241e5be4425a41dc2e10af697697d0064736f6c634300081e0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x9932f0…4131d5 | 22 days agoSun, 26 Jul 2026 02:21:56 UTC | Transfer | [0] 0x000000000000…debbee62 [1] 0x000000000000…f06d0816 data: 0x000000000000000000…95943512 |
| 0x9932f0…4131d5 | 22 days agoSun, 26 Jul 2026 02:21:56 UTC | Transfer | [0] 0x000000000000…b61afdfa [1] 0x000000000000…debbee62 data: 0x000000000000000000…95943512 |
| 0x7c31e7…c418f7 | 22 days agoSun, 26 Jul 2026 02:12:52 UTC | Transfer | [0] 0x000000000000…dea36f74 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…dd980cd8 |
| 0x3d9e86…573dc4 | 22 days agoSun, 26 Jul 2026 02:12:52 UTC | Approval | [0] 0x000000000000…dea36f74 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…dd980cd8 |
| 0xb140d8…416aa0 | 22 days agoSun, 26 Jul 2026 02:12:35 UTC | Transfer | [0] 0x000000000000…1782d2b3 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…e281acd9 |
| 0x246f71…2402b1 | 22 days agoSun, 26 Jul 2026 02:12:35 UTC | Approval | [0] 0x000000000000…1782d2b3 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…e281acd9 |
| 0x78323d…32384a | 22 days agoSun, 26 Jul 2026 02:12:17 UTC | Transfer | [0] 0x000000000000…d3c37e4d [1] 0x000000000000…b61afdfa data: 0x000000000000000000…25c8af8f |
| 0xdc9742…63d8e3 | 22 days agoSun, 26 Jul 2026 02:12:17 UTC | Approval | [0] 0x000000000000…d3c37e4d [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…25c8af8f |
| 0xed99e7…dba6f6 | 22 days agoSun, 26 Jul 2026 02:12:01 UTC | Transfer | [0] 0x000000000000…651eba4c [1] 0x000000000000…b61afdfa data: 0x000000000000000000…9340c400 |
| 0xa85c50…cc0918 | 22 days agoSun, 26 Jul 2026 02:12:00 UTC | Approval | [0] 0x000000000000…651eba4c [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…9340c400 |
| 0x7f1af5…0f4078 | 22 days agoSun, 26 Jul 2026 02:11:30 UTC | Transfer | [0] 0x000000000000…afb63fd8 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…78627475 |
| 0x151e25…e87ea0 | 22 days agoSun, 26 Jul 2026 02:11:30 UTC | Approval | [0] 0x000000000000…afb63fd8 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…78627475 |
| 0x3f2005…cd3114 | 22 days agoSun, 26 Jul 2026 02:05:01 UTC | Transfer | [0] 0x000000000000…5291b9dd [1] 0x000000000000…b61afdfa data: 0x000000000000000000…0c9f4c23 |
| 0x57b855…b82b48 | 22 days agoSun, 26 Jul 2026 02:05:01 UTC | Approval | [0] 0x000000000000…5291b9dd [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…0c9f4c23 |
| 0x3a4ed7…ece059 | 22 days agoSun, 26 Jul 2026 02:04:41 UTC | Transfer | [0] 0x000000000000…d494ed79 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…9d2370ff |
| 0xf3dcde…326e20 | 22 days agoSun, 26 Jul 2026 02:04:41 UTC | Approval | [0] 0x000000000000…d494ed79 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…9d2370ff |
| 0xc0d039…b77cf6 | 22 days agoSun, 26 Jul 2026 02:04:23 UTC | Transfer | [0] 0x000000000000…f46f04f5 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…83968fa9 |
| 0xfc0412…d6da09 | 22 days agoSun, 26 Jul 2026 02:04:23 UTC | Approval | [0] 0x000000000000…f46f04f5 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…83968fa9 |
| 0xe15268…94a555 | 22 days agoSun, 26 Jul 2026 02:03:16 UTC | Transfer | [0] 0x000000000000…13a58cb6 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…968b0c3e |
| 0xfb1af9…a477bc | 22 days agoSun, 26 Jul 2026 02:03:16 UTC | Approval | [0] 0x000000000000…13a58cb6 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…968b0c3e |
| 0xa239c0…c5cfcf | 22 days agoSun, 26 Jul 2026 02:02:43 UTC | Transfer | [0] 0x000000000000…093d91e5 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…5961d20d |
| 0x7c8b4a…91867d | 22 days agoSun, 26 Jul 2026 02:02:43 UTC | Approval | [0] 0x000000000000…093d91e5 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…5961d20d |
| 0xae4ae5…255ea9 | 23 days agoSat, 25 Jul 2026 07:02:55 UTC | Approval | [0] 0x000000000000…11048088 [1] 0x000000000000…aedcd5a2 data: 0xffffffffffffffffff…ffffffff |
| 0x183f8f…766e73 | 23 days agoSat, 25 Jul 2026 06:53:04 UTC | Transfer | [0] 0x000000000000…4ff6f199 [1] 0x000000000000…b61afdfa data: 0x000000000000000000…1e821a8a |
| 0x1701f9…b1232a | 23 days agoFri, 24 Jul 2026 20:17:07 UTC | Transfer | [0] 0x000000000000…b61afdfa [1] 0x000000000000…d494ed79 data: 0x000000000000000000…478fc1b7 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb888b53b…ce6900 | Transfer | 18,602,529 | 23 days agoSat, 25 Jul 2026 01:06:18 UTC | 0xcaf7…5d11 | IN | 0x34cd…6fdc | $0.001 DIH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x3d9e86…573dc4 | Approve | 19,502,778 | 22 days agoSun, 26 Jul 2026 02:12:52 UTC | 0x4dd1…6f74 | IN | Sight | $0.000 ETH | 0.00000306 | |
| 0x246f71…2402b1 | Approve | 19,502,605 | 22 days agoSun, 26 Jul 2026 02:12:35 UTC | 0x8ccf…d2b3 | IN | Sight | $0.000 ETH | 0.00000307 | |
| 0xdc9742…63d8e3 | Approve | 19,502,428 | 22 days agoSun, 26 Jul 2026 02:12:17 UTC | 0x747e…7e4d | IN | Sight | $0.000 ETH | 0.00000305 | |
| 0xa85c50…cc0918 | Approve | 19,502,257 | 22 days agoSun, 26 Jul 2026 02:12:00 UTC | 0xad9d…ba4c | IN | Sight | $0.000 ETH | 0.00000309 | |
| 0x151e25…e87ea0 | Approve | 19,501,952 | 22 days agoSun, 26 Jul 2026 02:11:30 UTC | 0xd6ce…3fd8 | IN | Sight | $0.000 ETH | 0.00000306 | |
| 0x57b855…b82b48 | Approve | 19,498,078 | 22 days agoSun, 26 Jul 2026 02:05:01 UTC | 0x6bc0…b9dd | IN | Sight | $0.000 ETH | 0.00000307 | |
| 0xf3dcde…326e20 | Approve | 19,497,876 | 22 days agoSun, 26 Jul 2026 02:04:41 UTC | 0xbacf…ed79 | IN | Sight | $0.000 ETH | 0.00000306 | |
| 0xfc0412…d6da09 | Approve | 19,497,701 | 22 days agoSun, 26 Jul 2026 02:04:23 UTC | 0x1b39…04f5 | IN | Sight | $0.000 ETH | 0.00000307 | |
| 0xfb1af9…a477bc | Approve | 19,497,029 | 22 days agoSun, 26 Jul 2026 02:03:16 UTC | 0x2c0b…8cb6 | IN | Sight | $0.000 ETH | 0.00000309 | |
| 0x7c8b4a…91867d | Approve | 19,496,702 | 22 days agoSun, 26 Jul 2026 02:02:43 UTC | 0xfe3d…91e5 | IN | Sight | $0.000 ETH | 0.00000312 | |
| 0xae4ae5…255ea9 | Approve | 18,815,445 | 23 days agoSat, 25 Jul 2026 07:02:55 UTC | 0x1a43…8088 | IN | Sight | $0.000 ETH | 0.00000426 | |
| 0xcff572…787ac2 | Approve | 18,412,173 | 23 days agoFri, 24 Jul 2026 19:48:11 UTC | 0xa598…a7e3 | IN | Sight | $0.000 ETH | 0.00000569 | |
| 0x895d88…126703 | Approve | 18,412,168 | 23 days agoFri, 24 Jul 2026 19:48:10 UTC | 0x1ffd…50dd | IN | Sight | $0.000 ETH | 0.00000574 | |
| 0xcd8a82…1054ab | Approve | 18,412,168 | 23 days agoFri, 24 Jul 2026 19:48:10 UTC | 0x2f4a…9ce4 | IN | Sight | $0.000 ETH | 0.00000574 | |
| 0xbee789…d06231 | Approve | 18,412,168 | 23 days agoFri, 24 Jul 2026 19:48:10 UTC | 0x9c93…fda1 | IN | Sight | $0.000 ETH | 0.00000574 | |
| 0x4c4b9b…6ee8eb | Approve | 18,407,720 | 23 days agoFri, 24 Jul 2026 19:40:46 UTC | 0xd1bb…4033 | IN | Sight | $0.000 ETH | 0.00000574 | |
| 0xdfff60…804d35 | Approve | 18,407,720 | 23 days agoFri, 24 Jul 2026 19:40:46 UTC | 0x404b…a369 | IN | Sight | $0.000 ETH | 0.00000574 | |
| 0x5ef3be…294a94 | Approve | 18,407,710 | 23 days agoFri, 24 Jul 2026 19:40:45 UTC | 0xabf4…d0e6 | IN | Sight | $0.000 ETH | 0.00000572 | |
| 0x322c94…727089 | Approve | 18,407,709 | 23 days agoFri, 24 Jul 2026 19:40:45 UTC | 0xa4c3…1706 | IN | Sight | $0.000 ETH | 0.00000571 | |
| 0x681654…91c173 | Approve | 18,407,709 | 23 days agoFri, 24 Jul 2026 19:40:45 UTC | 0xee52…f08a | IN | Sight | $0.000 ETH | 0.00000571 | |
| 0xf436a4…651628 | Approve | 18,407,709 | 23 days agoFri, 24 Jul 2026 19:40:45 UTC | 0x2c95…f729 | IN | Sight | $0.000 ETH | 0.00000571 | |
| 0x6272d6…71a83a | Approve | 18,407,709 | 23 days agoFri, 24 Jul 2026 19:40:45 UTC | 0x7cdb…e4de | IN | Sight | $0.000 ETH | 0.00000571 | |
| 0x45b70a…981d4f | Approve | 18,407,543 | 23 days agoFri, 24 Jul 2026 19:40:28 UTC | 0xff28…06bf | IN | Sight | $0.000 ETH | 0.00000573 | |
| 0xde9d8a…f474dd | Approve | 18,407,543 | 23 days agoFri, 24 Jul 2026 19:40:28 UTC | 0xc71f…de0b | IN | Sight | $0.000 ETH | 0.00000573 | |
| 0x136158…0a85a8 | Approve | 18,407,543 | 23 days agoFri, 24 Jul 2026 19:40:28 UTC | 0xca82…960b | IN | Sight | $0.000 ETH | 0.00000573 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 18,387,928 | 23 days agoFri, 24 Jul 2026 19:07:42 UTC | 0x4b9407…0bbe98 | CREATE2 | launchToken | 0x2a60…3c90 | IN | 0x34cd…6fdc | 0 ETH |