Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0xBe054615B779C7ca6249E4186252A95e4F6C52f4
Balance 0 ETH
Nonce 1
Code Size 7581 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

7581 bytes
0x6080604052600436106101445760003560e01c806370a08231116100b6578063a9fc35a91161006f578063a9fc35a91461036d578063c3c8cd801461038d578063c9567bf9146103a2578063db92dbb6146103b7578063dd62ed3e146103cc578063e8078d941461041257600080fd5b806370a08231146102d1578063715018a6146102f15780638da5cb5b1461030657806395d89b4114610150578063a9059cbb1461032e578063a985ceef1461034e57600080fd5b8063313ce56711610108578063313ce5671461021e57806345596e2e1461023a578063522644df1461025c5780635932ead11461027c57806368a3a6a51461029c5780636fc3eaec146102bc57600080fd5b806306fdde0314610150578063095ea7b31461019257806318160ddd146101c257806323b872dd146101e957806327f3a72a1461020957600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50604080518082018252600a81526952796f7368696d6f746f60b01b602082015290516101899190611ba0565b60405180910390f35b34801561019e57600080fd5b506101b26101ad366004611ad7565b610427565b6040519015158152602001610189565b3480156101ce57600080fd5b5069152d02c7e14af68000005b604051908152602001610189565b3480156101f557600080fd5b506101b2610204366004611a97565b61043e565b34801561021557600080fd5b506101db6104a7565b34801561022a57600080fd5b5060405160098152602001610189565b34801561024657600080fd5b5061025a610255366004611b3a565b6104b7565b005b34801561026857600080fd5b5061025a610277366004611b7f565b610560565b34801561028857600080fd5b5061025a610297366004611b02565b6105c9565b3480156102a857600080fd5b506101db6102b7366004611a27565b610648565b3480156102c857600080fd5b5061025a61066b565b3480156102dd57600080fd5b506101db6102ec366004611a27565b610698565b3480156102fd57600080fd5b5061025a6106ba565b34801561031257600080fd5b506000546040516001600160a01b039091168152602001610189565b34801561033a57600080fd5b506101b2610349366004611ad7565b61072e565b34801561035a57600080fd5b50601354600160a81b900460ff166101b2565b34801561037957600080fd5b506101db610388366004611a27565b61073b565b34801561039957600080fd5b5061025a610761565b3480156103ae57600080fd5b5061025a610797565b3480156103c357600080fd5b506101db6107e5565b3480156103d857600080fd5b506101db6103e7366004611a5f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561041e57600080fd5b5061025a6107fd565b6000610434338484610bb2565b5060015b92915050565b600061044b848484610cd6565b61049d843361049885604051806060016040528060288152602001611d40602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112aa565b610bb2565b5060019392505050565b60006104b230610698565b905090565b6011546001600160a01b0316336001600160a01b0316146104d757600080fd5b603381106105245760405162461bcd60e51b8152602060048201526015602482015274526174652063616e2774206578636565642035302560581b60448201526064015b60405180910390fd5b600b8190556040518181527f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8906020015b60405180910390a150565b60008160ff16116105c15760405162461bcd60e51b815260206004820152602560248201527f4d617820686f6c64696e67206361702063616e6e6f74206265206c657373207460448201526468616e203160d81b606482015260840161051b565b60ff16601555565b6000546001600160a01b031633146105f35760405162461bcd60e51b815260040161051b90611bf3565b6013805460ff60a81b1916600160a81b8315158102919091179182905560405160ff9190920416151581527f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f2870690602001610555565b6001600160a01b0381166000908152600660205260408120546104389042611cef565b6011546001600160a01b0316336001600160a01b03161461068b57600080fd5b47610695816112e4565b50565b6001600160a01b0381166000908152600260205260408120546104389061131e565b6000546001600160a01b031633146106e45760405162461bcd60e51b815260040161051b90611bf3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610434338484610cd6565b6001600160a01b0381166000908152600660205260408120600101546104389042611cef565b6011546001600160a01b0316336001600160a01b03161461078157600080fd5b600061078c30610698565b9050610695816113a2565b6000546001600160a01b031633146107c15760405162461bcd60e51b815260040161051b90611bf3565b6013805460ff60a01b1916600160a01b1790556107e042610168611c98565b601455565b6013546000906104b2906001600160a01b0316610698565b6000546001600160a01b031633146108275760405162461bcd60e51b815260040161051b90611bf3565b601354600160a01b900460ff16156108815760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161051b565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108bf308269152d02c7e14af6800000610bb2565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f857600080fd5b505afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190611a43565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b09190611a43565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109f857600080fd5b505af1158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611a43565b601380546001600160a01b0319166001600160a01b039283161790556012541663f305d7194730610a6081610698565b600080610a756000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610ad857600080fd5b505af1158015610aec573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b119190611b52565b5050681b1ae4d6e2ef5000006010555042600d5560135460125460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b158015610b7657600080fd5b505af1158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae9190611b1e565b5050565b6001600160a01b038316610c145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051b565b6001600160a01b038216610c755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051b565b6001600160a01b038216610d9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051b565b60008111610dfe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051b565b6000546001600160a01b03848116911614801590610e2a57506000546001600160a01b03838116911614155b1561124d57601354600160a81b900460ff1615610eaa573360009081526006602052604090206002015460ff16610eaa57604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6013546001600160a01b03838116911614801590610ed157506001600160a01b0382163014155b15610f4057610ede611547565b81610ee884610698565b610ef29190611c98565b1115610f405760405162461bcd60e51b815260206004820152601960248201527f4d617820686f6c64696e67206361702062726561636865642e00000000000000604482015260640161051b565b6013546001600160a01b038481169116148015610f6b57506012546001600160a01b03838116911614155b8015610f9057506001600160a01b03821660009081526005602052604090205460ff16155b156110ef57601354600160a01b900460ff16610fee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e0000000000000000604482015260640161051b565b600c600a55601354600160a81b900460ff16156110b5574260145411156110b55760105481111561101e57600080fd5b6001600160a01b03821660009081526006602052604090205442116110905760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b606482015260840161051b565b61109b42602d611c98565b6001600160a01b0383166000908152600660205260409020555b601354600160a81b900460ff16156110ef576110d242600f611c98565b6001600160a01b0383166000908152600660205260409020600101555b60006110fa30610698565b601354909150600160b01b900460ff1615801561112557506013546001600160a01b03858116911614155b801561113a5750601354600160a01b900460ff165b1561124b57600c600a55601354600160a81b900460ff16156111cc576001600160a01b03841660009081526006602052604090206001015442116111cc5760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b606482015260840161051b565b801561123957600b54601354611202916064916111fc91906111f6906001600160a01b0316610698565b90611573565b906115f2565b81111561123057600b5460135461122d916064916111fc91906111f6906001600160a01b0316610698565b90505b611239816113a2565b47801561124957611249476112e4565b505b505b6001600160a01b03831660009081526005602052604090205460019060ff168061128f57506001600160a01b03831660009081526005602052604090205460ff165b15611298575060005b6112a484848484611634565b50505050565b600081848411156112ce5760405162461bcd60e51b815260040161051b9190611ba0565b5060006112db8486611cef565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610bae573d6000803e3d6000fd5b60006007548211156113855760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161051b565b600061138f611662565b905061139b83826115f2565b9392505050565b6013805460ff60b01b1916600160b01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113f857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561144c57600080fd5b505afa158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190611a43565b816001815181106114a557634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526012546114cb9130911684610bb2565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611504908590600090869030904290600401611c28565b600060405180830381600087803b15801561151e57600080fd5b505af1158015611532573d6000803e3d6000fd5b50506013805460ff60b01b1916905550505050565b6000606460155461155f69152d02c7e14af680000090565b6115699190611cd0565b6104b29190611cb0565b60008261158257506000610438565b600061158e8385611cd0565b90508261159b8583611cb0565b1461139b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051b565b600061139b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611685565b80611641576116416116b3565b61164c8484846116e1565b806112a4576112a4600e54600955600f54600a55565b600080600061166f6117d8565b909250905061167e82826115f2565b9250505090565b600081836116a65760405162461bcd60e51b815260040161051b9190611ba0565b5060006112db8486611cb0565b6009541580156116c35750600a54155b156116ca57565b60098054600e55600a8054600f5560009182905555565b6000806000806000806116f38761181c565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506117259087611879565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461175490866118bb565b6001600160a01b0389166000908152600260205260409020556117768161191a565b6117808483611964565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117c591815260200190565b60405180910390a3505050505050505050565b600754600090819069152d02c7e14af68000006117f582826115f2565b8210156118135750506007549269152d02c7e14af680000092509050565b90939092509050565b60008060008060008060008060006118398a600954600a54611988565b9250925092506000611849611662565b9050600080600061185c8e8787876119d7565b919e509c509a509598509396509194505050505091939550919395565b600061139b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112aa565b6000806118c88385611c98565b90508381101561139b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051b565b6000611924611662565b905060006119328383611573565b3060009081526002602052604090205490915061194f90826118bb565b30600090815260026020526040902055505050565b6007546119719083611879565b60075560085461198190826118bb565b6008555050565b600080808061199c60646111fc8989611573565b905060006119af60646111fc8a89611573565b905060006119c7826119c18b86611879565b90611879565b9992985090965090945050505050565b60008080806119e68886611573565b905060006119f48887611573565b90506000611a028888611573565b90506000611a14826119c18686611879565b939b939a50919850919650505050505050565b600060208284031215611a38578081fd5b813561139b81611d1c565b600060208284031215611a54578081fd5b815161139b81611d1c565b60008060408385031215611a71578081fd5b8235611a7c81611d1c565b91506020830135611a8c81611d1c565b809150509250929050565b600080600060608486031215611aab578081fd5b8335611ab681611d1c565b92506020840135611ac681611d1c565b929592945050506040919091013590565b60008060408385031215611ae9578182fd5b8235611af481611d1c565b946020939093013593505050565b600060208284031215611b13578081fd5b813561139b81611d31565b600060208284031215611b2f578081fd5b815161139b81611d31565b600060208284031215611b4b578081fd5b5035919050565b600080600060608486031215611b66578283fd5b8351925060208401519150604084015190509250925092565b600060208284031215611b90578081fd5b813560ff8116811461139b578182fd5b6000602080835283518082850152825b81811015611bcc57858101830151858201604001528201611bb0565b81811115611bdd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611c775784516001600160a01b031683529383019391830191600101611c52565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611cab57611cab611d06565b500190565b600082611ccb57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611cea57611cea611d06565b500290565b600082821015611d0157611d01611d06565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461069557600080fd5b801515811461069557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220de030ab09735823c80722533cca4ee0f4994a94fe79b4d9a805db0e09bd8acbc64736f6c63430008040033

