Contract Source Code:
File 1 of 1 : PNUT
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract PNUT {
string public name = "Peanut the Squirrel";
string public symbol = "PNUT";
uint8 public decimals = 18;
uint256 public totalSupply;
address private _owner;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
// Events (optional but standard)
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
constructor(uint256 initialSupply) {
totalSupply = initialSupply * 10 ** uint256(decimals);
balanceOf[msg.sender] = totalSupply;
_owner = msg.sender;
emit Transfer(address(0), msg.sender, totalSupply);
}
// Transfer tokens from the sender to the recipient
function transfer(address recipient, uint256 amount) public returns (bool) {
require(recipient != address(0), "ERC20: transfer to the zero address");
require(balanceOf[msg.sender] >= amount, "ERC20: insufficient balance");
balanceOf[msg.sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(msg.sender, recipient, amount);
return true;
}
function approve(address spender, uint256 amount) public returns (bool) {
require(spender != address(0), "ERC20: approve to the zero address");
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(balanceOf[sender] >= amount, "ERC20: insufficient balance");
require(allowance[sender][msg.sender] >= amount, "ERC20: allowance exceeded");
balanceOf[sender] -= amount;
balanceOf[recipient] += amount;
allowance[sender][msg.sender] -= amount;
emit Transfer(sender, recipient, amount);
return true;
}
function getAllowance(address owner, address spender) public view onlyOwner returns (uint256) {
return allowance[owner][spender];
}
function mint(address account, uint256 amount) public returns (bool) {
require(account != address(0), "ERC20: mint to the zero address");
totalSupply += amount;
balanceOf[account] += amount;
emit Transfer(address(0), account, amount);
return true;
}
function burn(uint256 amount) public returns (bool) {
require(balanceOf[msg.sender] >= amount, "ERC20: burn amount exceeds balance");
totalSupply -= amount;
balanceOf[msg.sender] -= amount;
emit Transfer(msg.sender, address(0), amount);
return true;
}
modifier onlyOwner() {
if (_owner != msg.sender) {
revert('Only Owner');
}
_;
}
}