// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/// @notice Fixed-supply launch token with no owner, mint, tax, pause, or blacklist controls.
contract LaunchToken is ERC20 {
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 ether;
address public immutable launchManager;
string public metadataURI;
error EmptyName();
error EmptySymbol();
constructor(string memory name_, string memory symbol_, string memory metadataURI_, address recipient)
ERC20(name_, symbol_)
{
if (bytes(name_).length == 0) revert EmptyName();
if (bytes(symbol_).length == 0) revert EmptySymbol();
launchManager = msg.sender;
metadataURI = metadataURI_;
_mint(recipient, TOTAL_SUPPLY);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "metadataURI_",
"type": "string",
"internalType": "string"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
}
],
"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": "EmptyName",
"type": "error",
"inputs": []
},
{
"name": "EmptySymbol",
"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": "TOTAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"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": "launchManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "metadataURI",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"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": "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"
}
]0x608060405234801561000f575f80fd5b50600436106100b1575f3560e01c806347ebe54d1161006e57806347ebe54d1461013257806370a0823114610166578063902d55a51461018e57806395d89b41146101a1578063a9059cbb146101a9578063dd62ed3e146101bc575f80fd5b806303ee438c146100b557806306fdde03146100d3578063095ea7b3146100db57806318160ddd146100fe57806323b872dd14610110578063313ce56714610123575b5f80fd5b6100bd6101cf565b6040516100ca919061061b565b60405180910390f35b6100bd61025b565b6100ee6100e936600461066b565b6102eb565b60405190151581526020016100ca565b6002545b6040519081526020016100ca565b6100ee61011e366004610693565b610304565b604051601281526020016100ca565b6101597f000000000000000000000000f6bdc504b911fbc798bc8099aa84e81e0df73f0781565b6040516100ca91906106cd565b6101026101743660046106e1565b6001600160a01b03165f9081526020819052604090205490565b6101026b033b2e3c9fd0803ce800000081565b6100bd610327565b6100ee6101b736600461066b565b610336565b6101026101ca366004610701565b610343565b600580546101dc90610732565b80601f016020809104026020016040519081016040528092919081815260200182805461020890610732565b80156102535780601f1061022a57610100808354040283529160200191610253565b820191905f5260205f20905b81548152906001019060200180831161023657829003601f168201915b505050505081565b60606003805461026a90610732565b80601f016020809104026020016040519081016040528092919081815260200182805461029690610732565b80156102e15780601f106102b8576101008083540402835291602001916102e1565b820191905f5260205f20905b8154815290600101906020018083116102c457829003601f168201915b5050505050905090565b5f336102f881858561036d565b60019150505b92915050565b5f3361031185828561037f565b61031c8585856103d9565b506001949350505050565b60606004805461026a90610732565b5f336102f88185856103d9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61037a8383836001610436565b505050565b5f61038a8484610343565b90505f198110156103d357818110156103c557828183604051637dc7a0d960e11b81526004016103bc9392919061076a565b60405180910390fd5b6103d384848484035f610436565b50505050565b6001600160a01b038316610402575f604051634b637e8f60e11b81526004016103bc91906106cd565b6001600160a01b03821661042b575f60405163ec442f0560e01b81526004016103bc91906106cd565b61037a838383610508565b6001600160a01b03841661045f575f60405163e602df0560e01b81526004016103bc91906106cd565b6001600160a01b038316610488575f604051634a1406b160e11b81526004016103bc91906106cd565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156103d357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104fa91815260200190565b60405180910390a350505050565b6001600160a01b038316610532578060025f828254610527919061078b565b9091555061058f9050565b6001600160a01b0383165f90815260208190526040902054818110156105715783818360405163391434e360e21b81526004016103bc9392919061076a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105ab576002805482900390556105c9565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161060e91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610666575f80fd5b919050565b5f806040838503121561067c575f80fd5b61068583610650565b946020939093013593505050565b5f805f606084860312156106a5575f80fd5b6106ae84610650565b92506106bc60208501610650565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b5f602082840312156106f1575f80fd5b6106fa82610650565b9392505050565b5f8060408385031215610712575f80fd5b61071b83610650565b915061072960208401610650565b90509250929050565b600181811c9082168061074657607f821691505b60208210810361076457634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b808201808211156102fe57634e487b7160e01b5f52601160045260245ffdfea26469706673582212208fddd86736e62492d0bd1d12e7b068326071b7362e0f9d9034adf308ec41884264736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xedf476…86f263 | 21 days agoMon, 27 Jul 2026 17:01:54 UTC | Transfer | [0] 0x000000000000…0c488b79 [1] 0x000000000000…30a3f748 data: 0x000000000000000000…ae7d0001 |
| 0xedf476…86f263 | 21 days agoMon, 27 Jul 2026 17:01:54 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…0c488b79 data: 0x000000000000000000…ae7d0001 |
| 0xedf476…86f263 | 21 days agoMon, 27 Jul 2026 17:01:54 UTC | Transfer | [0] 0x000000000000…5fd40f70 [1] 0x000000000000…43e40951 data: 0x000000000000000000…a8fffff6 |
| 0xedf476…86f263 | 21 days agoMon, 27 Jul 2026 17:01:54 UTC | Transfer | [0] 0x000000000000…5fd40f70 [1] 0x000000000000…43e40951 data: 0x000000000000000000…3efff3e3 |
| 0xedf476…86f263 | 21 days agoMon, 27 Jul 2026 17:01:54 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…5fd40f70 data: 0x000000000000000000…e8000000 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| No direct transactions — this address is only ever reached via internal calls (common for a contract only invoked through a router or proxy). View Internal Transactions → | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 20,895,138 | 21 days agoMon, 27 Jul 2026 17:01:54 UTC | 0xedf476…86f263 | CREATE2 | 0x0baeeb4b | 0xf6bd…3f07 | IN | 0xc50c…67c1 | 0 ETH |