45 lines
1.4 KiB
Solidity
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);
|
|
}
|
|
}
|