S Price: $0.53459 (-10.45%)

Contract Diff Checker

Contract Name:
TarotXAI

Contract Source Code:

File 1 of 1 : TarotXAI

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

contract TarotXAI is Context, IERC20 {
    string private _name = "TarotXAI";
    string private _symbol = "TAI";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 1000000000 * 10 ** 18;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    address[] private _holders;
    mapping(address => bool) private _isHolder;

    constructor() {
        _balances[_msgSender()] = _totalSupply;
        _holders.push(_msgSender());
        _isHolder[_msgSender()] = true;
    }

    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[_msgSender()][spender] = amount;
        return true;
    }
    function allowance(
        address owner,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function transfer(
        address to,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), to, amount);
        return true;
    }
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public override returns (bool) {
        _transfer(from, to, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "Invalid sender");
        require(to != address(0), "Invalid receiver");
        require(_balances[from] >= amount, "Insufficient balance");

        _balances[from] -= amount;
        _balances[to] += amount;

        if (!_isHolder[to]) {
            _holders.push(to);
            _isHolder[to] = true;
        }
    }
}

Please enter a contract address above to load the contract details and source code.

Context size (optional):