// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
library LauncherTypes {
struct Socials {
string telegram;
string twitter;
string discord;
string website;
string farcaster;
}
struct TokenInfo {
address deployer;
string logo;
string description;
Socials socials;
}
}
/// @title LaunchToken
/// @notice Fixed-supply ERC20 minted entirely to the LaunchFactory at creation.
/// @dev No presale, no team allocation, no mint function post-deployment.
/// Logo/description/socials are stored on-chain at construction time so
/// metadata is portable and doesn't depend on any off-chain database.
contract LaunchToken is ERC20, ERC20Burnable {
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 ether; // 1B, 18 decimals
LauncherTypes.TokenInfo private _tokenInfo;
constructor(
string memory name_,
string memory symbol_,
address recipient,
LauncherTypes.TokenInfo memory info
) ERC20(name_, symbol_) {
_mint(recipient, TOTAL_SUPPLY);
_tokenInfo = info;
}
function getTokenInfo() external view returns (LauncherTypes.TokenInfo memory) {
return _tokenInfo;
}
function deployer() external view returns (address) {
return _tokenInfo.deployer;
}
function logo() external view returns (string memory) {
return _tokenInfo.logo;
}
function description() external view returns (string memory) {
return _tokenInfo.description;
}
function socials() external view returns (LauncherTypes.Socials memory) {
return _tokenInfo.socials;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "name_",
"type": "string",
"internalType": "string"
},
{
"name": "symbol_",
"type": "string",
"internalType": "string"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
},
{
"name": "info",
"type": "tuple",
"components": [
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "logo",
"type": "string",
"internalType": "string"
},
{
"name": "description",
"type": "string",
"internalType": "string"
},
{
"name": "socials",
"type": "tuple",
"components": [
{
"name": "telegram",
"type": "string",
"internalType": "string"
},
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "discord",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "farcaster",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct LauncherTypes.Socials"
}
],
"internalType": "struct LauncherTypes.TokenInfo"
}
],
"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": "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": "burn",
"type": "function",
"inputs": [
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "burnFrom",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"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": "getTokenInfo",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "logo",
"type": "string",
"internalType": "string"
},
{
"name": "description",
"type": "string",
"internalType": "string"
},
{
"name": "socials",
"type": "tuple",
"components": [
{
"name": "telegram",
"type": "string",
"internalType": "string"
},
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "discord",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "farcaster",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct LauncherTypes.Socials"
}
],
"internalType": "struct LauncherTypes.TokenInfo"
}
],
"stateMutability": "view"
},
{
"name": "logo",
"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": "socials",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "telegram",
"type": "string",
"internalType": "string"
},
{
"name": "twitter",
"type": "string",
"internalType": "string"
},
{
"name": "discord",
"type": "string",
"internalType": "string"
},
{
"name": "website",
"type": "string",
"internalType": "string"
},
{
"name": "farcaster",
"type": "string",
"internalType": "string"
}
],
"internalType": "struct LauncherTypes.Socials"
}
],
"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"
}
]0x6080604090808252600480361015610015575f80fd5b5f3560e01c91826306fdde03146105ba57508163095ea7b31461051257816318160ddd146104f457816323b872dd146104b8578163313ce5671461049d57816342966c681461048157816353cd512a1461044857816370a08231146104125781637284e416146103f557816379cc6790146103c4578163902d55a51461039e57816395d89b411461028957508063a9059cbb14610259578063abb1dc4414610183578063d5f394881461015b578063dd62ed3e146101125763fb7f21eb146100db575f80fd5b3461010e575f36600319011261010e5761010a906100f76108e2565b90519182916020835260208301906106b6565b0390f35b5f80fd5b503461010e578060031936011261010e5760209061012e6106f4565b61013661070a565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b503461010e575f36600319011261010e5760055490516001600160a01b039091168152602090f35b503461010e575f36600319011261010e57805161019f8161078c565b5f81526060602082015260608282015260606101b9610993565b91015280516101c78161078c565b6005546001600160a01b0390811682529161010a906101e46108e2565b90602084019182526102486102326101fa6107fa565b92808701938452608061020b6109be565b95606089019687528251998a9960208b52511660208a0152519188015260a08701906106b6565b915191601f1992838783030160608801526106b6565b915190848303016080850152610720565b503461010e578060031936011261010e576020906102826102786106f4565b6024359033610e9c565b5160018152f35b823461010e575f36600319011261010e578051905f9083549160018360011c9060018516968715610394575b602095868410891461038157868899858a98999a5291825f1461035a5750506001146102fe575b50505061010a92916102ef9103856107d8565b519282849384528301906106b6565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061034257505050820101816102ef61010a6102dc565b8054848a018601528895508794909301928101610329565b60ff19168782015293151560051b860190930193508492506102ef915061010a90506102dc565b602282634e487b7160e01b5f525260245ffd5b91607f16916102b5565b823461010e575f36600319011261010e57602090516b033b2e3c9fd0803ce80000008152f35b823461010e5736600319011261010e576103f36103df6106f4565b602435906103ee823383610dcf565b610f76565b005b823461010e575f36600319011261010e5761010a906100f76107fa565b823461010e57602036600319011261010e576020906001600160a01b036104376106f4565b165f525f8252805f20549051908152f35b823461010e575f36600319011261010e5761010a90610465610993565b5061046e6109be565b9051918291602083526020830190610720565b3461010e57602036600319011261010e576103f3903533610f76565b823461010e575f36600319011261010e576020905160128152f35b823461010e57606036600319011261010e576020906102826104d86106f4565b6104e061070a565b604435916104ef833383610dcf565b610e9c565b823461010e575f36600319011261010e576020906002549051908152f35b823461010e578060031936011261010e5761052b6106f4565b6024359033156105a4576001600160a01b031690811561058e5760209350335f5260018452825f20825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8251634a1406b160e11b81525f81860152602490fd5b825163e602df0560e01b81525f81860152602490fd5b833461010e575f36600319011261010e575f906003549160018360011c90600185169485156106ac575b60209586841081146106995783885287949392918790821561067757505060011461061c575b505061010a92916102ef9103856107d8565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b82841061065f57505050820101816102ef61060a565b8054848a018601528895508794909301928101610649565b60ff19168682015292151560051b850190920192508391506102ef905061060a565b602289634e487b7160e01b5f525260245ffd5b91607f16916105e4565b91908251928382525f5b8481106106e0575050825f602080949584010152601f8019910116010190565b6020818301810151848301820152016106c0565b600435906001600160a01b038216820361010e57565b602435906001600160a01b038216820361010e57565b610789916080610778610766610754610742865160a0875260a08701906106b6565b602087015186820360208801526106b6565b604086015185820360408701526106b6565b606085015184820360608601526106b6565b9201519060808184039101526106b6565b90565b6080810190811067ffffffffffffffff8211176107a857604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107a857604052565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b604051905f600754906001908260011c600184169283156108d8575b60209485831085146108c45782885287949081156108a45750600114610847575b5050610845925003836107d8565b565b9093915060075f527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688935f915b81831061088c57505061084593508201015f80610837565b85548884018501529485019487945091830191610874565b91505061084594925060ff191682840152151560051b8201015f80610837565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610816565b604051905f600654906001908260011c60018416928315610989575b60209485831085146108c45782885287949081156108a4575060011461092c575050610845925003836107d8565b9093915060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f915b81831061097157505061084593508201015f80610837565b85548884018501529485019487945091830191610959565b90607f16906108fe565b604051906109a0826107bc565b81608060609182815282602082015282604082015282808201520152565b6040908151916109cd836107bc565b80516008549184916001919084831c8386165f8115610dc5575b60209788841083146108c45788859385855291825f14610da8575050600114610d4c575b610a17925003826107d8565b835280515f60095480851c91858216918215610d42575b88841083146108c45788859385855291825f14610d25575050600114610cc9575b610a5b925003826107d8565b8484015280515f600a5480851c91858216918215610cbf575b88841083146108c45788859385855291825f14610ca2575050600114610c46575b610aa1925003826107d8565b8184015280515f600b5480851c91858216918215610c3c575b88841083146108c45788859385855291825f14610c1f575050600114610bc3575b610ae7925003826107d8565b606084015251925f90600c549283811c90808516948515610bb9575b83831086146108c4578288528795908115610b9a5750600114610b37575b50505060809291610b339103846107d8565b0152565b9094939250600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7945f915b818310610b8257509394509192509082010181610b336080610b21565b86548884018501529586019587945091830191610b65565b60ff1916848701525050151560051b830101905081610b336080610b21565b91607f1691610b03565b5050600b5f5281867f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9865f915b858310610c06575050610ae79350820101610adb565b8091929450548385880101520191018790868593610bf0565b60ff191684820152610ae794151560051b8401019150610adb9050565b92607f1692610aba565b5050600a5f5281867fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8865f915b858310610c89575050610aa19350820101610a95565b8091929450548385880101520191018790868593610c73565b60ff191684820152610aa194151560051b8401019150610a959050565b92607f1692610a74565b505060095f5281867f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af865f915b858310610d0c575050610a5b9350820101610a4f565b8091929450548385880101520191018790868593610cf6565b60ff191684820152610a5b94151560051b8401019150610a4f9050565b92607f1692610a2e565b505060085f5281867ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3865f915b858310610d8f575050610a179350820101610a0b565b8091929450548385880101520191018790868593610d79565b60ff191684820152610a1794151560051b8401019150610a0b9050565b91607f16916109e7565b919060018060a01b0380931692835f526001602052604093845f2091831691825f52602052845f2054925f198410610e0a575b505050505050565b848410610e6c57508015610e55578115610e3e575f526001602052835f20905f5260205203905f20555f8080808080610e02565b8451634a1406b160e11b81525f6004820152602490fd5b845163e602df0560e01b81525f6004820152602490fd5b8551637dc7a0d960e11b81526001600160a01b039190911660048201526024810184905260448101859052606490fd5b916001600160a01b03808416928315610f5e5716928315610f4657825f525f60205260405f205490828210610f145750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b91906001600160a01b038316908115610f5e57815f525f60205260405f205493818510610fe357506020817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef925f95968587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481018590526044810191909152606490fdfea264697066735822122039d55d1ce373fcc71f267f0c25e02acd5a6dc09ee66f42bdc323a3f17c346ed064736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x450809…439e89 | 24 days agoWed, 22 Jul 2026 18:58:17 UTC | Transfer | [0] 0x000000000000…b94e7a1e [1] 0x000000000000…8d231fad data: 0x000000000000000000…077b7d72 |
| 0x01e20c…38abb8 | 24 days agoWed, 22 Jul 2026 18:57:37 UTC | Approval | [0] 0x000000000000…b94e7a1e [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…077b7d72 |
| 0x6f716c…bd4117 | 24 days agoWed, 22 Jul 2026 11:12:52 UTC | Transfer | [0] 0x000000000000…36d75e22 [1] 0x000000000000…b94e7a1e data: 0x000000000000000000…077b7d72 |
| 0x6f716c…bd4117 | 24 days agoWed, 22 Jul 2026 11:12:52 UTC | Transfer | [0] 0x000000000000…36d75e22 [1] 0x000000000000…8d231fad data: 0x000000000000000000…8965068a |
| 0x6f716c…bd4117 | 24 days agoWed, 22 Jul 2026 11:12:52 UTC | Approval | [0] 0x000000000000…36d75e22 [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…8965068a |
| 0x6f716c…bd4117 | 24 days agoWed, 22 Jul 2026 11:12:52 UTC | Transfer | [0] 0x000000000000…8d231fad [1] 0x000000000000…36d75e22 data: 0x000000000000000000…90e083fc |
| 0x54318f…52f809 | 24 days agoWed, 22 Jul 2026 09:20:08 UTC | Transfer | [0] 0x000000000000…b94e7a1e [1] 0x000000000000…8d231fad data: 0x000000000000000000…c13712db |
| 0x251df2…6dd404 | 24 days agoWed, 22 Jul 2026 09:19:57 UTC | Approval | [0] 0x000000000000…b94e7a1e [1] 0x000000000000…959e5cb2 data: 0x000000000000000000…c13712db |
| 0xb99faf…7f395b | 24 days agoWed, 22 Jul 2026 09:10:08 UTC | Transfer | [0] 0x000000000000…8d231fad [1] 0x000000000000…b94e7a1e data: 0x000000000000000000…c13712db |
| 0xb99faf…7f395b | 24 days agoWed, 22 Jul 2026 09:10:08 UTC | Transfer | [0] 0x000000000000…bc6044dd [1] 0x000000000000…8d231fad data: 0x000000000000000000…e7ffdc29 |
| 0xb99faf…7f395b | 24 days agoWed, 22 Jul 2026 09:10:08 UTC | Approval | [0] 0x000000000000…bc6044dd [1] 0x000000000000…638de0d3 data: 0x000000000000000000…e8000000 |
| 0xb99faf…7f395b | 24 days agoWed, 22 Jul 2026 09:10:08 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…bc6044dd data: 0x000000000000000000…e8000000 |
| 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 ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x01e20c…38abb8 | Approve | 16,658,605 | 24 days agoWed, 22 Jul 2026 18:57:37 UTC | 0x620f…7a1e | IN | Bankruptcy | $0.000 ETH | 0.00000405 | |
| 0x251df2…6dd404 | Approve | 16,312,486 | 24 days agoWed, 22 Jul 2026 09:19:57 UTC | 0x620f…7a1e | IN | Bankruptcy | $0.000 ETH | 0.00000338 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 16,306,620 | 24 days agoWed, 22 Jul 2026 09:10:08 UTC | 0xb99faf…7f395b | CREATE2 | createToken | 0x1b28…44dd | IN | 0x8a10…7b0d | 0 ETH |