Selfdestruct (aka suicide) functions stop contracts from functioning and clean up data on the blockchain. They can be used in upgrading contracts.

Selfdestructing and upgradable contracts using a contract registry allows the execution of potentially arbitrary new code by a contract account owner. This is precisely the type of opaque centralized control Ethereum is designed to remove.

On the other hand, there will be smart contract bugs, even Satoshi made mistakes, Bitcoin is upgraded regularly, human legal contexts change constantly, and the solidity language isn't fully specified yet. So there is a strong case for providing smart contract upgrade paths.

  • This seems a little bit opinion-based. The answer is of course going to depend on the particular application, and I don't think there's a good way to answer this in general – Tjaden Hess May 12 '16 at 0:35
  • 1
    I'm hoping this thread can surface production experiences using upgrade/selfdestruct for token and blockchain governance smart contracts. As the thread grows and folks upvote/downvote it can help surface best practices. – Noah Thorp May 12 '16 at 1:51
  • 1
    Even though I agree that answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise, I have to admit that I am also looking for an answer to that question. – Afr May 12 '16 at 7:21
  • 1

The "should" depends on the use case. Your question does not specify any exact use case.

Ethereum allows both kind of contracts. You can create upgradeable or non-upgradeable contracts. The developers are free to choose and craft contract rules they feel is the best fit.

| improve this answer | |

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