Address Contract Verified
Address
0x87Fa0f524C2da66dF10B9377Ca4644AC4062cF26
Balance
0 ETH
Nonce
1
Code Size
9809 bytes
Creator
0x73F53D3F...144e at tx 0x903aa392...440821
Indexed Transactions
0 (1 on-chain, 1.7% indexed)
Contract Bytecode
9809 bytes
0x6080604052600436106100c65760003560e01c806351cff8d91161007f578063e086e5ec11610059578063e086e5ec14610278578063f2fde38b1461028f578063f8b2cb4f146102b8578063f9335ffb146102f5576100cd565b806351cff8d9146101f957806386001519146102225780638da5cb5b1461024d576100cd565b806308a01675146100d25780630c24f4fa146100fd578063136687dd146101285780631b11d0ff146101515780631d1ef7ad1461018e57806348887d49146101b9576100cd565b366100cd57005b600080fd5b3480156100de57600080fd5b506100e7610320565b6040516100f49190611ebe565b60405180910390f35b34801561010957600080fd5b50610112610338565b60405161011f9190611ebe565b60405180910390f35b34801561013457600080fd5b5061014f600480360381019061014a9190611890565b610350565b005b34801561015d57600080fd5b506101786004803603810190610173919061196a565b61041b565b6040516101859190612039565b60405180910390f35b34801561019a57600080fd5b506101a36106ea565b6040516101b09190611ebe565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190611907565b610702565b6040516101f09493929190612215565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190611804565b610a85565b005b34801561022e57600080fd5b50610237610cce565b6040516102449190612170565b60405180910390f35b34801561025957600080fd5b50610262610cd4565b60405161026f9190611ebe565b60405180910390f35b34801561028457600080fd5b5061028d610cf8565b005b34801561029b57600080fd5b506102b660048036038101906102b19190611804565b610e38565b005b3480156102c457600080fd5b506102df60048036038101906102da9190611804565b610f79565b6040516102ec9190612170565b60405180910390f35b34801561030157600080fd5b5061030a61100b565b6040516103179190611ebe565b60405180910390f35b7387870bca3f3fd6335c3f4ce8392d69350b4fa4e281565b73d9e1ce17f2641f24ae83637ab66a2cca9c378b9f81565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d590612134565b60405180910390fd5b6000858584846040516020016103f79493929190611ed9565b6040516020818303038152906040529050610413868583611023565b505050505050565b60007387870bca3f3fd6335c3f4ce8392d69350b4fa4e273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049690612054565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461050d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610504906120b4565b60405180910390fd5b6000806000808686810190610522919061182d565b93509350935093506000898b6105389190612328565b90506000831561056857600061055287878f600088611180565b905061056086888386611378565b91505061058a565b600061057787878f6000611378565b90506105868688838688611180565b9150505b818110156105cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c490612114565b60405180910390fd5b600082826105db9190612409565b905080600160008282546105ef9190612328565b925050819055508d73ffffffffffffffffffffffffffffffffffffffff1663095ea7b37387870bca3f3fd6335c3f4ce8392d69350b4fa4e2856040518363ffffffff1660e01b8152600401610645929190611fcb565b602060405180830381600087803b15801561065f57600080fd5b505af1158015610673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106979190611a3d565b507fe03a36d920ad8de5a978a8f1917280e202ae9193e6dc19e08ef1f6c2a051eba48e8e8e846040516106cd9493929190611ff4565b60405180910390a160019750505050505050509695505050505050565b73e592427a0aece92de3edee1f18e0157c0586156481565b600080600080600061271060098861071a91906123af565b610724919061237e565b9050600081886107349190612328565b905073b27308f9f90d607463bb33ea1bebb41c27ce5ab673ffffffffffffffffffffffffffffffffffffffff1663f7729d438b8b8a8c60006040518663ffffffff1660e01b815260040161078c959493929190611f1e565b602060405180830381600087803b1580156107a657600080fd5b505af19250505080156107d757506040513d601f19601f820116820180604052508101906107d49190611a66565b60015b6107f05760008060008095509550955095505050610a7a565b809650506000600267ffffffffffffffff811115610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156108655781602001602082028036833780820191505090505b50905089816000815181106108a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508a81600181518110610918577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073d9e1ce17f2641f24ae83637ab66a2cca9c378b9f73ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88836040518363ffffffff1660e01b81526004016109a192919061218b565b60006040518083038186803b1580156109b957600080fd5b505afa9250505080156109ef57506040513d6000823e3d601f19601f820116820180604052508101906109ec91906119fc565b60015b610a09578660008060009650965096509650505050610a7a565b80600181518110610a43577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015196505081861115610a6d578186610a629190612409565b945060019350610a76565b60009450600093505b5050505b945094509450949050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a90612134565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4e9190611ebe565b60206040518083038186803b158015610b6657600080fd5b505afa158015610b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9e9190611a66565b905060008111610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90612094565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c3e929190611fcb565b602060405180830381600087803b158015610c5857600080fd5b505af1158015610c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c909190611a3d565b507f016e128b6bdadd9e9068abd0b18db2fc8b27ed3dbced50e4aa6cc0a6934251ab8282604051610cc2929190611fcb565b60405180910390a15050565b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90612134565b60405180910390fd5b600047905060008111610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc590612074565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e34573d6000803e3d6000fd5b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd90612134565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906120d4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fb49190611ebe565b60206040518083038186803b158015610fcc57600080fd5b505afa158015610fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110049190611a66565b9050919050565b73b27308f9f90d607463bb33ea1bebb41c27ce5ab681565b60007387870bca3f3fd6335c3f4ce8392d69350b4fa4e273ffffffffffffffffffffffffffffffffffffffff1630858585600060405160240161106a959493929190611f71565b6040516020818303038152906040527f42b0b77c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110f49190611ea7565b6000604051808303816000865af19150503d8060008114611131576040519150601f19603f3d011682016040523d82523d6000602084013e611136565b606091505b505090508061117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611171906120f4565b60405180910390fd5b50505050565b60008573ffffffffffffffffffffffffffffffffffffffff1663095ea7b373e592427a0aece92de3edee1f18e0157c05861564866040518363ffffffff1660e01b81526004016111d1929190611fcb565b602060405180830381600087803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190611a3d565b5060006040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018462ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200161012c4261129f9190612328565b8152602001868152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905073e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389826040518263ffffffff1660e01b815260040161131a9190612154565b602060405180830381600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c9190611a66565b91505095945050505050565b60008473ffffffffffffffffffffffffffffffffffffffff1663095ea7b373d9e1ce17f2641f24ae83637ab66a2cca9c378b9f856040518363ffffffff1660e01b81526004016113c9929190611fcb565b602060405180830381600087803b1580156113e357600080fd5b505af11580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b9190611a3d565b506000600267ffffffffffffffff81111561145f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561148d5781602001602082028036833780820191505090505b50905085816000815181106114cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110611540577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600073d9e1ce17f2641f24ae83637ab66a2cca9c378b9f73ffffffffffffffffffffffffffffffffffffffff166338ed17398686853061012c426115be9190612328565b6040518663ffffffff1660e01b81526004016115de9594939291906121bb565b600060405180830381600087803b1580156115f857600080fd5b505af115801561160c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061163591906119fc565b905080600182516116469190612409565b8151811061167d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015192505050949350505050565b60006116a461169f8461228b565b61225a565b905080838252602082019050828560208602820111156116c357600080fd5b60005b858110156116f357816116d988826117ef565b8452602084019350602083019250506001810190506116c6565b5050509392505050565b60008135905061170c816125a8565b92915050565b600081359050611721816125bf565b92915050565b600082601f83011261173857600080fd5b8151611748848260208601611691565b91505092915050565b600081359050611760816125d6565b92915050565b600081519050611775816125d6565b92915050565b60008083601f84011261178d57600080fd5b8235905067ffffffffffffffff8111156117a657600080fd5b6020830191508360018202830111156117be57600080fd5b9250929050565b6000813590506117d4816125ed565b92915050565b6000813590506117e981612604565b92915050565b6000815190506117fe81612604565b92915050565b60006020828403121561181657600080fd5b6000611824848285016116fd565b91505092915050565b6000806000806080858703121561184357600080fd5b600061185187828801611712565b945050602061186287828801611712565b935050604061187387828801611751565b9250506060611884878288016117c5565b91505092959194509250565b600080600080600060a086880312156118a857600080fd5b60006118b6888289016116fd565b95505060206118c7888289016116fd565b94505060406118d8888289016117da565b93505060606118e988828901611751565b92505060806118fa888289016117c5565b9150509295509295909350565b6000806000806080858703121561191d57600080fd5b600061192b878288016116fd565b945050602061193c878288016116fd565b935050604061194d878288016117da565b925050606061195e878288016117c5565b91505092959194509250565b60008060008060008060a0878903121561198357600080fd5b600061199189828a016116fd565b96505060206119a289828a016117da565b95505060406119b389828a016117da565b94505060606119c489828a016116fd565b935050608087013567ffffffffffffffff8111156119e157600080fd5b6119ed89828a0161177b565b92509250509295509295509295565b600060208284031215611a0e57600080fd5b600082015167ffffffffffffffff811115611a2857600080fd5b611a3484828501611727565b91505092915050565b600060208284031215611a4f57600080fd5b6000611a5d84828501611766565b91505092915050565b600060208284031215611a7857600080fd5b6000611a86848285016117ef565b91505092915050565b6000611a9b8383611aa7565b60208301905092915050565b611ab08161243d565b82525050565b611abf8161243d565b82525050565b6000611ad0826122c7565b611ada81856122ea565b9350611ae5836122b7565b8060005b83811015611b16578151611afd8882611a8f565b9750611b08836122dd565b925050600181019050611ae9565b5085935050505092915050565b611b2c81612461565b82525050565b6000611b3d826122d2565b611b4781856122fb565b9350611b578185602086016124d7565b611b6081612597565b840191505092915050565b6000611b76826122d2565b611b80818561230c565b9350611b908185602086016124d7565b80840191505092915050565b611ba5816124b3565b82525050565b611bb4816124c5565b82525050565b6000611bc7600983612317565b91507f4f6e6c79204161766500000000000000000000000000000000000000000000006000830152602082019050919050565b6000611c07600683612317565b91507f4e6f2045544800000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000611c47601383612317565b91507f4e6f7468696e6720746f207769746864726177000000000000000000000000006000830152602082019050919050565b6000611c87600983612317565b91507f4f6e6c792073656c6600000000000000000000000000000000000000000000006000830152602082019050919050565b6000611cc7600c83612317565b91507f5a65726f206164647265737300000000000000000000000000000000000000006000830152602082019050919050565b6000611d07601183612317565b91507f466c617368206c6f616e206661696c65640000000000000000000000000000006000830152602082019050919050565b6000611d47601983612317565b91507f4e6f742070726f66697461626c652061667465722073776170000000000000006000830152602082019050919050565b6000611d87600983612317565b91507f4e6f74206f776e657200000000000000000000000000000000000000000000006000830152602082019050919050565b61010082016000820151611dd16000850182611aa7565b506020820151611de46020850182611aa7565b506040820151611df76040850182611e6b565b506060820151611e0a6060850182611aa7565b506080820151611e1d6080850182611e89565b5060a0820151611e3060a0850182611e89565b5060c0820151611e4360c0850182611e89565b5060e0820151611e5660e0850182611e5c565b50505050565b611e658161246d565b82525050565b611e748161248d565b82525050565b611e838161248d565b82525050565b611e928161249c565b82525050565b611ea18161249c565b82525050565b6000611eb38284611b6b565b915081905092915050565b6000602082019050611ed36000830184611ab6565b92915050565b6000608082019050611eee6000830187611ab6565b611efb6020830186611ab6565b611f086040830185611b23565b611f156060830184611e7a565b95945050505050565b600060a082019050611f336000830188611ab6565b611f406020830187611ab6565b611f4d6040830186611e7a565b611f5a6060830185611e98565b611f676080830184611b9c565b9695505050505050565b600060a082019050611f866000830188611ab6565b611f936020830187611ab6565b611fa06040830186611e98565b8181036060830152611fb28185611b32565b9050611fc16080830184611bab565b9695505050505050565b6000604082019050611fe06000830185611ab6565b611fed6020830184611e98565b9392505050565b60006080820190506120096000830187611ab6565b6120166020830186611e98565b6120236040830185611e98565b6120306060830184611e98565b95945050505050565b600060208201905061204e6000830184611b23565b92915050565b6000602082019050818103600083015261206d81611bba565b9050919050565b6000602082019050818103600083015261208d81611bfa565b9050919050565b600060208201905081810360008301526120ad81611c3a565b9050919050565b600060208201905081810360008301526120cd81611c7a565b9050919050565b600060208201905081810360008301526120ed81611cba565b9050919050565b6000602082019050818103600083015261210d81611cfa565b9050919050565b6000602082019050818103600083015261212d81611d3a565b9050919050565b6000602082019050818103600083015261214d81611d7a565b9050919050565b60006101008201905061216a6000830184611dba565b92915050565b60006020820190506121856000830184611e98565b92915050565b60006040820190506121a06000830185611e98565b81810360208301526121b28184611ac5565b90509392505050565b600060a0820190506121d06000830188611e98565b6121dd6020830187611e98565b81810360408301526121ef8186611ac5565b90506121fe6060830185611ab6565b61220b6080830184611e98565b9695505050505050565b600060808201905061222a6000830187611e98565b6122376020830186611e98565b6122446040830185611e98565b6122516060830184611b23565b95945050505050565b6000604051905081810181811067ffffffffffffffff8211171561228157612280612568565b5b8060405250919050565b600067ffffffffffffffff8211156122a6576122a5612568565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006123338261249c565b915061233e8361249c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156123735761237261250a565b5b828201905092915050565b60006123898261249c565b91506123948361249c565b9250826123a4576123a3612539565b5b828204905092915050565b60006123ba8261249c565b91506123c58361249c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123fe576123fd61250a565b5b828202905092915050565b60006124148261249c565b915061241f8361249c565b9250828210156124325761243161250a565b5b828203905092915050565b60006124488261246d565b9050919050565b600061245a8261246d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006124be8261246d565b9050919050565b60006124d0826124a6565b9050919050565b60005b838110156124f55780820151818401526020810190506124da565b83811115612504576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6125b18161243d565b81146125bc57600080fd5b50565b6125c88161244f565b81146125d357600080fd5b50565b6125df81612461565b81146125ea57600080fd5b50565b6125f68161248d565b811461260157600080fd5b50565b61260d8161249c565b811461261857600080fd5b5056fea26469706673582212206d92332e546c1fa92257c5fdc19f7c07904a1d3ae1e277a84c85d948add5952664736f6c63430008000033
Verified Source Code Full Match
Compiler: v0.8.0+commit.c7dfd78e
EVM: istanbul
Optimization: No
aave.sol 230 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// ✅ QuoterV1 — flat params, easier to call
interface IQuoterV1 {
function quoteExactInputSingle(
address tokenIn,
address tokenOut,
uint24 fee,
uint256 amountIn,
uint160 sqrtPriceLimitX96
) external returns (uint256 amountOut);
}
interface ISwapRouterV3 {
struct ExactInputSingleParams {
address tokenIn;
address tokenOut;
uint24 fee;
address recipient;
uint256 deadline;
uint256 amountIn;
uint256 amountOutMinimum;
uint160 sqrtPriceLimitX96;
}
function exactInputSingle(ExactInputSingleParams calldata params)
external payable returns (uint256 amountOut);
}
interface ISwapRouterV2 {
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external view returns (uint256[] memory amounts);
}
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
contract AaveFlashArbitrageV3 {
// ── Contract Addresses ──────────────────────────────────────────────────
address public constant AAVE_POOL = 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2;
address public constant UNI_QUOTER_V1 = 0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6; // ✅ fixed
address public constant UNI_ROUTER_V3 = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
address public constant SUSHI_ROUTER = 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F;
address public owner;
uint256 public totalProfit;
modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; }
constructor() { owner = msg.sender; }
// ── ✅ OFF-CHAIN PRICE CHECK (call this first, costs gas but safe) ───────
// Returns (uniOut, sushiOut, profit, isProfitable)
function checkArbitrage(
address _tokenIn,
address _tokenOut,
uint256 _amount,
uint24 _fee
) external returns (
uint256 uniAmountOut,
uint256 sushiAmountOut,
uint256 profit,
bool isProfitable
) {
uint256 aaveFee = (_amount * 9) / 10000;
uint256 totalOwed = _amount + aaveFee;
// ── Leg 1: Uniswap V3 quote (try/catch so revert doesn't kill us) ──
try IQuoterV1(UNI_QUOTER_V1).quoteExactInputSingle(
_tokenIn, _tokenOut, _fee, _amount, 0
) returns (uint256 out1) {
uniAmountOut = out1;
} catch {
// Quoter failed (pool doesn't exist or no liquidity)
return (0, 0, 0, false);
}
// ── Leg 2: Sushiswap V2 quote ──────────────────────────────────────
address[] memory path = new address[](2);
path[0] = _tokenOut;
path[1] = _tokenIn;
try ISwapRouterV2(SUSHI_ROUTER).getAmountsOut(uniAmountOut, path)
returns (uint256[] memory sushiOut) {
sushiAmountOut = sushiOut[1];
} catch {
return (uniAmountOut, 0, 0, false);
}
// ── Profit calculation ──────────────────────────────────────────────
if (sushiAmountOut > totalOwed) {
profit = sushiAmountOut - totalOwed;
isProfitable = true;
} else {
profit = 0;
isProfitable = false;
}
}
// ── ✅ EXECUTE (only call when checkArbitrage returns isProfitable=true) ─
function executeArbitrage(
address _borrow,
address _target,
uint256 _amount,
bool _uniFirst, // true = Uni→Sushi, false = Sushi→Uni
uint24 _fee
) external onlyOwner {
bytes memory params = abi.encode(_borrow, _target, _uniFirst, _fee);
_aaveFlashLoan(_borrow, _amount, params);
}
function _aaveFlashLoan(address asset, uint256 amount, bytes memory params) internal {
(bool success,) = AAVE_POOL.call(
abi.encodeWithSignature(
"flashLoanSimple(address,address,uint256,bytes,uint16)",
address(this), asset, amount, params, 0
)
);
require(success, "Flash loan failed");
}
// ── Called by Aave after sending funds ──────────────────────────────────
function executeOperation(
address asset,
uint256 amount,
uint256 premium,
address initiator,
bytes calldata params
) external returns (bool) {
require(msg.sender == AAVE_POOL, "Only Aave");
require(initiator == address(this), "Only self");
(address borrow, address target, bool uniFirst, uint24 fee) =
abi.decode(params, (address, address, bool, uint24));
uint256 repay = amount + premium;
uint256 finalAmount;
if (uniFirst) {
uint256 mid = _swapUniswap(borrow, target, amount, 0, fee);
finalAmount = _swapSushiswap(target, borrow, mid, repay);
} else {
uint256 mid = _swapSushiswap(borrow, target, amount, 0);
finalAmount = _swapUniswap(target, borrow, mid, repay, fee);
}
require(finalAmount >= repay, "Not profitable after swap");
uint256 profit = finalAmount - repay;
totalProfit += profit;
IERC20(asset).approve(AAVE_POOL, repay);
emit FlashLoanExecuted(asset, amount, premium, profit);
return true;
}
// ── Internal Swap Helpers ────────────────────────────────────────────────
function _swapUniswap(
address inT, address outT,
uint256 amtIn, uint256 amtMin, uint24 fee
) internal returns (uint256 out) {
IERC20(inT).approve(UNI_ROUTER_V3, amtIn);
ISwapRouterV3.ExactInputSingleParams memory p = ISwapRouterV3.ExactInputSingleParams({
tokenIn: inT,
tokenOut: outT,
fee: fee,
recipient: address(this),
deadline: block.timestamp + 300,
amountIn: amtIn,
amountOutMinimum: amtMin,
sqrtPriceLimitX96: 0
});
out = ISwapRouterV3(UNI_ROUTER_V3).exactInputSingle(p);
}
function _swapSushiswap(
address inT, address outT,
uint256 amtIn, uint256 amtMin
) internal returns (uint256 out) {
IERC20(inT).approve(SUSHI_ROUTER, amtIn);
address[] memory path = new address[](2);
path[0] = inT; path[1] = outT;
uint256[] memory amts = ISwapRouterV2(SUSHI_ROUTER).swapExactTokensForTokens(
amtIn, amtMin, path, address(this), block.timestamp + 300
);
out = amts[amts.length - 1];
}
// ── Admin ────────────────────────────────────────────────────────────────
function withdraw(address _token) external onlyOwner {
uint256 bal = IERC20(_token).balanceOf(address(this));
require(bal > 0, "Nothing to withdraw");
IERC20(_token).transfer(owner, bal);
emit ProfitWithdrawn(_token, bal);
}
function withdrawETH() external onlyOwner {
uint256 bal = address(this).balance;
require(bal > 0, "No ETH");
payable(owner).transfer(bal);
}
function getBalance(address _token) external view returns (uint256) {
return IERC20(_token).balanceOf(address(this));
}
function transferOwnership(address newOwner) external onlyOwner {
require(newOwner != address(0), "Zero address");
owner = newOwner;
}
// ── Events ───────────────────────────────────────────────────────────────
event FlashLoanExecuted(address token, uint256 amount, uint256 premium, uint256 profit);
event ProfitWithdrawn(address token, uint256 amount);
receive() external payable {}
}
Read Contract
AAVE_POOL 0x08a01675 → address
SUSHI_ROUTER 0x0c24f4fa → address
UNI_QUOTER_V1 0xf9335ffb → address
UNI_ROUTER_V3 0x1d1ef7ad → address
getBalance 0xf8b2cb4f → uint256
owner 0x8da5cb5b → address
totalProfit 0x86001519 → uint256
Write Contract 6 functions
These functions modify contract state and require a wallet transaction to execute.
checkArbitrage 0x48887d49
address _tokenIn
address _tokenOut
uint256 _amount
uint24 _fee
returns: uint256, uint256, uint256, bool
executeArbitrage 0x136687dd
address _borrow
address _target
uint256 _amount
bool _uniFirst
uint24 _fee
executeOperation 0x1b11d0ff
address asset
uint256 amount
uint256 premium
address initiator
bytes params
returns: bool
transferOwnership 0xf2fde38b
address newOwner
withdraw 0x51cff8d9
address _token
withdrawETH 0xe086e5ec
No parameters
Recent Transactions
This address has 1 on-chain transactions, but only 1.7% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →