Files
Solidities/src/Proxy/UpgradeableToken/UpgradeableERC20.sol
2022-11-15 15:33:28 +08:00

45 lines
1.4 KiB
Solidity

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
contract UpgradeableERC20 is
ERC20Upgradeable,
ERC20BurnableUpgradeable,
ERC20PausableUpgradeable,
OwnableUpgradeable
{
uint8 private _decimals;
function initialize(string memory tokenName_, string memory symbol_)
public
initializer
{
__ERC20_init(tokenName_, symbol_);
__Ownable_init();
_decimals = 6;
ERC20Upgradeable._mint(_msgSender(), (33333333 * _decimals));
}
function decimals() public view virtual override returns (uint8) {
return _decimals;
}
function mint(address account, uint256 amount) public virtual onlyOwner {
_mint(account, amount);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual override(ERC20Upgradeable, ERC20PausableUpgradeable) {
ERC20PausableUpgradeable._beforeTokenTransfer(from, to, amount);
ERC20Upgradeable._beforeTokenTransfer(from, to, amount);
}
}