Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xa46897CffF096df983fAaFE516d2cC318658850D
Balance 0 ETH
Nonce 1
Code Size 4416 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

4416 bytes
0x6080604052600436106101395760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb1461037e578063ce0192f91461039e578063dd62ed3e146103b4578063e5a6b10f146103fa578063e82bef291461041a578063f2fde38b1461043a57600080fd5b806370a08231146102e0578063715018a6146103165780638da5cb5b1461032b57806395d89b41146103495780639cc0e3c71461035e57600080fd5b806323b872dd116100fd57806323b872dd14610225578063313ce567146102455780633bfe62ca1461025a5780633c11100d146102705780634188bf5a146102a057806352f7c988146102c057600080fd5b806301986fad1461014557806306fdde031461018a578063095ea7b3146101ac57806318160ddd146101ce578063206c17bb146101ed57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b50610175610160366004610e01565b60076020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561019657600080fd5b5061019f61045a565b6040516101819190610e23565b3480156101b857600080fd5b506101cc6101c7366004610e71565b6104ec565b005b3480156101da57600080fd5b506008545b604051908152602001610181565b3480156101f957600080fd5b5060095461020d906001600160a01b031681565b6040516001600160a01b039091168152602001610181565b34801561023157600080fd5b506101cc610240366004610e9b565b6104fb565b34801561025157600080fd5b506006546101df565b34801561026657600080fd5b506101df600e5481565b34801561027c57600080fd5b5061017561028b366004610e01565b600b6020526000908152604090205460ff1681565b3480156102ac57600080fd5b50600f5461020d906001600160a01b031681565b3480156102cc57600080fd5b506101cc6102db366004610ed7565b61058b565b3480156102ec57600080fd5b506101df6102fb366004610e01565b6001600160a01b031660009081526001602052604090205490565b34801561032257600080fd5b506101cc6105c9565b34801561033757600080fd5b506000546001600160a01b031661020d565b34801561035557600080fd5b5061019f61063d565b34801561036a57600080fd5b5061020d610379366004610ef9565b61064c565b34801561038a57600080fd5b50610175610399366004610e71565b610676565b3480156103aa57600080fd5b506101df600d5481565b3480156103c057600080fd5b506101df6103cf366004610f12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561040657600080fd5b50600a5461020d906001600160a01b031681565b34801561042657600080fd5b5060035461020d906001600160a01b031681565b34801561044657600080fd5b506101cc610455366004610e01565b61068d565b60606004805461046990610f45565b80601f016020809104026020016040519081016040528092919081815260200182805461049590610f45565b80156104e25780601f106104b7576101008083540402835291602001916104e2565b820191906000526020600020905b8154815290600101906020018083116104c557829003601f168201915b5050505050905090565b6104f7338383610753565b5050565b6105068383836107b5565b6001600160a01b038316600090815260026020908152604080832033845290915290205460001914610586576001600160a01b0383166000908152600260209081526040808320338452909152902054610561908290610f95565b6001600160a01b03841660009081526002602090815260408083203384529091529020555b505050565b6000546001600160a01b031633146105be5760405162461bcd60e51b81526004016105b590610fa8565b60405180910390fd5b600d91909155600e55565b6000546001600160a01b031633146105f35760405162461bcd60e51b81526004016105b590610fa8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606005805461046990610f45565b6010818154811061065c57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006106833384846107b5565b5060015b92915050565b6000546001600160a01b031633146106b75760405162461bcd60e51b81526004016105b590610fa8565b6001600160a01b0381166106f85760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b60448201526064016105b5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806107d5846001600160a01b031660009081526001602052604090205490565b101561080f5760405162461bcd60e51b815260206004820152600960248201526809cdee88adcdeeaced60bb1b60448201526064016105b5565b6001600160a01b0382166000908152600b602052604081205481908190819060ff16156108455761083e6109e3565b9050610871565b6001600160a01b0387166000908152600b602052604090205460ff16156108715761086e610b06565b91505b6001600160a01b0387166000908152600b602052604090205460ff16806108b057506001600160a01b0386166000908152600b602052604090205460ff165b156109cd576001600160a01b03871660009081526007602052604090205460ff161580156108f757506001600160a01b03861660009081526007602052604090205460ff16155b156109a7576001600160a01b0386166000908152600b602052604090205460ff161561099157600c5460ff1615801561092e575080155b156109915730600090815260016020526040902054801561098f576000600e54600d5461095b9190610fc8565b9050600061138861096c838a610fdb565b6109769190610ff2565b9050828111156109835750815b61098c81610c29565b50505b505b8015801561099d575081155b156109a757600193505b6001600160a01b0386166000908152600b602052604090205460ff16156109cd57600192505b6109da8787878787610cba565b50505050505050565b600f5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a58919061102b565b50600a546001600160701b039283169450911691506001600160a01b0316600030821015610a87575082610a8a565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af8919061107b565b919091119695505050505050565b600f5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b919061102b565b50600a546001600160701b039283169450911691506001600160a01b0316600030821015610baa575082610bad565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b919061107b565b909110159695505050505050565b600c805460ff191660011790558015610cad5760095460035460405163791ac94760e01b81526001600160a01b039283169263791ac94792610c7a9286926000926010929116904290600401611094565b600060405180830381600087803b158015610c9457600080fd5b505af1158015610ca8573d6000803e3d6000fd5b505050505b50600c805460ff19169055565b6001600160a01b038516600090815260016020526040902054610cde908490610f95565b6001600160a01b0386166000908152600160205260408120919091558215610d515760008215610d115750600e54610d16565b50600d545b6000612710610d258388610fdb565b610d2f9190610ff2565b90508015610d4e57610d418184610fc8565b9250610d4e883083610d6d565b50505b610d658686610d608488610f95565b610d6d565b505050505050565b6001600160a01b038216600090815260016020526040902054610d91908290610fc8565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107a89085815260200190565b80356001600160a01b0381168114610dfc57600080fd5b919050565b600060208284031215610e1357600080fd5b610e1c82610de5565b9392505050565b600060208083528351808285015260005b81811015610e5057858101830151858201604001528201610e34565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215610e8457600080fd5b610e8d83610de5565b946020939093013593505050565b600080600060608486031215610eb057600080fd5b610eb984610de5565b9250610ec760208501610de5565b9150604084013590509250925092565b60008060408385031215610eea57600080fd5b50508035926020909101359150565b600060208284031215610f0b57600080fd5b5035919050565b60008060408385031215610f2557600080fd5b610f2e83610de5565b9150610f3c60208401610de5565b90509250929050565b600181811c90821680610f5957607f821691505b602082108103610f7957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561068757610687610f7f565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b8082018082111561068757610687610f7f565b808202811582820484141761068757610687610f7f565b60008261100f57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160701b0381168114610dfc57600080fd5b60008060006060848603121561104057600080fd5b61104984611014565b925061105760208501611014565b9150604084015163ffffffff8116811461107057600080fd5b809150509250925092565b60006020828403121561108d57600080fd5b5051919050565b600060a082018783526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b818110156110e95784546001600160a01b0316835260019485019492840192016110c4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fc94e48187179cf2ff98e4aa7dac1900fab2c0a0a7d5ee9f5b79356be1ca78b464736f6c63430008120033

