Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0x6c2F544878ECC65451149Da960Efd8CD92572a33
Balance 0 ETH
Nonce 1
Code Size 5786 bytes
Indexed Transactions 0 (1 on-chain, 0% indexed)
External Etherscan · Sourcify

Contract Bytecode

5786 bytes
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063c4b3094911610066578063c4b309491461023e578063d82649201461025c578063e31a63811461027a578063f586c6d914610298576100f5565b80638da5cb5b146101c85780639538fb92146101e6578063a87eba3c14610204578063ad5c464814610220576100f5565b806372133ede116100d357806372133ede146101525780637535d24614610170578063894760691461018e57806389a30271146101aa576100f5565b80631b11d0ff146100fa578063250e6de01461012a5780634c20378614610134575b600080fd5b610114600480360381019061010f9190610e8b565b6102b6565b6040516101219190610f40565b60405180910390f35b610132610561565b005b61013c61079e565b6040516101499190610f6a565b60405180910390f35b61015a6107a3565b6040516101679190610f94565b60405180910390f35b6101786107bb565b604051610185919061100e565b60405180910390f35b6101a860048036038101906101a39190611029565b6107e1565b005b6101b2610a7b565b6040516101bf9190610f94565b60405180910390f35b6101d0610a93565b6040516101dd9190610f94565b60405180910390f35b6101ee610ab7565b6040516101fb9190610f6a565b60405180910390f35b61021e60048036038101906102199190611056565b610abe565b005b610228610d04565b6040516102359190610f94565b60405180910390f35b610246610d1c565b6040516102539190610f94565b60405180910390f35b610264610d40565b6040516102719190610f94565b60405180910390f35b610282610d58565b60405161028f9190610f6a565b60405180910390f35b6102a0610d5e565b6040516102ad9190610f94565b60405180910390f35b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461033a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610331906110e0565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c19061114c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361045b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610452906111b8565b60405180910390fd5b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687896104ba9190611207565b6040518363ffffffff1660e01b81526004016104d792919061125d565b6020604051808303816000875af11580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a91906112b2565b507fbb389fef146a945fdbdba0905cbd912a9a73eef988e96dce35e0d57cc180a315600060405161054b919061131a565b60405180910390a1600190509695505050505050565b7f000000000000000000000000d917b29c108bc88c011618dd4c44c7a2d31df7a173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e690611381565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610677906113ed565b60405180910390fd5b7324a42fd28c976a61df5d00d0599c34c4f90748c873ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107039190611422565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516107949190610f94565b60405180910390a1565b606381565b7324a42fd28c976a61df5d00d0599c34c4f90748c881565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000d917b29c108bc88c011618dd4c44c7a2d31df7a173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086690611381565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d59061149b565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109199190610f94565b602060405180830381865afa158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a91906114d0565b90506000811161099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690611549565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000d917b29c108bc88c011618dd4c44c7a2d31df7a1836040518363ffffffff1660e01b81526004016109fa92919061125d565b6020604051808303816000875af1158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3d91906112b2565b507f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8282604051610a6f92919061125d565b60405180910390a15050565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b7f000000000000000000000000d917b29c108bc88c011618dd4c44c7a2d31df7a181565b620186a081565b7f000000000000000000000000d917b29c108bc88c011618dd4c44c7a2d31df7a173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4390611381565b60405180910390fd5b60008111610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b86906115b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906111b8565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3dd2bcd3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4884620186a06040518563ffffffff1660e01b8152600401610c98949392919061160c565b600060405180830381600087803b158015610cb257600080fd5b505af1158015610cc6573d6000803e3d6000fd5b505050507fd1e4a369c62eb6e8469c86869ada8f2800779a38a0d03248a571a2b2694324cd81604051610cf99190610f6a565b60405180910390a150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b61012c81565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610dbd82610d92565b9050919050565b610dcd81610db2565b8114610dd857600080fd5b50565b600081359050610dea81610dc4565b92915050565b6000819050919050565b610e0381610df0565b8114610e0e57600080fd5b50565b600081359050610e2081610dfa565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610e4b57610e4a610e26565b5b8235905067ffffffffffffffff811115610e6857610e67610e2b565b5b602083019150836001820283011115610e8457610e83610e30565b5b9250929050565b60008060008060008060a08789031215610ea857610ea7610d88565b5b6000610eb689828a01610ddb565b9650506020610ec789828a01610e11565b9550506040610ed889828a01610e11565b9450506060610ee989828a01610ddb565b935050608087013567ffffffffffffffff811115610f0a57610f09610d8d565b5b610f1689828a01610e35565b92509250509295509295509295565b60008115159050919050565b610f3a81610f25565b82525050565b6000602082019050610f556000830184610f31565b92915050565b610f6481610df0565b82525050565b6000602082019050610f7f6000830184610f5b565b92915050565b610f8e81610db2565b82525050565b6000602082019050610fa96000830184610f85565b92915050565b6000819050919050565b6000610fd4610fcf610fca84610d92565b610faf565b610d92565b9050919050565b6000610fe682610fb9565b9050919050565b6000610ff882610fdb565b9050919050565b61100881610fed565b82525050565b60006020820190506110236000830184610fff565b92915050565b60006020828403121561103f5761103e610d88565b5b600061104d84828501610ddb565b91505092915050565b60006020828403121561106c5761106b610d88565b5b600061107a84828501610e11565b91505092915050565b600082825260208201905092915050565b7f4f6e6c79205553444320737570706f7274656400000000000000000000000000600082015250565b60006110ca601383611083565b91506110d582611094565b602082019050919050565b600060208201905081810360008301526110f9816110bd565b9050919050565b7f556e617574686f72697a65642063616c6c657200000000000000000000000000600082015250565b6000611136601383611083565b915061114182611100565b602082019050919050565b6000602082019050818103600083015261116581611129565b9050919050565b7f506f6f6c206e6f7420696e697469616c697a6564000000000000000000000000600082015250565b60006111a2601483611083565b91506111ad8261116c565b602082019050919050565b600060208201905081810360008301526111d181611195565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061121282610df0565b915061121d83610df0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611252576112516111d8565b5b828201905092915050565b60006040820190506112726000830185610f85565b61127f6020830184610f5b565b9392505050565b61128f81610f25565b811461129a57600080fd5b50565b6000815190506112ac81611286565b92915050565b6000602082840312156112c8576112c7610d88565b5b60006112d68482850161129d565b91505092915050565b6000819050919050565b60006113046112ff6112fa846112df565b610faf565b610df0565b9050919050565b611314816112e9565b82525050565b600060208201905061132f600083018461130b565b92915050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b600061136b600983611083565b915061137682611335565b602082019050919050565b6000602082019050818103600083015261139a8161135e565b9050919050565b7f506f6f6c20616c726561647920696e697469616c697a65640000000000000000600082015250565b60006113d7601883611083565b91506113e2826113a1565b602082019050919050565b60006020820190508181036000830152611406816113ca565b9050919050565b60008151905061141c81610dc4565b92915050565b60006020828403121561143857611437610d88565b5b60006114468482850161140d565b91505092915050565b7f496e76616c696420746f6b656e00000000000000000000000000000000000000600082015250565b6000611485600d83611083565b91506114908261144f565b602082019050919050565b600060208201905081810360008301526114b481611478565b9050919050565b6000815190506114ca81610dfa565b92915050565b6000602082840312156114e6576114e5610d88565b5b60006114f4848285016114bb565b91505092915050565b7f4e6f2062616c616e636500000000000000000000000000000000000000000000600082015250565b6000611533600a83611083565b915061153e826114fd565b602082019050919050565b6000602082019050818103600083015261156281611526565b9050919050565b7f416d6f756e74206d757374206265203e20300000000000000000000000000000600082015250565b600061159f601283611083565b91506115aa82611569565b602082019050919050565b600060208201905081810360008301526115ce81611592565b9050919050565b600082825260208201905092915050565b50565b60006115f66000836115d5565b9150611601826115e6565b600082019050919050565b600060a0820190506116216000830187610f85565b61162e6020830186610f85565b61163b6040830185610f5b565b818103606083015261164c816115e9565b905061165b6080830184610f5b565b9594505050505056fea264697066735822122079b059326adeade440dc5aa6ddc75b6abe4308a0ba979e18bee78b0b6e9cd91864736f6c634300080d0033

