false
true
0

Contract Address Details

0xD217824206b3141727e7aFDBcfB72B41E11b90Ce

Token
MostBurn (MostBurn)
Creator
0xbbd48a–2e79f2 at 0x785af4–697df4
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
80 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
25965125
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
MostBurn




Optimization enabled
true
Compiler version
v0.8.20+commit.a1b79de6




Optimization runs
200
EVM Version
shanghai




Verified at
2025-02-13T03:24:02.743461Z

Constructor Arguments

0x00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000c9f2c9cd04674edea40000000000000000000000000000000befa4c3af0048fb34b9f97a3c8a9a0506a337637000000000000000000000000e33a5ae21f93acec5cfc0b7b0fdbb65a0f0be5cc00000000000000000000000000000000000000000000000000000000000000084d6f73744275726e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6f73744275726e000000000000000000000000000000000000000000000000

Arg [0] (string) : MostBurn
Arg [1] (string) : MostBurn
Arg [2] (uint256) : 1000000000000000000000000000000
Arg [3] (address) : 0xbefa4c3af0048fb34b9f97a3c8a9a0506a337637
Arg [4] (address) : 0xe33a5ae21f93acec5cfc0b7b0fdbb65a0f0be5cc

              

Contract source code

// File: lib/openzeppelin-contracts/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: lib/openzeppelin-contracts/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

// File: lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.20;