Verified Source Code Partial Match

Compiler: v0.8.18+commit.87f61d96 EVM: paris Optimization: Yes (200 runs)
Token.sol 422 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

interface IERC20 {
    function decimals() external view returns (uint256);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address _spender, uint _value) external;

    function transferFrom(address _from, address _to, uint _value) external ;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface ISwapRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

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

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);
}

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "!owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface ISwapPair {
    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function token0() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function totalSupply() external view returns (uint256);
}

contract Token is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress;

    string private _name;
    string private _symbol;
    uint256 private _decimals;


    mapping(address => bool) public _feeWhiteList;

    uint256 private _tTotal;

    ISwapRouter public _swapRouter;
    address public currency;
    mapping(address => bool) public _swapPairList;


    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);


    uint256 public _buyFundFee;
    uint256 public _sellFundFee;

    address public _mainPair;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    address[] public rewardPath;

    constructor(

    ) {
        _name = "42069";
        _symbol = "42069";
        _decimals = 18;
        _tTotal = 20242069 * 10**_decimals;

        fundAddress = address(0x151404EaD02a20F51E9f4EcE45C2cE5FEbEac40C);
        _swapRouter = ISwapRouter(address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D));
        currency = _swapRouter.WETH();
        _owner = fundAddress;

        rewardPath = [address(this), currency];

        IERC20(currency).approve(address(_swapRouter), MAX);

        _allowances[address(this)][address(_swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(_swapRouter.factory());
        _mainPair = swapFactory.createPair(address(this), currency);

        _swapPairList[_mainPair] = true;

        _buyFundFee = 1500;
        _sellFundFee = 1500;

        _balances[fundAddress] = _tTotal;
        emit Transfer(address(0), fundAddress, _tTotal);

        _feeWhiteList[fundAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(_swapRouter)] = true;

    }

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

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

    function decimals() external view override returns (uint256) {
        return _decimals;
    }

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


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

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

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

    function approve(
        address spender,
        uint256 amount
    ) public override  {
        _approve(msg.sender, spender, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override  {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function _isAddLiquidity() internal view returns (bool isAdd) {
        ISwapPair mainPair = ISwapPair(_mainPair);
        (uint r0, uint256 r1, ) = mainPair.getReserves();

        address tokenOther = currency;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isAdd = bal > r;
    }

    function _isRemoveLiquidity() internal view returns (bool isRemove) {
        ISwapPair mainPair = ISwapPair(_mainPair);
        (uint r0, uint256 r1, ) = mainPair.getReserves();

        address tokenOther = currency;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isRemove = r >= bal;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(balanceOf(from) >= amount, "NotEnough");



        bool takeFee;
        bool isSell;
        bool isRemove;
        bool isAdd;

        if (_swapPairList[to]) {
            isAdd = _isAddLiquidity();

        } else if (_swapPairList[from]) {
            isRemove = _isRemoveLiquidity();

        }

        if (_swapPairList[from] || _swapPairList[to]) {
            
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                
                if (_swapPairList[to]) {
                    if (!inSwap && !isAdd) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            uint256 swapFee = _buyFundFee + _sellFundFee;
                            uint256 numTokensSellToFund = (amount * swapFee) /
                                5000;
                            if (numTokensSellToFund > contractTokenBalance) {
                                numTokensSellToFund = contractTokenBalance;
                            }
                            swapTokenForFund(numTokensSellToFund);
                        }
                    }
                }
                if (!isAdd && !isRemove) takeFee = true; // just swap fee
            }
            if (_swapPairList[to]) {
                isSell = true;
            }
        }

        _tokenTransfer(
            from,
            to,
            amount,
            takeFee,
            isSell
        );

    }       

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 swapFee;
            if (isSell) {
                swapFee = _sellFundFee;

            } else {
                swapFee = _buyFundFee;

            }

            uint256 swapAmount = (tAmount * swapFee) / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(sender, address(this), swapAmount);
            }
        }

        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }


    function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
        if (tokenAmount == 0) {
            return;
        }
        _swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            rewardPath,
            fundAddress,
            block.timestamp
        );
    }
    
    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }
    receive() external payable {}

    function setFee(uint256 buyfee,uint256 sellfee) external onlyOwner {
        _buyFundFee = buyfee;
        _sellFundFee = sellfee;
    }

}

Read Contract

_buyFundFee 0xce0192f9 → uint256
_feeWhiteList 0x01986fad → bool
_mainPair 0x4188bf5a → address
_sellFundFee 0x3bfe62ca → uint256
_swapPairList 0x3c11100d → bool
_swapRouter 0x206c17bb → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
currency 0xe5a6b10f → address
decimals 0x313ce567 → uint256
fundAddress 0xe82bef29 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
rewardPath 0x9cc0e3c7 → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 6 functions

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

approve 0x095ea7b3
address spender
uint256 amount
renounceOwnership 0x715018a6
No parameters
setFee 0x52f7c988
uint256 buyfee
uint256 sellfee
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address