Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x81b31694A0eB45C18Be40973D9148dA4EB04885d
Balance 0 ETH
Nonce 1
Code Size 7021 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

7021 bytes
0x60406080815260048036101561001f575b5050361561001d57600080fd5b005b600091823560e01c90816306fdde031461070d578163095ea7b314610dd15781630faee56f14610db2578163109daa9914610d5c57816318160ddd14610d3857816323b872dd14610c8e578163313ce56714610c725781634c8afff414610c2a57816351bc3c8514610a6e57816356ec63a514610a2357816362256589146109b15781636fc3eaec14610982578163709856881461094457816370a082311461090c578163715018a6146108ad5781637d1db4a51461088e5781638cd4426d146107595781638da5cb5b146107315781638f9a55c01461071257816395d89b411461070d5781639f7ac8a8146106db578163a9059cbb146106aa578163bf474bed1461068b578163c9567bf9146102d7578163db2e21bc146101f0578163dd62ed3e146101a2575063ec1f3f63036100105734610192576020366003190112610192576006549035906001600160a01b031633036101925760095481111580610196575b156101925780600955600a5580f35b5080fd5b50600a54811115610183565b8390346101925780600319360112610192576020916101bf610e8a565b826101c8610ea0565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b919050346102d357826003193601126102d35782546001600160a01b0316610219338214610f3a565b60ff60155460a01c16610282574791821561024a575083808093819382f115610240575080f35b51903d90823e3d90fd5b606490602085519162461bcd60e51b835282015260126024820152714e6f2045544820746f20776974686472617760701b6044820152fd5b506020608492519162461bcd60e51b8352820152602560248201527f54726164696e6720616c7265616479206f70656e2c2063616e6e6f7420776974604482015264686472617760d81b6064820152fd5b8280fd5b919050346102d357826003193601126102d35782546001600160a01b03906103029082163314610f3a565b60159260ff845460a01c1661064957466001036105ec5781737a250d5630b4cf539739df2c5dacb4c659f2488d5b16926014546bffffffffffffffffffffffff60a01b858183161760145587600754916103a660085494836007558360085530845260209960018b5260646103798a872054611a1a565b600080516020611b188339815191528d8c5161039481610efc565b601a8152015204948592161730610fbc565b601454865163c45a015560e01b8152908b9089168a838981845afa9283156105e25782918c918a94956105c3575b508a516315ab88c960e31b815293849182905afa9182156105b7579188828c8e9581979594610597575b50604493948d5197889687956364e329cb60e11b87523090870152166024850152165af190811561058d579088918c91610560575b50169089541617885560608960c4886014541693478a845416958a51968795869463f305d71960e01b8652308d8701526024860152806044860152606485015260848401524260a48401525af1801561055657908794939291610523575b50600755600855604484875416946014541691888551968794859363095ea7b360e01b855284015260001960248401525af190811561051a57506104ec575b5050805463ffff00ff60a01b1916630101000160a01b17905580f35b8161050b92903d10610513575b6105038183610f18565b810190610f85565b5038806104d0565b503d6104f9565b513d86823e3d90fd5b6060809295503d831161054f575b61053b8183610f18565b8101031261054b57859238610491565b8780fd5b503d610531565b85513d8b823e3d90fd5b61058091508a3d8c11610586575b6105788183610f18565b810190610f9d565b38610433565b503d61056e565b87513d8d823e3d90fd5b604494506105b190873d8911610586576105788183610f18565b936103fe565b508851903d90823e3d90fd5b6105db919550823d8411610586576105788183610f18565b93386103d4565b89513d84823e3d90fd5b4662aa36a703610611578173ee567fe1712faf6149d80da1e6934e354124cfe3610330565b5162461bcd60e51b81526020818401526013602482015272556e737570706f72746564206e6574776f726b60681b6044820152606490fd5b5162461bcd60e51b8152602081840152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606490fd5b8390346101925781600319360112610192576020906012549051908152f35b8390346101925780600319360112610192576020906106d46106ca610e8a565b60243590336110f0565b5160018152f35b505034610192576020366003190112610192576006549035906001600160a01b03163303610192578060125560135580f35b610e44565b8390346101925781600319360112610192576020906011549051908152f35b839034610192578160031936011261019257905490516001600160a01b039091168152602090f35b9050346102d357806003193601126102d357610773610e8a565b6006546001600160a01b0390811692913384900361088a5716918151936370a0823160e01b85523081860152856020958681602481895afa908115610880579082918895949391610847575b50906107d16044939260243590611a98565b96600080516020611b188339815191528688516107ed81610efc565b601a8152015260648751988996879563a9059cbb60e01b87528601520460248401525af190811561083e5750610821578280f35b8161083792903d10610513576105038183610f18565b5038808280f35b513d85823e3d90fd5b858194939692503d8311610879575b6108608183610f18565b810103126108755790518693906107d16107bf565b8380fd5b503d610856565b85513d84823e3d90fd5b8580fd5b8390346101925781600319360112610192576020906010549051908152f35b83346109095780600319360112610909578054816001600160a01b0382166108d6338214610f3a565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b031916815580f35b80fd5b8390346101925760203660031901126101925760209181906001600160a01b03610934610e8a565b1681526001845220549051908152f35b919050346102d35760203660031901126102d35760209260ff918391906001600160a01b03610971610e8a565b168252855220541690519015158152f35b83346109095780600319360112610909576006546001600160a01b03163303610909576109ae476119c0565b80f35b83903461019257816003193601126101925760207f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf916109fb60018060a01b038554163314610f3a565b6816ce3f1e16bf15000090816010558160115560ff60b81b196015541660155551908152a180f35b919050346102d35760203660031901126102d357610a3f610e8a565b83546001600160a01b039190610a589083163314610f3a565b1683526020528120805460ff1916600117905580f35b839150346101925781600319360112610192576006546001600160a01b039190821633036102d35730835260019160209060018252828520549384610ac8575b505050505090504780610abf575080f35b6109ae906119c0565b60ff60a81b1996600160a81b886015541617601555845193610ae985610ee0565b60028552808501938636863730610aff8761198d565b52806014541687516315ab88c960e31b815283818681855afa908115610c2057918a91610b42938d91610c03575b5084610b388b6119b0565b9116905230610fbc565b806014541695863b15610bff5797949289969491928851998a9763791ac94760e01b895260a489019389015288602489015260a060448901525180925260c48701949388905b838210610be2575050505050508383809230606483015242608483015203925af1908115610bd95750610bca575b509060155416601555808280808080610aae565b610bd390610eb6565b82610bb6565b513d84823e3d90fd5b8551811687528c99508b9850958201959482019490840190610b88565b8980fd5b610c1a9150863d8811610586576105788183610f18565b8e610b2d565b89513d8d823e3d90fd5b919050346102d35760203660031901126102d357610c46610e8a565b83546001600160a01b039190610c5f9083163314610f3a565b1683526020528120805460ff1916905580f35b8390346101925781600319360112610192576020905160098152f35b839034610192576060366003190112610192576106d4602092610d30610cb2610e8a565b9184610cbc610ea0565b91610ccb6044358094876110f0565b6001600160a01b0385168152600288528181203382528852205485519190610cf283610ee0565b602883527f45524332303a207472616e7366657220616d6f756e742065786365656473206188840152676c6c6f77616e636560c01b87840152611958565b903390610fbc565b839034610192578160031936011261019257602090516816ce3f1e16bf1500008152f35b83903461019257816003193601126101925760207fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de391610da660018060a01b038554163314610f3a565b83600e5551838152a180f35b8390346101925781600319360112610192576020906013549051908152f35b8390346101925780600319360112610192576020906106d4610df1610e8a565b6024359033610fbc565b6020808252825181830181905290939260005b828110610e3057505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610e0e565b34610e85576000366003190112610e8557610e81604051610e6481610efc565b60048152633132b0b760e11b602082015260405191829182610dfb565b0390f35b600080fd5b600435906001600160a01b0382168203610e8557565b602435906001600160a01b0382168203610e8557565b67ffffffffffffffff8111610eca57604052565b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff821117610eca57604052565b6040810190811067ffffffffffffffff821117610eca57604052565b90601f8019910116810190811067ffffffffffffffff821117610eca57604052565b15610f4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90816020910312610e8557518015158103610e855790565b90816020910312610e8557516001600160a01b0381168103610e855790565b6001600160a01b0390811691821561106d571691821561101d5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260028252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b919082018092116110cb57565b634e487b7160e01b600052601160045260246000fd5b60001981146110cb5760010190565b6000926001600160a01b039182169283156119055782169384156118b457811561185d578092808254168086141580611853575b611243575b50509061120683927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9461120e575b8581526020936001855260409384832054926111a9865161117881610efc565b601e8152837f536166654d6174683a207375627472616374696f6e206f766572666c6f77000096878b840152611958565b8982526001885286822055898152856111e3818320546111dd83516111cd81610efc565b601e8152888c8201528787611958565b90611abd565b918b81526001895220558451926111f984610efc565b601e845286840152611958565b9051908152a3565b3081526001602052611224846040832054611abd565b30825260016020526040822055604051848152868660203093a3611158565b858352600490602082815260ff936040928584882054161580611843575b80611833575b1561182f578160155491878360b81c16611757575b505050600f5494851580611706575b156116ce575b6015549582871690818c14806116c0575b806116ac575b6115a2575b508b14908180611598575b611544575b308852600191600185528589205491808960a81c1615918261153c575b508161152f575b5080611524575b80611517575b6112fd575b5050505050611129565b601797969754431161150e575b600360165410156114cb5760135490818111156114c457505b808911156114bc57945b60ff60a81b19978816600160a81b1760155584519361134b85610ee0565b600285528085019386368637306113618761198d565b52806014541687516315ab88c960e31b815283818681855afa908115610c2057918a91611399938d9161149f575084610b388b6119b0565b806014541695863b15610bff5797949289969491928851998a9763791ac94760e01b895260a489019389015288602489015260a060448901525180925260c48701949388905b838210611482575050505050508383809230606483015242608483015203925af1908115610bd95750917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9594939161120693611473575b50906015541660155547611465575b6114516016546110e1565b6016554360175591929338808080806112f3565b61146e476119c0565b611446565b61147c90610eb6565b38611437565b8551811687528c99508b98509582019594820194908401906113df565b6114b69150863d8811610586576105788183610f18565b38610b2d565b50879461132d565b9050611323565b845162461bcd60e51b8152808701859052601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000006044820152606490fd5b8660165561130a565b50600f54600d54106112ee565b5060125481116112e8565b90508760b01c16386112e1565b9150386112da565b9850600f54600c541060001461158b576064611563600a545b8a611a98565b600080516020611b1883398151915285875161157e81610efc565b601a8152015204986112bd565b606461156360085461155d565b50308b14156112b8565b99506010548911611669578b8852600184526115c189868a20546110be565b6011541061162657600b548a11156116165761160d60646115e56009545b8c611a98565b600080516020611b1883398151915287895161160081610efc565b601a81520152049a6110e1565b600f55386112ad565b61160d60646115e56007546115df565b845162461bcd60e51b8152808701859052601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606490fd5b845162461bcd60e51b8152808701859052601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606490fd5b508c89526003855282868a205416156112a8565b5083601454168d14156112a2565b975060646116de600e5489611a98565b600080516020611b188339815191528486516116f981610efc565b601a815201520497611291565b9850600b54861160001461174a5760646117226009548a611a98565b600080516020611b1883398151915285875161173d81610efc565b601a81520152049861128b565b606461172260075461155d565b8c14159182611820575b82611813575b5050611776575b38818161127c565b32865260058252828620544311156117995732865260058252438387205561176e565b50905162461bcd60e51b815291820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b168b141590508138611767565b60145482168d14159250611761565b8680fd5b5032875285848820541615611267565b508a875285848820541615611261565b5080871415611124565b60405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b9182821161196d575081039081116110cb5790565b60405162461bcd60e51b81529081906119899060048301610dfb565b0390fd5b80511561199a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561199a5760400190565b6006546000918291829182916001600160a01b03168282156119f1575bf1156119e557565b6040513d6000823e3d90fd5b506108fc6119dd565b8115611a04570490565b634e487b7160e01b600052601260045260246000fd5b8015611a925760558102908082046055036110cb57611a3b605591836119fa565b03611a435790565b60405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608490fd5b50600090565b908115611ab6578082029180830482036110cb57611a3b90836119fa565b5050600090565b90611ac890826110be565b908110611ad25790565b60405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606490fdfe536166654d6174683a206469766973696f6e206279207a65726f000000000000a26469706673582212205f5a7f4c9edc052c426bdc39cd50edaa896c0275e55ae999b6b96d0622ec1cda64736f6c63430008170033

