That's what happens when you decide to write your smart contract language in what is basically javascript and your smart contracts are interpreted in a stack based VM. Doubly so when your contract execution is entirely determined by the order in which Tx happen to get accepted.
It's actually sane when your contract is written in a non-turing-complete language with strong typing and the smart contract system has deterministic execution (i.e. you know the result when you submit the Tx and if the result would be different, the tx fails, preferably without charging you).
I'm convinced that one of the main issues with most smart contracts is that they have such weak guarantees and the guarantees they do have are brittle and hidden behind complex, opaque proofs & constraint systems.
>"That's what happens when you decide to write your smart contract language in what is basically javascript and your smart contracts are interpreted in a stack based VM."
What was the language and why did running it in a stack based VM lead to this? I'm curious about the intersection of the language and the type of VM it ran in.
The DAO “hack” was just a legitimate transfer of wealth from weak hands to smarter hands. Code is law. All “bugs” are law too. The only people who stole anything where the devs who reversed the ethereum blockchain…
Even expert programmers aren't able to check smart contracts for all possible issues.