Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x9e82DB0E7bC5B7029089cc0aE1c7032d9932Cbb8
Balance 0 ETH
Nonce 1
Code Size 8559 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

8559 bytes
0x608060405260043610610101575f3560e01c806370a0823111610094578063a9059cbb11610063578063a9059cbb1461036c578063c0b6f561146103a8578063dd62ed3e146103c4578063e086e5ec14610400578063f25f4b561461040a57610141565b806370a08231146102d457806379ba50971461031057806395ccea671461032657806395d89b411461034257610141565b806323b872dd116100d057806323b872dd14610236578063313ce5671461027257806344337ea11461029c578063537df3b6146102b857610141565b806306fdde031461017c578063095ea7b3146101a657806318160ddd146101e257806323b62b751461020c57610141565b36610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611c06565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017390611c06565b60405180910390fd5b348015610187575f5ffd5b50610190610434565b60405161019d9190611c84565b60405180910390f35b3480156101b1575f5ffd5b506101cc60048036038101906101c79190611d35565b610471565b6040516101d99190611d8d565b60405180910390f35b3480156101ed575f5ffd5b506101f6610643565b6040516102039190611db5565b60405180910390f35b348015610217575f5ffd5b50610220610655565b60405161022d9190611ddd565b60405180910390f35b348015610241575f5ffd5b5061025c60048036038101906102579190611df6565b610679565b6040516102699190611d8d565b60405180910390f35b34801561027d575f5ffd5b50610286610a61565b6040516102939190611e61565b60405180910390f35b6102b660048036038101906102b19190611e7a565b610a69565b005b6102d260048036038101906102cd9190611e7a565b610c1a565b005b3480156102df575f5ffd5b506102fa60048036038101906102f59190611e7a565b610dc9565b6040516103079190611db5565b60405180910390f35b34801561031b575f5ffd5b50610324610e10565b005b610340600480360381019061033b9190611d35565b611095565b005b34801561034d575f5ffd5b50610356611294565b6040516103639190611c84565b60405180910390f35b348015610377575f5ffd5b50610392600480360381019061038d9190611d35565b6112d1565b60405161039f9190611d8d565b60405180910390f35b6103c260048036038101906103bd9190611e7a565b6114a5565b005b3480156103cf575f5ffd5b506103ea60048036038101906103e59190611ea5565b61164e565b6040516103f79190611db5565b60405180910390f35b6104086116d0565b005b348015610415575f5ffd5b5061041e6118c6565b60405161042b9190611ddd565b60405180910390f35b60606040518060400160405280600781526020017f47616d626c655800000000000000000000000000000000000000000000000000815250905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104d7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610639578160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106309190611db5565b60405180910390a35b6001905092915050565b5f6a52b7d2dcc80cd2e4000000905090565b7f0000000000000000000000005b4103ff8d7998d5e40b3670ac64b5a4a10abd0681565b5f835f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff161561070957806040517fffa4e6180000000000000000000000000000000000000000000000000000000081526004016107009190611ddd565b60405180910390fd5b835f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff161561079857806040517fffa4e61800000000000000000000000000000000000000000000000000000000815260040161078f9190611ddd565b60405180910390fd5b845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107fe57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610835576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050858110156108eb576040517fc45cb51300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85810360015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560015f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610a3f9190611db5565b60405180910390a3610a528888886118ea565b60019450505050509392505050565b5f6012905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aef576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff1615610b7d57806040517fffa4e618000000000000000000000000000000000000000000000000000000008152600401610b749190611ddd565b60405180910390fd5b60015f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed62760405160405180910390a250565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff16610d2d57806040517fffa4e618000000000000000000000000000000000000000000000000000000008152600401610d249190611ddd565b60405180910390fd5b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d460405160405180910390a250565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611052575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350611093565b5f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461111b576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff163b0361116b576040517f1045b33e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016111c8929190611ee3565b6020604051808303815f875af11580156111e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112089190611f34565b905080611241576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20836040516112879190611db5565b60405180910390a2505050565b60606040518060400160405280600581526020017f474d424c58000000000000000000000000000000000000000000000000000000815250905090565b5f335f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff161561136157806040517fffa4e6180000000000000000000000000000000000000000000000000000000081526004016113589190611ddd565b60405180910390fd5b835f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff16156113f057806040517fffa4e6180000000000000000000000000000000000000000000000000000000081526004016113e79190611ddd565b60405180910390fd5b845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061145657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561148d576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114983387876118ea565b6001935050505092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152b576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611590576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a60405160405180910390a350565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611756576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f4790505f8103611793576040517fcff858f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516117d990611f8c565b5f6040518083038185875af1925050503d805f8114611813576040519150601f19603f3d011682016040523d82523d5f602084013e611818565b606091505b5050905080611853576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f94b2de810873337ed265c5f8cf98c9cffefa06b8607f9a2f1fbaebdfbcfbef1c836040516118ba9190611db5565b60405180910390a25050565b7f000000000000000000000000afadaeb9bce9b602fcba1bdaeba7242d207acba081565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f825f01549050838110156119a9576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e860016103e8901c6005876119c19190611fcd565b6119cb919061200e565b6119d5919061206e565b90505f81866119e4919061209e565b90508581836119f3919061200e565b14611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a9061211b565b60405180910390fd5b858303855f0181905550815f5f7f000000000000000000000000afadaeb9bce9b602fcba1bdaeba7242d207acba073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f828254019250508190555080845f015f82825401925050819055507f000000000000000000000000afadaeb9bce9b602fcba1bdaeba7242d207acba073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b359190611db5565b60405180910390a38673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b9a9190611db5565b60405180910390a35050505050505050565b5f82825260208201905092915050565b7f43616e6e6f742073656e642045544820746f207468697320636f6e74726163745f82015250565b5f611bf0602083611bac565b9150611bfb82611bbc565b602082019050919050565b5f6020820190508181035f830152611c1d81611be4565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c5682611c24565b611c608185611bac565b9350611c70818560208601611c2e565b611c7981611c3c565b840191505092915050565b5f6020820190508181035f830152611c9c8184611c4c565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cd182611ca8565b9050919050565b611ce181611cc7565b8114611ceb575f5ffd5b50565b5f81359050611cfc81611cd8565b92915050565b5f819050919050565b611d1481611d02565b8114611d1e575f5ffd5b50565b5f81359050611d2f81611d0b565b92915050565b5f5f60408385031215611d4b57611d4a611ca4565b5b5f611d5885828601611cee565b9250506020611d6985828601611d21565b9150509250929050565b5f8115159050919050565b611d8781611d73565b82525050565b5f602082019050611da05f830184611d7e565b92915050565b611daf81611d02565b82525050565b5f602082019050611dc85f830184611da6565b92915050565b611dd781611cc7565b82525050565b5f602082019050611df05f830184611dce565b92915050565b5f5f5f60608486031215611e0d57611e0c611ca4565b5b5f611e1a86828701611cee565b9350506020611e2b86828701611cee565b9250506040611e3c86828701611d21565b9150509250925092565b5f60ff82169050919050565b611e5b81611e46565b82525050565b5f602082019050611e745f830184611e52565b92915050565b5f60208284031215611e8f57611e8e611ca4565b5b5f611e9c84828501611cee565b91505092915050565b5f5f60408385031215611ebb57611eba611ca4565b5b5f611ec885828601611cee565b9250506020611ed985828601611cee565b9150509250929050565b5f604082019050611ef65f830185611dce565b611f036020830184611da6565b9392505050565b611f1381611d73565b8114611f1d575f5ffd5b50565b5f81519050611f2e81611f0a565b92915050565b5f60208284031215611f4957611f48611ca4565b5b5f611f5684828501611f20565b91505092915050565b5f81905092915050565b50565b5f611f775f83611f5f565b9150611f8282611f69565b5f82019050919050565b5f611f9682611f6c565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fd782611d02565b9150611fe283611d02565b9250828202611ff081611d02565b9150828204841483151761200757612006611fa0565b5b5092915050565b5f61201882611d02565b915061202383611d02565b925082820190508082111561203b5761203a611fa0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61207882611d02565b915061208383611d02565b92508261209357612092612041565b5b828204905092915050565b5f6120a882611d02565b91506120b383611d02565b92508282039050818111156120cb576120ca611fa0565b5b92915050565b7f496e76616c6964207472616e7366657220616d6f756e740000000000000000005f82015250565b5f612105601783611bac565b9150612110826120d1565b602082019050919050565b5f6020820190508181035f830152612132816120f9565b905091905056fea2646970667358221220cc2abffe60848429e6c3b74757e533909c51d85c87c2d6a21cd609bf3cf5e11464736f6c634300081b0033

