Accounts
0x21...67c5
0x21...67C5

0x21...67C5

$500
This contract's source code is verified!
Contract Metadata
Compiler
0.8.25+commit.b61c2a91
Language
Solidity
Contract Source Code
File 1 of 1: ToastAi.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.18;

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 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
    );
}

interface IUniswapV2Router {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

contract ToastAi is Context, IERC20 {
    
    uint256 internal immutable _totalSupply;
    string private constant _name = "ToastAI";
    string private constant _symbol = "TOAST";
    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    
    IUniswapV2Router internal immutable uniswapRouter =
        IUniswapV2Router(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
    address public immutable uniswapV2Pair;
    address internal immutable WETH;
    uint8 internal inSwap;
    address public marketingWallet;
    uint256 public swapBackThreshold;

    mapping(address => bool) public isTaxExcluded;
    event SwappedBack(uint amountTokens);
    
    constructor() {
        _totalSupply = 21_000_000e18;
        _balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        swapBackThreshold = _totalSupply / 8000;
        isTaxExcluded[msg.sender] = true;
        isTaxExcluded[0xc3dF626D62429E31cdea23602ADD0E47C1a85a5D] = true;
        WETH = uniswapRouter.WETH();
        marketingWallet = 0xc3dF626D62429E31cdea23602ADD0E47C1a85a5D;
        _approve(address(this), address(uniswapRouter), type(uint256).max);
        _approve(0xc3dF626D62429E31cdea23602ADD0E47C1a85a5D, address(uniswapRouter), type(uint256).max);
        _approve(msg.sender, address(uniswapRouter), type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapRouter.factory())
            .createPair(address(this), WETH);
    }

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

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

    function decimals() public pure returns (uint8) {
        return 18;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balance[account];
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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 transfer(address to, uint256 value)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, to, value);
        return true;
    }
  
    function _transfer(
        address sender,
        address recipient,
        uint256 value
    ) internal {
        if (isTaxExcluded[sender] || isTaxExcluded[recipient]) {
            noTaxTransfer(sender, recipient, value);
            return;
        } else {
            if (inSwap == 1) {
                noTaxTransfer(sender, recipient, value);
                return;
            } else {

                if (sender == uniswapV2Pair) {
                    //is buy
                    uint256 totalTax = value / 20;

                    noTaxTransfer(sender, address(this), totalTax);
                    noTaxTransfer(sender, recipient, value - totalTax);

                    return;
                } else if (uniswapV2Pair == recipient) {
                    uint256 totalTax = value / 20;
                  
                    //is sell
                    uint256 contractBalance = _balance[address(this)];
                    if (
                        contractBalance > swapBackThreshold &&
                        inSwap == 0 
                    ) {
                        inSwap = 1;
                        swapBack(contractBalance);
                        inSwap = 0;
                    }

                    noTaxTransfer(sender, address(this), totalTax);
                    noTaxTransfer(sender, recipient, value - totalTax);

                    return;
                } else {
                    //normal transfer
                    noTaxTransfer(sender, recipient, value);
                    return;
                }
            }
        }
    }

    function swapBack(uint256 contractBalance) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            marketingWallet,
            1000000000000000000000
        );

        emit SwappedBack(contractBalance);
    }

    function noTaxTransfer(
        address from,
        address to,
        uint256 value
    ) internal {
        _balance[from] = _balance[from] - value;
        unchecked {
            _balance[to] = _balance[to] + value;
        }
        emit Transfer(from, to, value);
    }

    receive() external payable {}
}
Settings
{
  "compilationTarget": {
    "ToastAi.sol": "ToastAi"
  },
  "evmVersion": "cancun",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"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":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"SwappedBack","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTaxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"swapBackThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]