SimpleFlashLoanArbitrage

Description:

Smart contract deployed on Ethereum with Factory features.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "contracts/FlashLoanSimple.sol": {
      "content": "// SPDX-License-Identifier: MIT\r
pragma solidity 0.8.10;\r
\r
// Minimal interfaces\r
interface IERC20 {\r
    function balanceOf(address account) external view returns (uint256);\r
    function transfer(address recipient, uint256 amount) external returns (bool);\r
    function approve(address spender, uint256 amount) external returns (bool);\r
}\r
\r
interface IPool {\r
    function flashLoanSimple(\r
        address receiverAddress,\r
        address asset,\r
        uint256 amount,\r
        bytes calldata params,\r
        uint16 referralCode\r
    ) external;\r
}\r
\r
interface IPoolAddressesProvider {\r
    function getPool() external view returns (address);\r
}\r
\r
contract SimpleFlashLoanArbitrage {\r
    \r
    IPoolAddressesProvider public immutable ADDRESSES_PROVIDER;\r
    IPool public immutable POOL;\r
    address public immutable owner;\r
    \r
    event FlashLoanExecuted(address asset, uint256 amount, uint256 premium);\r
    \r
    modifier onlyOwner() {\r
        require(msg.sender == owner, "Not owner");\r
        _;\r
    }\r
    \r
    constructor(address _addressProvider) {\r
        ADDRESSES_PROVIDER = IPoolAddressesProvider(_addressProvider);\r
        POOL = IPool(ADDRESSES_PROVIDER.getPool());\r
        owner = msg.sender;\r
    }\r
    \r
    function requestFlashLoan(address asset, uint256 amount) external onlyOwner {\r
        POOL.flashLoanSimple(address(this), asset, amount, "", 0);\r
    }\r
    \r
    function executeOperation(\r
        address asset,\r
        uint256 amount,\r
        uint256 premium,\r
        address, // initiator parametresi - kullanılmıyor\r
        bytes calldata\r
    ) external returns (bool) {\r
        require(msg.sender == address(POOL), "Invalid caller");\r
        \r
        // Borcu geri öde\r
        uint256 amountOwed = amount + premium;\r
        IERC20(asset).approve(address(POOL), amountOwed);\r
        \r
        emit FlashLoanExecuted(asset, amount, premium);\r
        return true;\r
    }\r
    \r
    function withdrawToken(address token) external onlyOwner {\r
        uint256 balance = IERC20(token).balanceOf(address(this));\r
        require(balance > 0, "No balance");\r
        IERC20(token).transfer(owner, balance);\r
    }\r
    \r
    receive() external payable {}\r
}"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "remappings": [],
    "evmVersion": "london"
  }
}}

Tags:
Factory|addr:0xe049936369987bd3def05a7bd7fd254b5d551940|verified:true|block:23710383|tx:0x7b28a8dfcd50435ca19e9a4697a03a01c9619f901064cb7f47c58eb755f93af9|first_check:1762082688

Submitted on: 2025-11-02 12:24:49

Comments

Log in to comment.

No comments yet.