I'm a seasoned engineer, but quite new to blockchain technologies.

I'm trying to grasp the "why" and the real "value" of immutable contracts.

Never seen or heard of pieces of software being released & written perfectly at first try.

In my mind, a piece of code/logic that can't evolve, shouldn't be called "smart" contract...

I know that you can have a contract that references another contract and updating that reference to a new contract address kind of gives you an "update" flow.

But, in light of recent events (DAO's contract exploit)... Am I wrong to see the concept of immutable pieces of logic (contracts) flawed in its premise?

How can the platform be ever trusted by organizations, developers and it's users?

closed as primarily opinion-based by euri10, Joris Bontje Jun 22 '16 at 14:19

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Can you rewrite your question to be more neutrally worded? Please try leaving your personal opinion at the door and try to question the core issue of immutability. – Joris Bontje Jun 22 '16 at 14:19
  • @JorisBontje It's not a personal opinion. I really don't know, i come from a traditional software development, therefore looking to be educated. Seems perfectly worded to me – ehanoc Jun 22 '16 at 18:07
  • you putting this on hold is opinion based. I'm asking a valid question here! Scr#w you andvv your biases – ehanoc Jun 23 '16 at 10:18

When we talk about immutability, it's because once a tx is written in the blockchain, it's there in an immutable way. In a second point, smart contracts are upgrade-able, but you have to add an upgrade feature to your contract at first. You will have to be very careful on how to update your contract if you don't want to end up like theDAO.:)

There was 1000 lines of code in the DAO... maybe was it a little bit too complex! And there is no tooling to check all of this.. Anyway, short end check and re-check... Even try a bounty on the testnet could be a way to check.

  • that's my point. Immutable TX makes sense to me. But for contracts... Given the nature of software development and maturity the release and so called "contract update" seems so fragile – ehanoc Jun 22 '16 at 12:40

Smart contracts are meant to describe and enforce an agreement.

Let's forget the bad things that happened to the The DAO for a moment and take it as an example.

  1. The DAO is a computer program that describes and executes the bylaws of an organization.
  2. This organization has can be joined by everyone by investing Ether. The members are able to vote how to use the ether funds in a profitable or charitable way.

If I ask you to run this bylaws program on your server, you would have a certain control of the organization. You could:

  1. Shut the organization down
  2. Alter the program so that the bylaws change
  3. Reverse some votes in the database

This can hardly be done with immutable programs running on the Ethereum blockchain. It's hard but not impossible: it can be done if the majority of the Ethereum nodes agree, so it requires at least an open debate as we experience now with the DAO hard fork debate.

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