Token ETHforestAI

 

Overview ERC20

Price
$0.00 @ 0.000000 ETH (+0.77%)
Fully Diluted Market Cap
Total Supply:
86,203,898,000.311298 ETHFAI

Holders:
866 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

ETHforestAI is a Web3 learning platform with an integrated AI chatbot, built-in Learn-To-Earn, Real Yield, and Creator Economy elements.

Market

Volume (24H):$85.69
Market Capitalization:$43,877.00
Circulating Supply:22,574,600,950.00 ETHFAI
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ETHforestAI

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. 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;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @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 {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _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 2 of 4 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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 amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` 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 amount) 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 `amount` 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 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` 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 amount
    ) external returns (bool);
}

File 3 of 4 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @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;
    }
}

File 4 of 4 : ETHFAI.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

abstract contract BPContract{
    function protect(address sender, address receiver, uint256 amount) external virtual;
}

interface IFactory {
  function getPair(address tokenA, address tokenB) external view returns (address pair);
  function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
  function WETH() external pure returns (address);
  function factory() external view returns (address);
}

contract ETHforestAI is IERC20, Ownable {

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

    string constant public name = "ETHforestAI";
    string constant public symbol = "ETHFAI";
    uint constant public decimals = 18;
    uint256 private _totalSupply = 100 * 1E9 * 10**decimals;

    address public taxWallet;
    uint public fundingTax = 2;
    uint public stakingTax = 2;

    mapping (address => bool) public isExcludedFromTax;

    IRouter public Router;
    address public TOKEN_PAIR;

    BPContract public BP;
    bool public bpEnabled = true;
    
    event TransferFee(address sender, address recipient, uint256 amount);
    event Burn(address sender, uint256 amount);

    constructor(address _taxWallet, address _router) {
        _balances[msg.sender] = _totalSupply;

        taxWallet = _taxWallet;

        isExcludedFromTax[msg.sender] = true;
        isExcludedFromTax[_taxWallet] = true;

        Router = IRouter(_router);
        TOKEN_PAIR = IFactory(Router.factory()).createPair(address(this), Router.WETH());
    }

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

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

    function transfer(address to, uint256 amount) external override returns (bool)  {
        _transfer(_msgSender(), to, amount);
        return true;
    }
    
    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

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


    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }


    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, this.allowance(owner, spender) + addedValue);
        return true;
    }


    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = this.allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }



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

        if (bpEnabled) {
            BP.protect(sender, recipient, amount);
        }

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

        uint256 receiveAmount = amount;
        if (isExcludedFromTax[sender] || isExcludedFromTax[recipient]) {
            _balances[recipient] += receiveAmount;
        } else {
            if(sender == TOKEN_PAIR || recipient == TOKEN_PAIR) {
                uint256 feeAmount = amount * fundingTax / 100;
                uint256 stakingAmount = amount * stakingTax / 100;

                uint256 totalFee = feeAmount + stakingAmount;
                receiveAmount = amount - totalFee;
                _balances[taxWallet] += totalFee;

                _balances[recipient] += receiveAmount;

                emit TransferFee(sender, taxWallet, totalFee);
            } else {
                _balances[recipient] += receiveAmount;
            }
        }

        emit Transfer(sender, recipient, receiveAmount);

    }


    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), 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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = this.allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function setTaxWallet(address _taxWallet) external onlyOwner {
        require(_taxWallet != address(0), "Token : invalid address.");
        require(_taxWallet != taxWallet, "Token : same address.");
        taxWallet = _taxWallet;
    }

    function excludeFromTax(address address_, bool isExcluded_) external onlyOwner {
        isExcludedFromTax[address_] = isExcluded_;
    }

    function burn(uint256 amount) external {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) external {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }

    function setBPAddress(address _bp) external onlyOwner {
        BP = BPContract(_bp);
    }

    function disableBP() external onlyOwner {
        require(bpEnabled);
        bpEnabled = false;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferFee","type":"event"},{"inputs":[],"name":"BP","outputs":[{"internalType":"contract BPContract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bpEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableBP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bool","name":"isExcluded_","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bp","type":"address"}],"name":"setBPAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052620000126012600a620003d2565b620000239064174876e800620003e7565b60035560026005819055600655600a805460ff60a01b1916600160a01b1790553480156200005057600080fd5b506040516200171338038062001713833981016040819052620000739162000426565b6200007e336200026d565b60035433600090815260016020818152604080842094909455600480546001600160a01b038881166001600160a01b03199283168117845560078552878720805460ff19908116881790915590875295879020805490961690941790945560088054938716939094168317909355835163c45a015560e01b81529351919363c45a01559381810193918290030181865afa15801562000121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014791906200045e565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d091906200045e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024491906200045e565b600980546001600160a01b0319166001600160a01b0392909216919091179055506200047c9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000314578160001904821115620002f857620002f8620002bd565b808516156200030657918102915b93841c9390800290620002d8565b509250929050565b6000826200032d57506001620003cc565b816200033c57506000620003cc565b8160018114620003555760028114620003605762000380565b6001915050620003cc565b60ff841115620003745762000374620002bd565b50506001821b620003cc565b5060208310610133831016604e8410600b8410161715620003a5575081810a620003cc565b620003b18383620002d3565b8060001904821115620003c857620003c8620002bd565b0290505b92915050565b6000620003e083836200031c565b9392505050565b6000816000190483118215151615620004045762000404620002bd565b500290565b80516001600160a01b03811681146200042157600080fd5b919050565b600080604083850312156200043a57600080fd5b620004458362000409565b9150620004556020840162000409565b90509250929050565b6000602082840312156200047157600080fd5b620003e08262000409565b611287806200048c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063cb4ca63111610097578063dd62ed3e11610071578063dd62ed3e146103e9578063ea414b2814610422578063f2fde38b14610435578063f6d7eade1461044857600080fd5b8063cb4ca631146103aa578063d39b7e4f146103cd578063dc3aab9e146103e057600080fd5b8063a457c2d7116100d3578063a457c2d71461035e578063a9059cbb14610371578063c04e663214610384578063c6a306471461039757600080fd5b80638da5cb5b1461031557806395d89b41146103265780639cfdbd5e1461034b57600080fd5b806331ce11ec1161016657806370a082311161014057806370a08231146102c9578063715018a6146102f257806379cc6790146102fa5780637a59e1691461030d57600080fd5b806331ce11ec1461029857806339509351146102a157806342966c68146102b457600080fd5b806323b872dd116101a257806323b872dd1461023e57806326898da9146102515780632dc0562d14610265578063313ce5671461029057600080fd5b806306fdde03146101c9578063095ea7b31461020957806318160ddd1461022c575b600080fd5b6101f36040518060400160405280600b81526020016a455448666f72657374414960a81b81525081565b6040516102009190611041565b60405180910390f35b61021c6102173660046110ab565b61045b565b6040519015158152602001610200565b6003545b604051908152602001610200565b61021c61024c3660046110d5565b610472565b600a5461021c90600160a01b900460ff1681565b600454610278906001600160a01b031681565b6040516001600160a01b039091168152602001610200565b610230601281565b61023060065481565b61021c6102af3660046110ab565b610496565b6102c76102c2366004611111565b610530565b005b6102306102d736600461112a565b6001600160a01b031660009081526001602052604090205490565b6102c761053d565b6102c76103083660046110ab565b610551565b6102c761056a565b6000546001600160a01b0316610278565b6101f36040518060400160405280600681526020016545544846414960d01b81525081565b600a54610278906001600160a01b031681565b61021c61036c3660046110ab565b610597565b61021c61037f3660046110ab565b610683565b600954610278906001600160a01b031681565b6102c76103a536600461114c565b610690565b61021c6103b836600461112a565b60076020526000908152604090205460ff1681565b6102c76103db36600461112a565b6106c3565b61023060055481565b6102306103f7366004611188565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102c761043036600461112a565b6106ed565b6102c761044336600461112a565b6107c3565b600854610278906001600160a01b031681565b6000610468338484610839565b5060015b92915050565b60003361048085828561095e565b61048b858585610a3f565b506001949350505050565b60008033604051636eb1769f60e11b81526001600160a01b0380831660048301528616602482015290915061052690829086908690309063dd62ed3e90604401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051791906111bb565b61052191906111ea565b610839565b5060019392505050565b61053a3382610e48565b50565b610545610f97565b61054f6000610ff1565b565b61055c82338361095e565b6105668282610e48565b5050565b610572610f97565b600a54600160a01b900460ff1661058857600080fd5b600a805460ff60a01b19169055565b60008033604051636eb1769f60e11b81526001600160a01b03808316600483015286166024820152909150600090309063dd62ed3e90604401602060405180830381865afa1580156105ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061191906111bb565b9050838110156106765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61048b8286868403610839565b6000610468338484610a3f565b610698610f97565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6106cb610f97565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6106f5610f97565b6001600160a01b03811661074b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e203a20696e76616c696420616464726573732e0000000000000000604482015260640161066d565b6004546001600160a01b03908116908216036107a15760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7101d1039b0b6b29030b2323932b9b99760591b604482015260640161066d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6107cb610f97565b6001600160a01b0381166108305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066d565b61053a81610ff1565b6001600160a01b03831661089b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066d565b6001600160a01b0382166108fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604051636eb1769f60e11b81526001600160a01b03808516600483015283166024820152600090309063dd62ed3e90604401602060405180830381865afa1580156109ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d191906111bb565b90506000198114610a395781811015610a2c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161066d565b610a398484848403610839565b50505050565b6001600160a01b038316610aa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066d565b6001600160a01b038216610b055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066d565b600a54600160a01b900460ff1615610b8657600a54604051637e2f3afd60e01b81526001600160a01b03858116600483015284811660248301526044820184905290911690637e2f3afd90606401600060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050505b6001600160a01b03831660009081526001602052604090205481811015610bfe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161066d565b610c0882826111fd565b6001600160a01b038516600090815260016020908152604080832093909355600790522054829060ff1680610c5557506001600160a01b03841660009081526007602052604090205460ff165b15610c8d576001600160a01b03841660009081526001602052604081208054839290610c829084906111ea565b90915550610df49050565b6009546001600160a01b0386811691161480610cb657506009546001600160a01b038581169116145b15610dc6576000606460055485610ccd9190611210565b610cd7919061122f565b90506000606460065486610ceb9190611210565b610cf5919061122f565b90506000610d0382846111ea565b9050610d0f81876111fd565b6004546001600160a01b0316600090815260016020526040812080549296508392909190610d3e9084906111ea565b90915550506001600160a01b03871660009081526001602052604081208054869290610d6b9084906111ea565b9091555050600454604080516001600160a01b03808c168252909216602083015281018290527fe85e14b969bb775b4056348e1a8b33b3329738b1fbf3455091825f3370efd8a89060600160405180910390a1505050610df4565b6001600160a01b03841660009081526001602052604081208054839290610dee9084906111ea565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e3991815260200190565b60405180910390a35050505050565b6001600160a01b038216610ea85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161066d565b6001600160a01b03821660009081526001602052604090205481811015610f1c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161066d565b610f2682826111fd565b6001600160a01b03841660009081526001602052604081209190915560038054849290610f549084906111fd565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610951565b6000546001600160a01b0316331461054f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b8181101561106e57858101830151858201604001528201611052565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146110a657600080fd5b919050565b600080604083850312156110be57600080fd5b6110c78361108f565b946020939093013593505050565b6000806000606084860312156110ea57600080fd5b6110f38461108f565b92506111016020850161108f565b9150604084013590509250925092565b60006020828403121561112357600080fd5b5035919050565b60006020828403121561113c57600080fd5b6111458261108f565b9392505050565b6000806040838503121561115f57600080fd5b6111688361108f565b91506020830135801515811461117d57600080fd5b809150509250929050565b6000806040838503121561119b57600080fd5b6111a48361108f565b91506111b26020840161108f565b90509250929050565b6000602082840312156111cd57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046c5761046c6111d4565b8181038181111561046c5761046c6111d4565b600081600019048311821515161561122a5761122a6111d4565b500290565b60008261124c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122014a028dda9d6ab1f170b0a78fd375144a99e3f3c8bf1828867cbb8db5987dd9c64736f6c634300081000330000000000000000000000001eacd71560c576945994252304996e7cdf60863a0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063cb4ca63111610097578063dd62ed3e11610071578063dd62ed3e146103e9578063ea414b2814610422578063f2fde38b14610435578063f6d7eade1461044857600080fd5b8063cb4ca631146103aa578063d39b7e4f146103cd578063dc3aab9e146103e057600080fd5b8063a457c2d7116100d3578063a457c2d71461035e578063a9059cbb14610371578063c04e663214610384578063c6a306471461039757600080fd5b80638da5cb5b1461031557806395d89b41146103265780639cfdbd5e1461034b57600080fd5b806331ce11ec1161016657806370a082311161014057806370a08231146102c9578063715018a6146102f257806379cc6790146102fa5780637a59e1691461030d57600080fd5b806331ce11ec1461029857806339509351146102a157806342966c68146102b457600080fd5b806323b872dd116101a257806323b872dd1461023e57806326898da9146102515780632dc0562d14610265578063313ce5671461029057600080fd5b806306fdde03146101c9578063095ea7b31461020957806318160ddd1461022c575b600080fd5b6101f36040518060400160405280600b81526020016a455448666f72657374414960a81b81525081565b6040516102009190611041565b60405180910390f35b61021c6102173660046110ab565b61045b565b6040519015158152602001610200565b6003545b604051908152602001610200565b61021c61024c3660046110d5565b610472565b600a5461021c90600160a01b900460ff1681565b600454610278906001600160a01b031681565b6040516001600160a01b039091168152602001610200565b610230601281565b61023060065481565b61021c6102af3660046110ab565b610496565b6102c76102c2366004611111565b610530565b005b6102306102d736600461112a565b6001600160a01b031660009081526001602052604090205490565b6102c761053d565b6102c76103083660046110ab565b610551565b6102c761056a565b6000546001600160a01b0316610278565b6101f36040518060400160405280600681526020016545544846414960d01b81525081565b600a54610278906001600160a01b031681565b61021c61036c3660046110ab565b610597565b61021c61037f3660046110ab565b610683565b600954610278906001600160a01b031681565b6102c76103a536600461114c565b610690565b61021c6103b836600461112a565b60076020526000908152604090205460ff1681565b6102c76103db36600461112a565b6106c3565b61023060055481565b6102306103f7366004611188565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102c761043036600461112a565b6106ed565b6102c761044336600461112a565b6107c3565b600854610278906001600160a01b031681565b6000610468338484610839565b5060015b92915050565b60003361048085828561095e565b61048b858585610a3f565b506001949350505050565b60008033604051636eb1769f60e11b81526001600160a01b0380831660048301528616602482015290915061052690829086908690309063dd62ed3e90604401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051791906111bb565b61052191906111ea565b610839565b5060019392505050565b61053a3382610e48565b50565b610545610f97565b61054f6000610ff1565b565b61055c82338361095e565b6105668282610e48565b5050565b610572610f97565b600a54600160a01b900460ff1661058857600080fd5b600a805460ff60a01b19169055565b60008033604051636eb1769f60e11b81526001600160a01b03808316600483015286166024820152909150600090309063dd62ed3e90604401602060405180830381865afa1580156105ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061191906111bb565b9050838110156106765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61048b8286868403610839565b6000610468338484610a3f565b610698610f97565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6106cb610f97565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6106f5610f97565b6001600160a01b03811661074b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e203a20696e76616c696420616464726573732e0000000000000000604482015260640161066d565b6004546001600160a01b03908116908216036107a15760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7101d1039b0b6b29030b2323932b9b99760591b604482015260640161066d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6107cb610f97565b6001600160a01b0381166108305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066d565b61053a81610ff1565b6001600160a01b03831661089b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066d565b6001600160a01b0382166108fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604051636eb1769f60e11b81526001600160a01b03808516600483015283166024820152600090309063dd62ed3e90604401602060405180830381865afa1580156109ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d191906111bb565b90506000198114610a395781811015610a2c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161066d565b610a398484848403610839565b50505050565b6001600160a01b038316610aa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066d565b6001600160a01b038216610b055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066d565b600a54600160a01b900460ff1615610b8657600a54604051637e2f3afd60e01b81526001600160a01b03858116600483015284811660248301526044820184905290911690637e2f3afd90606401600060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050505b6001600160a01b03831660009081526001602052604090205481811015610bfe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161066d565b610c0882826111fd565b6001600160a01b038516600090815260016020908152604080832093909355600790522054829060ff1680610c5557506001600160a01b03841660009081526007602052604090205460ff165b15610c8d576001600160a01b03841660009081526001602052604081208054839290610c829084906111ea565b90915550610df49050565b6009546001600160a01b0386811691161480610cb657506009546001600160a01b038581169116145b15610dc6576000606460055485610ccd9190611210565b610cd7919061122f565b90506000606460065486610ceb9190611210565b610cf5919061122f565b90506000610d0382846111ea565b9050610d0f81876111fd565b6004546001600160a01b0316600090815260016020526040812080549296508392909190610d3e9084906111ea565b90915550506001600160a01b03871660009081526001602052604081208054869290610d6b9084906111ea565b9091555050600454604080516001600160a01b03808c168252909216602083015281018290527fe85e14b969bb775b4056348e1a8b33b3329738b1fbf3455091825f3370efd8a89060600160405180910390a1505050610df4565b6001600160a01b03841660009081526001602052604081208054839290610dee9084906111ea565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e3991815260200190565b60405180910390a35050505050565b6001600160a01b038216610ea85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161066d565b6001600160a01b03821660009081526001602052604090205481811015610f1c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161066d565b610f2682826111fd565b6001600160a01b03841660009081526001602052604081209190915560038054849290610f549084906111fd565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610951565b6000546001600160a01b0316331461054f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b8181101561106e57858101830151858201604001528201611052565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146110a657600080fd5b919050565b600080604083850312156110be57600080fd5b6110c78361108f565b946020939093013593505050565b6000806000606084860312156110ea57600080fd5b6110f38461108f565b92506111016020850161108f565b9150604084013590509250925092565b60006020828403121561112357600080fd5b5035919050565b60006020828403121561113c57600080fd5b6111458261108f565b9392505050565b6000806040838503121561115f57600080fd5b6111688361108f565b91506020830135801515811461117d57600080fd5b809150509250929050565b6000806040838503121561119b57600080fd5b6111a48361108f565b91506111b26020840161108f565b90509250929050565b6000602082840312156111cd57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046c5761046c6111d4565b8181038181111561046c5761046c6111d4565b600081600019048311821515161561122a5761122a6111d4565b500290565b60008261124c57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122014a028dda9d6ab1f170b0a78fd375144a99e3f3c8bf1828867cbb8db5987dd9c64736f6c63430008100033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001eacd71560c576945994252304996e7cdf60863a0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506

-----Decoded View---------------
Arg [0] : _taxWallet (address): 0x1EaCD71560c576945994252304996E7cDf60863a
Arg [1] : _router (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001eacd71560c576945994252304996e7cdf60863a
Arg [1] : 0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506


Loading