This is a problem (if you consider it as such) that smart contracts intend to solve.
For example, in the smart contract introduce some authorities that are allowed to block and revoke transactions for some time (if the block chain has no support for certified timestamps, use "number of new blocks mined and appended to the blockchain" as substitute).
Let the market decide what kind of protection stakeholders prefer.
This hinges on the contracts actually working as intended, which is something they often do not. Code in general rarely does poorly in that regard. It's really hard to consider every contingency beforehand. Unknown unknowns and all that.
> This hinges on the contracts actually working as intended, which is something they often do not. Code in general rarely does poorly in that regard.
Exactly the same can be said about the legal system. People are just a lot more used to the many existing "glitches" of the legal system in comparison to "bugs" in smart contracts.
In fairness, they picked JavaScript as the language to write the transactions in.
People keep losing money making coding mistakes that even "gcc -Wall -Werror" would refuse to compile. Examples: type errors like L1 vs L2 (whatever that even means, not a crypto person), wrong number of function parameters causing some sort of currying, allowing that massive ETH heist a few weeks back.
I'm sure there are hundreds of other similar horror stories.
"-Wextra -pedantic" would protect against even more bugs.
(I'm not saying C is a reasonable choice, just that JavaScript was a laughably bad choice.)
Contracts are mostly written in Solidity. Despite common rhetoric, it doesn't have much in common with Javascript besides curly braces. Solidity is statically typed, has class-based inheritance, and all numbers are integers. Javascript is dynamically typed, has prototype-based inheritance, and all numbers are floats.
"Smart contracts" are neither smart nor are they contracts.
It's a piece of code written in an esoteric programming language that even people who are experts in have trouble understanding and spotting errors in.
Compared to actual contracts which are human readable.
There's no "just". People will always be "more used" to human languages than to programming languages (especially esoteric ones).
Moreover, human languages will always be more simple at expressing human interactions than programming languages. "You pay me 2.5% of the agreed sum on the 25th of each month" will always be infinitely more understandable to an average human than whatever the implementation of that would be in Soldity.
For example, in the smart contract introduce some authorities that are allowed to block and revoke transactions for some time (if the block chain has no support for certified timestamps, use "number of new blocks mined and appended to the blockchain" as substitute).
Let the market decide what kind of protection stakeholders prefer.