Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0xc8b438253500b71949Da38eF89Cffd1505be3D4A
Balance 0 ETH
Nonce 1
Code Size 5461 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5461 bytes
0x6080604052600436106101395760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb1461037c578063acefa6911461039c578063b203919e146103bc578063dd62ed3e146103d1578063f2fde38b14610417578063f53bc8351461043757600080fd5b806370a08231146102db57806370db69d61461031157806395d89b41146103275780639b6f6d781461033c5780639c0db5f31461035c57600080fd5b8063313ce567116100fd578063313ce567146102005780633bbac5791461021c5780633ccfd60b1461024c57806349bd5a5e1461026357806352e539881461029b5780636c90b57f146102bb57600080fd5b806306fdde0314610145578063095ea7b3146101705780631693e8d4146101a057806318160ddd146101c157806323b872dd146101e057600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5061015a610457565b604051610167919061133c565b60405180910390f35b34801561017c57600080fd5b5061019061018b36600461119d565b6104e9565b6040519015158152602001610167565b3480156101ac57600080fd5b5060055461019090600160a01b900460ff1681565b3480156101cd57600080fd5b506000545b604051908152602001610167565b3480156101ec57600080fd5b506101906101fb36600461115c565b6104ff565b34801561020c57600080fd5b5060405160128152602001610167565b34801561022857600080fd5b506101906102373660046110e2565b60066020526000908152604090205460ff1681565b34801561025857600080fd5b50610261610555565b005b34801561026f57600080fd5b50600554610283906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b3480156102a757600080fd5b506102616102b63660046112f5565b610572565b3480156102c757600080fd5b506102616102d63660046111c9565b610589565b3480156102e757600080fd5b506101d26102f63660046110e2565b6001600160a01b031660009081526003602052604090205490565b34801561031d57600080fd5b506101d260095481565b34801561033357600080fd5b5061015a610605565b34801561034857600080fd5b506102616103573660046112a7565b610614565b34801561036857600080fd5b506102616103773660046111c9565b610639565b34801561038857600080fd5b5061019061039736600461119d565b6106b0565b3480156103a857600080fd5b506102616103b73660046112c2565b6106bd565b3480156103c857600080fd5b50610261610700565b3480156103dd57600080fd5b506101d26103ec366004611123565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561042357600080fd5b506102616104323660046110e2565b6109e6565b34801561044357600080fd5b506102616104523660046112f5565b610a1a565b60606001805461046690611472565b80601f016020809104026020016040519081016040528092919081815260200182805461049290611472565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610a38565b50600192915050565b600061050c848484610a99565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561053d57600080fd5b61054a8533858403610a38565b506001949350505050565b61055e33610ce5565b61056757600080fd5b61057047610d17565b565b61057b33610ce5565b61058457600080fd5b600c55565b61059233610ce5565b61059b57600080fd5b60005b82518110156106005781600760008584815181106105be576105be6114de565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556105f9816114ad565b905061059e565b505050565b60606002805461046690611472565b61061d33610ce5565b61062657600080fd5b6008805460ff1916911515919091179055565b61064233610ce5565b61064b57600080fd5b60005b825181101561060057816006600085848151811061066e5761066e6114de565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556106a9816114ad565b905061064e565b60006104f6338484610a99565b6106c633610ce5565b6106cf57600080fd5b6005805460ff60a01b1916600160a01b93151593909302929092179091556008805460ff1916911515919091179055565b61070933610ce5565b61071257600080fd5b6005546001600160a01b03161561072857600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190611106565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561080b57600080fd5b505afa15801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190611106565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561088b57600080fd5b505af115801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190611106565b60008054308083526003602090815260408085208490556004808352818620737a250d5630b4cf539739df2c5dacb4c659f2488d808852908452828720959095556001600160a01b03871686526007909252808520805460ff191660011790558454905163f305d71960e01b81529182019290925260248101919091526044810183905260648101929092523360848301524260a483015291925063f305d71990479060c4016060604051808303818588803b15801561098257600080fd5b505af1158015610996573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109bb919061130e565b5050600580546001600160a81b0319166001600160a01b0390931692909217600160a01b1790915550565b6109ef33610ce5565b6109f857600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610a2333610ce5565b610a2c57600080fd5b610a3581610d55565b50565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526006602052604090205460ff16158015610adb57506001600160a01b03821660009081526006602052604090205460ff16155b610ae457600080fd5b6005546001600160a01b038481169116148015610b1a57506001600160a01b03821660009081526007602052604090205460ff16155b15610bac57600554600160a01b900460ff16610b3557600080fd5b60085460ff16610b71576009546001600160a01b038316600090815260036020526040902054610b66908390611402565b1115610b7157600080fd5b60085460ff1615610ba0576001600160a01b0382166000908152600660205260409020805460ff191660011790555b610ba981610d75565b90505b600854610100900460ff16158015610bce57506005546001600160a01b031615155b8015610be757506005546001600160a01b038381169116145b15610cda57610bf68184610dcb565b306000908152600360205260409020549091508015610cd85760006064610c1c600c5490565b6005546001600160a01b0316600090815260036020526040902054610c41919061143c565b610c4b919061141a565b905080821115610caf576000818303905081925083600080828254610c70919061145b565b909155505060405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b816000610cbd85600261143c565b905080821115610ccb578091505b610cd482610e4f565b5050505b505b61060083838361100b565b600a546000906001600160a01b0383811691161480610d115750600b546001600160a01b038381169116145b92915050565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d51573d6000803e3d6000fd5b5050565b606460005482610d65919061143c565b610d6f919061141a565b60095550565b6000806064610d85600a8561143c565b610d8f919061141a565b9050610d9b818461145b565b30600090815260036020526040812080549295508392909190610dbf908490611402565b90915550929392505050565b6000806064610ddb600a8661143c565b610de5919061141a565b9050610df1818561145b565b30600090815260036020526040812080549296508392909190610e15908490611402565b90915550506001600160a01b03831660009081526003602052604081208054839290610e4290849061145b565b9091555093949350505050565b6008805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e9357610e936114de565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0057600080fd5b505afa158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190611106565b81600181518110610f4b57610f4b6114de565b60200260200101906001600160a01b031690816001600160a01b031681525050610f8a30737a250d5630b4cf539739df2c5dacb4c659f2488d84610a38565b6040516318cbafe560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe590610fca908590600090869030904290600401611391565b600060405180830381600087803b158015610fe457600080fd5b505af1158015610ff8573d6000803e3d6000fd5b50506008805461ff001916905550505050565b6001600160a01b0383166000908152600360205260409020548181101561103157600080fd5b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611068908490611402565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110b491815260200190565b60405180910390a350505050565b80356110cd8161150a565b919050565b803580151581146110cd57600080fd5b6000602082840312156110f457600080fd5b81356110ff8161150a565b9392505050565b60006020828403121561111857600080fd5b81516110ff8161150a565b6000806040838503121561113657600080fd5b82356111418161150a565b915060208301356111518161150a565b809150509250929050565b60008060006060848603121561117157600080fd5b833561117c8161150a565b9250602084013561118c8161150a565b929592945050506040919091013590565b600080604083850312156111b057600080fd5b82356111bb8161150a565b946020939093013593505050565b600080604083850312156111dc57600080fd5b823567ffffffffffffffff808211156111f457600080fd5b818501915085601f83011261120857600080fd5b813560208282111561121c5761121c6114f4565b8160051b604051601f19603f83011681018181108682111715611241576112416114f4565b604052838152828101945085830182870184018b101561126057600080fd5b600096505b8487101561128a57611276816110c2565b865260019690960195948301948301611265565b50965061129a90508782016110d2565b9450505050509250929050565b6000602082840312156112b957600080fd5b6110ff826110d2565b600080604083850312156112d557600080fd5b6112de836110d2565b91506112ec602084016110d2565b90509250929050565b60006020828403121561130757600080fd5b5035919050565b60008060006060848603121561132357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156113695785810183015185820160400152820161134d565b8181111561137b576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156113e15784516001600160a01b0316835293830193918301916001016113bc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611415576114156114c8565b500190565b60008261143757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611456576114566114c8565b500290565b60008282101561146d5761146d6114c8565b500390565b600181811c9082168061148657607f821691505b602082108114156114a757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156114c1576114c16114c8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a3557600080fdfea2646970667358221220b99ce31e833a25256d77bce5bc53c5fd71e8b47f78e77fb081b77518bcc32cf364736f6c63430008070033

