Receive Function Trigger Debugger
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Receive Function Trigger Debugger helps developers and auditors understand how a contract handles plain ETH transfers. You provide a contract address and optionally an amount of ETH to simulate; the tool analyzes the contract's bytecode to detect whether it has a receive() function, then attempts to simulate an ETH transfer with the specified value. Results show whether the receive() function is present, whether the contract is a proxy, and whether the simulated ETH transfer would succeed or revert. This is critical for debugging contracts that accept ETH, identifying whether a contract can receive funds, and understanding what happens when users send Ether to a contract.
HOW TO USE
Enter the contract address you want to analyze. Optionally provide an ETH amount in wei to simulate a transfer. You can also provide a custom RPC URL if you are not connected via wallet. Click "detect receive()". The tool fetches the contract bytecode, checks for the receive() function signature pattern (0x150b7a02), and attempts to estimate gas for an ETH transfer with the specified value. Results include receive() detection status, fallback() presence, payable modifier detection, gas estimates, and simulation success or failure. Use this to verify that a contract can accept ETH before sending funds, or to debug why transfers are reverting.
THE REAL MECHANISM
The tool uses ethers.js v5 to fetch contract bytecode from the blockchain. It analyzes the bytecode for the receive() function signature (0x150b7a02) and related patterns. While bytecode analysis is heuristic — it cannot guarantee behavior without source code — it provides a strong indicator of receive() presence. The tool also checks the EIP‑1967 implementation slot to detect proxies, which may delegate receive() handling to an implementation. If an ETH value is provided, the tool performs an eth_estimateGas call with empty data (0x) and the specified value to simulate the transfer. The estimate result indicates whether the call would succeed (gas returned) or revert (error). All analysis is read‑only and does not modify state.
WHAT IT CANNOT SEE
The tool cannot determine if receive() is malicious, detect if receive() will succeed without full simulation, handle contracts with complex receive logic, predict cross‑contract receive chains, verify if receive() is intentionally designed, or detect receive() functions that rely on block context or state‑dependent conditions. The bytecode detection is heuristic — a contract may have a receive() function that the tool does not detect, or may appear to have one that is never executed. Simulation results depend on the current state of the contract (e.g., paused, full, or requiring certain conditions). Always verify behavior through direct interaction or thorough code review.
PLEASE NOTE — EVM CHAINS ONLY
This tool is designed for Ethereum Virtual Machine (EVM) compatible chains. It relies on EVM bytecode patterns and standard RPC methods. All processing occurs in your browser; no contract data is stored or transmitted.