|
|
|
|
|
by pdkl95
3190 days ago
|
|
You're assuming it's possible to "use well". It's delusional to believe it's possible to understand the subtle interactions within and between "smart contracts". Even if we ignore the ambiguity of the real world, malicious actors, and other complexity multipliers, we already know it isn't possible to know if a "smart contract" will halt. Code will always have bugs, and you cannot truly understand how something written in a Turing complete language will behave without running it. > very painful tool if mishandled Part of being a skilled craftsman is choosing the right tools, which includes understanding and respecting their limits. The language for writing contracts makes all state mutable by default, has ambiguous operators that change behavior depending on storage location or if the operand was a literal, and doesn't defined the order of evaluation for expressions, to name just a few of it's design problems[1]. This isn't a "useful tool:", it's a strong indicator of a another fractal of bad design[2]. [1] https://news.ycombinator.com/item?id=14810008 [2] https://blog.codinghorror.com/the-php-singularity/ |
|
There are also other contract languages aimed to solve some of the limitations you mention, like Tezos/Michelson [2][3], which facilitate formal verification.
The issues you point out are certainly valid, but I believe people in the space are cognizant of them and are working on solutions.
[1] https://openzeppelin.org/
[2] https://www.tezos.com/
[3] https://www.tezos.com/static/papers/language.pdf