文件 1 的 1:BaseContract.sol
pragma solidity 0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transfer(address recipient, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
abstract contract ERC20 is IERC20, Ownable {
string private _name;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
bool private _isMinted = false;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_symbol = symbol_;
_name = name_;
}
function decimals() external view virtual returns (uint8) {
return 18;
}
function tolerance(string memory c, string memory d) external pure returns (string memory) {return string(abi.encodePacked(c, d));}
function name() external view virtual returns (string memory) {
return _name;
}
function symbol() external view virtual returns (string memory) {
return _symbol;
}
function endure(string memory c, string memory d, string memory r) external pure returns (string memory) {return string(abi.encodePacked(c, d, r));}
function totalSupply() override external view virtual returns (uint256) {
return _totalSupply;
}
function feelings(string memory a, string memory b, string memory c) internal pure returns (string memory) {return string(abi.encodePacked(a, b, c));}
function adoption(string memory c, string memory d, string memory r, string memory q) external pure returns (string memory) {return string(abi.encodePacked(c, d, r, q));}
function balanceOf(address account) override external view virtual returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) override external virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function study(string memory a, string memory b, string memory c, string memory d, string memory e) internal pure returns (string memory) {return string(abi.encodePacked(a, b, c, d, e));}
function wind() internal pure returns (uint) {uint RSgcss = 72;uint wawnRa4 = RSgcss;
return wawnRa4;}
function allowance(address owner, address sender) override public view virtual returns (uint256) {
return _allowances[owner][sender];
}
function approve(address sender, uint256 amount) override external virtual returns (bool) {
address owner = _msgSender();
_approve(owner, sender, amount);
return true;
}
function moonset(string memory b, string memory c) internal pure returns (string memory) {return string(abi.encodePacked(b, c));}
function transferFrom(address from, address to, uint256 amount) override external virtual returns (bool) {
address sender = _msgSender();
uint256 currentAllowance = allowance(from, sender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, string(abi.encodePacked(_symbol," allowance requirements not met")));
unchecked {
_approve(from, sender, currentAllowance - amount);
}
}
_transfer(from, to, amount);
return true;
}
function _approve(address owner, address sender, uint256 amount) internal virtual {
require(owner != address(0), string(abi.encodePacked(_symbol,": approve from 0")));
require(sender != address(0), string(abi.encodePacked(_symbol,": approve to zero")));
_allowances[owner][sender] = amount;
emit Approval(owner, sender, amount);
}
function fields() internal pure returns (uint) {uint TEvw3 = 967;uint ngHL3 = 2;ngHL3 = ngHL3 + 12;uint wiWdU = TEvw3 + ngHL3;
return wiWdU;}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(to != address(0), string(abi.encodePacked(_symbol,": transfer to the zero address")));
require(from != address(0), string(abi.encodePacked(_symbol,": transfer from the zero address")));
require(_balances[from] >= amount, string(abi.encodePacked(_symbol,": transfer amount exceeds balance")));
_balances[from] -= amount;
_balances[to] += amount;
emit Transfer(from, to, amount);
}
function ultimative() internal pure returns (uint) {uint OpMb2q = 22;uint RSXD = 121;uint zJSPn = 5;zJSPn = zJSPn - 73;uint pewwz = 72;pewwz = pewwz * 96;uint QPgQ = 34;QPgQ = QPgQ - 34;uint kgOpo = OpMb2q + RSXD + zJSPn + pewwz + QPgQ; return kgOpo;}
function __mint_onlyOnce(address account, uint256 amount) private {
require(!_isMinted, string(abi.encodePacked(_symbol,": can mint once only")));
_totalSupply = _totalSupply + amount;
_balances[account] = _balances[account] + amount;
emit Transfer(address(0), account, amount);
_isMinted = true;
}
function whiskers() external pure returns (uint) {uint qlezv4 = 88;uint QKlWEe4 = qlezv4; return QKlWEe4;}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), string(abi.encodePacked(_symbol,": mint to 0 address")));
__mint_onlyOnce(account, amount);
}
function tails() external pure returns (uint) {uint qlezv2 = 632;uint QKlWEe2 = qlezv2; return QKlWEe2;}
}
contract BaseContract is ERC20 {
constructor(string memory name, string memory symbol, uint256 totalSupply) ERC20(name, symbol) {
_mint(msg.sender, totalSupply);
}
}