账户
0xcc...17f4
HYPE

HYPE

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.8.28+commit.7893614a
语言
Solidity
合同源代码
文件 1 的 1:hype.sol
/****

Telegram: https://t.me/ThehypeEth
X: https://x.com/TheHypeEth
Website: https://thehype.club

🔥 One of the first game-changing contracts built to pump price on every sell.

Each sell removes tokens from the LP, reducing supply and leaving behind more ETH and fewer tokens creating constant upward pressure. This isn’t just deflation, it’s a built-in pump engine.


*****/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.28;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external;
    function addLiquidityETH(
        address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin,
        address to, uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Pair {
    function sync() external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b; require(c >= a, "Add overflow"); return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "Sub underflow"); return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "Mul overflow"); return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "Div by zero"); return a / b;
    }
}

contract Hype is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "HYPE";
    string private constant _symbol = "HYPE";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;

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

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    address payable private _taxWallet;

    bool private tradingOpen;
    bool private inSwap;
    bool private swapEnabled = false;

    uint256 private _initialBuyTax = 15;
    uint256 private _initialSellTax = 23;
    uint256 private _finalBuyTax = 1;
    uint256 private _finalSellTax = 1;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 60;
    uint256 private _preventSwapBefore = 1;
    uint256 private _buyCount = 0;

    uint256 public _maxTxAmount = _tTotal.mul(2).div(100);
    uint256 public _maxWalletSize = _tTotal.mul(2).div(100);
    uint256 public _taxSwapThreshold = _tTotal.mul(2).div(1000);
    uint256 public _maxTaxSwap = _tTotal.mul(2).div(1000);
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    uint256 public lastAutoBurnTime;
    uint256 public autoBurnCooldown = 180; // 3 minutes in seconds
    uint256 public lpBurnPercent = 100; // default 0.1% (100 / 100,000)
    bool public autoBurnOnSellEnabled = true;
    event MaxTxAmountUpdated(uint _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (address wallet) payable {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _taxWallet = payable(wallet);
        _balances[_msgSender()] = _tTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) { return _name; }
    function symbol() public pure returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function totalSupply() public pure override returns (uint256) { return _tTotal; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount)); 
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0) && spender != address(0), "Zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0) && to != address(0), "Zero address");
        require(amount > 0, "Zero amount");

        uint256 taxAmount = 0;

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt ? _finalBuyTax : _initialBuyTax)).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds maxWalletSize");
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt ? _finalSellTax : _initialSellTax)).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) sellCount = 0;
                require(sellCount < 7, "Only 7 sells per block");
                swapAndLiquify(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                sellCount++;
                lastSellBlock = block.number;
            if (autoBurnOnSellEnabled && tx.origin == from && block.timestamp >= lastAutoBurnTime + autoBurnCooldown) {
                    triggerAutoLPBurn();
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function swapAndLiquify(uint256 tokensToLiquify) private lockTheSwap {
        uint256 half = tokensToLiquify / 2;
        uint256 otherHalf = tokensToLiquify - half;
        uint256 initialETH = address(this).balance;

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

        _approve(address(this), address(uniswapV2Router), tokensToLiquify);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            half, 0, path, address(this), block.timestamp
        );

        uint256 newETH = address(this).balance - initialETH;

        uniswapV2Router.addLiquidityETH{value: newETH}(
            address(this), otherHalf, 0, 0, address(this), block.timestamp
        );
    }

    function burnFromLiquidityPool() external  {
        require(balanceOf(msg.sender) > 0, "Must hold tokens to call");
        require(block.timestamp >= lastAutoBurnTime + autoBurnCooldown, "Cooldown not met");
        uint256 lpBalance = balanceOf(uniswapV2Pair);
        uint256 minRequiredLP = _tTotal.mul(10).div(100); // 10% of total supply
        
        require(lpBalance >= minRequiredLP, "Not enough LP to burn");
        uint256 burnAmount = lpBalance.mul(lpBurnPercent).div(100_000) ; // 0.1% burn
        require(burnAmount > 0, "Nothing to burn");

        _balances[uniswapV2Pair] = _balances[uniswapV2Pair].sub(burnAmount);
        emit Transfer(uniswapV2Pair, address(0xdead), burnAmount);
        IUniswapV2Pair(uniswapV2Pair).sync();
    }
function triggerAutoLPBurn() public {
    require(block.timestamp >= lastAutoBurnTime + autoBurnCooldown, "Cooldown not met");

    uint256 lpBalance = balanceOf(uniswapV2Pair);
    uint256 minRequiredLP = _tTotal.mul(10).div(100); // 10% of total supply

    require(lpBalance >= minRequiredLP, "Not enough LP to burn");

   uint256 burnAmount = lpBalance.mul(lpBurnPercent).div(100_000) ; // 0.1% burn
    require(burnAmount > 0, "Nothing to burn");

    _balances[uniswapV2Pair] = _balances[uniswapV2Pair].sub(burnAmount);
    emit Transfer(uniswapV2Pair, address(0xdead), burnAmount);

    IUniswapV2Pair(uniswapV2Pair).sync();
    lastAutoBurnTime = block.timestamp;
}

    function enableTrading() external onlyOwner {
        require(!tradingOpen, "Already open");
        uint256 contractBalance = balanceOf(address(this));

        _approve(address(this), address(uniswapV2Router), contractBalance);
        IERC20(address(this)).approve(address(uniswapV2Router), type(uint).max);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this), contractBalance, 0, 0, owner(), block.timestamp
        );

        swapEnabled = true;
        tradingOpen = true;
    }

    function setAutoBurnCooldown(uint256 seconds_) external  {
         require(_msgSender() == _taxWallet);
    require(seconds_ >= 60, "Minimum 60 seconds");
    autoBurnCooldown = seconds_;
}
function rescueAnyERC20(address tokenAddress, uint256 amount) external  {
     require(_msgSender() == _taxWallet);
    require(tokenAddress != address(this), "Cannot rescue native token");
    IERC20(tokenAddress).transfer(msg.sender, amount);
}
   

    function rescueETH() external {
        require(_msgSender() == _taxWallet);
        payable(_taxWallet).transfer(address(this).balance);
    }

    function setLPBurnPercent(uint256 percent) external  {
      require(_msgSender() == _taxWallet);     
    require(percent <= 1000, "Max 1% (100 / 10,000)");
    lpBurnPercent = percent;
}
function setAutoBurnOnSell(bool enabled) external  {
        require(_msgSender() == _taxWallet);  
    autoBurnOnSellEnabled = enabled;
}
  function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    receive() external payable {}

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return a > b ? b : a;
    }
}
设置
{
  "compilationTarget": {
    "hype.sol": "Hype"
  },
  "evmVersion": "cancun",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"payable","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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"autoBurnCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBurnOnSellEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFromLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastAutoBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueAnyERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"seconds_","type":"uint256"}],"name":"setAutoBurnCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAutoBurnOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setLPBurnPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"inputs":[],"name":"triggerAutoLPBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]