// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/// @notice Ownerless ERC-20 minted by every lemon.fun launch.
/// Same scanner-facing shape as the clean Robinhood launchpad token:
/// immutable launcher, on-chain logo/social metadata, one-time pool
/// configuration, and timestamp-bounded anti-snipe. No owner, mint,
/// tax, pause, blacklist, or upgrade path exists after construction.
contract LemonToken is ERC20 {
/// @notice The factory/launch contract that minted and configured this token.
address public immutable launcher;
string public logoURI;
string public description;
string public twitter;
string public telegram;
string public website;
address public pool;
uint256 public maxWallet;
uint256 public tradingOpensAt;
uint256 public capUntil;
bool private _configured;
constructor(
string memory name_,
string memory symbol_,
uint256 supply_,
address launcher_,
string memory logoURI_,
string memory description_,
string memory twitter_,
string memory telegram_,
string memory website_
) ERC20(name_, symbol_) {
launcher = launcher_;
logoURI = logoURI_;
description = description_;
twitter = twitter_;
telegram = telegram_;
website = website_;
_mint(launcher_, supply_);
}
function configure(address pool_, uint256 maxWallet_, uint256 launchDelaySecs, uint256 capWindowSecs)
external
{
require(msg.sender == launcher && !_configured, "not launcher / configured");
_configured = true;
pool = pool_;
maxWallet = maxWallet_;
tradingOpensAt = block.timestamp + launchDelaySecs;
capUntil = tradingOpensAt + capWindowSecs;
}
function tradingOpen() external view returns (bool) {
return _configured && block.timestamp >= tradingOpensAt;
}
function _update(address from, address to, uint256 value) internal override {
if (_configured && (from == pool || to == pool) && from != launcher && to != launcher) {
require(block.timestamp >= tradingOpensAt, "launch: trading not open");
if (maxWallet != 0 && block.timestamp < capUntil && to != pool && to != address(0)) {
require(balanceOf(to) + value <= maxWallet, "anti-snipe: max wallet");
}
}
super._update(from, to, value);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "supply_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "launcher_",
"type": "address",
"internalType": "address"
},
{
"name": "logoURI_",
"type": "string",
"internalType": "string"
},
{
"name": "description_",
"type": "string",
"internalType": "string"
},
{
"name": "twitter_",
"type": "string",
"internalType": "string"
},
{
"name": "telegram_",
"type": "string",
"internalType": "string"
},
{
"name": "website_",
"type": "string",
"internalType": "string"
}
],
"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": "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": "capUntil",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "configure",
"type": "function",
"inputs": [
{
"name": "pool_",
"type": "address",
"internalType": "address"
},
{
"name": "maxWallet_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "launchDelaySecs",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "capWindowSecs",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "description",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "launcher",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "logoURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "maxWallet",
"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": "pool",
"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": "telegram",
"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": "tradingOpen",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "tradingOpensAt",
"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"
},
{
"name": "twitter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "website",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a8b578063095ea7b314610a0957806316eebd1e146109c557806316f0115b1461099d57806318160ddd1461098057806323b872dd146108a0578063313ce56714610885578063425173411461078f57806347ecb665146106ba5780634889448c1461069d57806356c1b9d1146106805780636bb38b28146105ab57806370a08231146105745780637284e4161461049f57806395d89b41146103ca578063a9059cbb14610399578063abfaeee0146102c4578063beb0a416146101a6578063dd62ed3e14610156578063f8b45b05146101395763ffb54a9914610100575f80fd5b34610135575f3660031901126101355760ff600e541680610129575b6020906040519015158152f35b50600c5442101561011c565b5f80fd5b34610135575f366003190112610135576020600b54604051908152f35b346101355760403660031901126101355761016f610b8a565b610177610ba0565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b34610135575f366003190112610135576040515f6009548060011c906001811680156102ba575b6020831081146102a65782855290811561028a5750600114610234575b50819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b0390f35b634e487b7160e01b5f52604160045260245ffd5b60095f9081529091507f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5b828210610274575060209150820101826101ea565b600181602092548385880101520191019061025f565b90506020925060ff191682840152151560051b820101826101ea565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101cd565b34610135575f366003190112610135576040515f6007548060011c9060018116801561038f575b6020831081146102a65782855290811561028a57506001146103395750819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b60075f9081529091507fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885b828210610379575060209150820101826101ea565b6001816020925483858801015201910190610364565b91607f16916102eb565b34610135576040366003190112610135576103bf6103b5610b8a565b6024359033610bd7565b602060405160018152f35b34610135575f366003190112610135576040515f6004548060011c90600181168015610495575b6020831081146102a65782855290811561028a575060011461043f5750819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b60045f9081529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82821061047f575060209150820101826101ea565b600181602092548385880101520191019061046a565b91607f16916103f1565b34610135575f366003190112610135576040515f6006548060011c9060018116801561056a575b6020831081146102a65782855290811561028a57506001146105145750819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b60065f9081529091507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b828210610554575060209150820101826101ea565b600181602092548385880101520191019061053f565b91607f16916104c6565b34610135576020366003190112610135576001600160a01b03610595610b8a565b165f525f602052602060405f2054604051908152f35b34610135575f366003190112610135576040515f6005548060011c90600181168015610676575b6020831081146102a65782855290811561028a57506001146106205750819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b60055f9081529091507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b828210610660575060209150820101826101ea565b600181602092548385880101520191019061064b565b91607f16916105d2565b34610135575f366003190112610135576020600d54604051908152f35b34610135575f366003190112610135576020600c54604051908152f35b34610135575f366003190112610135576040515f6008548060011c90600181168015610785575b6020831081146102a65782855290811561028a575060011461072f5750819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b60085f9081529091507ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee35b82821061076f575060209150820101826101ea565b600181602092548385880101520191019061075a565b91607f16916106e1565b34610135576080366003190112610135576107a8610b8a565b337f00000000000000000000000091c8b9d02895db4f680d1e60fb186a911aadca6c6001600160a01b03161480610878575b1561083357600160ff19600e541617600e5560018060a01b03166bffffffffffffffffffffffff60a01b600a541617600a55602435600b5561082e61082160443542610bb6565b80600c5560643590610bb6565b600d55005b60405162461bcd60e51b815260206004820152601960248201527f6e6f74206c61756e63686572202f20636f6e66696775726564000000000000006044820152606490fd5b5060ff600e5416156107da565b34610135575f36600319011261013557602060405160128152f35b34610135576060366003190112610135576108b9610b8a565b6108c1610ba0565b6001600160a01b0382165f818152600160208181526040808420338552909152909120549193604435939290918101610900575b506103bf9350610bd7565b83811061096557841561095257331561093f576103bf945f52600160205260405f2060018060a01b0333165f526020528360405f2091039055846108f5565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b34610135575f366003190112610135576020600254604051908152f35b34610135575f36600319011261013557600a546040516001600160a01b039091168152602090f35b34610135575f366003190112610135576040517f00000000000000000000000091c8b9d02895db4f680d1e60fb186a911aadca6c6001600160a01b03168152602090f35b3461013557604036600319011261013557610a22610b8a565b602435903315610952576001600160a01b031690811561093f57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610135575f366003190112610135576040515f6003548060011c90600181168015610b56575b6020831081146102a65782855290811561028a5750600114610b005750819003601f01601f191681019067ffffffffffffffff821181831017610220576040829052819061021c9082610b60565b60035f9081529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828210610b40575060209150820101826101ea565b6001816020925483858801015201910190610b2b565b91607f1691610ab2565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361013557565b602435906001600160a01b038216820361013557565b91908201809211610bc357565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b0316908115610e23576001600160a01b0316918215610e105760ff600e541680610de8575b80610db5575b80610d82575b610c8b575b815f525f60205260405f2054818110610c7257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b600c544210610d3d57600b5480151580610d32575b80610d1d575b80610d15575b610cb7575b50610c14565b835f525f602052610ccc8260405f2054610bb6565b11610cd7575f610cb1565b60405162461bcd60e51b8152602060048201526016602482015275185b9d1a4b5cdb9a5c194e881b585e081dd85b1b195d60521b6044820152606490fd5b506001610cac565b50600a546001600160a01b0316841415610ca6565b50600d544210610ca0565b60405162461bcd60e51b815260206004820152601860248201527f6c61756e63683a2074726164696e67206e6f74206f70656e00000000000000006044820152606490fd5b507f00000000000000000000000091c8b9d02895db4f680d1e60fb186a911aadca6c6001600160a01b0316831415610c0f565b507f00000000000000000000000091c8b9d02895db4f680d1e60fb186a911aadca6c6001600160a01b0316821415610c09565b50600a546001600160a01b0316828114908115610e06575b50610c03565b905083145f610e00565b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffdfea2646970667358221220fa568415ba886e14c404b608f109fbef58199c556e901b835906c39e96559e6664736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xcf882fed…78dd0a | Transfer | 20,709,531 | 20 days agoMon, 27 Jul 2026 11:50:47 UTC | 0xcaf7…5d11 | IN | 0x2f0b…f467 | $0.001 DIH |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x4892c3…dacef8 | 23 days agoFri, 24 Jul 2026 02:07:48 UTC | Transfer | [0] 0x000000000000…975e6e3c [1] 0x000000000000…6d336e03 data: 0x000000000000000000…1488e594 |
| 0x9674f1…efa3e2 | 27 days agoMon, 20 Jul 2026 03:41:55 UTC | Transfer | [0] 0x000000000000…975e6e3c [1] 0x000000000000…6d336e03 data: 0x000000000000000000…2ec50000 |
| 0x9c6ca4…2dcbce | 27 days agoMon, 20 Jul 2026 03:38:13 UTC | Transfer | [0] 0x000000000000…975e6e3c [1] 0x000000000000…6d336e03 data: 0x000000000000000000…307b0000 |
| 0xcd9666…15da9a | 27 days agoMon, 20 Jul 2026 03:38:03 UTC | Approval | [0] 0x000000000000…975e6e3c [1] 0x000000000000…6d336e03 data: 0xffffffffffffffffff…ffffffff |
| 0xe0e008…976140 | 28 days agoSun, 19 Jul 2026 00:34:56 UTC | Transfer | [0] 0x000000000000…6d336e03 [1] 0x000000000000…975e6e3c data: 0x000000000000000000…ed57ef19 |
| 0xfa90fc…3b1b88 | 28 days agoSun, 19 Jul 2026 00:34:36 UTC | Transfer | [0] 0x000000000000…6d336e03 [1] 0x000000000000…975e6e3c data: 0x000000000000000000…ef1f8994 |
| 0x1a2424…43865d | 28 days agoSun, 19 Jul 2026 00:34:14 UTC | Transfer | [0] 0x000000000000…6d336e03 [1] 0x000000000000…975e6e3c data: 0x000000000000000000…97516ce7 |
| 0x435188…ee2292 | 28 days agoSun, 19 Jul 2026 00:30:23 UTC | Transfer | [0] 0x000000000000…1aadca6c [1] 0x000000000000…6d336e03 data: 0x000000000000000000…e8000000 |
| 0x435188…ee2292 | 28 days agoSun, 19 Jul 2026 00:30:23 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…1aadca6c data: 0x000000000000000000…e8000000 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xcd9666…15da9a | Approve | 14,384,142 | 27 days agoMon, 20 Jul 2026 03:38:03 UTC | 0xcfb6…6e3c | IN | Messi hood | $0.000 ETH | 0.00000249 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 13,411,933 | 28 days agoSun, 19 Jul 2026 00:30:23 UTC | 0x435188…ee2292 | CREATE | launch | 0x9af5…0fbb | IN | 0x2f0b…f467 | 0 ETH |