// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
contract FunToken {
string public name;
string public symbol;
uint8 public constant decimals = 18;
uint256 public totalSupply;
uint256 public immutable maxWallet;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
mapping(address => bool) public capExempt;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
bytes32 private constant POOL_INIT_HASH = 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54;
constructor(
string memory _name,
string memory _symbol,
uint256 _supply,
uint16 _maxBps,
address _launcher,
address _factory,
address _weth,
uint24 _fee,
address _npm,
address _router
) {
name = _name;
symbol = _symbol;
totalSupply = _supply;
maxWallet = (_supply * _maxBps) / 10000;
balanceOf[_launcher] = _supply;
emit Transfer(address(0), _launcher, _supply);
capExempt[_launcher] = true;
capExempt[_npm] = true;
capExempt[_router] = true;
capExempt[_computePool(_factory, address(this), _weth, _fee)] = true;
}
function _computePool(address factory, address tokenA, address tokenB, uint24 fee) internal pure returns (address) {
(address t0, address t1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
bytes32 salt = keccak256(abi.encode(t0, t1, fee));
return address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", factory, salt, POOL_INIT_HASH)))));
}
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) {
_transfer(msg.sender, to, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
uint256 allowed = allowance[from][msg.sender];
if (allowed != type(uint256).max) {
require(allowed >= amount, "allowance");
unchecked {
allowance[from][msg.sender] = allowed - amount;
}
}
_transfer(from, to, amount);
return true;
}
function _transfer(address from, address to, uint256 amount) internal {
require(to != address(0), "to zero");
uint256 bal = balanceOf[from];
require(bal >= amount, "balance");
unchecked {
balanceOf[from] = bal - amount;
balanceOf[to] += amount;
}
if (!capExempt[to]) require(balanceOf[to] <= maxWallet, "max wallet");
emit Transfer(from, to, amount);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_name",
"type": "string",
"internalType": "string"
},
{
"name": "_symbol",
"type": "string",
"internalType": "string"
},
{
"name": "_supply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_maxBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "_launcher",
"type": "address",
"internalType": "address"
},
{
"name": "_factory",
"type": "address",
"internalType": "address"
},
{
"name": "_weth",
"type": "address",
"internalType": "address"
},
{
"name": "_fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "_npm",
"type": "address",
"internalType": "address"
},
{
"name": "_router",
"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": "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": "capExempt",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"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": "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"
}
]0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610458578063095ea7b3146103df57806318160ddd146103c257806323b872dd146102ff578063313ce567146102e457806370a08231146102ac57806395d89b411461018e578063a9059cbb1461015d578063dd62ed3e1461010d578063f295344f146100d05763f8b45b0514610092575f80fd5b346100cc575f3660031901126100cc5760206040517f00000000000000000000000000000000000000000021165458500521280000008152f35b5f80fd5b346100cc5760203660031901126100cc576001600160a01b036100f1610554565b165f526005602052602060ff60405f2054166040519015158152f35b346100cc5760403660031901126100cc57610126610554565b61012e61056a565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b346100cc5760403660031901126100cc57610183610179610554565b6024359033610580565b602060405160018152f35b346100cc575f3660031901126100cc576040515f6001548060011c906001811680156102a2575b60208310811461028e57828552908115610272575060011461021c575b50819003601f01601f191681019067ffffffffffffffff8211818310176102085760408290528190610204908261052a565b0390f35b634e487b7160e01b5f52604160045260245ffd5b60015f9081529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b82821061025c575060209150820101826101d2565b6001816020925483858801015201910190610247565b90506020925060ff191682840152151560051b820101826101d2565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101b5565b346100cc5760203660031901126100cc576001600160a01b036102cd610554565b165f526003602052602060405f2054604051908152f35b346100cc575f3660031901126100cc57602060405160128152f35b346100cc5760603660031901126100cc57610318610554565b61032061056a565b6001600160a01b0382165f818152600460209081526040808320338452909152902054909260443592916001810161035e575b506101839350610580565b83811061039157610183945f52600460205260405f2060018060a01b0333165f526020528360405f209103905584610353565b60405162461bcd60e51b8152602060048201526009602482015268616c6c6f77616e636560b81b6044820152606490fd5b346100cc575f3660031901126100cc576020600254604051908152f35b346100cc5760403660031901126100cc576103f8610554565b335f8181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346100cc575f3660031901126100cc576040515f80548060011c90600181168015610520575b60208310811461028e5782855290811561027257506001146104cc5750819003601f01601f191681019067ffffffffffffffff8211818310176102085760408290528190610204908261052a565b5f8080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b82821061050a575060209150820101826101d2565b60018160209254838588010152019101906104f5565b91607f169161047e565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100cc57565b602435906001600160a01b03821682036100cc57565b6001600160a01b03909116919082156106a8576001600160a01b03165f81815260036020526040902054909190818110610679575f8381526003602090815260408083209385900390935585825282822080548501905560059052205460ff1615610613575b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91604051908152a3565b825f52600360205260405f20547f000000000000000000000000000000000000000000211654585005212800000010156105e65760405162461bcd60e51b815260206004820152600a6024820152691b585e081dd85b1b195d60b21b6044820152606490fd5b60405162461bcd60e51b815260206004820152600760248201526662616c616e636560c81b6044820152606490fd5b60405162461bcd60e51b8152602060048201526007602482015266746f207a65726f60c81b6044820152606490fdfea26469706673582212203b4b8672edb7cabcdc51043065b7da0e235da032384500846f8420adf4b031c964736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x646dd4…9e356b | 11 days agoThu, 06 Aug 2026 13:41:27 UTC | Transfer | [0] 0x000000000000…80ce73ea [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…8146ff24 |
| 0x363e01…36392f | 11 days agoThu, 06 Aug 2026 13:40:40 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…80ce73ea data: 0x000000000000000000…8146ff24 |
| 0x363e01…36392f | 11 days agoThu, 06 Aug 2026 13:40:40 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…774822c1 data: 0x000000000000000000…8146ff24 |
| 0x363e01…36392f | 11 days agoThu, 06 Aug 2026 13:40:40 UTC | Transfer | [0] 0x000000000000…9ef7e087 [1] 0x000000000000…6ee45e46 data: 0x000000000000000000…028dfe48 |
| 0x7e862d…ca65c0 | 24 days agoFri, 24 Jul 2026 05:25:49 UTC | Transfer | [0] 0x000000000000…774822c1 [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…c33f31c1 |
| 0x17c37d…224c5d | 24 days agoFri, 24 Jul 2026 05:25:49 UTC | Approval | [0] 0x000000000000…774822c1 [1] 0x000000000000…262c40dc data: 0xffffffffffffffffff…ffffffff |
| 0x40a037…ecefe3 | 28 days agoMon, 20 Jul 2026 06:15:08 UTC | Transfer | [0] 0x000000000000…80ce73ea [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…3c382238 |
| 0x225a92…f54864 | 29 days agoSun, 19 Jul 2026 18:15:07 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…80ce73ea data: 0x000000000000000000…3c382238 |
| 0x225a92…f54864 | 29 days agoSun, 19 Jul 2026 18:15:07 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…774822c1 data: 0x000000000000000000…3c382238 |
| 0x225a92…f54864 | 29 days agoSun, 19 Jul 2026 18:15:07 UTC | Transfer | [0] 0x000000000000…9ef7e087 [1] 0x000000000000…6ee45e46 data: 0x000000000000000000…78704470 |
| 0x9db67f…606774 | 29 days agoSun, 19 Jul 2026 12:15:16 UTC | Transfer | [0] 0x000000000000…80ce73ea [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…0bdabbf1 |
| 0x4e4874…d1070f | 29 days agoSun, 19 Jul 2026 12:15:09 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…80ce73ea data: 0x000000000000000000…0bdabbf1 |
| 0x4e4874…d1070f | 29 days agoSun, 19 Jul 2026 12:15:09 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…774822c1 data: 0x000000000000000000…0bdabbf0 |
| 0x4e4874…d1070f | 29 days agoSun, 19 Jul 2026 12:15:09 UTC | Transfer | [0] 0x000000000000…9ef7e087 [1] 0x000000000000…6ee45e46 data: 0x000000000000000000…17b577e1 |
| 0xd4f3ce…944367 | 29 days agoSun, 19 Jul 2026 07:06:16 UTC | Transfer | [0] 0x000000000000…80ce73ea [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…42e2d446 |
| 0x9bb566…769850 | 29 days agoSun, 19 Jul 2026 07:06:16 UTC | Approval | [0] 0x000000000000…80ce73ea [1] 0x000000000000…959e5cb2 data: 0xffffffffffffffffff…ffffffff |
| 0x9ae850…b7be1c | 33 days agoWed, 15 Jul 2026 13:54:42 UTC | Approval | [0] 0x000000000000…6c8e4d15 [1] 0x000000000000…19c7028d data: 0xffffffffffffffffff…ffffffff |
| 0xd63cdb…719a4d | 34 days agoTue, 14 Jul 2026 17:53:34 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…80ce73ea data: 0x000000000000000000…752d777d |
| 0xd63cdb…719a4d | 34 days agoTue, 14 Jul 2026 17:53:34 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…774822c1 data: 0x000000000000000000…752d777c |
| 0xd63cdb…719a4d | 34 days agoTue, 14 Jul 2026 17:53:34 UTC | Transfer | [0] 0x000000000000…9ef7e087 [1] 0x000000000000…6ee45e46 data: 0x000000000000000000…ea5aeef9 |
| 0xdd096c…5686a5 | 34 days agoTue, 14 Jul 2026 16:34:49 UTC | Transfer | [0] 0x000000000000…1b4c62bf [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…46fe60bf |
| 0x30a5e7…3413ff | 34 days agoTue, 14 Jul 2026 16:33:34 UTC | Transfer | [0] 0x000000000000…864e3217 [1] 0x000000000000…9ef7e087 data: 0x000000000000000000…4486f8df |
| 0x926431…385264 | 34 days agoTue, 14 Jul 2026 12:52:13 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…80ce73ea data: 0x000000000000000000…61062755 |
| 0x926431…385264 | 34 days agoTue, 14 Jul 2026 12:52:13 UTC | Transfer | [0] 0x000000000000…6ee45e46 [1] 0x000000000000…774822c1 data: 0x000000000000000000…61062754 |
| 0x926431…385264 | 34 days agoTue, 14 Jul 2026 12:52:13 UTC | Transfer | [0] 0x000000000000…9ef7e087 [1] 0x000000000000…6ee45e46 data: 0x000000000000000000…c20c4ea9 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| 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 ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x17c37d…224c5d | Approve | 17,896,230 | 24 days agoFri, 24 Jul 2026 05:25:49 UTC | 0xf7c3…22c1 | IN | NOCAT | $0.000 ETH | 0.00000548 | |
| 0x9bb566…769850 | Approve | 13,648,390 | 29 days agoSun, 19 Jul 2026 07:06:16 UTC | 0xc070…73ea | IN | NOCAT | $0.000 ETH | 0.00000276 | |
| 0x9ae850…b7be1c | Approve | 10,444,675 | 33 days agoWed, 15 Jul 2026 13:54:42 UTC | 0x0bcf…4d15 | IN | NOCAT | $0.000 ETH | 0.00000279 | |
| 0x746987…c82d70 | Approve | 9,535,475 | 34 days agoTue, 14 Jul 2026 12:38:58 UTC | 0x0ad9…3bfb | IN | NOCAT | $0.000 ETH | 0.00000208 | |
| 0xa3777b…c53a9c | Approve | 9,533,891 | 34 days agoTue, 14 Jul 2026 12:36:19 UTC | 0x73f7…993a | IN | NOCAT | $0.000 ETH | 0.00000205 | |
| 0x201cb3…b171c7 | Approve | 9,509,006 | 34 days agoTue, 14 Jul 2026 11:54:51 UTC | 0x7f3e…fb80 | IN | NOCAT | $0.000 ETH | 0.00000203 | |
| 0x6de9a9…75c4cd | Approve | 9,509,005 | 34 days agoTue, 14 Jul 2026 11:54:51 UTC | 0xc431…cb0c | IN | NOCAT | $0.000 ETH | 0.00000203 | |
| 0x38b99f…f5e46a | Approve | 9,509,002 | 34 days agoTue, 14 Jul 2026 11:54:50 UTC | 0x49b3…5ddd | IN | NOCAT | $0.000 ETH | 0.00000205 | |
| 0xac2354…7b8bab | Approve | 9,506,365 | 34 days agoTue, 14 Jul 2026 11:50:27 UTC | 0x77b4…40c0 | IN | NOCAT | $0.000 ETH | 0.00000205 | |
| 0x4b748e…1057c8 | Approve | 9,488,230 | 34 days agoTue, 14 Jul 2026 11:20:08 UTC | 0x7bf9…c8c0 | IN | NOCAT | $0.000 ETH | 0.00000208 | |
| 0xcbd366…eabc3b | Approve | 9,486,252 | 34 days agoTue, 14 Jul 2026 11:16:49 UTC | 0xae76…7c1e | IN | NOCAT | $0.000 ETH | 0.00000207 | |
| 0xd981bb…07212c | Approve | 9,486,250 | 34 days agoTue, 14 Jul 2026 11:16:49 UTC | 0x7110…7e2c | IN | NOCAT | $0.000 ETH | 0.00000207 | |
| 0xbcd223…8e6dc0 | Approve | 9,481,868 | 34 days agoTue, 14 Jul 2026 11:09:29 UTC | 0x2cc6…6a66 | IN | NOCAT | $0.000 ETH | 0.00000206 | |
| 0xf70e67…e832e0 | Approve | 9,480,443 | 34 days agoTue, 14 Jul 2026 11:07:07 UTC | 0xe5ac…f776 | IN | NOCAT | $0.000 ETH | 0.00000207 | |
| 0x30f76b…870c58 | Approve | 9,476,000 | 34 days agoTue, 14 Jul 2026 10:59:41 UTC | 0xcc33…2a43 | IN | NOCAT | $0.000 ETH | 0.00000208 | |
| 0xea8985…b2f96c | Approve | 9,475,999 | 34 days agoTue, 14 Jul 2026 10:59:40 UTC | 0x0f19…0cb3 | IN | NOCAT | $0.000 ETH | 0.00000208 | |
| 0x423942…f69aa6 | Approve | 9,472,552 | 34 days agoTue, 14 Jul 2026 10:53:55 UTC | 0xe0b4…9991 | IN | NOCAT | $0.000 ETH | 0.00000209 | |
| 0x338a68…b0eea6 | Approve | 9,472,466 | 34 days agoTue, 14 Jul 2026 10:53:46 UTC | 0x93bb…cec4 | IN | NOCAT | $0.000 ETH | 0.00000207 | |
| 0x06abae…22bb58 | Approve | 9,472,081 | 34 days agoTue, 14 Jul 2026 10:53:07 UTC | 0xfc86…bb73 | IN | NOCAT | $0.000 ETH | 0.00000118 | |
| 0xc07265…bd32d8 | Approve | 9,472,075 | 34 days agoTue, 14 Jul 2026 10:53:07 UTC | 0xfc86…bb73 | IN | NOCAT | $0.000 ETH | 0.00000208 | |
| 0x98762d…29e9d6 | Approve | 9,471,900 | 34 days agoTue, 14 Jul 2026 10:52:49 UTC | 0xfaee…585c | IN | NOCAT | $0.000 ETH | 0.00000118 | |
| 0x41fdd8…c46c63 | Approve | 9,471,894 | 34 days agoTue, 14 Jul 2026 10:52:48 UTC | 0xfaee…585c | IN | NOCAT | $0.000 ETH | 0.00000208 | |
| 0x82ce54…3714e9 | Approve | 9,471,891 | 34 days agoTue, 14 Jul 2026 10:52:48 UTC | 0xfc86…bb73 | IN | NOCAT | $0.000 ETH | 0.00000207 | |
| 0xfd438c…f618fd | Approve | 9,471,646 | 34 days agoTue, 14 Jul 2026 10:52:23 UTC | 0x2bc8…170e | IN | NOCAT | $0.000 ETH | 0.00000210 | |
| 0xa5201e…8a649b | Approve | 9,471,593 | 34 days agoTue, 14 Jul 2026 10:52:18 UTC | 0x49b3…5ddd | IN | NOCAT | $0.000 ETH | 0.00000208 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 9,468,325 | 34 days agoTue, 14 Jul 2026 10:46:50 UTC | 0x8c305b…1351ee | CREATE | launch | 0xdf59…1a26 | IN | 0x0f07…c500 | 0 ETH |