Time-Travel Debugging Tool on Forked State
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
This tool connects to your EVM wallet and enables time-travel debugging by exploring contract state at historical block numbers on forked state. It reads contract code, balances, and storage slots at specified block heights, allowing developers to inspect how contract state evolved over time. The tool works with forked RPC endpoints that support historical state queries, providing a powerful debugging capability for understanding past contract behavior.
HOW TO USE
Connect your Web3 wallet using the Connect button. Enter a fork RPC URL that supports historical queries (e.g., Infura, Alchemy, or a local hardhat fork). Enter the contract address you want to inspect. Specify the block number to travel to. Optionally, enter a storage slot to read. Click "Travel to Block" to fetch contract state at that block—including code presence and balance. Click "Read Storage" to read a specific storage slot at the specified block. Click "Load Sample" to populate fields with example data. Results appear in the Results card with block information, contract state, and storage values.
TECHNICAL MECHANISM: HISTORICAL STATE QUERYING WITH ETHERS.JS
The tool uses ethers.js to connect to a custom RPC provider that supports historical state queries. It uses provider.getCode(address, blockNumber) to fetch contract bytecode at a specific block, provider.getBalance(address, blockNumber) to get the balance at that block, and provider.getStorageAt(address, slot, blockNumber) to read storage slots. The provider.getBlock(blockNumber) method retrieves block metadata including timestamp. This approach leverages the underlying RPC's archive node capabilities, requiring the RPC endpoint to support historical queries. The tool displays whether the contract was deployed at that block (code presence) and the balance at that time.
WHAT IT CANNOT SEE
This tool cannot time-travel without an archive node or forked RPC that supports historical state queries—standard RPCs only support the latest block. It cannot modify state or simulate transactions at historical blocks—the tool only reads state. It cannot guarantee that historical state is consistent with actual chain history—forked state may diverge from the main chain. It relies on RPC support for eth_getStorageAt and similar methods—not all providers support historical queries. It cannot debug transactions that occurred before the fork point or on chains without archive support—the tool requires a forked or archive RPC.
PLEASE NOTE
This is a read-only tool—it never signs transactions. All data is fetched on-demand and stored only in memory; nothing is persisted across page reloads. The tool supports EVM chains only—Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Base, and Fantom. Time-travel debugging requires an RPC with archive data—consider using services like Alchemy Archive, Infura Archive, or running a local archive node. The tool is designed for debugging and analysis—use responsibly and respect RPC rate limits.