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"
}
}}
Submitted on: 2025-11-02 12:24:49
Comments
Log in to comment.
No comments yet.