Verified Source Code Full Match

Compiler: v0.8.7+commit.e28d00a7 EVM: london Optimization: Yes (200 runs)
ERC20.sol 164 lines
pragma solidity ^0.8.7;

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

contract ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e24;
    string _name;
    string _symbol;
    uint8 constant _decimals = 18;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        _beforeTokenTransfer(from, to, amount);

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    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)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
TradableErc20.sol 191 lines
pragma solidity ^0.8.7;

//import "hardhat/console.sol";
import "./ERC20.sol";
import "./IUniswapV2Router02.sol";

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

abstract contract TradableErc20 is ERC20 {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;
    bool public tradingEnable;
    mapping(address => bool) public isBot;
    mapping(address => bool) _isExcludedFromFee;
    bool _autoBanBots = true;
    bool _inSwap;
    uint256 public maxBuy = 1e22; // 1% max by default

    modifier onlyOwner() {
        require(isOwner(msg.sender));
        _;
    }

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

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
    {
        _isExcludedFromFee[address(0)] = true;
    }

    receive() external payable {}

    function makeLiquidity() public onlyOwner {
        require(uniswapV2Pair == address(0));
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        _balances[address(this)] = _totalSupply;
        _allowances[address(this)][address(_uniswapV2Router)] = _totalSupply;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            _totalSupply,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapV2Pair = pair;
        tradingEnable = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(!isBot[from] && !isBot[to]);

        // buy
        if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
            require(tradingEnable);
            if (!_autoBanBots) require(_balances[to] + amount <= maxBuy);
            // antibot
            if (_autoBanBots) isBot[to] = true;
            amount = _getFeeBuy(amount);
        }

        // sell
        if (!_inSwap && uniswapV2Pair != address(0) && to == uniswapV2Pair) {
            amount = _getFeeSell(amount, from);
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > 0) {
                uint256 maxContractBalance = (balanceOf(uniswapV2Pair) *
                    getMaxContractBalancePercent()) / 100;
                if (contractTokenBalance > maxContractBalance) {
                    uint256 burnCount;
                    unchecked {
                        burnCount = contractTokenBalance - maxContractBalance;
                    }
                    contractTokenBalance = maxContractBalance;
                    _totalSupply -= amount;
                    emit Transfer(address(this), address(0), burnCount);
                }
                //console.log("swapTokensForEth");
                uint256 swapCount = contractTokenBalance;
                uint256 maxSwapCount = 2 * amount;
                if (swapCount > maxSwapCount) swapCount = maxSwapCount;
                swapTokensForEth(swapCount);
            }
        }

        // transfer
        //console.log(from, "->", to);
        //console.log("amount: ", amount);
        super._transfer(from, to, amount);
        //console.log("=====end transfer=====");
    }

    function _getFeeBuy(uint256 amount) private returns (uint256) {
        uint256 fee = (amount * getFeePercent()) / 100;
        amount -= fee;
        _balances[address(this)] += fee;
        return amount;
    }
    function _getFeeSell(uint256 amount, address account) private returns (uint256) {
        uint256 fee = (amount * getFeePercent()) / 100;
        amount -= fee;
        _balances[address(this)] += fee;
        _balances[account] -= fee;
        return amount;
    }


    function setMaxBuy(uint256 percent) external onlyOwner {
        _setMaxBuy(percent);
    }

    function _setMaxBuy(uint256 percent) internal {
        maxBuy = (percent * _totalSupply) / 100;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        // make the swap
        _uniswapV2Router.swapExactTokensForETH(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function setBots(address[] memory accounts, bool value) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; ++i) {
            isBot[accounts[i]] = value;
        }
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setTradingEnable(bool value, bool autoBanBotsValue)
        external
        onlyOwner
    {
        tradingEnable = value;
        _autoBanBots = autoBanBotsValue;
    }

    function setAutoBanBots(bool value) external onlyOwner {
        _autoBanBots = value;
    }

    function withdraw() external onlyOwner {
        _withdraw(address(this).balance);
    }

    function getFeePercent() internal virtual returns (uint256);

    function getMaxContractBalancePercent() internal virtual returns (uint256);

    function _withdraw(uint256 sum) internal virtual;

    function isOwner(address account) internal virtual returns (bool);
}
IUniswapV2Router02.sol 32 lines
pragma solidity ^0.8.7;