Verified Source Code Full Match

Compiler: v0.8.4+commit.c7e474f2 EVM: istanbul Optimization: Yes (200 runs)
ryoshimoto.sol 454 lines
// SPDX-License-Identifier: UNLICENSED 

pragma solidity ^0.8.4;

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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 Ryoshimoto is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e14 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"Ryoshimoto";
    string private constant _symbol = unicode"Ryoshimoto";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 1;
    uint256 private _teamFee = 9;
    uint256 private _feeRate = 10;
    uint256 private _feeMultiplier = 1000;
    uint256 private _launchTime;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _maxBuyAmount;
    address payable private _FeeAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    uint256 private buyLimitEnd;
    uint private holdingCapPercent = 3;
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);
    event FeeMultiplierUpdated(uint _multiplier);
    event FeeRateUpdated(uint _rate);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress) {
        _FeeAddress = FeeAddress;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[FeeAddress] = true;
        emit Transfer(address(0), _msgSender(), _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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

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

        if(from != owner() && to != owner()) {
            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }
            
            if (to != uniswapV2Pair && to != address(this)) 
                require(balanceOf(to) + amount <= _getMaxHolding(), "Max holding cap breached.");

            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                _teamFee = 12;
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (45 seconds);
                    }
                }
                if(_cooldownEnabled) {
                    cooldown[to].sell = block.timestamp + (15 seconds);
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            // sell
            if(!inSwap && from != uniswapV2Pair && tradingOpen) {
                _teamFee = 12;
                if(_cooldownEnabled) {
                    require(cooldown[from].sell < block.timestamp, "Your sell cooldown has not expired.");
                }

                if(contractTokenBalance > 0) {
                    if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                        contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
                    }
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _FeeAddress.transfer(amount);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function addLiquidity() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _maxBuyAmount = 500000000000 * 10**9;
        _launchTime = block.timestamp;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        buyLimitEnd = block.timestamp + (360 seconds);
    }

    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    // fallback in case contract is not releasing tokens fast enough
    function setFeeRate(uint256 rate) external {
        require(_msgSender() == _FeeAddress);
        require(rate < 51, "Rate can't exceed 50%");
        _feeRate = rate;
        emit FeeRateUpdated(_feeRate);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function timeToBuy(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].buy;
    }

    function timeToSell(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].sell;
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
    
    function _getMaxHolding() internal view returns (uint256) {
        return  (totalSupply() * holdingCapPercent) / 100;
    }
    
    function _setMaxHolding(uint8 percent) external {
        require(percent > 0, "Max holding cap cannot be less than 1");
        holdingCapPercent = percent;
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
amountInPool 0xdb92dbb6 → uint256
balanceOf 0x70a08231 → uint256
cooldownEnabled 0xa985ceef → bool
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
thisBalance 0x27f3a72a → uint256
timeToBuy 0x68a3a6a5 → uint256
timeToSell 0xa9fc35a9 → uint256
totalSupply 0x18160ddd → uint256

Write Contract 11 functions

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

_setMaxHolding 0x522644df
uint8 percent
addLiquidity 0xe8078d94
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
manualsend 0x6fc3eaec
No parameters
manualswap 0xc3c8cd80
No parameters
openTrading 0xc9567bf9
No parameters
renounceOwnership 0x715018a6
No parameters
setCooldownEnabled 0x5932ead1
bool onoff
setFeeRate 0x45596e2e
uint256 rate
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