The title is clear:

I do not clearly understand why a Smart Contract (SC) cannot be upgraded.

Which is the problem of letting SCs being upgraded? Costs? Security?

I imagine an scenario where some amount of users rely in some DApp (say, they send ETH to a SC address to obtain some service) and then the owner of the SC (A.K.A., the deployer) suddenly changes the SC's code to send all the contained ETH to its personal account.

Is that the main reason behind it? Is it the ONLY reason behind it?

I am not considering the case where the service provider SC is used through an intermediate SC that changes the provider address to "upgrade" the service.

  • I have a wide answer here about trust and upgrading in general Commented May 24, 2021 at 20:56

2 Answers 2


Which is the problem of letting SCs being upgraded? Costs? Security?

The trust.

Public blockchains aim to provide a trustless system by removing intermediaries and central authorities between the sender and recipient of the transaction.

If the smart contract code could be changed after deployment by the deployer, users should trust them completely. Would you leave a team of random developers the authority over your money ? I suppose not. The immutability property of smart contracts ensures that their code will never change and therefore their behavior will remain the same forever. This enabled the rise of decentralized finance with smart contracts managing billions dollars.

It is of course recommended to interact with smart contracts which are open source and well-audited.

As you mention at the end, there are smart contract "upgrade" patterns, but they always involve new deployments and are limited in what they can update. Upgradable smart contracts pose a threat to decentralization as the use of intermediary/proxy contracts could allow the deployer/administrator to maliciously change the logic. However, there are some solutions enabling decentralized upgradable contracts.

  • A note for those who are at the dilemma on whether upgradability is good or not: if you think of creating a token based on your real, non-decentralised business, go with upgradable token straight away. It's simple: in case you decide to go fully decentralised later, you can do it by making (a possibility to be) non-upgradable at any time. Having it non-upgradable initially just for "trust" makes no sense, since you, as a business, effectively control its utility and you can make it useless one day without any contract changes, by just saying "we don't accept this token anymore :trollface:". Commented Nov 30, 2022 at 18:04

It is a matter of jurisdiction and recourse as well as expectations and reasonableness of expectations.

Example: a bank (assuming paper cash, physically deposited)

If you put money in a bank, you hope and expect that you can withdraw that money later. To be clear, the bank has agency here. There is no amount of force that can require a bank to pay you back. If your money is in the bank, and the militaries of the world all show up to demand the money, and all the weapons, and psychology and influence of the entire universe work together, it is still possible that the banker, who has locked their doors, will blow up the money before it can be taken.

Again you are relying on trust, governments and protocols to protect your interest in the money you have in the bank. You expect these things to work. And this expectation is reasonable, at least in the US with FDIC insurance.

Example: a non-upgradable smart contract

You have been granted an NFT by a non-upgradable smart contract.

Again, here you hope and expect that your NFT will not be exit-scammed or stolen. Why do you expect this? Because you read (self or delegated) the smart contract and also you trust that the Ethereum Foundation will not (again) steal assets from people in an overnight decision without community input. You expect these things to work and this is reasonable.

Example: a upgradable or backdoor smart contract

In this example you control tokens in Tether, USTD, the fund with a reported USD 60B in funds committed.

The owner of this contract has control over backdoors. Specifically, they can "blacklist" (a racist term) and take tokens from any account and then assign them to itself. The Tether project self-reports its location in "Hong Kong" but does not appear to have the required Hong Kong "Money Service Operators" license, nor any incorporation at all per the Hong Kong Companies Registry. There is no commitment on the Tether website to say they will not take your money only because you are dark-skinned (that's what a blacklist means). Furthermore, you don't know who controls the Tether account, and it is very reasonable to assume that because it started from meager beginnings (possibly low operational security) that there will be several governments and/or hackers that additionally have access to the Tether administrator private keys.

Given this contradiction with government records, lack of regulatory authority to do business, explicit racism, failure to make policies like a bank, and not further mentioning their otherwise lack of accountability, expecting your assets to still be there when you need them is unreasonable.

Tether is the best example I can find of something that looks like a big exit scam.


Every upgradable smart contract deployed/controlled other than by somebody you personally know/trust is susceptible to becoming like Tether and exit scamming.

  • Thank you for your answer. I also share your great "objective opinion" about the Tether. Anyways, let me ask you something: Did the Ethereum Foundation really stole assets from people in the past? I was not aware of that. Why was it?
    – Bean Guy
    Commented May 25, 2021 at 21:17
  • Please see en.wikipedia.org/wiki/The_DAO_(organization). Of course, there are people that argue against how I classify that event. And I think those people are wrong. Commented May 27, 2021 at 18:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.