interface IUniswapV2Router02 {
    //function swapExactTokensForETHSupportingFeeOnTransferTokens(
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
BoredEminemYachtClub.sol 50 lines
// https://www.boredeminemyachtclub.com/
// t.me/eminapetoken

pragma solidity ^0.8.7;

import "./TradableErc20.sol";

contract BoredEminemYachtClub is TradableErc20 {
    address _owner;
    address _withdrawAddress =
        address(0xa3eBf7bB02f83E43D3C0C9eEC28FEB2d0684Ad84);
    uint256 maxContractLiquidityPercent = 4;

    constructor() TradableErc20("Bored Eminem Yacht Club", "EMINAPE") {
        _owner = msg.sender;
        //_setMaxBuy(1);
    }

    function getFeePercent() internal pure override returns (uint256) {
        return 10;
    }

    function getMaxContractBalancePercent()
        internal
        view
        override
        returns (uint256)
    {
        return maxContractLiquidityPercent;
    }

    function setMaxContractLiquidityPercent(uint256 newMaxLiquidityPercent)
        external
        onlyOwner
    {
        maxContractLiquidityPercent = newMaxLiquidityPercent;
    }

    function _withdraw(uint256 sum) internal override {
        payable(_withdrawAddress).transfer(sum);
    }

    function isOwner(address account) internal view override returns (bool) {
        return account == _owner || account == _withdrawAddress;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
isBot 0x3bbac579 → bool
maxBuy 0x70db69d6 → uint256
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingEnable 0x1693e8d4 → bool
uniswapV2Pair 0x49bd5a5e → address

Write Contract 12 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
makeLiquidity 0xb203919e
No parameters
setAutoBanBots 0x9b6f6d78
bool value
setBots 0x9c0db5f3
address[] accounts
bool value
setExcludeFromFee 0x6c90b57f
address[] accounts
bool value
setMaxBuy 0xf53bc835
uint256 percent
setMaxContractLiquidityPercent 0x52e53988
uint256 newMaxLiquidityPercent
setTradingEnable 0xacefa691
bool value
bool autoBanBotsValue
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
withdraw 0x3ccfd60b
No parameters

Recent Transactions

No transactions found for this address