Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0xB9CA88c45172111ed8a96000fc310B4156de48Bf
Balance 0 ETH
Nonce 1
Code Size 4568 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

4568 bytes
0x608060405260043610610037575f3560e01c8063418e6ecc1461004257806351cff8d91461006a5780638da5cb5b146100925761003e565b3661003e57005b5f5ffd5b34801561004d575f5ffd5b5061006860048036038101906100639190610a8f565b6100bc565b005b348015610075575f5ffd5b50610090600480360381019061008b9190610b7a565b610594565b005b34801561009d575f5ffd5b506100a6610746565b6040516100b39190610bb4565b60405180910390f35b7f000000000000000000000000dc26763f34db5cdafaf007025454b67fb4963c9673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461014a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014190610c27565b60405180910390fd5b5f858590501161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018690610c8f565b60405180910390fd5b5f83835f8181106101a3576101a2610cad565b5b90506020020160208101906101b89190610b7a565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101f09190610bb4565b602060405180830381865afa15801561020b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022f9190610cee565b905081811015610274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026b90610d63565b60405180910390fd5b5f8290505f5f90505b878790508110156104a55785858281811061029b5761029a610cad565b5b90506020020160208101906102b09190610b7a565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8989848181106102de576102dd610cad565b5b90506020020160208101906102f39190610b7a565b846040518363ffffffff1660e01b8152600401610311929190610d90565b6020604051808303815f875af115801561032d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103519190610dec565b505f5f5f6103ad8b8b8681811061036b5761036a610cad565b5b90506020020160208101906103809190610b7a565b8a8a8781811061039357610392610cad565b5b90506020020160208101906103a89190610b7a565b61076a565b9250925092508a8a858181106103c6576103c5610cad565b5b90506020020160208101906103db9190610b7a565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8484305f67ffffffffffffffff81111561041357610412610e17565b5b6040519080825280601f01601f1916602001820160405280156104455781602001600182028036833780820191505090505b506040518563ffffffff1660e01b81526004016104659493929190610eb4565b5f604051808303815f87803b15801561047c575f5ffd5b505af115801561048e573d5f5f3e3d5ffd5b50505050809450505050808060010191505061027d565b505f85855f8181106104ba576104b9610cad565b5b90506020020160208101906104cf9190610b7a565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105079190610bb4565b602060405180830381865afa158015610522573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105469190610cee565b905082811161058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190610f48565b60405180910390fd5b5050505050505050565b7f000000000000000000000000dc26763f34db5cdafaf007025454b67fb4963c9673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061990610c27565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161065c9190610bb4565b602060405180830381865afa158015610677573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069b9190610cee565b90505f811115610742578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000dc26763f34db5cdafaf007025454b67fb4963c96836040518363ffffffff1660e01b8152600401610700929190610d90565b6020604051808303815f875af115801561071c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107409190610dec565b505b5050565b7f000000000000000000000000dc26763f34db5cdafaf007025454b67fb4963c9681565b5f5f5f5f8573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107db9190610f7a565b90505f5f8773ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610828573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084c9190611021565b50915091505f5f8473ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036108b157836dffffffffffffffffffffffffffff169150826dffffffffffffffffffffffffffff1690506108d8565b826dffffffffffffffffffffffffffff169150836dffffffffffffffffffffffffffff1690505b5f828a73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b81526004016109139190610bb4565b602060405180830381865afa15801561092e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109529190610cee565b61095c919061109e565b90505f6103e58261096d91906110d1565b9050806103e88561097e91906110d1565b6109889190611112565b838261099491906110d1565b61099e9190611172565b97508673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16036109de575f99508798506109e5565b8799505f98505b505050505050509250925092565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112610a1c57610a1b6109fb565b5b8235905067ffffffffffffffff811115610a3957610a386109ff565b5b602083019150836020820283011115610a5557610a54610a03565b5b9250929050565b5f819050919050565b610a6e81610a5c565b8114610a78575f5ffd5b50565b5f81359050610a8981610a65565b92915050565b5f5f5f5f5f60608688031215610aa857610aa76109f3565b5b5f86013567ffffffffffffffff811115610ac557610ac46109f7565b5b610ad188828901610a07565b9550955050602086013567ffffffffffffffff811115610af457610af36109f7565b5b610b0088828901610a07565b93509350506040610b1388828901610a7b565b9150509295509295909350565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b4982610b20565b9050919050565b610b5981610b3f565b8114610b63575f5ffd5b50565b5f81359050610b7481610b50565b92915050565b5f60208284031215610b8f57610b8e6109f3565b5b5f610b9c84828501610b66565b91505092915050565b610bae81610b3f565b82525050565b5f602082019050610bc75f830184610ba5565b92915050565b5f82825260208201905092915050565b7f4e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f610c11600983610bcd565b9150610c1c82610bdd565b602082019050919050565b5f6020820190508181035f830152610c3e81610c05565b9050919050565b7f4e6f2070616972730000000000000000000000000000000000000000000000005f82015250565b5f610c79600883610bcd565b9150610c8482610c45565b602082019050919050565b5f6020820190508181035f830152610ca681610c6d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050610ce881610a65565b92915050565b5f60208284031215610d0357610d026109f3565b5b5f610d1084828501610cda565b91505092915050565b7f496e73756666696369656e7420574554482062616c616e6365000000000000005f82015250565b5f610d4d601983610bcd565b9150610d5882610d19565b602082019050919050565b5f6020820190508181035f830152610d7a81610d41565b9050919050565b610d8a81610a5c565b82525050565b5f604082019050610da35f830185610ba5565b610db06020830184610d81565b9392505050565b5f8115159050919050565b610dcb81610db7565b8114610dd5575f5ffd5b50565b5f81519050610de681610dc2565b92915050565b5f60208284031215610e0157610e006109f3565b5b5f610e0e84828501610dd8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610e8682610e44565b610e908185610e4e565b9350610ea0818560208601610e5e565b610ea981610e6c565b840191505092915050565b5f608082019050610ec75f830187610d81565b610ed46020830186610d81565b610ee16040830185610ba5565b8181036060830152610ef38184610e7c565b905095945050505050565b7f4e6f2070726f666974206d6164652066726f6d206f776e2066756e64730000005f82015250565b5f610f32601d83610bcd565b9150610f3d82610efe565b602082019050919050565b5f6020820190508181035f830152610f5f81610f26565b9050919050565b5f81519050610f7481610b50565b92915050565b5f60208284031215610f8f57610f8e6109f3565b5b5f610f9c84828501610f66565b91505092915050565b5f6dffffffffffffffffffffffffffff82169050919050565b610fc781610fa5565b8114610fd1575f5ffd5b50565b5f81519050610fe281610fbe565b92915050565b5f63ffffffff82169050919050565b61100081610fe8565b811461100a575f5ffd5b50565b5f8151905061101b81610ff7565b92915050565b5f5f5f60608486031215611038576110376109f3565b5b5f61104586828701610fd4565b935050602061105686828701610fd4565b92505060406110678682870161100d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110a882610a5c565b91506110b383610a5c565b92508282039050818111156110cb576110ca611071565b5b92915050565b5f6110db82610a5c565b91506110e683610a5c565b92508282026110f481610a5c565b9150828204841483151761110b5761110a611071565b5b5092915050565b5f61111c82610a5c565b915061112783610a5c565b925082820190508082111561113f5761113e611071565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61117c82610a5c565b915061118783610a5c565b92508261119757611196611145565b5b82820490509291505056fea2646970667358221220ea36b1161498e781797819675814d868dbb11dd38e4455d127a4b134230b3cdc64736f6c634300081f0033

