UniQuoteChecker

Description:

Smart contract deployed on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IV4Quoter {
    struct PoolKey {
        address currency0;
        address currency1;
        uint24 fee;
        int24 tickSpacing;
        address hooks;
    }

    struct QuoteExactSingleParams {
        PoolKey poolKey;
        bool zeroForOne;
        uint128 exactAmount;
        bytes hookData;
    }

    function quoteExactInputSingle(QuoteExactSingleParams memory params)
        external
        returns (uint256 amountOut, uint256 gasEstimate);
}

interface IV3Quoter {
    function quoteExactInputSingle(
        address tokenIn,
        address tokenOut,
        uint24 fee,
        uint256 amountIn,
        uint160 sqrtPriceLimitX96
    ) external returns (uint256 amountOut);
}

contract UniQuoteChecker {
    address public constant TOKEN_SELL = 0x94314a14Df63779c99C0764a30e0CD22fA78fC0E; // 代币
    address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address public constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    address public constant ETH = 0x0000000000000000000000000000000000000000;

    address public constant V4_QUOTER = 0x52F0E24D1c21C8A0cB1e5a5dD6198556BD9E1203;
    address public constant V3_QUOTER = 0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6;

    // address public owner;

    constructor() {
        // owner = msg.sender;
    }

    /// @notice 接收 sellAmount (token数量) 和 usdtBaseline (基准值),并附带 ETH 一起调用
    function checkAndPay(uint128 sellAmount, uint256 usdtBaseline) external payable {
        // 1. V4 查询 token -> ETH
        IV4Quoter.QuoteExactSingleParams memory params = IV4Quoter.QuoteExactSingleParams({
            poolKey: IV4Quoter.PoolKey({
                currency0: ETH,
                currency1: TOKEN_SELL,
                fee: 3000, // 0.3% 假设
                tickSpacing: 60,
                hooks: address(0)
            }),
            zeroForOne: true, // token -> ETH
            exactAmount: sellAmount,
            hookData: ""
        });

        (uint256 ethAmount, ) = IV4Quoter(V4_QUOTER).quoteExactInputSingle(params);

        // 2. V3 查询 ETH -> USDT
        uint256 usdtOut = IV3Quoter(V3_QUOTER).quoteExactInputSingle(
            WETH,
            USDT,
            100, // 0.01%
            ethAmount,
            0
        );

        // 3. 判断差值,如果大于 30 USDT (USDT是6位小数),把接收的 ETH 全部打给 builder
        if (usdtOut > usdtBaseline + 30 * 1e6) {
            payable(block.coinbase).transfer(msg.value);
        }
    }
}

Tags:
addr:0x04e21fc83b2d42edcdcbf6f2b54bf45b32ff2a53|verified:true|block:23437182|tx:0xf50999dd5ec8a96666a8cdf04a305cd92acb098f7e0d75bb65a2a0b99a2b185a|first_check:1758790323

Submitted on: 2025-09-25 10:52:04

Comments

Log in to comment.

No comments yet.