// SPDX-License-Identifier: MIT pragma solidity 0.8.30; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; /// @notice A fixed-supply token. No admin, upgrade, transfer tax or additional minting. /// @dev Images and descriptions belong to the off-chain launch brief, not this contract. contract HyperCraftToken is ERC20 { bytes32 public immutable launchId; address public immutable creator; constructor(string memory name_, string memory symbol_, uint256 supply_, bytes32 launchId_) ERC20(name_, symbol_) { require(bytes(name_).length > 0 && bytes(name_).length <= 80, "Name"); require(bytes(symbol_).length > 0 && bytes(symbol_).length <= 10, "Symbol"); require(supply_ > 0 && supply_ <= 1e30, "Supply"); require(launchId_ != bytes32(0), "Launch ID"); creator = msg.sender; launchId = launchId_; _mint(msg.sender, supply_); } }