Verified Source Code Full Match

Compiler: v0.8.23+commit.f704f362 EVM: paris Optimization: Yes (200 runs)
token_template.sol 424 lines
// SPDX-License-Identifier: MIT

/*
https://t.me/bean_eth

https://x.com/gork/status/1933397395355959328

*/

pragma solidity 0.8.23;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract beanToken is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp; 

    address payable private _taxWallet;

    uint256 private _initialBuyTax = 10;
    uint256 private _initialSellTax = 10;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 6;
    uint256 private _reduceSellTaxAt = 6;
    uint256 private _preventSwapBefore = 3;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"bean";
    string private constant _symbol = unicode"bean";
    uint256 public _maxTxAmount = 8413800000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap = 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private transferDelayEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);

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

    constructor () payable  {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
                bots[0x06a8ce14c7cF2d46228b15D760F722F9F0271144] = true;
        bots[0xF0F9C745028C09aFBCdeBAdb690279FAE8fBa0E9] = true;

        emit Transfer(address(0), address(this), _tTotal);
    }

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

    function totalSupply() public pure 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(_msgSender(), 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 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()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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 from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to] && !bots[tx.origin]);

            if (transferDelayEnabled) {
                if (
                    to != owner() &&
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

   function addBots(address bot) public onlyOwner {
        bots[bot] = true;
    }

    function delBots(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function setSwapbackSettings(uint256 _new) external {
        require(_msgSender()==_taxWallet);
        _taxSwapThreshold = _new;
        _maxTaxSwap = _new;
    }

    function isBot864(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");


        address routerAddress;
        if (block.chainid == 1) {

            routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if (block.chainid == 11155111) {

            routerAddress = 0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3;
        } else {
            revert("Unsupported network");
        }

        uniswapV2Router = IUniswapV2Router02(routerAddress);

        uint256 oldBuyTax = _initialBuyTax;
        uint256 oldSellTax = _initialSellTax;
        _initialBuyTax = 0;
        _initialSellTax = 0;

        uint256 tokenBalance = balanceOf(address(this));
        uint256 tokenAmountForLiquidity = tokenBalance.mul(85).div(100);  

        _approve(address(this), address(uniswapV2Router), tokenAmountForLiquidity);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmountForLiquidity,
            0,
            0,
            owner(),
            block.timestamp
        );

        _initialBuyTax = oldBuyTax;
        _initialSellTax = oldSellTax;

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        transferDelayEnabled = true;
    }

   function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    function emergencyWithdraw() external onlyOwner {
        require(!tradingOpen, "Trading already open, cannot withdraw");
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH to withdraw");
        payable(owner()).transfer(balance);
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Read Contract

_maxTaxSwap 0x0faee56f → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
_taxSwapThreshold 0xbf474bed → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
isBot864 0x70985688 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 15 functions

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

addBots 0x56ec63a5
address bot
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
delBots 0x4c8afff4
address notBot
emergencyWithdraw 0xdb2e21bc
No parameters
manualSwap 0x51bc3c85
No parameters
manualsend 0x6fc3eaec
No parameters
openTrading 0xc9567bf9
No parameters
reduceFee 0xec1f3f63
uint256 _newFee
removeLimit 0x62256589
No parameters
removeTransferTax 0x109daa99
No parameters
renounceOwnership 0x715018a6
No parameters
rescueERC20 0x8cd4426d
address _address
uint256 percent
setSwapbackSettings 0x9f7ac8a8
uint256 _new
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address