contracts-imtbl/contracts/test/MintableBaseToken.sol
2024-08-27 15:13:22 +08:00

33 lines
942 B
Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {IMintable} from "../interfaces/IMintable.sol";
import {Governable} from "../core/Governable.sol";
contract MintableBaseToken is ERC20, IMintable, Governable {
mapping (address => bool) public override isMinter;
constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {
}
modifier onlyMinter() {
require(isMinter[msg.sender], "MintableBaseToken: forbidden");
_;
}
function setMinter(address _minter, bool _isActive) external override onlyGov {
isMinter[_minter] = _isActive;
}
function mint(address _account, uint256 _amount) external override onlyMinter {
_mint(_account, _amount);
}
function burn(address _account, uint256 _amount) external override onlyMinter {
_burn(_account, _amount);
}
}