/**
 * @dev Interface for the optional metadata functions from the ERC-20 standard.
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: src/taxtoken/ERC20.sol


pragma solidity 0.8.20;




contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );

        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }

}

// File: src/interface/IDopeDistributor.sol


pragma solidity 0.8.20;

interface IDopeDistributor {
    function process(address _token, address _tokenAddressToBuy) external;
}

// File: src/interface/IDexFactory.sol


pragma solidity 0.8.20;

interface IDexFactory {
    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;
}
// File: src/interface/IDividendDistributor.sol


pragma solidity 0.8.20;

interface IDividendDistributor {
    function initialize() external;
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _claimAfter
    ) external;
    function setShare(
        address shareholder,
        uint256 amount,
        bool exclude
    ) external;
    function deposit() external payable;
    function claimDividend(address shareholder) external;
    function getUnpaidEarnings(
        address shareholder
    ) external view returns (uint256);
    function getPaidDividends(
        address shareholder
    ) external view returns (uint256);
    function getTotalPaid() external view returns (uint256);
    function getClaimTime(address shareholder) external view returns (uint256);
    function getTotalDividends() external view returns (uint256);
    function getTotalDistributed() external view returns (uint256);
    function countShareholders() external view returns (uint256);
    function migrate(address newDistributor) external;
    function process() external;
}

// File: src/interface/IDexRouter.sol


pragma solidity 0.8.20;

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

    function WPLS() external pure returns (address);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

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

    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 getAmountsOut(
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);
}

// File: src/taxtoken/DopeDistributor.sol

//  __      __.__              .__
// /  \    /  \__| ____   ____ |__| ____    ____
// \   \/\/   /  |/    \ /    \|  |/    \  / ___\
//  \        /|  |   |  \   |  \  |   |  \/ /_/  >
//   \__/\  / |__|___|  /___|  /__|___|  /\___  /
//        \/          \/     \/        \//_____/

pragma solidity 0.8.20;






contract DopeDistributor is IDopeDistributor, Ownable {
    address constant WPLS = 0xA1077a294dDE1B09bB078844df40758a5D0f9a27;
    address routerAddress = 0x165C3410fC91EF562C50559f7d2289fEbed552d9;
    IDexRouter dexRouter = IDexRouter(routerAddress);

    address collector;

    constructor(address _collector) Ownable(msg.sender) {
        collector = _collector;
    }

    function process(
        address _token,
        address _tokenAddressToBuy
    ) external override {
        swapTokensForTokens(_token, _tokenAddressToBuy);

        IERC20 tokenToBuy = IERC20(_tokenAddressToBuy);

        tokenToBuy.transfer(collector, tokenToBuy.balanceOf(address(this)));
    }

    function swapTokensForTokens(address _tokenIn, address _tokenOut) private {
        address[] memory path = new address[](2);
        path[0] = _tokenIn;
        path[1] = _tokenOut;

        uint256 amountIn = IERC20(_tokenIn).balanceOf(address(this));

        if (
            IERC20(_tokenIn).allowance(address(this), routerAddress) <= amountIn
        ) {
            IERC20(_tokenIn).approve(routerAddress, type(uint256).max);
        }

        dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            amountIn,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapTokensForEth(address _token) private {
        address[] memory path = new address[](2);
        path[0] = _token;
        path[1] = WPLS;

        uint256 amountIn = IERC20(_token).balanceOf(address(this));

        if (
            IERC20(_token).allowance(address(this), routerAddress) <= amountIn
        ) {
            IERC20(_token).approve(routerAddress, type(uint256).max);
        }

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountIn,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function cleanUpPls() external onlyOwner {
        bool success;
        (success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "Transfer failed");
    }

    function cleanUpToken(address _token) external onlyOwner {
        IERC20(_token).transfer(
            msg.sender,
            IERC20(_token).balanceOf(address(this))
        );
    }

    function updateRouterAddress(address _routerAddress) external onlyOwner {
        routerAddress = _routerAddress;
        dexRouter = IDexRouter(routerAddress);
    }

    function updateCollector(address _collector) external onlyOwner {
        collector = _collector;
    }
}

// File: src/taxtoken/MostBurn.sol

// __________.__        ____ ___
// \______   \__| ____ |    |   \______
//  |    |  _/  |/ ___\|    |   /\____ \
//  |    |   \  / /_/  >    |  / |  |_> >
//  |______  /__\___  /|______/  |   __/
//          \/  /_____/           |__|

pragma solidity 0.8.20;






contract MostBurn is ERC20, Ownable {
    uint256 public fee = 1; // 1%
    uint256 public amountToHoldBeforeDistribute =
        100_000_000_000_000_000_000_000;
    uint256 public feeCollectedSum = 0;

    address public rewardTokenAddress;

    IDopeDistributor public distributor;

    mapping(address => bool) private _isExcludedFromFees;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event DistributorEvent(string message);

    constructor(
        string memory _name,
        string memory _ticker,
        uint256 _totalSupply,
        address _distributorAddress,
        address _rewardTokenAddress
    ) ERC20(_name, _ticker) Ownable(msg.sender) {
        excludeFromFees(msg.sender, true);
        excludeFromFees(address(this), true);

        _initialTransfer(msg.sender, _totalSupply);

        distributor = IDopeDistributor(_distributorAddress);
        rewardTokenAddress = _rewardTokenAddress;
    }

    receive() external payable {}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {

        if (msg.sender == address(0)) {
            super._transfer(from, to, amount);
            return;
        }

        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            uint256 currentFee = (amount / 100) * fee;
            feeCollectedSum = feeCollectedSum + currentFee;

            if (currentFee > 0) {
                super._transfer(from, address(this), currentFee);
            }

            amount -= currentFee;
        }

        super._transfer(from, to, amount);

        if (feeCollectedSum >= amountToHoldBeforeDistribute) {
            super._transfer(
                address(this),
                address(distributor),
                feeCollectedSum
            );

            try
                distributor.process(address(this), rewardTokenAddress)
            {} catch {
                emit DistributorEvent("Distributor failed to process");
            }

             feeCollectedSum = 0;
        }
    }

    function setDistributor(address _distributor) public onlyOwner {
        distributor = IDopeDistributor(_distributor);
    }

    function updateAmountToHoldBeforeDistribute(
        uint256 _amount
    ) public onlyOwner {
        amountToHoldBeforeDistribute = _amount;
    }

    function cleanUpPls() public onlyOwner {
        super._transfer(address(this), msg.sender, balanceOf(address(this)));
    }

    function cleanUpToken(address _token) public onlyOwner {
        IERC20(_token).transfer(
            msg.sender,
            IERC20(_token).balanceOf(address(this))
        );
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_ticker","internalType":"string"},{"type":"uint256","name":"_totalSupply","internalType":"uint256"},{"type":"address","name":"_distributorAddress","internalType":"address"},{"type":"address","name":"_rewardTokenAddress","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"type":"address","name":"owner","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"DistributorEvent","inputs":[{"type":"string","name":"message","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"ExcludeFromFees","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"bool","name":"isExcluded","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"amountToHoldBeforeDistribute","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"cleanUpPls","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"cleanUpToken","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDopeDistributor"}],"name":"distributor","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"excludeFromFees","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"excluded","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"fee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"feeCollectedSum","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"rewardTokenAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributor","inputs":[{"type":"address","name":"_distributor","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateAmountToHoldBeforeDistribute","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"receive","stateMutability":"payable"}]
              

Contract Creation Code

Verify & Publish
0x6080604052600160065569152d02c7e14af68000006007555f60085534801562000027575f80fd5b506040516200159b3803806200159b8339810160408190526200004a916200033f565b33858560036200005b83826200045e565b5060046200006a82826200045e565b5050506001600160a01b0381166200009c57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000a78162000104565b50620000b533600162000155565b620000c230600162000155565b620000ce3384620001bd565b600a80546001600160a01b039384166001600160a01b03199182161790915560098054929093169116179055506200054c915050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6200015f62000234565b6001600160a01b0382165f818152600b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382165f90815260208190526040812082905560028054839290620001eb90849062000526565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620002635760405163118cdaa760e01b815233600482015260240162000093565b565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000289575f80fd5b81516001600160401b0380821115620002a657620002a662000265565b604051601f8301601f19908116603f01168101908282118183101715620002d157620002d162000265565b81604052838152602092508683858801011115620002ed575f80fd5b5f91505b83821015620003105785820183015181830184015290820190620002f1565b5f93810190920192909252949350505050565b80516001600160a01b03811681146200033a575f80fd5b919050565b5f805f805f60a0868803121562000354575f80fd5b85516001600160401b03808211156200036b575f80fd5b6200037989838a0162000279565b965060208801519150808211156200038f575f80fd5b506200039e8882890162000279565b94505060408601519250620003b66060870162000323565b9150620003c66080870162000323565b90509295509295909350565b600181811c90821680620003e757607f821691505b6020821081036200040657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000459575f81815260208120601f850160051c81016020861015620004345750805b601f850160051c820191505b81811015620004555782815560010162000440565b5050505b505050565b81516001600160401b038111156200047a576200047a62000265565b62000492816200048b8454620003d2565b846200040c565b602080601f831160018114620004c8575f8415620004b05750858301515b5f19600386901b1c1916600185901b17855562000455565b5f85815260208120601f198616915b82811015620004f857888601518255948401946001909101908401620004d7565b50858210156200051657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200054657634e487b7160e01b5f52601160045260245ffd5b92915050565b611041806200055a5f395ff3fe60806040526004361061014a575f3560e01c806395d89b41116100b3578063c02466681161006d578063c0246668146103a6578063c741632e146103c5578063dd62ed3e146103d9578063ddca3f431461041d578063f2fde38b14610432578063fd9cab8714610451575f80fd5b806395d89b4114610301578063a457c2d714610315578063a9059cbb14610334578063ad59d04914610353578063aee3b32914610368578063bfe1092814610387575f80fd5b8063313ce56711610104578063313ce56714610243578063395093511461025e57806370a082311461027d578063715018a6146102b157806375619ab5146102c55780638da5cb5b146102e4575f80fd5b806306fdde0314610155578063095ea7b31461017f578063125f9e33146101ae57806318160ddd146101e557806323b872dd14610203578063313454d814610222575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610466565b6040516101769190610dc0565b60405180910390f35b34801561018a575f80fd5b5061019e610199366004610e26565b6104f6565b6040519015158152602001610176565b3480156101b9575f80fd5b506009546101cd906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b3480156101f0575f80fd5b506002545b604051908152602001610176565b34801561020e575f80fd5b5061019e61021d366004610e4e565b61050c565b34801561022d575f80fd5b5061024161023c366004610e87565b6105c1565b005b34801561024e575f80fd5b5060405160128152602001610176565b348015610269575f80fd5b5061019e610278366004610e26565b6105ce565b348015610288575f80fd5b506101f5610297366004610e9e565b6001600160a01b03165f9081526020819052604090205490565b3480156102bc575f80fd5b50610241610609565b3480156102d0575f80fd5b506102416102df366004610e9e565b61061c565b3480156102ef575f80fd5b506005546001600160a01b03166101cd565b34801561030c575f80fd5b50610169610646565b348015610320575f80fd5b5061019e61032f366004610e26565b610655565b34801561033f575f80fd5b5061019e61034e366004610e26565b6106ed565b34801561035e575f80fd5b506101f560075481565b348015610373575f80fd5b50610241610382366004610e9e565b6106f9565b348015610392575f80fd5b50600a546101cd906001600160a01b031681565b3480156103b1575f80fd5b506102416103c0366004610ecb565b6107e1565b3480156103d0575f80fd5b50610241610847565b3480156103e4575f80fd5b506101f56103f3366004610f00565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610428575f80fd5b506101f560065481565b34801561043d575f80fd5b5061024161044c366004610e9e565b61086a565b34801561045c575f80fd5b506101f560085481565b60606003805461047590610f31565b80601f01602080910402602001604051908101604052809291908181526020018280546104a190610f31565b80156104ec5780601f106104c3576101008083540402835291602001916104ec565b820191905f5260205f20905b8154815290600101906020018083116104cf57829003601f168201915b5050505050905090565b5f6105023384846108a7565b5060015b92915050565b5f6105188484846109ca565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f1981146105b657828110156105a95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105b685338584036108a7565b506001949350505050565b6105c9610b75565b600755565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610502918590610604908690610f7d565b6108a7565b610611610b75565b61061a5f610ba2565b565b610624610b75565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461047590610f31565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156106d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105a0565b6106e333858584036108a7565b5060019392505050565b5f6105023384846109ca565b610701610b75565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa15801561074d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107719190610f90565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156107b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dd9190610fa7565b5050565b6107e9610b75565b6001600160a01b0382165f818152600b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b61084f610b75565b305f8181526020819052604090205461061a91903390610bf3565b610872610b75565b6001600160a01b03811661089b57604051631e4fbdf760e01b81525f60048201526024016105a0565b6108a481610ba2565b50565b6001600160a01b0383166109095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a0565b6001600160a01b03821661096a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336109df576109da838383610bf3565b505050565b6001600160a01b0383165f908152600b602052604090205460ff16158015610a1f57506001600160a01b0382165f908152600b602052604090205460ff16155b15610a70576006545f90610a34606484610fc2565b610a3e9190610fe1565b905080600854610a4e9190610f7d565b6008558015610a6257610a62843083610bf3565b610a6c8183610ff8565b9150505b610a7b838383610bf3565b600754600854106109da57600a54600854610aa39130916001600160a01b0390911690610bf3565b600a54600954604051630ab1e96760e11b81523060048201526001600160a01b039182166024820152911690631563d2ce906044015f604051808303815f87803b158015610aef575f80fd5b505af1925050508015610b00575060015b610b6c577f7e5cf66244aa134f4dafdbe8d1768d7da33fc4dcd4ffa97ed38c7bf016060124604051610b63906020808252601d908201527f4469737472696275746f72206661696c656420746f2070726f63657373000000604082015260600190565b60405180910390a15b5f600855505050565b6005546001600160a01b0316331461061a5760405163118cdaa760e01b81523360048201526024016105a0565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316610c575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a0565b6001600160a01b038216610cb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a0565b6001600160a01b0383165f9081526020819052604090205481811015610d305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105a0565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610d66908490610f7d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610db291815260200190565b60405180910390a350505050565b5f6020808352835180828501525f5b81811015610deb57858101830151858201604001528201610dcf565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e21575f80fd5b919050565b5f8060408385031215610e37575f80fd5b610e4083610e0b565b946020939093013593505050565b5f805f60608486031215610e60575f80fd5b610e6984610e0b565b9250610e7760208501610e0b565b9150604084013590509250925092565b5f60208284031215610e97575f80fd5b5035919050565b5f60208284031215610eae575f80fd5b610eb782610e0b565b9392505050565b80151581146108a4575f80fd5b5f8060408385031215610edc575f80fd5b610ee583610e0b565b91506020830135610ef581610ebe565b809150509250929050565b5f8060408385031215610f11575f80fd5b610f1a83610e0b565b9150610f2860208401610e0b565b90509250929050565b600181811c90821680610f4557607f821691505b602082108103610f6357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561050657610506610f69565b5f60208284031215610fa0575f80fd5b5051919050565b5f60208284031215610fb7575f80fd5b8151610eb781610ebe565b5f82610fdc57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761050657610506610f69565b8181038181111561050657610506610f6956fea2646970667358221220bf11f53aaec3c818ff8af6c16db2f049dd847a7229f2a0acabefc0f00bb631ad64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000c9f2c9cd04674edea40000000000000000000000000000000befa4c3af0048fb34b9f97a3c8a9a0506a337637000000000000000000000000e33a5ae21f93acec5cfc0b7b0fdbb65a0f0be5cc00000000000000000000000000000000000000000000000000000000000000084d6f73744275726e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6f73744275726e000000000000000000000000000000000000000000000000

Deployed ByteCode

0x60806040526004361061014a575f3560e01c806395d89b41116100b3578063c02466681161006d578063c0246668146103a6578063c741632e146103c5578063dd62ed3e146103d9578063ddca3f431461041d578063f2fde38b14610432578063fd9cab8714610451575f80fd5b806395d89b4114610301578063a457c2d714610315578063a9059cbb14610334578063ad59d04914610353578063aee3b32914610368578063bfe1092814610387575f80fd5b8063313ce56711610104578063313ce56714610243578063395093511461025e57806370a082311461027d578063715018a6146102b157806375619ab5146102c55780638da5cb5b146102e4575f80fd5b806306fdde0314610155578063095ea7b31461017f578063125f9e33146101ae57806318160ddd146101e557806323b872dd14610203578063313454d814610222575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610466565b6040516101769190610dc0565b60405180910390f35b34801561018a575f80fd5b5061019e610199366004610e26565b6104f6565b6040519015158152602001610176565b3480156101b9575f80fd5b506009546101cd906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b3480156101f0575f80fd5b506002545b604051908152602001610176565b34801561020e575f80fd5b5061019e61021d366004610e4e565b61050c565b34801561022d575f80fd5b5061024161023c366004610e87565b6105c1565b005b34801561024e575f80fd5b5060405160128152602001610176565b348015610269575f80fd5b5061019e610278366004610e26565b6105ce565b348015610288575f80fd5b506101f5610297366004610e9e565b6001600160a01b03165f9081526020819052604090205490565b3480156102bc575f80fd5b50610241610609565b3480156102d0575f80fd5b506102416102df366004610e9e565b61061c565b3480156102ef575f80fd5b506005546001600160a01b03166101cd565b34801561030c575f80fd5b50610169610646565b348015610320575f80fd5b5061019e61032f366004610e26565b610655565b34801561033f575f80fd5b5061019e61034e366004610e26565b6106ed565b34801561035e575f80fd5b506101f560075481565b348015610373575f80fd5b50610241610382366004610e9e565b6106f9565b348015610392575f80fd5b50600a546101cd906001600160a01b031681565b3480156103b1575f80fd5b506102416103c0366004610ecb565b6107e1565b3480156103d0575f80fd5b50610241610847565b3480156103e4575f80fd5b506101f56103f3366004610f00565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610428575f80fd5b506101f560065481565b34801561043d575f80fd5b5061024161044c366004610e9e565b61086a565b34801561045c575f80fd5b506101f560085481565b60606003805461047590610f31565b80601f01602080910402602001604051908101604052809291908181526020018280546104a190610f31565b80156104ec5780601f106104c3576101008083540402835291602001916104ec565b820191905f5260205f20905b8154815290600101906020018083116104cf57829003601f168201915b5050505050905090565b5f6105023384846108a7565b5060015b92915050565b5f6105188484846109ca565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f1981146105b657828110156105a95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105b685338584036108a7565b506001949350505050565b6105c9610b75565b600755565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610502918590610604908690610f7d565b6108a7565b610611610b75565b61061a5f610ba2565b565b610624610b75565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461047590610f31565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156106d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105a0565b6106e333858584036108a7565b5060019392505050565b5f6105023384846109ca565b610701610b75565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa15801561074d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107719190610f90565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156107b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dd9190610fa7565b5050565b6107e9610b75565b6001600160a01b0382165f818152600b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b61084f610b75565b305f8181526020819052604090205461061a91903390610bf3565b610872610b75565b6001600160a01b03811661089b57604051631e4fbdf760e01b81525f60048201526024016105a0565b6108a481610ba2565b50565b6001600160a01b0383166109095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a0565b6001600160a01b03821661096a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336109df576109da838383610bf3565b505050565b6001600160a01b0383165f908152600b602052604090205460ff16158015610a1f57506001600160a01b0382165f908152600b602052604090205460ff16155b15610a70576006545f90610a34606484610fc2565b610a3e9190610fe1565b905080600854610a4e9190610f7d565b6008558015610a6257610a62843083610bf3565b610a6c8183610ff8565b9150505b610a7b838383610bf3565b600754600854106109da57600a54600854610aa39130916001600160a01b0390911690610bf3565b600a54600954604051630ab1e96760e11b81523060048201526001600160a01b039182166024820152911690631563d2ce906044015f604051808303815f87803b158015610aef575f80fd5b505af1925050508015610b00575060015b610b6c577f7e5cf66244aa134f4dafdbe8d1768d7da33fc4dcd4ffa97ed38c7bf016060124604051610b63906020808252601d908201527f4469737472696275746f72206661696c656420746f2070726f63657373000000604082015260600190565b60405180910390a15b5f600855505050565b6005546001600160a01b0316331461061a5760405163118cdaa760e01b81523360048201526024016105a0565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316610c575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a0565b6001600160a01b038216610cb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a0565b6001600160a01b0383165f9081526020819052604090205481811015610d305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105a0565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610d66908490610f7d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610db291815260200190565b60405180910390a350505050565b5f6020808352835180828501525f5b81811015610deb57858101830151858201604001528201610dcf565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e21575f80fd5b919050565b5f8060408385031215610e37575f80fd5b610e4083610e0b565b946020939093013593505050565b5f805f60608486031215610e60575f80fd5b610e6984610e0b565b9250610e7760208501610e0b565b9150604084013590509250925092565b5f60208284031215610e97575f80fd5b5035919050565b5f60208284031215610eae575f80fd5b610eb782610e0b565b9392505050565b80151581146108a4575f80fd5b5f8060408385031215610edc575f80fd5b610ee583610e0b565b91506020830135610ef581610ebe565b809150509250929050565b5f8060408385031215610f11575f80fd5b610f1a83610e0b565b9150610f2860208401610e0b565b90509250929050565b600181811c90821680610f4557607f821691505b602082108103610f6357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561050657610506610f69565b5f60208284031215610fa0575f80fd5b5051919050565b5f60208284031215610fb7575f80fd5b8151610eb781610ebe565b5f82610fdc57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761050657610506610f69565b8181038181111561050657610506610f6956fea2646970667358221220bf11f53aaec3c818ff8af6c16db2f049dd847a7229f2a0acabefc0f00bb631ad64736f6c63430008140033