MockUSDT.sol 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity 0.8.28;
  3. import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
  4. import { ERC20Burnable } from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
  5. /**
  6. * @title MockUSDT
  7. * @dev 标准的ERC20代币合约,用作Mock USDT
  8. * 包含基本的ERC20功能:转账、授权、销毁等
  9. */
  10. contract MockUSDT is ERC20, ERC20Burnable {
  11. uint8 private constant DECIMALS = 6; // USDT使用6位小数
  12. constructor(
  13. string memory name,
  14. string memory symbol,
  15. address initialOwner
  16. ) ERC20(name, symbol) {
  17. // 给初始所有者铸造一些代币
  18. _mint(initialOwner, 1000000 * 10**DECIMALS); // 100万USDT
  19. }
  20. /**
  21. * @dev 重写decimals函数,返回6位小数
  22. */
  23. function decimals() public view virtual override returns (uint8) {
  24. return DECIMALS;
  25. }
  26. /**
  27. * @dev 铸造代币(任何人都可以调用,用于测试)
  28. */
  29. function mint(address to, uint256 amount) external {
  30. _mint(to, amount);
  31. }
  32. }