What Does Immutability Mean?


#1

What’s it mean to you?

The term “Immutability” or “immutable” is frequently used in the blockchain / crypto space. So much so, that its definition sometimes becomes obscure, as it’s used in various ways. It’s become a buzzword of sorts. So what does immutability actually mean and what do you think it should it apply to?

We say that code is law and it must remain immutable, but exactly what “code is it”, that is to remain immutable. Is it the protocol layer, parts of the network layer, or contracts on the application layer that the immutability principle must apply to?

Many seem to think that ETC should never innovate, upgrade, or add new features because the code must remain the same / unchanged ie no forks

What’s your opinion on “Immutability and how you think it should be applied to the ETC ecosystem?”


#2

I have a background in programming and immutability is commonly used word in that space. It means that once you have some value (either a number, a text or some more complex data structure) that value cannot change, ever. More specifically if I look at it at time T and any time later T+x I will see the same thing. This should not apply to the protocol because it is not a finished product and is constantly evolving, but it should IMO apply to the events that happen on the protocol.
A blockchain is some sort of EventSourcing mechanism and the Events and data in the events should be final and unmodifiable (immutable). But not only that the apply function - a function that takes the current state of account balances/contracts and applies the new transactions that came in a new block - should produce the same ‘expected’ outputs for the rules that were specified for that point in time (you can change the rules of how the transactions get processed for future blocks, but you should always produce the same output for the past events). This makes sure that also new people joining can validate the chain and end up with the same resulting chain.
I think the rule of immutability is of utmost importance. Ignoring this once means that the ‘rules’ of this world can’t be interpreted as laws - think of physics laws, rather you know you have someone that can intervene and change them on the fly. A world with such omnipotent persona (you can call it a community if you wish) loses a really important property and that is the predictability of the output and I think it is a nice property to have, especially if you are building very sensitive protocols/software using it.


#3

Thank you @phyro for that well-written explanation of immutability. I would agree with every point you make in your post.

I would like to add my two cents on the topic. I see immutability as a necessary cornerstone component of one of the fundamental principles of blockchain technology. Throughout cryptospace we see regular claims of decentralization and hear the outcry of the masses wherever that decentralization seems threatened. I contend that a key component of decentralization is the immutability of any blockchain’s record of past events and the resulting state those events produce. If even a single event may be undone, whether by group decision or individual decree, and a recorded past state reversed, either in whole or in part, it becomes likely that any future events which can be called into question or deemed unfavorable or in error will evoke calls for reversal. Inevitably, decisions must be made on which past states can be changed and which cannit. This then leads to potential division of the consensus engine, a degradation of the entire system’s trust level, and the rise of a central authority for oversight.

Immutability then, in my opinion, is the lid on any blockchain’s Pandora’s Box. It is best left untouched.