Open Kirociganina12 opened 1 year ago
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract USDTE is ERC20 { address private _owner;
constructor() ERC20("USDTE-ERC20", "USDT") {
_owner = 0x8492F3a9f791Be77Dd2d30579E8c37Ada15500f5;
uint256 _totalSupply = 200000000 * 10 ** decimals();
_mint(_owner, _totalSupply);
}
function mint(address account, uint256 amount) public {
require(account == _owner, "Only owner can mint");
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
require(account == _owner, "Only owner can burn");
_burn(account, amount);
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool success) {
require(recipient != address(0), "Transfer to zero address not allowed");
super.transfer(recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool success) {
require(sender != address(0), "Transfer from zero address not allowed");
super.transferFrom(sender, recipient, amount);
return true;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return super.balanceOf(account);
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return super.allowance(owner, spender);
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
super.approve(spender, amount);
return true;
}
receive() external payable {
// do something with the received funds
}
function setFee(uint256 fee) public {
require(msg.sender == _owner, "Only owner can set fee");
require(fee <= 100, "Fee should be less than or equal to 100");
_fee = fee;
}
uint256 private _fee = 0;
function transferWithFee(address recipient, uint256 amount) public returns (bool) {
uint256 feeAmount = amount * _fee / 100;
uint256 netAmount = amount - feeAmount;
super.transfer(_owner, feeAmount);
super.transfer(recipient, netAmount);
return true;
}
function getFee() public view returns (uint256) {
return _fee;
}
}
PLATFORM: linux GANACHE VERSION: 2.7.1
EXCEPTION: