// SPDX-License-Identifier: MIT pragma solidity ^0.8.30; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; /// @notice Fixed supply ERC20. No owner, tax, blacklist, or additional mint method. contract PortToken is ERC20 { constructor(string memory name_, string memory symbol_, uint256 supply_, address recipient_) ERC20(name_, symbol_) { require(bytes(name_).length > 0 && bytes(name_).length <= 48, "Invalid name"); require(bytes(symbol_).length > 0 && bytes(symbol_).length <= 10, "Invalid symbol"); require(supply_ > 0 && supply_ <= 1_000_000_000_000_000 ether, "Invalid supply"); require(recipient_ != address(0), "Invalid recipient"); _mint(recipient_, supply_); } }