Verified Source Code Full Match

Compiler: v0.8.31+commit.fd3a2265 EVM: osaka Optimization: No
ArbitrageNoFlashExecutor.sol 121 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);
    function balanceOf(address owner) external view returns (uint256);
}

interface IUniswapV2Pair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
}

contract ArbitrageExecutorNoFlash {
    address public immutable owner;

    constructor() {
        owner = msg.sender;
    }

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

    // 允许合约接收 ETH 并自动换成 WETH 的话需要额外逻辑,这里假设你直接转入 WETH
    receive() external payable {}

    /**
     * @dev 直接使用合约自有 WETH 执行套利
     * @param _pairs 交易对地址数组
     * @param _tokens 代币路径数组 (tokens[i] 是 pairs[i] 的输入代币)
     * @param _amountIn 起始投入的 WETH 数量
     */
    function execute(
        address[] calldata _pairs,
        address[] calldata _tokens,
        uint256 _amountIn
    ) external onlyOwner {
        require(_pairs.length > 0, "No pairs");
        
        // 1. 检查合约 WETH 余额是否足够
        uint256 balanceBefore = IERC20(_tokens[0]).balanceOf(address(this));
        require(balanceBefore >= _amountIn, "Insufficient WETH balance");

        uint256 currentAmount = _amountIn;

        // 2. 循环执行每一跳
        for (uint256 i = 0; i < _pairs.length; i++) {
            // 将当前代币转入对应的池子 (Interaction)
            IERC20(_tokens[i]).transfer(_pairs[i], currentAmount);

            // 计算下一跳应得的金额 (Calculation)
            // 这里复用之前的计算逻辑,确保不会 Stack too deep
            (uint256 amount0Out, uint256 amount1Out, uint256 amountOutput) = _calculateSwapAmounts(_pairs[i], _tokens[i]);

            // 执行交换 (Interaction)
            // 注意:data 传空 bytes(0),这样就不会触发回调,直接完成转账
            IUniswapV2Pair(_pairs[i]).swap(
                amount0Out, 
                amount1Out, 
                address(this), 
                new bytes(0) 
            );

            currentAmount = amountOutput;
        }

        // 3. 最终检查:确保最后换回来的 WETH 比投入的多
        uint256 balanceAfter = IERC20(_tokens[0]).balanceOf(address(this));
        require(balanceAfter > balanceBefore, "No profit made from own funds");
    }

    /**
     * @dev 纯计算函数,防止堆栈过深
     */
    function _calculateSwapAmounts(address _pair, address _inputToken) 
        internal 
        view 
        returns (uint256 amount0Out, uint256 amount1Out, uint256 amountOutput) 
    {
        address token0 = IUniswapV2Pair(_pair).token0();
        (uint112 r0, uint112 r1, ) = IUniswapV2Pair(_pair).getReserves();
        
        uint256 reserveIn;
        uint256 reserveOut;

        if (_inputToken == token0) {
            reserveIn = uint256(r0);
            reserveOut = uint256(r1);
        } else {
            reserveIn = uint256(r1);
            reserveOut = uint256(r0);
        }

        // 获取池子中实际收到的金额
        uint256 amountInput = IERC20(_inputToken).balanceOf(_pair) - reserveIn;

        // Uniswap V2 恒定乘积公式
        uint256 amountInWithFee = amountInput * 997;
        amountOutput = (amountInWithFee * reserveOut) / ((reserveIn * 1000) + amountInWithFee);

        if (_inputToken == token0) {
            amount0Out = 0;
            amount1Out = amountOutput;
        } else {
            amount0Out = amountOutput;
            amount1Out = 0;
        }
    }

    // 提现函数,用于提取套利利润
    function withdraw(address _token) external onlyOwner {
        uint256 balance = IERC20(_token).balanceOf(address(this));
        if (balance > 0) {
            IERC20(_token).transfer(owner, balance);
        }
    }
}

Read Contract

owner 0x8da5cb5b → address

Write Contract 2 functions

These functions modify contract state and require a wallet transaction to execute.

execute 0x418e6ecc
address[] _pairs
address[] _tokens
uint256 _amountIn
withdraw 0x51cff8d9
address _token

Token Balances (1)

View Transfers →
WETH 0.012

Recent Transactions

No transactions found for this address