Contract 0x7dcd01e3a119c8592a5aed681cdc9ed163090362

 

Contract Overview

Nodeify: NDFI Token
Balance:
0 FTM

FTM Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x716690f6087d1dd0f2ddbd458b7288957da66c98c48023ea0ad13a584bb31fa7Approve516699412022-11-30 13:59:554 mins ago0x02299dc5da884a1b5dc1dc76f1034bb1b05b7f22 IN  Nodeify: NDFI Token0 FTM0.00405083778
0x44d76cf7a40ce40eeeb6fd77b8fab8472a1ecd0792c8cf41e626fa53f156204eApprove516689762022-11-30 13:23:0141 mins ago0x3117fd01a185f661085e0c8ed641ef6d3605dc9c IN  Nodeify: NDFI Token0 FTM0.002917760746
0x79e5b65e93173d72378ae7cc03692d4a00c3d7c504f3b948c42caa39a2918078Transfer516658642022-11-30 11:47:452 hrs 16 mins ago0xd6d0c9fa07e399a975f18b126559319390df19ea IN  Nodeify: NDFI Token0 FTM0.002959188363
0xb487f36db7f4b144f0b74143f545c869886a366cda1c40949b60f1ea05fa4264Transfer516656302022-11-30 11:43:042 hrs 21 mins ago0xd6d0c9fa07e399a975f18b126559319390df19ea IN  Nodeify: NDFI Token0 FTM0.002978895678
0x2b3ef7a33f61509bd92227cb73774e88300f1796d5b60c1cc1fa7a112ed1131dApprove516654462022-11-30 11:38:562 hrs 25 mins ago0xea3113c13678a07f60ebda62a47854b601a51973 IN  Nodeify: NDFI Token0 FTM0.002202279184
0x742fc1b3b4ffd37fd096afe640059a716fabe75c111ebb27f09577270a1a1998Transfer516654072022-11-30 11:38:202 hrs 26 mins ago0xd6d0c9fa07e399a975f18b126559319390df19ea IN  Nodeify: NDFI Token0 FTM0.003017905424
0x37cf8f45cafe1ed6d73d3ddc2ac197318503040c68936f6d58d6a53a5431ac7dApprove516646462022-11-30 11:22:262 hrs 42 mins ago0x21d9a83346291b11f404e2175146c419103494d9 IN  Nodeify: NDFI Token0 FTM0.002337158048
0x00e9f010c67996e13356495a200a5ce70a4a962cbdadcdf7f86fcaea16efd06fTransfer516645472022-11-30 11:20:162 hrs 44 mins ago0xd6d0c9fa07e399a975f18b126559319390df19ea IN  Nodeify: NDFI Token0 FTM0.003196466828
0x6d89e385d0a5e08a9cc65ec27f27b684b5570e29cb1f18d7301006ca4ac02e40Transfer516643672022-11-30 11:16:082 hrs 48 mins ago0xd6d0c9fa07e399a975f18b126559319390df19ea IN  Nodeify: NDFI Token0 FTM0.003308276346
0x99324161d6e2ceb3d3677a80f7d7b30f183941d9a39255c2261d7405f70d5e9dTransfer516640522022-11-30 11:09:302 hrs 55 mins ago0xd6d0c9fa07e399a975f18b126559319390df19ea IN  Nodeify: NDFI Token0 FTM0.003425862931
0xce7f420aa198824c2c7c82278a785372bc1d12af44cd7bb360454c354e9982a2Transfer516634632022-11-30 10:57:133 hrs 7 mins ago0x237f38034ddcb0b6eec37366f7ee0b665bb4ffb3 IN  Nodeify: NDFI Token0 FTM0.003531585445
0x0e2a2e9f4044e384b7b164dfb1eab49a2907e54250e5468c99236ffba9e75c87Approve516628752022-11-30 10:41:543 hrs 22 mins ago0x2122b6d09aecbb56d56d94478ebefefb659a6b0b IN  Nodeify: NDFI Token0 FTM0.00411708
0xe86d6ada38609055381b14243acec67fe37e350e0f591636647f49f8454b50b8Transfer516626922022-11-30 10:36:593 hrs 27 mins ago0x237f38034ddcb0b6eec37366f7ee0b665bb4ffb3 IN  Nodeify: NDFI Token0 FTM0.0028084398
0x176c8a8311967c0c30a504b16e0a9c3ee95ef0b6544c46d98183ac6f90f30a55Transfer516622012022-11-30 10:25:343 hrs 39 mins ago0xc780ca472cd312de98b4730520c9a60bc0886fb5 IN  Nodeify: NDFI Token0 FTM0.00560316273
0xd14b37e7cf9095b609317573432a1042436b8172fb89abb437271bb594bbb0b2Transfer516620112022-11-30 10:21:123 hrs 43 mins ago0xc780ca472cd312de98b4730520c9a60bc0886fb5 IN  Nodeify: NDFI Token0 FTM0.005565015962
0x5adfbf30ee61ff7fc04585c9a2e07500570ddaeaa163711aafcb890e6afbcd7bTransfer516612832022-11-30 10:03:384 hrs ago0xc780ca472cd312de98b4730520c9a60bc0886fb5 IN  Nodeify: NDFI Token0 FTM0.004048418399
0x390fb5b8522730fe1896aaa730d52fb9c55149872f90f7dbf5ce2a5f6baace9dTransfer516611312022-11-30 10:00:334 hrs 4 mins ago0xc780ca472cd312de98b4730520c9a60bc0886fb5 IN  Nodeify: NDFI Token0 FTM0.067185494464
0x67407be68912f795e4d5f22a89cb5e8f1d9e4bfc8a8e5d8fdcdfe19879000f48Transfer516607382022-11-30 9:46:104 hrs 18 mins ago0x237f38034ddcb0b6eec37366f7ee0b665bb4ffb3 IN  Nodeify: NDFI Token0 FTM0.004400480795
0x8d721c0a55241114522a2124b9d826ca31d2e2346001326d85709de1ad77391fApprove516600802022-11-30 9:25:484 hrs 38 mins ago0x53f92c45438ce44905e01e71bb2ad15f666fa815 IN  Nodeify: NDFI Token0 FTM0.002564169379
0x9967ec9bbc57a0460f82c2c57c5e29ea3be1efec61a365508f0f4b520771af35Approve516599612022-11-30 9:23:124 hrs 41 mins ago0x1e758fe5199383f11e4273f846b2d6ce6f661b26 IN  Nodeify: NDFI Token0 FTM0.006990589731
0x7f49a22d9544b8f8ffd6ebee9f96526f04c0ce7aff19861330867729c7788a63Approve516596842022-11-30 9:12:594 hrs 51 mins ago0x55d8e73064adfbb53a00add959a32f079cde1810 IN  Nodeify: NDFI Token0 FTM0.002539114304
0x8c6f902d40d40a62c0123e2d49461be0e73446b46d183b99130975603c03a097Approve516596272022-11-30 9:11:054 hrs 53 mins ago0x55d8e73064adfbb53a00add959a32f079cde1810 IN  Nodeify: NDFI Token0 FTM0.01450000113
0xf8fcd8676322efa49249dcb027017287605f14e28cf36567454d0f28fe0478d8Approve516584772022-11-30 8:35:085 hrs 29 mins ago0xcc49c86b3b31feacf3252c6c9a72f2d7882250f6 IN  Nodeify: NDFI Token0 FTM0.00451635
0x2e70bf34a5437d079ff7f8b9e5a31dec5eaf13e434c2bcc2f662b3f2f8753da5Approve516584502022-11-30 8:34:195 hrs 30 mins ago0x53496451bda3f47c984112674569a0edb038a177 IN  Nodeify: NDFI Token0 FTM0.002086508636
0x5abe87abb1774b35f564a3a62a2685cf6217aae8e493e4fd3807d3d3a4fac4a0Approve516573252022-11-30 8:11:355 hrs 53 mins ago0xda06e832a4df451693b9c05fab7841836eb0ee06 IN  Nodeify: NDFI Token0 FTM0.001700260469
[ Download CSV Export 

OVERVIEW

Nodeify is a global scale Node-as-a-service (NaaS) platform that provides fully managed blockchain nodes to developers & investors.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xd8bdbfbb7ac7b3e6437784db46b09f9d783b972e951c6c1e8278884378366d1b353775842022-04-06 12:12:44238 days 1 hr ago Nodeify: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Nodeify

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 5 : Nodeify.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

interface Service {
    function entityNodeCount(address _address) external view returns (uint);
    function isPresaleWallet(address _address) external view returns (bool);
}

contract Nodeify is ERC20 {
    event SniperCaught(address sniperAddress);

    string private _name = "Nodeify";
    string private _symbol = "NDFI";

    bool private sniperProtection = false;

    address public owner;
    uint256 public snipersCaught = 0;

    uint256 private _snipeBlockAmt = 0;
    uint256 private _liqAddBlock = 0;

    uint256 public launchSellLimit = 5 ether;
    uint256 public launchBuyLimit = 30 ether;
    address public serviceAddress = 0x0000000000000000000000000000000000000000;
    address public lpAddress = 0x0000000000000000000000000000000000000000;
    bool public nodeCheckerActive = true;
    bool public launchPrecautionsActive = true;

    mapping (address => bool) private _isSniper;

    constructor() ERC20(_name, _symbol) {
        owner = msg.sender;
        _mint(owner, 1052600000000000000000000);
    }

    modifier onlyOwner {
        require(msg.sender == owner, "Not Owner");
        _;
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function setStartingProtections(uint8 _block) external onlyOwner {
        require(_snipeBlockAmt == 0 && _block <= 10 && _liqAddBlock == 0, "Invalid input");
        _snipeBlockAmt = _block;
    }

    function setSniperProtection(bool _value) external onlyOwner {
        sniperProtection = _value;
    }

    function setLaunchPrecautions(bool _value) external onlyOwner {
        launchPrecautionsActive = _value;
    }

    function setLaunchSellLimit(uint _launchSellLimit) external onlyOwner {
        launchSellLimit = _launchSellLimit;
    }

    function setLaunchBuyLimit(uint _launchBuyLimit) external onlyOwner {
        launchBuyLimit = _launchBuyLimit;
    }

    function setNodeCheckerActive(bool _value) external onlyOwner {
        nodeCheckerActive = _value;
    }
    
    function canSellBasedOnNodes(address _from, address _to) internal view returns (bool) {
        if (_from == owner || _to == owner) return true;
        uint nodeCount = Service(serviceAddress).entityNodeCount(_from);
        bool isPresaleWallet = Service(serviceAddress).isPresaleWallet(_from);
        if (nodeCount > 0 && !isPresaleWallet || nodeCount > 2 && isPresaleWallet) {
            return true;
        }
        return false;
    }

    function setServiceAddress(address _serviceAddress) external onlyOwner {
        serviceAddress = _serviceAddress;
    }

    function setLPAddress(address _lpAddress) external onlyOwner {
        lpAddress = _lpAddress;
    }

    function setLiq() public onlyOwner {
        _liqAddBlock = block.number;
    }

    function removeSniper(address _account) external onlyOwner() {
        require(_isSniper[_account], "Account is not a recorded sniper.");
        _isSniper[_account] = false;
    }

    function _checkTransfer(address _from, address _to) internal returns (bool) {
        if (_from == owner || _to == owner) return true;
        if (sniperProtection) {
            if (_liqAddBlock == 0) {
                revert("Only owner can transfer at this time.");
            }
            if (isSniper(_from) || isSniper(_to)) {
                revert("sniper rejected.");
            }
            if (_liqAddBlock > 0) {
                if (block.number - _liqAddBlock < _snipeBlockAmt) {
                    _isSniper[_to] = true;
                    snipersCaught ++;
                    emit SniperCaught(_to);
                    return false;
                }
            }
        }
        return true;
    }


    function _transfer(address _from, address _to, uint256 _amount) internal virtual override {
        if (!_checkTransfer(_from, _to)) {
            return;
        }
        if (launchPrecautionsActive) {
            if (_to == lpAddress) {
                if (_amount >= launchSellLimit && _from != owner) {
                    revert("Cannot sell this amount");
                }
            }
            if (_from == lpAddress && _to != owner) {
                if (_amount >= launchBuyLimit) {
                    revert("Cannot buy this amount");
                }
            }
        }
        if (nodeCheckerActive) {
            if (_to == lpAddress) {
                bool canSell = canSellBasedOnNodes(_from, _to);
                if (canSell) {
                    return super._transfer(_from, _to, _amount);
                }
                revert("Insufficient nodes");
            }
        }
        return super._transfer(_from, _to, _amount); 
    }
}

File 2 of 5 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 3 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

File 4 of 5 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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 5 of 5 : 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;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"sniperAddress","type":"address"}],"name":"SniperCaught","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"},{"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"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":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchPrecautionsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nodeCheckerActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"serviceAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpAddress","type":"address"}],"name":"setLPAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchBuyLimit","type":"uint256"}],"name":"setLaunchBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setLaunchPrecautions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchSellLimit","type":"uint256"}],"name":"setLaunchSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setNodeCheckerActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_serviceAddress","type":"address"}],"name":"setServiceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setSniperProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60c060405260076080819052664e6f646569667960c81b60a09081526200002a916005919062000341565b50604080518082019091526004808252634e44464960e01b6020909201918252620000589160069162000341565b506007805460ff19169055600060088190556009819055600a55674563918244f40000600b556801a055690d9db80000600c55600d80546001600160a01b0319169055600e80546001600160b01b03191661010160a01b179055348015620000bf57600080fd5b5060058054620000cf90620003e7565b80601f0160208091040260200160405190810160405280929190818152602001828054620000fd90620003e7565b80156200014e5780601f1062000122576101008083540402835291602001916200014e565b820191906000526020600020905b8154815290600101906020018083116200013057829003601f168201915b5050505050600680546200016290620003e7565b80601f01602080910402602001604051908101604052809291908181526020018280546200019090620003e7565b8015620001e15780601f10620001b557610100808354040283529160200191620001e1565b820191906000526020600020905b815481529060010190602001808311620001c357829003601f168201915b50508451620001fb93506003925060208601915062000341565b5080516200021190600490602084019062000341565b505060078054610100600160a81b0319163361010090810291909117918290556200025392506001600160a01b0391041669dee58f724e2f2be0000062000259565b6200044b565b6001600160a01b038216620002b45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002c8919062000424565b90915550506001600160a01b03821660009081526020819052604081208054839290620002f790849062000424565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200034f90620003e7565b90600052602060002090601f016020900481019282620003735760008555620003be565b82601f106200038e57805160ff1916838001178555620003be565b82800160010185558215620003be579182015b82811115620003be578251825591602001919060010190620003a1565b50620003cc929150620003d0565b5090565b5b80821115620003cc5760008155600101620003d1565b600181811c90821680620003fc57607f821691505b602082108114156200041e57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156200044657634e487b7160e01b600052601160045260246000fd5b500190565b6114c8806200045b6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806382c26ab411610104578063a457c2d7116100a2578063dd62ed3e11610071578063dd62ed3e14610409578063e79d416014610442578063f6e396401461044b578063ff098f5c1461045e57600080fd5b8063a457c2d7146103c7578063a9059cbb146103da578063ae39a774146103ed578063c5b72fa1146103f557600080fd5b80638d5b87b6116100de5780638d5b87b6146103695780638da5cb5b1461039457806395d89b41146103ac5780639b4dc8cc146103b457600080fd5b806382c26ab41461033a578063868381161461034d57806389b1b9f01461035657600080fd5b806333251a0b1161017c5780635d24288a1161014b5780635d24288a146102d757806370a08231146102ea57806378ba59f0146103135780637a351a1d1461032757600080fd5b806333251a0b1461029557806339509351146102a85780634129ecee146102bb578063450a0a34146102ce57600080fd5b806318160ddd116101b857806318160ddd1461024c57806323b872dd1461025e57806324fa08e414610271578063313ce5671461028657600080fd5b806306fdde03146101df578063095ea7b3146101fd5780630f3a325f14610220575b600080fd5b6101e7610471565b6040516101f49190611208565b60405180910390f35b61021061020b366004611279565b610503565b60405190151581526020016101f4565b61021061022e3660046112a3565b6001600160a01b03166000908152600f602052604090205460ff1690565b6002545b6040519081526020016101f4565b61021061026c3660046112c5565b61051a565b61028461027f366004611301565b6105c9565b005b604051601281526020016101f4565b6102846102a33660046112a3565b6105fd565b6102106102b6366004611279565b6106bf565b6102846102c936600461131a565b6106fb565b610250600b5481565b6102846102e536600461134e565b61078e565b6102506102f83660046112a3565b6001600160a01b031660009081526020819052604090205490565b600e5461021090600160a01b900460ff1681565b6102846103353660046112a3565b6107db565b610284610348366004611301565b61082c565b610250600c5481565b61028461036436600461134e565b610860565b600d5461037c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b60075461037c9061010090046001600160a01b031681565b6101e76108ad565b600e5461037c906001600160a01b031681565b6102106103d5366004611279565b6108bc565b6102106103e8366004611279565b610955565b610284610962565b600e5461021090600160a81b900460ff1681565b61025061041736600461136b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025060085481565b6102846104593660046112a3565b610997565b61028461046c36600461134e565b6109e8565b6060600380546104809061139e565b80601f01602080910402602001604051908101604052809291908181526020018280546104ac9061139e565b80156104f95780601f106104ce576101008083540402835291602001916104f9565b820191906000526020600020905b8154815290600101906020018083116104dc57829003601f168201915b5050505050905090565b6000610510338484610a2a565b5060015b92915050565b6000610527848484610b4e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105b15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105be8533858403610a2a565b506001949350505050565b60075461010090046001600160a01b031633146105f85760405162461bcd60e51b81526004016105a8906113d9565b600c55565b60075461010090046001600160a01b0316331461062c5760405162461bcd60e51b81526004016105a8906113d9565b6001600160a01b0381166000908152600f602052604090205460ff1661069e5760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e697065726044820152601760f91b60648201526084016105a8565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105109185906106f6908690611412565b610a2a565b60075461010090046001600160a01b0316331461072a5760405162461bcd60e51b81526004016105a8906113d9565b60095415801561073e5750600a8160ff1611155b801561074a5750600a54155b6107865760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b60448201526064016105a8565b60ff16600955565b60075461010090046001600160a01b031633146107bd5760405162461bcd60e51b81526004016105a8906113d9565b600e8054911515600160a01b0260ff60a01b19909216919091179055565b60075461010090046001600160a01b0316331461080a5760405162461bcd60e51b81526004016105a8906113d9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b60075461010090046001600160a01b0316331461085b5760405162461bcd60e51b81526004016105a8906113d9565b600b55565b60075461010090046001600160a01b0316331461088f5760405162461bcd60e51b81526004016105a8906113d9565b600e8054911515600160a81b0260ff60a81b19909216919091179055565b6060600480546104809061139e565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561093e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105a8565b61094b3385858403610a2a565b5060019392505050565b6000610510338484610b4e565b60075461010090046001600160a01b031633146109915760405162461bcd60e51b81526004016105a8906113d9565b43600a55565b60075461010090046001600160a01b031633146109c65760405162461bcd60e51b81526004016105a8906113d9565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60075461010090046001600160a01b03163314610a175760405162461bcd60e51b81526004016105a8906113d9565b6007805460ff1916911515919091179055565b6001600160a01b038316610a8c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a8565b6001600160a01b038216610aed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b588383610d14565b610b6157505050565b600e54600160a81b900460ff1615610c7a57600e546001600160a01b0383811691161415610bfb57600b548110158015610bae57506007546001600160a01b038481166101009092041614155b15610bfb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f742073656c6c207468697320616d6f756e7400000000000000000060448201526064016105a8565b600e546001600160a01b038481169116148015610c2b57506007546001600160a01b038381166101009092041614155b15610c7a57600c548110610c7a5760405162461bcd60e51b815260206004820152601660248201527510d85b9b9bdd08189d5e481d1a1a5cc8185b5bdd5b9d60521b60448201526064016105a8565b600e54600160a01b900460ff1615610d0457600e546001600160a01b0383811691161415610d04576000610cae8484610ed6565b90508015610cc757610cc184848461103a565b50505050565b60405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e74206e6f64657360701b60448201526064016105a8565b610d0f83838361103a565b505050565b6007546000906001600160a01b03848116610100909204161480610d4a57506007546001600160a01b0383811661010090920416145b15610d5757506001610514565b60075460ff161561051057600a54610dbf5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016105a8565b6001600160a01b0383166000908152600f602052604090205460ff1680610dfe57506001600160a01b0382166000908152600f602052604090205460ff165b15610e3e5760405162461bcd60e51b815260206004820152601060248201526f39b734b832b9103932b532b1ba32b21760811b60448201526064016105a8565b600a541561051057600954600a54610e56904361142a565b1015610510576001600160a01b0382166000908152600f60205260408120805460ff191660011790556008805491610e8d83611441565b90915550506040516001600160a01b03831681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a1506000610514565b6007546000906001600160a01b03848116610100909204161480610f0c57506007546001600160a01b0383811661010090920416145b15610f1957506001610514565b600d5460405163a77e282560e01b81526001600160a01b038581166004830152600092169063a77e282590602401602060405180830381865afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f88919061145c565b600d546040516340fb7ad960e01b81526001600160a01b038781166004830152929350600092909116906340fb7ad990602401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc9190611475565b905060008211801561100c575080155b8061101f575060028211801561101f5750805b1561102f57600192505050610514565b506000949350505050565b6001600160a01b03831661109e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a8565b6001600160a01b0382166111005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a8565b6001600160a01b038316600090815260208190526040902054818110156111785760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105a8565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906111af908490611412565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111fb91815260200190565b60405180910390a3610cc1565b600060208083528351808285015260005b8181101561123557858101830151858201604001528201611219565b81811115611247576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461127457600080fd5b919050565b6000806040838503121561128c57600080fd5b6112958361125d565b946020939093013593505050565b6000602082840312156112b557600080fd5b6112be8261125d565b9392505050565b6000806000606084860312156112da57600080fd5b6112e38461125d565b92506112f16020850161125d565b9150604084013590509250925092565b60006020828403121561131357600080fd5b5035919050565b60006020828403121561132c57600080fd5b813560ff811681146112be57600080fd5b801515811461134b57600080fd5b50565b60006020828403121561136057600080fd5b81356112be8161133d565b6000806040838503121561137e57600080fd5b6113878361125d565b91506113956020840161125d565b90509250929050565b600181811c908216806113b257607f821691505b602082108114156113d357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600990820152682737ba1027bbb732b960b91b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611425576114256113fc565b500190565b60008282101561143c5761143c6113fc565b500390565b6000600019821415611455576114556113fc565b5060010190565b60006020828403121561146e57600080fd5b5051919050565b60006020828403121561148757600080fd5b81516112be8161133d56fea2646970667358221220b49ba9abbce9dc3b7dc5a2049823e0a71abd74a30c15a53e1d0756b560634faf64736f6c634300080c0033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.