AllTokensToLPFactoryOptimized

Description:

Decentralized Finance (DeFi) protocol contract providing Mintable, Swap, Liquidity, Factory functionality.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "contracts/EthereumTokenFactoryOptimized.sol": {
      "content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.30;\r
\r
// Uniswap V3 interfaces\r
interface INonfungiblePositionManager {\r
    struct MintParams {\r
        address token0;\r
        address token1;\r
        uint24 fee;\r
        int24 tickLower;\r
        int24 tickUpper;\r
        uint256 amount0Desired;\r
        uint256 amount1Desired;\r
        uint256 amount0Min;\r
        uint256 amount1Min;\r
        address recipient;\r
        uint256 deadline;\r
    }\r
\r
    struct CollectParams {\r
        uint256 tokenId;\r
        address recipient;\r
        uint128 amount0Max;\r
        uint128 amount1Max;\r
    }\r
\r
    function mint(MintParams calldata params) external payable returns (\r
        uint256 tokenId,\r
        uint128 liquidity,\r
        uint256 amount0,\r
        uint256 amount1\r
    );\r
\r
    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\r
    function ownerOf(uint256 tokenId) external view returns (address owner);\r
}\r
\r
interface IUniswapV3Factory {\r
    function createPool(address tokenA, address tokenB, uint24 fee) external returns (address pool);\r
    function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool);\r
}\r
\r
interface ISwapRouter {\r
    struct ExactInputSingleParams {\r
        address tokenIn;\r
        address tokenOut;\r
        uint24 fee;\r
        address recipient;\r
        uint256 deadline;\r
        uint256 amountIn;\r
        uint256 amountOutMinimum;\r
        uint160 sqrtPriceLimitX96;\r
    }\r
\r
    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\r
}\r
\r
interface IERC20 {\r
    function balanceOf(address account) external view returns (uint256);\r
    function approve(address spender, uint256 amount) external returns (bool);\r
    function totalSupply() external view returns (uint256);\r
}\r
\r
interface IWETH {\r
    function deposit() external payable;\r
    function balanceOf(address) external view returns (uint256);\r
    function transfer(address, uint256) external returns (bool);\r
    function approve(address spender, uint256 amount) external returns (bool);\r
    function withdraw(uint256) external;\r
}\r
\r
// Enhanced AutoAntiSniperERC20 with optimized anti-sniper mechanics\r
contract AutoAntiSniperERC20 {\r
    string public name;\r
    string public symbol;\r
    uint8 public decimals = 18;\r
    uint256 public totalSupply = 1000000000 * 10**18; // 1 billion tokens\r
    \r
    mapping(address => uint256) public balanceOf;\r
    mapping(address => mapping(address => uint256)) public allowance;\r
    \r
    address public factory;\r
    address public creator;\r
    uint256 public launchTime;\r
    uint256 public devBuyWindow = 300; // 5 minutes\r
    \r
    event Transfer(address indexed from, address indexed to, uint256 value);\r
    event Approval(address indexed owner, address indexed spender, uint256 value);\r
    \r
    modifier tradingAllowed() {\r
        // Always allow factory operations and Uniswap contracts\r
        if (msg.sender == factory || \r
            msg.sender == creator ||\r
            msg.sender == 0xC36442b4a4522E871399CD717aBDD847Ab11FE88 || // Position Manager\r
            msg.sender == 0xE592427A0AEce92De3Edee1F18E0157C05861564 || // Swap Router  \r
            tx.origin == creator || \r
            msg.sender == 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) { // WETH\r
            _;\r
            return;\r
        }\r
        \r
        // Enhanced anti-sniper: block during dev window\r
        if (block.timestamp < launchTime + devBuyWindow) {\r
            revert("Dev buy window active");\r
        }\r
        _;\r
    }\r
    \r
    constructor(string memory _name, string memory _symbol, address _creator) {\r
        name = _name;\r
        symbol = _symbol;\r
        creator = _creator;\r
        factory = msg.sender;\r
        launchTime = block.timestamp;\r
        balanceOf[factory] = totalSupply;\r
        emit Transfer(address(0), factory, totalSupply);\r
    }\r
    \r
    function transfer(address to, uint256 amount) external tradingAllowed returns (bool) {\r
        require(to != address(0));\r
        require(balanceOf[msg.sender] >= amount);\r
        \r
        balanceOf[msg.sender] -= amount;\r
        balanceOf[to] += amount;\r
        emit Transfer(msg.sender, to, amount);\r
        return true;\r
    }\r
    \r
    function approve(address spender, uint256 amount) external returns (bool) {\r
        require(spender != address(0));\r
        allowance[msg.sender][spender] = amount;\r
        emit Approval(msg.sender, spender, amount);\r
        return true;\r
    }\r
    \r
    function transferFrom(address from, address to, uint256 amount) external tradingAllowed returns (bool) {\r
        require(from != address(0));\r
        require(to != address(0));\r
        require(balanceOf[from] >= amount);\r
        require(allowance[from][msg.sender] >= amount);\r
        \r
        balanceOf[from] -= amount;\r
        balanceOf[to] += amount;\r
        allowance[from][msg.sender] -= amount;\r
        emit Transfer(from, to, amount);\r
        return true;\r
    }\r
}\r
\r
contract AllTokensToLPFactoryOptimized {\r
    address public owner;\r
    \r
    mapping(uint256 => address) public tokenCreators;\r
    mapping(address => uint256) public creatorFees;\r
    mapping(address => uint256) public userTokenCount;\r
    uint256 public totalFees;\r
    uint256 public tokenCounter;\r
    \r
    // Uniswap V3 addresses on Ethereum mainnet\r
    address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\r
    address constant UNISWAP_V3_FACTORY = 0x1F98431c8aD98523631AE4a59f267346ea31F984;\r
    address constant POSITION_MANAGER = 0xC36442b4a4522E871399CD717aBDD847Ab11FE88;\r
    address constant SWAP_ROUTER = 0xE592427A0AEce92De3Edee1F18E0157C05861564;\r
    \r
    // Price range ticks for full range liquidity\r
    int24 constant TICK_LOWER = -887200;\r
    int24 constant TICK_UPPER = 887200;\r
    \r
    uint256 constant MIN_SWAP_AMOUNT = 1000 * 10**18;\r
    uint256 constant CREATOR_SHARE = 50;\r
    uint256 constant PLATFORM_SHARE = 50;\r
    uint256 constant REQUIRED_ETH = 0.00005 ether;\r
    \r
    event TokenCreated(address indexed creator, address indexed tokenAddress, string name, string symbol, uint256 tokenId, address pool, int24 tickLower, int24 tickUpper);\r
    event ExcessFundsSent(address indexed creator, uint256 amount, address indexed recipient);\r
    event FeesCollected(uint256 indexed tokenId, uint256 ethAmount, uint256 tokenAmount, uint256 swappedETH);\r
    event TokensDirectToCreator(address indexed creator, address indexed tokenAddress, uint256 amount);\r
    event CreatorWithdraw(address indexed creator, uint256 ethAmount);\r
    event PlatformWithdraw(uint256 ethAmount);\r
    event AllTokensDeposited(address indexed tokenAddress, uint256 totalTokens, uint256 finalBalance);\r
    event TokenFeesWithdrawn(address indexed creator, address indexed tokenAddress, uint256 amount);\r
    \r
    modifier onlyCreatorOrAdmin(uint256 tokenId) {\r
        address creator = tokenCreators[tokenId];\r
        require(creator == msg.sender || owner == msg.sender, "Not authorized");\r
        _;\r
    }\r
    \r
    modifier onlyOwner() {\r
        require(msg.sender == owner, "Not owner");\r
        _;\r
    }\r
    \r
    constructor() {\r
        owner = msg.sender;\r
    }\r
    \r
    function createToken(string memory name, string memory symbol) external payable returns (address tokenAddress, uint256 tokenId) {\r
        require(msg.value >= REQUIRED_ETH);\r
        require(bytes(name).length > 0 && bytes(name).length <= 32);\r
        require(bytes(symbol).length > 0 && bytes(symbol).length <= 10);\r
        \r
        uint256 liquidityAmount = REQUIRED_ETH;\r
        uint256 excessAmount = msg.value - liquidityAmount;\r
        \r
        // Deploy token with optimized address generation\r
        tokenAddress = _deployTokenWithOptimizedAddress(name, symbol, msg.sender);\r
        \r
        // Create pool and deposit tokens\r
        address pool;\r
        (tokenId, pool) = _createFullRangeLP(tokenAddress, liquidityAmount);\r
        \r
        tokenCreators[tokenId] = msg.sender;\r
        \r
        // Send excess funds to platform admin\r
        if (excessAmount > 0) {\r
            (bool success,) = payable(owner).call{value: excessAmount}("");\r
            require(success);\r
            emit ExcessFundsSent(msg.sender, excessAmount, owner);\r
        }\r
        \r
        emit TokenCreated(msg.sender, tokenAddress, name, symbol, tokenId, pool, TICK_LOWER, TICK_UPPER);\r
    }\r
    \r
    // OPTIMIZED ADDRESS GENERATION - Biased toward high addresses\r
    function _deployTokenWithOptimizedAddress(string memory name, string memory symbol, address creator) internal returns (address) {\r
        uint256 saltNonce = 0;\r
        address predictedAddress;\r
        \r
        // Generate high-entropy base value biased toward higher addresses\r
        uint256 baseEntropy = uint256(keccak256(abi.encodePacked(\r
            block.timestamp,\r
            block.prevrandao, // More random than block.difficulty  \r
            creator,\r
            name,\r
            symbol,\r
            address(this)\r
        )));\r
        \r
        // Bias the entropy toward higher values\r
        baseEntropy = baseEntropy | 0x8000000000000000000000000000000000000000000000000000000000000000;\r
        \r
        do {\r
            // Create salt with mathematical bias toward high addresses\r
            bytes32 salt = keccak256(abi.encodePacked(\r
                baseEntropy + (saltNonce * 0xffffffffffffffffffffffffffffffffffffffffffffffff), // Large increment\r
                name,\r
                symbol, \r
                creator,\r
                block.timestamp,\r
                saltNonce\r
            ));\r
            \r
            predictedAddress = _computeCreate2Address(salt, name, symbol, creator);\r
            saltNonce++;\r
            \r
            // Increased limit for Ethereum mainnet with better error message\r
            require(saltNonce < 5000, "Could not find valid address after 5000 attempts");\r
        } while (predictedAddress <= WETH);\r
        \r
        // Deploy with the successful salt\r
        bytes32 finalSalt = keccak256(abi.encodePacked(\r
            baseEntropy + ((saltNonce - 1) * 0xffffffffffffffffffffffffffffffffffffffffffffffff),\r
            name,\r
            symbol,\r
            creator,\r
            block.timestamp,\r
            saltNonce - 1\r
        ));\r
        \r
        return _deployTokenWithSalt(finalSalt, name, symbol, creator);\r
    }\r
    \r
    // Compute CREATE2 address without deploying\r
    function _computeCreate2Address(bytes32 salt, string memory name, string memory symbol, address creator) internal view returns (address) {\r
        bytes memory bytecode = abi.encodePacked(\r
            type(AutoAntiSniperERC20).creationCode,\r
            abi.encode(name, symbol, creator)\r
        );\r
        \r
        bytes32 hash = keccak256(\r
            abi.encodePacked(\r
                bytes1(0xff),\r
                address(this),\r
                salt,\r
                keccak256(bytecode)\r
            )\r
        );\r
        \r
        return address(uint160(uint256(hash)));\r
    }\r
    \r
    // Deploy token with specific salt\r
    function _deployTokenWithSalt(bytes32 salt, string memory name, string memory symbol, address creator) internal returns (address) {\r
        bytes memory bytecode = abi.encodePacked(\r
            type(AutoAntiSniperERC20).creationCode,\r
            abi.encode(name, symbol, creator)\r
        );\r
        \r
        address tokenAddress;\r
        assembly {\r
            tokenAddress := create2(0, add(bytecode, 0x20), mload(bytecode), salt)\r
        }\r
        \r
        require(tokenAddress != address(0), "Token deployment failed");\r
        require(tokenAddress > WETH, "Generated address not greater than WETH");\r
        \r
        return tokenAddress;\r
    }\r
    \r
    // Create full range liquidity pool\r
    function _createFullRangeLP(address tokenAddress, uint256 liquidityAmount) internal returns (uint256 tokenId, address pool) {\r
        // Wrap ETH to WETH\r
        IWETH(WETH).deposit{value: liquidityAmount}();\r
        \r
        // Check token balance\r
        uint256 tokenBalance = IERC20(tokenAddress).balanceOf(address(this));\r
        require(tokenBalance >= 1000000000 * 10**18, "Insufficient token balance");\r
        \r
        // Determine token order (tokenAddress > WETH is guaranteed by our generation)\r
        address token0 = WETH;\r
        address token1 = tokenAddress;\r
        \r
        // Create pool\r
        pool = IUniswapV3Factory(UNISWAP_V3_FACTORY).createPool(token0, token1, 10000);\r
        \r
        // Approve tokens\r
        IERC20(tokenAddress).approve(POSITION_MANAGER, tokenBalance);\r
        IWETH(WETH).approve(POSITION_MANAGER, liquidityAmount);\r
        \r
        // Mint position\r
        INonfungiblePositionManager.MintParams memory params = INonfungiblePositionManager.MintParams({\r
            token0: token0,\r
            token1: token1, \r
            fee: 10000,\r
            tickLower: TICK_LOWER,\r
            tickUpper: TICK_UPPER,\r
            amount0Desired: liquidityAmount,\r
            amount1Desired: tokenBalance,\r
            amount0Min: 0,\r
            amount1Min: 0,\r
            recipient: address(this),\r
            deadline: block.timestamp + 300\r
        });\r
        \r
        (tokenId,,,) = INonfungiblePositionManager(POSITION_MANAGER).mint(params);\r
        \r
        // Check remaining token balance\r
        uint256 remainingTokens = IERC20(tokenAddress).balanceOf(address(this));\r
        emit AllTokensDeposited(tokenAddress, tokenBalance, remainingTokens);\r
        \r
        return (tokenId, pool);\r
    }\r
    \r
    // Rest of the contract functions remain the same...\r
    function collectFees(uint256 tokenId) external onlyCreatorOrAdmin(tokenId) {\r
        INonfungiblePositionManager.CollectParams memory params = INonfungiblePositionManager.CollectParams({\r
            tokenId: tokenId,\r
            recipient: address(this),\r
            amount0Max: type(uint128).max,\r
            amount1Max: type(uint128).max\r
        });\r
        \r
        INonfungiblePositionManager(POSITION_MANAGER).collect(params);\r
    }\r
    \r
    function withdrawCreatorFees() external {\r
        uint256 amount = creatorFees[msg.sender];\r
        require(amount > 0, "No fees to withdraw");\r
        \r
        creatorFees[msg.sender] = 0;\r
        payable(msg.sender).transfer(amount);\r
        \r
        emit CreatorWithdraw(msg.sender, amount);\r
    }\r
    \r
    function withdrawPlatformFees() external onlyOwner {\r
        uint256 amount = totalFees;\r
        require(amount > 0, "No fees to withdraw");\r
        \r
        totalFees = 0;\r
        payable(owner).transfer(amount);\r
        \r
        emit PlatformWithdraw(amount);\r
    }\r
}"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "evmVersion": "paris",
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    }
  }
}}

Tags:
ERC20, DeFi, Mintable, Swap, Liquidity, Factory|addr:0xdf72681e0639121cc62050976267febccd151be3|verified:true|block:23637461|tx:0x6201fc44a4c448c0915528bdaad9ec7f4e45a60c201a01a25fd63355f2566bc9|first_check:1761301434

Submitted on: 2025-10-24 12:23:57

Comments

Log in to comment.

No comments yet.