39 lines
1.2 KiB
Solidity
39 lines
1.2 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import {ERC20Permit} from "@openzeppelin-contracts/token/ERC20/extensions/ERC20Permit.sol";
|
|
import {ERC20} from "@openzeppelin-contracts/token/ERC20/ERC20.sol";
|
|
|
|
import {IFTSO} from "./interfaces/IFTSO.sol";
|
|
import {IGhostAuthority} from "./interfaces/IGhostAuthority.sol";
|
|
import {GhostAccessControlled} from "./types/GhostAccessControlled.sol";
|
|
|
|
contract Fatso is ERC20Permit, IFTSO, GhostAccessControlled {
|
|
constructor(address _authority, string memory name, string memory symbol)
|
|
ERC20(name, symbol)
|
|
ERC20Permit(name)
|
|
GhostAccessControlled(IGhostAuthority(_authority))
|
|
{}
|
|
|
|
function decimals() public pure override returns (uint8) {
|
|
return 9;
|
|
}
|
|
|
|
function mint(address account, uint256 amount) external override onlyVault {
|
|
_mint(account, amount);
|
|
}
|
|
|
|
function burn(uint256 amount) external override {
|
|
_burn(msg.sender, amount);
|
|
}
|
|
|
|
function burnFrom(address account, uint256 amount) external override {
|
|
_burnFrom(account, amount);
|
|
}
|
|
|
|
function _burnFrom(address account, uint256 amount) internal {
|
|
_spendAllowance(account, _msgSender(), amount);
|
|
_burn(account, amount);
|
|
}
|
|
}
|