// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; /** * @title WUSD * @notice Wrapped USD - 简单的ERC20代币 */ contract WUSD is Initializable, ERC20Upgradeable, UUPSUpgradeable, OwnableUpgradeable { /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); } /** * @notice 初始化合约 * @param _name 代币名称 * @param _symbol 代币符号 */ function initialize(string memory _name, string memory _symbol) external initializer { __ERC20_init(_name, _symbol); __UUPSUpgradeable_init(); __Ownable_init(msg.sender); } /** * @notice 授权升级(仅owner可调用) * @param newImplementation 新实现合约地址 */ function _authorizeUpgrade(address newImplementation) internal override onlyOwner {} /** * @notice 铸造代币 * @param _to 接收地址 * @param _amount 铸造数量 */ function mint(address _to, uint256 _amount) external onlyOwner { _mint(_to, _amount); } /** * @notice 销毁代币 * @param _from 销毁地址 * @param _amount 销毁数量 */ function burn(address _from, uint256 _amount) external onlyOwner { _burn(_from, _amount); } /** * @dev 预留存储空间,用于未来升级时添加新的状态变量 */ uint256[50] private __gap; }