// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; /** * @title TokenB * @dev 用于 DEX 的第二个 ERC-20 代币 */ contract TokenB is ERC20, Ownable { constructor() ERC20("Token B", "TKB") Ownable(msg.sender) { // 初始铸造 1,000,000 个代币给部署者 _mint(msg.sender, 1000000 * 10**decimals()); } /** * @dev 允许所有者铸造更多代币 * @param to 接收代币的地址 * @param amount 铸造的代币数量 */ function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); } /** * @dev 允许任何人铸造代币用于测试(仅限测试环境) * @param amount 铸造的代币数量 */ function faucet(uint256 amount) public { require(amount <= 10000 * 10**decimals(), "TokenB: Maximum 10,000 tokens per faucet call"); _mint(msg.sender, amount); } }