Capital · coordination · constructionCareers

Technical · 10 min · reviewed April 2026

Upgradeable contracts as a governance question

Who can change the code, under what approval, and what that means to an auditor.

Two liabilities

A contract that cannot be changed is a liability: a defect found after deployment has no remedy short of migration, and migrations of a live register are expensive and public. A contract that can be changed by one party is a different liability: every assurance the code provides is conditional on that party’s continued good behaviour. Neither is the safe option, and choosing between them is a governance decision that engineering should not make alone.

Upgrade capture

The failure mode we see most often: an upgradeable contract whose administrative key is held by the vendor who built it, arranged that way for operational convenience during delivery and never moved. It reads as a technical convenience and is a governance failure — the client’s assurances about their own system are, on paper, assurances about their supplier.

The approval that is not one

A multi-signature upgrade path where all signers report to the same executive is a single approval with extra ceremony. Independence in the approval set is the property being purchased; if the institution cannot supply it, that should be recorded as an accepted risk rather than disguised by a threshold.

What an auditor asks

  • Who can change this, today?By name and role, not by address. If the answer requires an investigation, that is the finding.
  • What approval is required, and is it independent?Independence is judged by reporting line, not by key count.
  • Has the upgrade path been executed?An upgrade mechanism that has never been exercised on a staging deployment is untested code in the most sensitive position in the system.

Terms used here

Author

Name pending · principal engineer. Reviewed by the practice lead.

Cite

MLG Blockchain, “Upgradeable contracts as a governance question,” 2026. TechArticle, machine-readable. https://mlgblockchain.com/insights/enterprise-blockchain/upgrade-capture

Prints cleanly, with URL and date in the running head.