Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0xCFf7C7ff342d711532e58AF4886fe22Ed6200325
Balance 0 ETH
Nonce 1
Code Size 6374 bytes
Indexed Transactions Index loading...
External Etherscan · Sourcify

Contract Bytecode

6374 bytes
0x6080604052600436106101bb5760003560e01c806367243482116100ec57806395d89b411161008a578063b5093ad911610064578063b5093ad914610561578063dd62ed3e14610581578063e84d44f8146105c7578063f2fde38b146105e857600080fd5b806395d89b41146104fe578063a335d4ff1461052b578063a9059cbb1461054157600080fd5b806375f0a874116100c657806375f0a8741461047757806380c581d1146104975780638da5cb5b146104b75780638fa81732146104d557600080fd5b8063672434821461042257806370a0823114610442578063715018a61461046257600080fd5b806323b872dd1161015957806332cde6641161013357806332cde66414610366578063333f4b3d1461038657806343cc8c2a146103dc5780635ce26dcc1461040c57600080fd5b806323b872dd146102f157806327b07d7514610311578063313ce5671461034a57600080fd5b8063095ea7b311610195578063095ea7b31461025e5780630a368e181461028e57806318160ddd146102ae5780631be19560146102d157600080fd5b80630603c8af146101c757806306fdde03146101de5780630758d9241461022657600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610608565b005b3480156101ea57600080fd5b5060408051808201909152600d81526c15195cdd0810dbdb9d1c9858dd609a1b60208201525b60405161021d91906112bb565b60405180910390f35b34801561023257600080fd5b50600654610246906001600160a01b031681565b6040516001600160a01b03909116815260200161021d565b34801561026a57600080fd5b5061027e61027936600461131e565b610677565b604051901515815260200161021d565b34801561029a57600080fd5b506101dc6102a9366004611358565b610690565b3480156102ba57600080fd5b506102c36106e8565b60405190815260200161021d565b3480156102dd57600080fd5b506101dc6102ec366004611391565b610709565b3480156102fd57600080fd5b5061027e61030c3660046113ae565b610825565b34801561031d57600080fd5b5061027e61032c366004611391565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561035657600080fd5b506040516009815260200161021d565b34801561037257600080fd5b506101dc610381366004611406565b610848565b34801561039257600080fd5b506008546103b79061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161021d565b3480156103e857600080fd5b5061027e6103f7366004611391565b60076020526000908152604090205460ff1681565b34801561041857600080fd5b506102c360055481565b34801561042e57600080fd5b506101dc61043d366004611521565b61092e565b34801561044e57600080fd5b506102c361045d366004611391565b610a95565b34801561046e57600080fd5b506101dc610ab0565b34801561048357600080fd5b50600454610246906001600160a01b031681565b3480156104a357600080fd5b506101dc6104b2366004611358565b610ae9565b3480156104c357600080fd5b506000546001600160a01b0316610246565b3480156104e157600080fd5b506104eb6101f481565b60405161ffff909116815260200161021d565b34801561050a57600080fd5b50604080518082019091526004815263151154d560e21b6020820152610210565b34801561053757600080fd5b506104eb61271081565b34801561054d57600080fd5b5061027e61055c36600461131e565b610b41565b34801561056d57600080fd5b506101dc61057c3660046115ec565b610b4e565b34801561058d57600080fd5b506102c361059c36600461162e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105d357600080fd5b5060045461027e90600160a01b900460ff1681565b3480156105f457600080fd5b506101dc610603366004611391565b610bbd565b6000546001600160a01b0316331461063a5760405163118cdaa760e01b81523360048201526024015b60405180910390fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610674573d6000803e3d6000fd5b50565b60006106863384846001610c7d565b5060015b92915050565b6000546001600160a01b031633146106bd5760405163118cdaa760e01b8152336004820152602401610631565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b60006106f66009600a611759565b610704906305f5e100611768565b905090565b6000546001600160a01b031633146107365760405163118cdaa760e01b8152336004820152602401610631565b6000546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b1919061177f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190611798565b505050565b6000610832843384610d53565b61083d848484610dcb565b5060015b9392505050565b6000546001600160a01b031633146108755760405163118cdaa760e01b8152336004820152602401610631565b6101f461ffff84161180159061089157506101f461ffff831611155b80156108a357506101f461ffff821611155b6108ef5760405162461bcd60e51b815260206004820152601760248201527f5261746573206e6f20686967686572207468616e2035250000000000000000006044820152606401610631565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b0316331461095b5760405163118cdaa760e01b8152336004820152602401610631565b80518251146109a45760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610631565b60005b82518161ffff16101561082057818161ffff16815181106109ca576109ca6117b5565b60200260200101516109db33610a95565b1015610a3e57336109eb33610a95565b838361ffff1681518110610a0157610a016117b5565b602090810291909101015160405163391434e360e21b81526001600160a01b03909316600484015260248301919091526044820152606401610631565b610a8333848361ffff1681518110610a5857610a586117b5565b6020026020010151848461ffff1681518110610a7657610a766117b5565b6020026020010151610dcb565b80610a8d816117cb565b9150506109a7565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610add5760405163118cdaa760e01b8152336004820152602401610631565b610ae76000610f04565b565b6000546001600160a01b03163314610b165760405163118cdaa760e01b8152336004820152602401610631565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000610686338484610dcb565b6000546001600160a01b03163314610b7b5760405163118cdaa760e01b8152336004820152602401610631565b6004805460058490556001600160a81b031916600160a01b851515026001600160a01b031916176001600160a01b038316908117909155610820906001610690565b6000546001600160a01b03163314610bea5760405163118cdaa760e01b8152336004820152602401610631565b6001600160a01b038116610c1457604051631e4fbdf760e01b815260006004820152602401610631565b600080546001600160a01b0390811680835260036020526040808420805460ff1990811690915592851684528320805490921660011790915590610c5782610a95565b1115610c7057610c708183610c6b84610a95565b610f54565b610c7982610f04565b5050565b6001600160a01b038416610ca75760405163e602df0560e01b815260006004820152602401610631565b6001600160a01b038316610cd157604051634a1406b160e11b815260006004820152602401610631565b6001600160a01b0380851660009081526002602090815260408083209387168352929052208290558015610d4d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d4491815260200190565b60405180910390a35b50505050565b6001600160a01b038084166000908152600260209081526040808320938616835292905220546000198114610d4d5781811015610dbc57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610631565b610d4d84848484036000610c7d565b6001600160a01b038316610df557604051634b637e8f60e11b815260006004820152602401610631565b6001600160a01b038216610e1f5760405163ec442f0560e01b815260006004820152602401610631565b80600003610e405760405163019aa6ff60e51b815260040160405180910390fd5b6001600160a01b03831660009081526003602052604090205460019060ff1680610e8257506001600160a01b03831660009081526003602052604090205460ff165b15610e8b575060005b600081610e985782610ea3565b610ea3858585610fda565b9050610eb0858583610f54565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef591815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604090205481811015610fa75760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610631565b6001600160a01b039384166000908152600160205260408082209284900390925592909316825291902080549091019055565b6001600160a01b038316600090815260076020526040812054819060ff161561100a575060085461ffff1661104f565b6001600160a01b03841660009081526007602052604090205460ff161561103e575060085462010000900461ffff1661104f565b50600854640100000000900461ffff165b806000036110605782915050610841565b600061271061106f8386611768565b61107991906117ec565b9050801561108c5761108c863083610f54565b600454600160a01b900460ff1680156110a8575060095460ff16155b80156110cc57506001600160a01b03851660009081526007602052604090205460ff165b80156110e257506005546110df30610a95565b10155b156110f8576110f86110f330610a95565b61110c565b611102818561180e565b9695505050505050565b6009805460ff191660011790553060009081526002602090815260408083206006546001600160a01b0316845290915290205460001914611172573060009081526002602090815260408083206006546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106111a7576111a76117b5565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190611821565b81600181518110611237576112376117b5565b6001600160a01b0392831660209182029290920101526006546004805460405163791ac94760e01b81529284169363791ac94793611281938893600093899391169142910161183e565b600060405180830381600087803b15801561129b57600080fd5b505af19250505080156112ac575060015b5050506009805460ff19169055565b602081526000825180602084015260005b818110156112e957602081860181015160408684010152016112cc565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461067457600080fd5b6000806040838503121561133157600080fd5b823561133c81611309565b946020939093013593505050565b801515811461067457600080fd5b6000806040838503121561136b57600080fd5b823561137681611309565b915060208301356113868161134a565b809150509250929050565b6000602082840312156113a357600080fd5b813561084181611309565b6000806000606084860312156113c357600080fd5b83356113ce81611309565b925060208401356113de81611309565b929592945050506040919091013590565b803561ffff8116811461140157600080fd5b919050565b60008060006060848603121561141b57600080fd5b611424846113ef565b9250611432602085016113ef565b9150611440604085016113ef565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561148857611488611449565b604052919050565b600067ffffffffffffffff8211156114aa576114aa611449565b5060051b60200190565b600082601f8301126114c557600080fd5b81356114d86114d382611490565b61145f565b8082825260208201915060208360051b8601019250858311156114fa57600080fd5b602085015b838110156115175780358352602092830192016114ff565b5095945050505050565b6000806040838503121561153457600080fd5b823567ffffffffffffffff81111561154b57600080fd5b8301601f8101851361155c57600080fd5b803561156a6114d382611490565b8082825260208201915060208360051b85010192508783111561158c57600080fd5b6020840193505b828410156115b75783356115a681611309565b825260209384019390910190611593565b9450505050602083013567ffffffffffffffff8111156115d657600080fd5b6115e2858286016114b4565b9150509250929050565b60008060006060848603121561160157600080fd5b833561160c8161134a565b925060208401359150604084013561162381611309565b809150509250925092565b6000806040838503121561164157600080fd5b823561164c81611309565b9150602083013561138681611309565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156116ad578085048111156116915761169161165c565b600184161561169f57908102905b60019390931c928002611676565b935093915050565b6000826116c45750600161068a565b816116d15750600061068a565b81600181146116e757600281146116f15761170d565b600191505061068a565b60ff8411156117025761170261165c565b50506001821b61068a565b5060208310610133831016604e8410600b8410161715611730575081810a61068a565b61173d6000198484611672565b80600019048211156117515761175161165c565b029392505050565b600061084160ff8416836116b5565b808202811582820484141761068a5761068a61165c565b60006020828403121561179157600080fd5b5051919050565b6000602082840312156117aa57600080fd5b81516108418161134a565b634e487b7160e01b600052603260045260246000fd5b600061ffff821661ffff81036117e3576117e361165c565b60010192915050565b60008261180957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561068a5761068a61165c565b60006020828403121561183357600080fd5b815161084181611309565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156118905783516001600160a01b0316835260209384019390920191600101611869565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122080c500c832bce22508c90a57ed8d42b7d6fa60b0e1facdd507d411049bf02aea64736f6c634300081b0033

Verified Source Code Full Match

Compiler: v0.8.27+commit.40a35a09 EVM: paris Optimization: Yes (200 runs)
TEST.sol 320 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol";

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function owner() external view returns (address);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external pure returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);

    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InvalidAmount();
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

contract TEST is IERC20 {
    address private _owner;

    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;

    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000 * (10 ** _decimals);
    string private constant _name = "Test Contract";
    string private constant _symbol = "TEST";
    mapping(address => bool) private _isExcludedFromTaxes;

    address public marketingWallet;
    bool public marketingEnabled = false;
    uint256 public marketingThreshold;
    IUniswapV2Router02 public dexRouter;
    mapping(address => bool) public lpPairs;

    struct Taxes {
        uint16 buy;
        uint16 sell;
        uint16 transfer;
    }

    uint16 public constant MAX_TAX_RATE = 500;
    uint16 public constant TAX_DIVISOR = 10000;
    Taxes public taxRates = Taxes({buy: 500, sell: 500, transfer: 0});

    constructor(address _dexRouter, bool createPair) payable {
        dexRouter = IUniswapV2Router02(_dexRouter);
        _owner = msg.sender;
        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);

        _approve(_owner, address(_dexRouter), type(uint256).max, false);
        _approve(address(this), address(_dexRouter), type(uint256).max, false);

        if (createPair) {
            address selfWETH = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
            lpPairs[selfWETH] = true;
        }

        _isExcludedFromTaxes[_owner] = true;
        _isExcludedFromTaxes[address(this)] = true;
    }

    modifier onlyOwner() {
        if (_owner != msg.sender) {
            revert OwnableUnauthorizedAccount(msg.sender);
        }
        _;
    }

    bool private inSwap;

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

    receive() external payable {}

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

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

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

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

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

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

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

    function isExcludedFromTaxes(address account) external view returns (bool) {
        return _isExcludedFromTaxes[account];
    }

    function approve(address spender, uint256 value) external returns (bool) {
        _approve(msg.sender, spender, value, true);
        return true;
    }

    function transfer(address to, uint256 value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        _spendAllowance(from, msg.sender, value);
        _transfer(from, to, value);
        return true;
    }

    function setLpPair(address pair, bool enable) public onlyOwner {
        lpPairs[pair] = enable;
    }

    function setupMarketing(bool _enable, uint256 _threshold, address _recipient) public onlyOwner {
        marketingEnabled = _enable;
        marketingThreshold = _threshold;
        marketingWallet = _recipient;
        setExcludedFromTaxes(marketingWallet, true);
    }

    function setExcludedFromTaxes(address who, bool enabled) public onlyOwner {
        _isExcludedFromTaxes[who] = enabled;
    }

    function setTaxes(uint16 _buyRate, uint16 _sellRate, uint16 _transferRate) external onlyOwner {
        require(
            _buyRate <= MAX_TAX_RATE && _sellRate <= MAX_TAX_RATE && _transferRate <= MAX_TAX_RATE,
            "Rates no higher than 5%"
        );

        taxRates.buy = _buyRate;
        taxRates.sell = _sellRate;
        taxRates.transfer = _transferRate;
    }

    function sweepFund() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }

    function sweepToken(address token) external onlyOwner {
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function airdrop(address[] memory accounts, uint256[] memory values) external onlyOwner {
        require(accounts.length == values.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            if (balanceOf(msg.sender) < values[i]) {
                revert ERC20InsufficientBalance(msg.sender, balanceOf(msg.sender), values[i]);
            }
            _transfer(msg.sender, accounts[i], values[i]);
        }
    }

    function renounceOwnership() external onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) external onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }

        address oldOwner = _owner;

        _isExcludedFromTaxes[oldOwner] = false;
        _isExcludedFromTaxes[newOwner] = true;

        if (balanceOf(oldOwner) > 0) {
            _update(oldOwner, newOwner, balanceOf(oldOwner));
        }

        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function _takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 rate;

        if (lpPairs[from]) {
            rate = taxRates.buy;
        } else if (lpPairs[to]) {
            rate = taxRates.sell;
        } else {
            rate = taxRates.transfer;
        }

        if (rate == 0) return amount;
        uint256 feeAmount = amount * rate / TAX_DIVISOR;

        if (feeAmount > 0) {
            _update(from, address(this), feeAmount);
        }

        if (marketingEnabled && !inSwap && lpPairs[to] && balanceOf(address(this)) >= marketingThreshold) {
            _fundMarketing(balanceOf(address(this)));
        }

        return amount - feeAmount;
    }

    function _fundMarketing(uint256 amountIn) internal inSwapFlag {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountIn, 0, path, marketingWallet, block.timestamp
        ) {} catch {}
    }

    function _transfer(address from, address to, uint256 amount) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if (amount == 0) {
            revert ERC20InvalidAmount();
        }

        bool takeTax = true;
        if (_isExcludedFromTaxes[from] || _isExcludedFromTaxes[to]) {
            takeTax = false;
        }
        uint256 amountAfterTax = takeTax ? _takeTaxes(from, to, amount) : amount;

        _update(from, to, amountAfterTax);
        emit Transfer(from, to, amountAfterTax);
    }

    function _update(address from, address to, uint256 value) internal {
        uint256 fromBalance = _balances[from];
        if (fromBalance < value) {
            revert ERC20InsufficientBalance(from, fromBalance, value);
        }
        unchecked {
            // Overflow not possible: value <= fromBalance <= totalSupply.
            _balances[from] = fromBalance - value;
        }

        unchecked {
            // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
            _balances[to] += value;
        }
    }

    function _approve(address holder, address spender, uint256 value, bool emitEvent) internal {
        if (holder == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[holder][spender] = value;
        if (emitEvent) {
            emit Approval(holder, spender, value);
        }
    }

    function _spendAllowance(address holder, address spender, uint256 value) internal {
        uint256 currentAllowance = _allowances[holder][spender];
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(holder, spender, currentAllowance - value, false);
            }
        }
    }
}
IUniswapV2Pair.sol 52 lines
pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}
IUniswapV2Factory.sol 17 lines
pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
IUniswapV2Router01.sol 95 lines
pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
IUniswapV2Router02.sol 44 lines
pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Read Contract

MAX_TAX_RATE 0x8fa81732 → uint16
TAX_DIVISOR 0xa335d4ff → uint16
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
dexRouter 0x0758d924 → address
isExcludedFromTaxes 0x27b07d75 → bool
lpPairs 0x43cc8c2a → bool
marketingEnabled 0xe84d44f8 → bool
marketingThreshold 0x5ce26dcc → uint256
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
taxRates 0x333f4b3d → uint16, uint16, uint16
totalSupply 0x18160ddd → uint256

Write Contract 12 functions

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

airdrop 0x67243482
address[] accounts
uint256[] values
approve 0x095ea7b3
address spender
uint256 value
returns: bool
renounceOwnership 0x715018a6
No parameters
setExcludedFromTaxes 0x0a368e18
address who
bool enabled
setLpPair 0x80c581d1
address pair
bool enable
setTaxes 0x32cde664
uint16 _buyRate
uint16 _sellRate
uint16 _transferRate
setupMarketing 0xb5093ad9
bool _enable
uint256 _threshold
address _recipient
sweepFund 0x0603c8af
No parameters
sweepToken 0x1be19560
address token
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

Transaction index is loading. Only unfinalized transactions are shown while the index starts up.