What Is an ‘Upgradeable’ Smart Contract and Why Is It Controversial in the Context of Immutability?

An upgradeable contract uses a proxy pattern, allowing the logic to be swapped out by deploying a new implementation contract, while keeping the contract's state and address the same. This is controversial because it compromises the core blockchain promise of immutability, as a single entity or DAO can change the contract's rules after deployment.

While it allows for bug fixes, it reintroduces a level of trust and centralization risk.

How Does the ‘Delegatecall’ Opcode Enable the Proxy Pattern?
Why Are Storage Layout Changes Dangerous in the Context of Upgradeable Smart Contracts?
Why Does a Transparent Proxy Need to Check the Caller’s Address?
Can Gas Optimizations in the Logic Contract Offset the Proxy’s Overhead?
Does the Proxy Pattern Affect the Cost of Contract Deployment?
How Can a ‘Proxy Contract’ Allow for an Apparent Code Change without Breaking Immutability?
What Is the Difference between an Immutable and an Upgradeable Smart Contract?
What Is ‘Miner Centralization’ in PoW and How Does It Compare to ‘Validator Centralization’ in PoS?

Glossar