Proxy Storage

Load implementation source and layout while continuing to read state from the proxy address.

A proxy contract keeps state at a fixed address and uses delegatecall to execute external calls through another contract, called the implementation.

When analyzing it, keep the two separate: state is held at the proxy address, while code and storage layout usually come from the implementation contract. An upgrade normally changes only the implementation address; the proxy address and existing state remain unchanged.

Page indicators

When a proxy is detected, the page shows its implementation address and proxy type at the top.

ActionResult
Load ImplementationLoads the implementation contract's source code and storage layout.
Load Nest ImplementationIf the implementation is itself a proxy, loads the next implementation layer.
ResetReturns to the originally detected proxy information.

Example

This example uses local proxy data. It does not send requests.

  1. The proxy address is used to read state.
  2. Select Load Implementation to load the implementation contract's source code and layout.
  3. Inspect variable locations or query values in Storage Layout; state is still read from the proxy address.
  4. If the implementation is also a proxy, select Load Nest Implementation to continue down the chain.

Notes

  • A proxy is not its implementation. Querying state from the implementation address usually returns incorrect results.
  • Upgrades require the new implementation's storage layout to be compatible with the existing one. Incompatibility can decode variables incorrectly or corrupt state.
  • When no proxy is detected, the page does not show an option to load an implementation.

Next steps