This exactly what makes it useless. Smart contracts only have value if they are immutable. But if they are immutable - how do you make sure they do the right thing and nothing else? And how do you fix bugs? Did you ever hear about DAO? The first dApp working in the real world? Well, they had a bug in the contract which allowed someone to withdraw millions of dollars. The person actually didn't do anything wrong - you treat this dApp as smart contract. Because contracts are made to be honored even if some people don't read what is inside. Now, DAO wasn't fixed even though the best Ethereum devs were behind. You know why? Because they knew they can't be 100% sure to get it right. The solution is to use special languages that allow formal verifications. Those are usually functional languages like Huskell or OCaml.
You are viewing a single comment's thread from:
Your comment about Haskell and OCaml is interesting. There is a company called BlockApps that is developing and now fielding a system with a simplified scripting language for smart contracts for Etherium, implemented in Haskell. The old "Domain Specific Language" game! Their product does a lot more than that, though.