Guide · Contract security

Upgradeable contract risk
what proxy upgrades mean for investors

Most DeFi contracts are upgradeable. That means the code you verified today can be replaced tomorrow. This guide explains how proxy patterns work, which upgrade architectures carry the highest risk, and how to verify the governance protecting them.

Scan a contract

Free · No sign-up · Proxy detection included

Every scan is powered by the XemaS Semantic Intelligence Platform · answers carry their evidence and coverage state

Why it matters

Code is not immutable by default

When a smart contract uses a proxy pattern, the address your wallet interacts with is a shell. It holds state (your balances, allowances, positions) but delegates execution to a separate implementation contract. The proxy can be updated to point at a completely different implementation - while your funds stay in the proxy, now subject to different rules.

This is widely used for legitimate reasons (bug fixes, feature upgrades, gas optimisations). The question is not whether a contract is upgradeable - it is who can upgrade it,how fast, and with what level of oversight.

Transparent Proxy

OpenZeppelin

Medium risk

Uses a separate ProxyAdmin contract to manage upgrades. The admin can change the implementation to any contract. Risk depends entirely on who controls ProxyAdmin.

UUPS (Universal Upgradeable Proxy Standard)

EIP-1822

Medium-High risk

The upgrade logic lives inside the implementation contract. No separate admin contract, which simplifies the architecture but makes renouncing upgradeability harder to verify.

Beacon Proxy

OpenZeppelin

High risk

Multiple proxy instances all point at a single Beacon contract. A single upgrade to the Beacon instantly affects every instance - one transaction, unlimited blast radius.

Immutable (no proxy)

None

Low risk

The contract code cannot be changed after deployment. Logic flaws are permanent, but so are the security guarantees. No upgrade attack surface.

Risk factors

How upgradeability creates risk

Malicious implementation swap

The admin replaces the current (safe) implementation with a new contract containing a drain function, a 100% fee, or a blacklist targeting large holders. All without changing the proxy address users are interacting with.

No timelock on upgrades

An upgrade without a timelock takes effect in the same block it is proposed. Users have zero warning and zero time to exit. Even 24 hours of delay is significantly better than instant.

Single EOA controls the upgrade

If a single externally-owned wallet holds the upgrade key, one compromise (phishing, private key leak) gives an attacker full control over the contract's logic. No threshold, no multi-signature, no delay.

Admin key not protected by governance

Even a multisig admin is insufficient if the threshold is low or the signers are concentrated. The upgrade governance should match the protocol's stated decentralisation posture.

Verification

How to check upgrade governance

01

Determine whether the contract is a proxy

Check the storage slots defined in EIP-1967: slot 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc holds the implementation address. A non-zero value confirms a proxy. A scanner identifies the proxy type automatically.

02

Identify the admin or upgrade controller

For transparent proxies, the admin is in EIP-1967 slot 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103. For UUPS, look for the _authorizeUpgrade function in the implementation. For beacons, find the beacon owner.

03

Evaluate the admin's control structure

Is the admin an EOA (single key, high risk), a multisig (threshold and signers matter), or a governance contract (most decentralised)? Resolve the full ownership chain rather than stopping at the proxy.

04

Check for a timelock between proposal and execution

A timelock contract queues upgrade transactions with a mandatory delay before they execute. Without one, an admin can upgrade instantly. Verify both that a timelock exists and that its delay is meaningful (24-72 hours minimum).

05

Read the implementation contract's source

On block explorers, the proxy's token page may show the proxy's ABI rather than the implementation's. Explicitly navigate to the implementation address and read its source code, looking for privileged functions, mint capabilities, and fee setters.

Detect proxy type and upgrade governance

Free · No sign-up required

Common mistakes

What investors get wrong

Reading the proxy's source instead of the implementation

Block explorers display the proxy contract by default. The source code you see may be a near-empty delegation shell. Always follow the implementation pointer to the actual logic.

Assuming "no admin key found" means immutable

UUPS contracts embed upgrade authorisation inside the implementation. No separate admin address does not mean no upgradeability - it means the upgrade gate is inside the code itself.

Trusting upgrade history as a future guarantee

A contract that has never been upgraded is not necessarily safe to hold. The admin still exists and can act at any time. Past behaviour does not constrain future upgrades.

Ignoring beacon proxy blast radius

If a protocol uses a beacon proxy pattern, a single upgrade touches every pool, vault, or position in the system simultaneously. The risk is not just to the contract you are interacting with.

Common questions

Frequently asked questions