Verified Source Code Partial Match

Compiler: v0.8.27+commit.40a35a09 EVM: cancun Optimization: No
GambleX.sol 235 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface IERC20 {
    function totalSupply() external pure 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);
}

contract GambleX is IERC20 {
    string private constant _name = "GambleX";
    string private constant _symbol = "GMBLX";
    uint8 private constant _decimals = 18;

    uint256 private constant _totalSupply = 100_000_000 * 1e18;

    address public immutable feeWallet;
    address public immutable mainWallet;

    uint256 private constant _FEE_PERCENT = 5; // Represents 0.5%
    uint256 private constant _FEE_DIVISOR = 1000;

    struct Account {
        uint256 balance;
        bool isBlacklisted;
    }

    mapping(address => Account) private _accounts;
    mapping(address => mapping(address => uint256)) private _allowances;

    address private _owner;
    address private _pendingOwner;

    error NotOwner();
    error Blacklisted(address account);
    error InvalidRecipient();
    error InsufficientBalance();
    error TransferFailed();
    error ZeroAddress();
    error NoETHToWithdraw();
    error TokenAddressNotContract();
    error AllowanceExceeded();

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event AddedToBlacklist(address indexed account);
    event RemovedFromBlacklist(address indexed account);
    event EmergencyWithdrawal(address indexed token, uint256 amount);
    event OwnershipTransferInitiated(address indexed previousOwner, address indexed newOwner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ETHWithdrawn(address indexed owner, uint256 amount);

    modifier onlyOwner() {
        if (msg.sender != _owner) revert NotOwner();
        _;
    }

    modifier notBlacklisted(address account) {
        if (_accounts[account].isBlacklisted) revert Blacklisted(account);
        _;
    }

    modifier validRecipient(address recipient) {
        if (recipient == address(0) || recipient == address(this)) revert InvalidRecipient();
        _;
    }

    constructor(address _feeWalletAddress, address _mainWalletAddress) payable {
        if (_feeWalletAddress == address(0)) revert ZeroAddress();
        if (_mainWalletAddress == address(0)) revert ZeroAddress();

        feeWallet = _feeWalletAddress;
        mainWallet = _mainWalletAddress;
        _owner = _mainWalletAddress;
        _accounts[_mainWalletAddress].balance = _totalSupply;
        emit Transfer(address(0), _mainWalletAddress, _totalSupply);
    }

    receive() external payable {
        revert("Cannot send ETH to this contract");
    }

    fallback() external payable {
        revert("Cannot send ETH to this contract");
    }

    function name() external pure returns (string memory) {
        return _name;
    }

    function symbol() external pure returns (string memory) {
        return _symbol;
    }

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) external view override returns (uint256) {
        return _accounts[account].balance;
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        notBlacklisted(msg.sender)
        notBlacklisted(recipient)
        validRecipient(recipient)
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner_, address spender) external view override returns (uint256) {
        return _allowances[owner_][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        if (spender == address(0)) revert ZeroAddress();

        if (_allowances[msg.sender][spender] != amount) {
            _allowances[msg.sender][spender] = amount;
            emit Approval(msg.sender, spender, amount);
        }
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    )
        external
        override
        notBlacklisted(sender)
        notBlacklisted(recipient)
        validRecipient(recipient)
        returns (bool)
    {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance < amount) revert AllowanceExceeded();

        unchecked {
            _allowances[sender][msg.sender] = currentAllowance - amount;
        }
        emit Approval(sender, msg.sender, _allowances[sender][msg.sender]);

        _transfer(sender, recipient, amount);
        return true;
    }

    function addToBlacklist(address account) external payable onlyOwner {
        if (_accounts[account].isBlacklisted) revert Blacklisted(account);
        _accounts[account].isBlacklisted = true;
        emit AddedToBlacklist(account);
    }

    function removeFromBlacklist(address account) external payable onlyOwner {
        if (!_accounts[account].isBlacklisted) revert Blacklisted(account);
        _accounts[account].isBlacklisted = false;
        emit RemovedFromBlacklist(account);
    }

    function emergencyWithdraw(address tokenAddress, uint256 amount) external payable onlyOwner {
        if (tokenAddress.code.length == 0) revert TokenAddressNotContract();
        bool success = IERC20(tokenAddress).transfer(_owner, amount);
        if (!success) revert TransferFailed();
        emit EmergencyWithdrawal(tokenAddress, amount);
    }

    function withdrawETH() external payable onlyOwner {
        uint256 ethBalance;
        assembly {
            ethBalance := selfbalance()
        }
        if (ethBalance == 0) revert NoETHToWithdraw();
        (bool success, ) = _owner.call{value: ethBalance}("");
        if (!success) revert TransferFailed();
        emit ETHWithdrawn(_owner, ethBalance);
    }

    function initiateOwnershipTransfer(address newOwner) external payable onlyOwner {
        if (newOwner == address(0)) revert ZeroAddress();
        _pendingOwner = newOwner;
        emit OwnershipTransferInitiated(_owner, newOwner);
    }

    function acceptOwnership() external {
        if (msg.sender != _pendingOwner) revert NotOwner();
        if (_owner != _pendingOwner) {
            address previousOwner = _owner;
            _owner = _pendingOwner;
            _pendingOwner = address(0);
            emit OwnershipTransferred(previousOwner, _owner);
        } else {
            _pendingOwner = address(0);
        }
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    )
        internal
    {
        Account storage senderAccount = _accounts[sender];
        Account storage recipientAccount = _accounts[recipient];
        uint256 senderBalance = senderAccount.balance;
        if (senderBalance < amount) revert InsufficientBalance();

        uint256 feeAmount = (amount * _FEE_PERCENT + (_FEE_DIVISOR >> 1)) / _FEE_DIVISOR;
        uint256 transferAmount = amount - feeAmount;

        // Check for rounding errors
        require(feeAmount + transferAmount == amount, "Invalid transfer amount");

        unchecked {
            senderAccount.balance = senderBalance - amount;
            _accounts[feeWallet].balance += feeAmount;
            recipientAccount.balance += transferAmount;
        }

        emit Transfer(sender, feeWallet, feeAmount);
        emit Transfer(sender, recipient, transferAmount);
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
feeWallet 0xf25f4b56 → address
mainWallet 0x23b62b75 → address
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 9 functions

These functions modify contract state and require a wallet transaction to execute.

acceptOwnership 0x79ba5097
No parameters
addToBlacklist 0x44337ea1
address account
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
emergencyWithdraw 0x95ccea67
address tokenAddress
uint256 amount
initiateOwnershipTransfer 0xc0b6f561
address newOwner
removeFromBlacklist 0x537df3b6
address account
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
withdrawETH 0xe086e5ec
No parameters

Recent Transactions

No transactions found for this address