Skip to article
Degrees of SatoshiFollow the connections.
Degrees of Satoshi/ Encyclopedia

Encyclopedia Ethereum · Entry 115

Contract proxies: one address, replaceable implementation

Theme
Ethereum
Sources
3 cited records
Reading time
About 3 minutes
Automated verification
Substantive update
In this article

At a glance

Key facts

Key facts for Contract proxies: one address, replaceable implementation
FactDetailSource
StateDelegated execution uses the calling contract’s storage context.[2]
ImplementationProxy designs track which code address handles delegated calls.[1]
AuthorityTransparent and UUPS patterns place upgrade checks in different parts of the design.[1]
01

Separate where assets live from which code runs

A reader may interact with one proxy address while the logic comes from another implementation address. The proxy’s storage holds the application’s state in the delegated execution model.

Looking only at the implementation’s own storage or balance can therefore be misleading. Inspect the proxy context as well as the current code.

02

Find who can change the implementation

An upgrade path may be controlled by a multisig, governance system or another role. Some designs restrict or remove upgrading; others retain broad authority. The word “proxy” alone does not answer which case applies.

Trace the actual authorization function and any delay. A public governance discussion is not equivalent to an enforced on-chain timelock.

03

New code must understand old storage

Delegated implementations share the proxy’s existing storage. An incompatible layout can make new code interpret old values incorrectly even if both versions compile.

Initialization also matters: setup functions can assign critical roles and must be protected appropriately. Source verification of two contracts does not prove their combined deployment is configured correctly.

Direct answers

Questions people ask

Does every proxy mean someone can upgrade the contract?

No. Proxy mechanisms and upgrade authority vary. Inspect the actual implementation-selection and authorization paths instead of inferring them from the label alone.

Inspect the evidence

The answer and key facts have stable claim links. These records retain the scope and qualification when reused.

A proxy contract forwards execution to implementation code, commonly using delegatecall while keeping state at the proxy address. Some proxies let an authorized party change the implementation. A permanent user-facing address therefore does not by itself mean that the application’s rules cannot change.

Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.

Link to this claim
State: Delegated execution uses the calling contract’s storage context.

Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.

Link to this claim
Implementation: Proxy designs track which code address handles delegated calls.

Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.

Link to this claim
Authority: Transparent and UUPS patterns place upgrade checks in different parts of the design.

Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.

Link to this claim
Revision history
  1. — First publication after primary-source research and independent automated verification.

Source register

Sources and references

Retrieval dates and locators are recorded individually.
  1. Proxy contractsOpenZeppelin

    Proxy implementation slots, delegated execution and upgrade authority.

    Locator: TransparentUpgradeableProxy; UUPSUpgradeable; ERC1967Proxy · Version / scope: OpenZeppelin Contracts 5.x · Retrieved: 2026-10-02T17:03:43.024ZOpen source
  2. Solidity: Delegatecall and LibrariesSolidity contributors

    Execution uses another contract’s code in the caller’s context and storage.

    Locator: Delegatecall and Libraries; Storage, Memory and the Stack; Logs; Message Calls · Version / scope: Solidity 0.8.30 documentation · Retrieved: 2026-10-02T17:03:42.822ZOpen source
  3. Layout of State Variables in Storage and Transient StorageSolidity contributors

    Persistent storage slots, packing and mappings.

    Locator: Layout of State Variables; Mappings and Dynamic Arrays · Version / scope: Solidity 0.8.30 documentation · Retrieved: 2026-10-02T17:03:42.820ZOpen source
How this article was made

Research and drafting use AI assistance. A separate automated review checks claims against primary sources; no external expert or named human review is implied. Publication, substantive editing, source retrieval and verification are recorded separately. This version was independently checked by an automated reviewer on 2 October 2026.

Editorial method and corrections

Degrees of Satoshi editorial project. “Contract proxies: one address, replaceable implementation.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/contract-proxies/