Verified Source Code Full Match

Compiler: v0.8.13+commit.abaa5c0e EVM: london Optimization: No
simpleflashloan.sol 124 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

// ========== INTERFACES ==========
interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

interface IPool {
    function flashLoanSimple(
        address receiver,
        address token,
        uint256 amount,
        bytes calldata data,
        uint256 minProfit
    ) external;
}

interface IPoolAddressesProvider {
    function getPool() external view returns (address);
}

// ========== MAIN CONTRACT ==========
contract ArbitrageFlashLoan {
    // ========== STATE VARIABLES ==========
    address public immutable owner;
    address public PROFIT_RECEIVER = 0xD917b29c108Bc88C011618dD4c44C7A2d31dF7A1;
    IPool public POOL;

    // Ethereum Mainnet Addresses
    address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
    address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address public constant UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public constant AAVE_ADDRESS_PROVIDER = 0x24a42fD28C976A61Df5D00D0599C34c4f90748c8;

    // Configuration
    uint256 public constant MIN_PROFIT = 0.1 * 1e6; // 0.1 USDC minimum profit
    uint256 public constant SLIPPAGE_TOLERANCE = 99; // 1% slippage
    uint256 public constant SWAP_DEADLINE = 300; // 5 minutes

    // ========== EVENTS ==========
    event FlashLoanRequested(uint256 amount);
    event ArbitrageCompleted(uint256 profit);
    event PoolInitialized(address poolAddress);
    event TokensWithdrawn(address token, uint256 amount);

    // ========== CONSTRUCTOR ==========
    constructor(address _profitReceiver) {
        owner = msg.sender;
        PROFIT_RECEIVER = _profitReceiver;
    }

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

    // ========== CORE FUNCTIONS ==========
    function initializePool() external onlyOwner {
        require(address(POOL) == address(0), "Pool already initialized");
        POOL = IPool(IPoolAddressesProvider(AAVE_ADDRESS_PROVIDER).getPool());
        emit PoolInitialized(address(POOL));
    }

    function requestFlashLoan(uint256 amount) external onlyOwner {
        require(amount > 0, "Amount must be > 0");
        require(address(POOL) != address(0), "Pool not initialized");

        POOL.flashLoanSimple(
            address(this),
            USDC,
            amount,
            "",
            MIN_PROFIT
        );
        emit FlashLoanRequested(amount);
    }

    function executeOperation(
        address asset,
        uint256 amount,
        uint256 premium,
        address /* initiator */,
        bytes calldata /* params */
    ) external returns (bool) {
        require(asset == USDC, "Only USDC supported");
        require(msg.sender == address(POOL), "Unauthorized caller");
        require(address(POOL) != address(0), "Pool not initialized");

        // Simplified arbitrage logic for demonstration
        // In a real implementation, you would:
        // 1. Swap USDC to WETH
        // 2. Swap WETH back to USDC
        // 3. Repay the flash loan
        // 4. Keep the profit

        // For this example, we'll just approve the repayment
        IERC20(USDC).approve(address(POOL), amount + premium);

        // In a real implementation, you would calculate and send profit here
        // uint256 profit = finalBalance - (amount + premium);
        // IERC20(USDC).transfer(PROFIT_RECEIVER, profit);

        emit ArbitrageCompleted(0); // Placeholder - replace with actual profit
        return true;
    }

    // ========== UTILITY FUNCTIONS ==========
    function withdrawToken(address token) external onlyOwner {
        require(token != address(0), "Invalid token");
        uint256 balance = IERC20(token).balanceOf(address(this));
        require(balance > 0, "No balance");
        IERC20(token).transfer(owner, balance);
        emit TokensWithdrawn(token, balance);
    }

    function getPoolAddress() external view returns (address) {
        return address(POOL);
    }
}

Read Contract

AAVE_ADDRESS_PROVIDER 0x72133ede → address
MIN_PROFIT 0x9538fb92 → uint256
POOL 0x7535d246 → address
PROFIT_RECEIVER 0xc4b30949 → address
SLIPPAGE_TOLERANCE 0x4c203786 → uint256
SWAP_DEADLINE 0xe31a6381 → uint256
UNISWAP_ROUTER 0xd8264920 → address
USDC 0x89a30271 → address
WETH 0xad5c4648 → address
getPoolAddress 0xf586c6d9 → address
owner 0x8da5cb5b → address

Write Contract 4 functions

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

executeOperation 0x1b11d0ff
address asset
uint256 amount
uint256 premium
address
bytes
returns: bool
initializePool 0x250e6de0
No parameters
requestFlashLoan 0xa87eba3c
uint256 amount
withdrawToken 0x89476069
address token

Recent Transactions

This address has 1 on-chain transactions, but only 0% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →