Description:
ERC20 token contract with Factory capabilities. Standard implementation for fungible tokens on Ethereum.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"BNB.sol": {
"content": "/**\r
*Submitted for verification at Etherscan.io on 2023-09-01\r
*/\r
\r
// Created By: PandaTool\r
// Website: https://PandaTool.org\r
// Telegram: https://t.me/PandaTool\r
// The Best Tool for Token Management\r
\r
// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.18;\r
\r
\r
contract Context {\r
\r
function _msgSender() internal view returns (address) {\r
return payable(msg.sender);\r
}\r
\r
function _msgData() internal view returns (bytes memory) {\r
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\r
return msg.data;\r
}\r
}\r
\r
\r
library SafeMath {\r
function add(uint256 a, uint256 b) internal pure returns (uint256) {\r
uint256 c = a + b;\r
require(c >= a, "SafeMath: addition overflow");\r
\r
return c;\r
}\r
\r
function sub(uint256 a, uint256 b) internal pure returns (uint256) {\r
return sub(a, b, "SafeMath: subtraction overflow");\r
}\r
\r
function sub(\r
uint256 a,\r
uint256 b,\r
string memory errorMessage\r
) internal pure returns (uint256) {\r
require(b <= a, errorMessage);\r
uint256 c = a - b;\r
\r
return c;\r
}\r
\r
function mul(uint256 a, uint256 b) internal pure returns (uint256) {\r
if (a == 0) {\r
return 0;\r
}\r
\r
uint256 c = a * b;\r
require(c / a == b, "SafeMath: multiplication overflow");\r
\r
return c;\r
}\r
\r
function div(uint256 a, uint256 b) internal pure returns (uint256) {\r
return div(a, b, "SafeMath: division by zero");\r
}\r
\r
function div(\r
uint256 a,\r
uint256 b,\r
string memory errorMessage\r
) internal pure returns (uint256) {\r
require(b > 0, errorMessage);\r
uint256 c = a / b;\r
// assert(a == b * c + a % b); // There is no case in which this doesn't hold\r
\r
return c;\r
}\r
\r
function mod(uint256 a, uint256 b) internal pure returns (uint256) {\r
return mod(a, b, "SafeMath: modulo by zero");\r
}\r
\r
function mod(\r
uint256 a,\r
uint256 b,\r
string memory errorMessage\r
) internal pure returns (uint256) {\r
require(b != 0, errorMessage);\r
return a % b;\r
}\r
}\r
\r
library Address {\r
function isContract(address account) internal view returns (bool) {\r
\r
bytes32 codehash;\r
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\r
\r
assembly {\r
codehash := extcodehash(account)\r
}\r
return (codehash != accountHash && codehash != 0x0);\r
}\r
\r
function sendValue(address payable recipient, uint256 amount) internal {\r
require(\r
address(this).balance >= amount,\r
"Address: insufficient balance"\r
);\r
\r
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value\r
(bool success, ) = recipient.call{value: amount}("");\r
require(\r
success,\r
"Address: unable to send value, recipient may have reverted"\r
);\r
}\r
\r
function functionCall(address target, bytes memory data)\r
internal\r
returns (bytes memory)\r
{\r
return functionCall(target, data, "Address: low-level call failed");\r
}\r
\r
function functionCall(\r
address target,\r
bytes memory data,\r
string memory errorMessage\r
) internal returns (bytes memory) {\r
return _functionCallWithValue(target, data, 0, errorMessage);\r
}\r
\r
function functionCallWithValue(\r
address target,\r
bytes memory data,\r
uint256 value\r
) internal returns (bytes memory) {\r
return\r
functionCallWithValue(\r
target,\r
data,\r
value,\r
"Address: low-level call with value failed"\r
);\r
}\r
\r
function functionCallWithValue(\r
address target,\r
bytes memory data,\r
uint256 value,\r
string memory errorMessage\r
) internal returns (bytes memory) {\r
require(\r
address(this).balance >= value,\r
"Address: insufficient balance for call"\r
);\r
return _functionCallWithValue(target, data, value, errorMessage);\r
}\r
\r
function _functionCallWithValue(\r
address target,\r
bytes memory data,\r
uint256 weiValue,\r
string memory errorMessage\r
) private returns (bytes memory) {\r
require(isContract(target), "Address: call to non-contract");\r
\r
(bool success, bytes memory returndata) = target.call{value: weiValue}(\r
data\r
);\r
if (success) {\r
return returndata;\r
} else {\r
if (returndata.length > 0) {\r
assembly {\r
let returndata_size := mload(returndata)\r
revert(add(32, returndata), returndata_size)\r
}\r
} else {\r
revert(errorMessage);\r
}\r
}\r
}\r
}\r
\r
interface IERC20 {\r
function decimals() external view returns (uint256);\r
\r
function symbol() external view returns (string memory);\r
\r
function name() external view returns (string memory);\r
\r
function totalSupply() external view returns (uint256);\r
\r
function balanceOf(address who) external view returns (uint);\r
\r
function transfer(\r
address recipient,\r
uint256 amount\r
) external returns (bool);\r
\r
function allowance(\r
address owner,\r
address spender\r
) external view returns (uint256);\r
\r
function approve(address _spender, uint _value) external;\r
\r
function transferFrom(address _from, address _to, uint _value) external ;\r
\r
event Transfer(address indexed from, address indexed to, uint256 value);\r
event Approval(\r
address indexed owner,\r
address indexed spender,\r
uint256 value\r
);\r
}\r
\r
\r
contract PandaToken is Context, IERC20{\r
using SafeMath for uint256;\r
using Address for address;\r
\r
string private _name;\r
string private _symbol;\r
uint256 private _decimals;\r
\r
mapping(address => uint256) _balances;\r
mapping(address => mapping(address => uint256)) private _allowances;\r
\r
address public immutable deadAddress =\r
0x000000000000000000000000000000000000dEaD;\r
uint256 private _totalSupply;\r
\r
constructor( \r
string[] memory stringParams,\r
address[] memory addressParams,\r
uint256[] memory numberParams,\r
bool[] memory boolParams\r
) {\r
require(addressParams.length==0);\r
require(boolParams.length==0);\r
\r
address receiveAddr = tx.origin;\r
_name = stringParams[0];\r
_symbol = stringParams[1];\r
_decimals = numberParams[0];\r
_totalSupply = numberParams[1];\r
_balances[receiveAddr] = _totalSupply;\r
emit Transfer(address(0), receiveAddr, _totalSupply);\r
}\r
\r
function name() public view override returns (string memory) {\r
return _name;\r
}\r
\r
\r
function symbol() public view override returns (string memory) {\r
return _symbol;\r
}\r
\r
function decimals() public view override returns (uint256) {\r
return _decimals;\r
}\r
\r
function totalSupply() public view override returns (uint256) {\r
return _totalSupply;\r
}\r
\r
function owner() public view returns (address) {\r
return deadAddress;\r
}\r
\r
function balanceOf(address account) public view override returns (uint256) {\r
return _balances[account];\r
}\r
\r
function allowance(address owner1, address spender)\r
public\r
view\r
override\r
returns (uint256)\r
{\r
return _allowances[owner1][spender];\r
}\r
\r
function increaseAllowance(address spender, uint256 addedValue)\r
public\r
virtual\r
returns (bool)\r
{\r
_approve(\r
_msgSender(),\r
spender,\r
_allowances[_msgSender()][spender].add(addedValue)\r
);\r
return true;\r
}\r
\r
function decreaseAllowance(address spender, uint256 subtractedValue)\r
public\r
virtual\r
returns (bool)\r
{\r
_approve(\r
_msgSender(),\r
spender,\r
_allowances[_msgSender()][spender].sub(\r
subtractedValue,\r
"ERC20: decreased allowance below zero"\r
)\r
);\r
return true;\r
}\r
\r
function approve(address spender, uint256 amount)\r
public\r
override\r
\r
{\r
_approve(_msgSender(), spender, amount);\r
\r
}\r
\r
function _approve(\r
address owner1,\r
address spender,\r
uint256 amount\r
) private {\r
require(owner1 != address(0), "ERC20: approve from the zero address");\r
require(spender != address(0), "ERC20: approve to the zero address");\r
\r
_allowances[owner1][spender] = amount;\r
emit Approval(owner1, spender, amount);\r
}\r
\r
function getCirculatingSupply() public view returns (uint256) {\r
return _totalSupply.sub(balanceOf(deadAddress));\r
}\r
\r
//to recieve ETH from uniswapV2Router when swaping\r
receive() external payable {}\r
\r
function transfer(address recipient, uint256 amount)\r
public\r
override\r
returns (bool)\r
{\r
_transfer(_msgSender(), recipient, amount);\r
return true;\r
}\r
\r
function transferFrom(\r
address sender,\r
address recipient,\r
uint256 amount\r
) public override {\r
_transfer(sender, recipient, amount);\r
_approve(\r
sender,\r
_msgSender(),\r
_allowances[sender][_msgSender()].sub(\r
amount,\r
"ERC20: transfer amount exceeds allowance"\r
)\r
);\r
\r
}\r
\r
function _transfer(\r
address sender,\r
address recipient,\r
uint256 amount\r
) private returns (bool) {\r
require(sender != address(0), "ERC20: transfer from the zero address");\r
require(recipient != address(0), "ERC20: transfer to the zero address");\r
return _basicTransfer(sender, recipient, amount);\r
}\r
\r
function _basicTransfer(\r
address sender,\r
address recipient,\r
uint256 amount\r
) internal returns (bool) {\r
_balances[sender] = _balances[sender].sub(\r
amount,\r
"Insufficient Balance"\r
);\r
_balances[recipient] = _balances[recipient].add(amount);\r
emit Transfer(sender, recipient, amount);\r
return true;\r
}\r
}"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}
}}
Submitted on: 2025-10-29 11:23:26
Comments
Log in to comment.
No comments yet.