đŸ“Ļ Storage

Last TX: ---

Slot Changes

Storage Sloth

Storage Sloth allows you to interact with your contracts and watch storage changes in real time. See exactly what happens in your contracts.

No setup needed

Try our hosted demo with SlothSwap — a toy DEX with contracts and users ready to go.

Try Live Demo

Have your own Anvil?

Load a pre-configured DeFi protocol and explore it on your mainnet fork.

Getting Started

  1. Start Anvil with tracing: anvil --steps-tracing --no-request-size-limit Forking? Add: --fork-url YOUR_RPC_URL
  2. Enable storage layout in foundry.toml: extra_output = ["storageLayout"]
  3. Deploy your contracts: forge script script/Deploy.s.sol --broadcast --rpc-url localhost:8545 RPC URL must match the one selected in the left sidebar.
  4. Import your deployed contracts: Scans your artifacts folder and broadcast file. Auto-detects proxies and storage layout.
  5. Need to add a contract you didn't deploy? Use the contract panel in the sidebar. Paste an ABI or load a Foundry artifact. No local artifact? Copy the ABI from Etherscan (Contract → Code → ABI).
  6. Once you add a contract, functions will appear in the sidebar. Call functions and observe storage changes here.

Welcome to the Storage Sloth Demo

Storage Sloth lets you explore smart contracts through playful interaction. Call functions and instantly see every storage write - decoded values, before/after diffs, all in real time. No test cases, no setup, just click around and understand what's happening.

This demo is loaded with SlothSwap, a minimal DEX. Swap tokens, add liquidity, and watch the storage light up.

Contracts

  • SlothSwap - main DEX router (swaps, liquidity, and... other features)
  • SlothSwapPool - AMM pool with packed storage slots
  • SLOTH - Sloth Coin token
  • DUSD - Demo USD stablecoin

Use the dropdown in the left panel to switch between contracts.

Ready to Use

  • The pool already has liquidity
  • Two accounts are set up: Alice and Bob, both with ETH for gas
  • Use aliases instead of full addresses - type alice or slothswap wherever an address is needed
  • Aliases are case-insensitive - alice, Alice, ALICE all work
  • Numbers accept scientific and hex notation - 1e18, 0x64, 100000

Utility Panels (right side)

  • Token Faucet - deal tokens to any address
  • Approvals - quickly grant token approvals

Things to Try

  • Give Alice some SLOTH using the Token Faucet
  • Approve SlothSwap to spend it via the Approvals panel
  • Call swapAForB on SlothSwap as Alice and watch the storage light up
  • Check the Inspector tab to browse full contract state
  • Try addLiquidity or removeLiquidity to see reserves change

Secret Mission

Rumor has it SlothSwap has a hidden feature. Something about pulling rugs... The Inspector tab might reveal who controls the contracts and what secrets they hold. Can you figure out how to execute it?

Hint: Some addresses aren't set up with gas. The Token Faucet can send ETH too.

Protocol Loaded

Contracts

    Things to Try

      Quick Reference

      • Use names instead of addresses — contract, sender, and token names all work as aliases
      • Numbers accept scientific notation — 1e18, 1e6, 0x64
      • Token Faucet (right panel) can deal tokens and ETH
      • Inspector tab shows full contract storage state

      How This Works

      • All transactions stay on your local Anvil fork — nothing is sent to mainnet and there is nothing to sign, just like Foundry fork tests
      • Storage Sloth only talks to your local Anvil — bring your own RPC URL, fork to mainnet, and interact with real contracts safely

      Transaction succeeded - no storage slots were modified.

      No storage layout available.

      To enable, compile with storage layout output:

      forge build --extra-output storageLayout

      Or add to foundry.toml:

      extra_output = ["storageLayout"]
      Variable Slot Type Value

      💰 Token Faucet

      Token
      Add Token

      Add an ERC20 token above to use approvals.

      âąī¸ Time Control [?]

      📅 ---
      â›ī¸ Block #---

      Import from Foundry

      Select your Foundry output folder and broadcast file. The out/ folder contains only compiled contract data and the broadcast file contains only public transaction data — neither includes private keys or secrets. Never share files that may contain private keys or sensitive info (.env).

      📁 Artifacts folder (out/)
      📄 Broadcast file (run-latest.json)
      âš ī¸

      Select contracts to import.

      â„šī¸ usable storage layout. Possible causes: extra_output = ["storageLayout"] not in foundry.toml, or contracts use ERC-7201 namespaced storage.

      Review and edit contract details before importing.

      Protocol Library

      Start Anvil forked to mainnet, then load a protocol:

      anvil --tracing --fork-url $MAINNET_RPC_URL