// DEX-2-DEX only // A pseudocode of my automated solidity code to execute fast Arb trade. // I would be using Uniswap and PancakeSwap DEXs // 1 ETH = 3,234 USDT (Uniswap) // 1 ETH = 3,334 USDT (PancakeSwap) function executeArbitrage( address tokenA, address tokenB, uint amountIn, address dex1, address dex2) external { uint256 feeDex1 = Dex1(dex1).getTradingFee(tokenA, tokenB); uint256 feeDex2 = Dex2(dex2).getTradingFee(tokenB, tokenA); // bid 1 ETH = 3,234 USDT (Uniswap) uint256 amountOutDex1 = Dex1(dex1).swap(tokenA, tokenB, amountIn); uint256 amountOutAfterFeeDex1 = amountOutDex1 - (amountOutDex1 * feeDex1 / 10000); // ask 1 ETH = 3,334 USDT (PancakeSwap) uint256 amountOutDex2 = Dex2(dex2).swap(tokenB, tokenA, amountOutAfterFeeDex1); uint256 amountOutAfterFeeDex2 = amountOutDex2 - (amountOutDex2 * feeDex2 / 10000); uint256 gasCost = tx.gasprice * gasleft(); require(amountOutAfterFeeDex2 > (amountIn + gasCost), "no realized profit"); uint256 profitForCaller = amountOutAfterFeeDex2 - (amountIn + gasCost); ERC20(tokenA).transfer(msg.sender, profitForCaller); }