Lend within a single tx.
address(b).call{value: amt}b.onFlashLoan(amt, fee)address(this).balance >= before + fee// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IBorrower { function onFlashLoan(uint256 amt, uint256 fee) external; }
contract Pool {
receive() external payable {}
function flashLoan(IBorrower b, uint256 amt) external {
uint256 before = address(this).balance;
uint256 fee = amt / 100;
// TODO transfer amt, call b.onFlashLoan, require repaid
}
}