Address Contract Partially Verified
Address
0x6CB536591c65f2090E14e8d8bd5c64F3F0d41BF6
Balance
0 ETH
Nonce
1
Code Size
3848 bytes
Creator
0x334A7cAF...da60 at tx 0x822387df...995464
Indexed Transactions
0
Contract Bytecode
3848 bytes
0x608060405234801561000f575f5ffd5b5060043610610153575f3560e01c806370a08231116100bf578063a457c2d711610079578063a457c2d7146102d3578063a9059cbb146102e6578063cc1776d3146102f9578063dd62ed3e14610302578063ea2f0b371461033a578063f2fde38b1461034d575f5ffd5b806370a082311461026f57806370e08e6114610297578063715018a6146102a05780638da5cb5b146102a857806395d89b41146102b8578063a2a957bb146102c0575f5ffd5b8063395093511161011057806339509351146101f7578063437823ec1461020a57806349bd5a5e1461021f5780634f7041a5146102325780635342acb41461023b5780636da54cd414610266575f5ffd5b806306fdde0314610157578063095ea7b3146101755780631694505e1461019857806318160ddd146101c357806323b872dd146101d5578063313ce567146101e8575b5f5ffd5b61015f610360565b60405161016c9190610bcf565b60405180910390f35b610188610183366004610c1f565b6103f0565b604051901515815260200161016c565b600c546101ab906001600160a01b031681565b6040516001600160a01b03909116815260200161016c565b6004545b60405190815260200161016c565b6101886101e3366004610c47565b610406565b6040516012815260200161016c565b610188610205366004610c1f565b61046d565b61021d610218366004610c81565b6104a2565b005b600d546101ab906001600160a01b031681565b6101c760095481565b610188610249366004610c81565b6001600160a01b03165f9081526007602052604090205460ff1690565b6101c7600a5481565b6101c761027d366004610c81565b6001600160a01b03165f9081526002602052604090205490565b6101c760085481565b61021d6104f7565b5f546001600160a01b03166101ab565b61015f610568565b61021d6102ce366004610c9a565b610577565b6101886102e1366004610c1f565b6105b4565b6101886102f4366004610c1f565b610601565b6101c7600b5481565b6101c7610310366004610cc9565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b61021d610348366004610c81565b61060d565b61021d61035b366004610c81565b610656565b60606005805461036f90610cfa565b80601f016020809104026020016040519081016040528092919081815260200182805461039b90610cfa565b80156103e65780601f106103bd576101008083540402835291602001916103e6565b820191905f5260205f20905b8154815290600101906020018083116103c957829003601f168201915b5050505050905090565b5f6103fc33848461073d565b5060015b92915050565b5f610412848484610861565b610463843361045e85604051806060016040528060288152602001610e86602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610a68565b61073d565b5060019392505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916103fc91859061045e9086610a93565b5f546001600160a01b031633146104d45760405162461bcd60e51b81526004016104cb90610d32565b60405180910390fd5b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b5f546001600160a01b031633146105205760405162461bcd60e51b81526004016104cb90610d32565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606006805461036f90610cfa565b5f546001600160a01b031633146105a05760405162461bcd60e51b81526004016104cb90610d32565b600893909355600991909155600a55600b55565b5f6103fc338461045e85604051806060016040528060258152602001610eae60259139335f9081526003602090815260408083206001600160a01b038d1684529091529020549190610a68565b5f6103fc338484610861565b5f546001600160a01b031633146106365760405162461bcd60e51b81526004016104cb90610d32565b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f546001600160a01b0316331461067f5760405162461bcd60e51b81526004016104cb90610d32565b6001600160a01b0381166106e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104cb565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661079f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104cb565b6001600160a01b0382166108005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104cb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166108875760405162461bcd60e51b81526004016104cb90610d67565b6001600160a01b0382166108ad5760405162461bcd60e51b81526004016104cb90610dac565b5f811161090e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104cb565b6001600160a01b0383165f9081526007602052604090205460019060ff168061094e57506001600160a01b0383165f9081526007602052604090205460ff165b156109655761095e848484610aa5565b505f610a62565b600d546001600160a01b0390811690851603610a09575f61099c606461099660085486610bae90919063ffffffff16565b90610bb9565b90505f6109b9606461099660095487610bae90919063ffffffff16565b90506109cf6109c88383610a93565b8590610bc4565b93506109dc865f84610aa5565b6109f7866109f15f546001600160a01b031690565b83610aa5565b610a02868686610aa5565b5050610a62565b600d546001600160a01b0390811690841603610a57575f610a3a6064610996600a5486610bae90919063ffffffff16565b90505f6109b96064610996600b5487610bae90919063ffffffff16565b610a62848484610aa5565b50505050565b5f8184841115610a8b5760405162461bcd60e51b81526004016104cb9190610bcf565b505050900390565b5f610a9e8284610e03565b9392505050565b6001600160a01b038316610acb5760405162461bcd60e51b81526004016104cb90610d67565b6001600160a01b038216610af15760405162461bcd60e51b81526004016104cb90610dac565b610b2d81604051806060016040528060268152602001610e60602691396001600160a01b0386165f908152600260205260409020549190610a68565b6001600160a01b038085165f908152600260205260408082209390935590841681522054610b5b9082610a93565b6001600160a01b038084165f8181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108549085815260200190565b5f610a9e8284610e16565b5f610a9e8284610e2d565b5f610a9e8284610e4c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610c1a575f5ffd5b919050565b5f5f60408385031215610c30575f5ffd5b610c3983610c04565b946020939093013593505050565b5f5f5f60608486031215610c59575f5ffd5b610c6284610c04565b9250610c7060208501610c04565b929592945050506040919091013590565b5f60208284031215610c91575f5ffd5b610a9e82610c04565b5f5f5f5f60808587031215610cad575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f60408385031215610cda575f5ffd5b610ce383610c04565b9150610cf160208401610c04565b90509250929050565b600181811c90821680610d0e57607f821691505b602082108103610d2c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561040057610400610def565b808202811582820484141761040057610400610def565b5f82610e4757634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561040057610400610def56fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206b7312a8d60117e746f3dab5870ac83e1c5f5d122da02db4e8c976d29eb0e21464736f6c634300081b0033
Verified Source Code Partial Match
Compiler: v0.8.27+commit.40a35a09
EVM: cancun
Optimization: Yes (200 runs)
GMF.sol 287 lines
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.27;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256)
{ return a + b; }
function sub(uint256 a, uint256 b) internal pure returns (uint256)
{ return a - b; }
function mul(uint256 a, uint256 b) internal pure returns (uint256)
{ return a * b; }
function div(uint256 a, uint256 b) internal pure returns (uint256)
{ return a / b; }
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address)
{ return msg.sender; }
}
abstract contract Ownable is Context {
address internal _owner;
address private _previousOwner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
_owner = _msgSender();
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view virtual 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);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IERC20Metadata is IERC20
{
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context,Ownable, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Pair {
function factory() external view returns (address);
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
}
interface IUniswapV2Router02 is IUniswapV2Router01 { }
contract GMF is ERC20 {
using SafeMath for uint256;
mapping (address => bool) private _isExcludedFromFee;
address constant burnAddress = 0x0000000000000000000000000000000000000000;
uint256 public buyBurn = 1;
uint256 public buyTax = 2;
uint256 public sellBurn = 1;
uint256 public sellTax = 2;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
constructor () ERC20("Good Morning Frens", "GMF"){
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_isExcludedFromFee[_msgSender()] = true;
_isExcludedFromFee[address(this)] = true;
_mint(owner(), 1000000000 * 10 ** decimals());
}
function excludeFromFee(address account) public onlyOwner
{ _isExcludedFromFee[account] = true;}
function includeInFee(address account) public onlyOwner
{_isExcludedFromFee[account] = false;}
function setFee(
uint256 _buyFee,
uint256 _buyTax,
uint256 _sellFee,
uint256 _sellTax
) external onlyOwner
{
buyBurn = _buyFee;
buyTax = _buyTax;
sellBurn = _sellFee;
sellTax = _sellTax;
}
function isExcludedFromFee(address account) public view returns(bool) {
return _isExcludedFromFee[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
bool takeFee = true;
if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
super._transfer(from, to, amount);
takeFee = false;
} else {
if (from == uniswapV2Pair) {
uint256 burnTokens = amount.mul(buyBurn).div(100);
uint256 taxTokens = amount.mul(buyTax).div(100);
amount= amount.sub(burnTokens.add(taxTokens));
super._transfer(from, burnAddress, burnTokens);
super._transfer(from,owner(),taxTokens);
super._transfer(from, to, amount);
} else if (to == uniswapV2Pair) {
uint256 burnTokens = amount.mul(sellBurn).div(100);
uint256 taxTokens = amount.mul(sellTax).div(100);
amount= amount.sub(burnTokens.add(taxTokens));
super._transfer(from, burnAddress, burnTokens);
super._transfer(from,owner(),taxTokens);
super._transfer(from, to, amount);
} else {
super._transfer(from, to, amount);
}
}
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyBurn 0x70e08e61 → uint256
buyTax 0x4f7041a5 → uint256
decimals 0x313ce567 → uint8
isExcludedFromFee 0x5342acb4 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellBurn 0x6da54cd4 → uint256
sellTax 0xcc1776d3 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
Write Contract 10 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFee 0x437823ec
address account
includeInFee 0xea2f0b37
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
setFee 0xa2a957bb
uint256 _buyFee
uint256 _buyTax
uint256 _sellFee
uint256 _sellTax
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address