Blocky saysDeployed contracts are immutable — upgradeability requires deliberate patterns.
Once deployed, a contract's code can't change. To fix bugs or add features you must plan ahead: deploy a new contract and migrate, or use an upgrade pattern. Immutability is a feature (trust) and a constraint (no hotfixes). Teams weigh upgradeability (flexibility, but adds an admin who could abuse it) against pure immutability (trustless, but unfixable).
Power-ups you unlock
Deployed code is immutable
Fixes need migration or upgrade patterns
Immutability = trust but no hotfixes
Upgradeability adds power that can be abused
Double-Spend Dan attacks — common mistakes
Assuming you can just edit a deployed contract
Adding an upgrade admin with no safeguards
No migration plan for a discovered bug
Boss battleWeigh immutability vs upgradeability for a high-value DeFi vault.
Example code
<!doctype html><html><head><meta charset="utf-8"></head>
<body style="background:#06040d;color:#e6e0ff;font-family:monospace;padding:20px"><pre>immutable: trustless, but a bug is forever
upgradeable: fixable, but an admin key can change logic
→ pick per risk + governance</pre></body></html>