Earlier quoted context omitted.
Obviously all EVM programs halt, otherwise the Ethereum network would be completely ruined immediately. You already know why they halt: there's a gas limit. Ethereum programs aren't Turing complete. They always halt. Turing complete programs don't generally halt. That's the definition. You should demonstrate your understanding by using these terms correctly! This whole argument about Turing completeness is a huge red…
> You already know why they halt: there's a gas limit. Did you actually read my post? I'm not claiming halting is a problem; it's merely an example of undecidability . The "gas limit" doesn't help in the cases where the program does halt with unexpected behavior. > Turing complete programs don't generally halt. That's the definition. Where did you get this nonsense? See [1] for the actual definition. > attack was an…
Here's how reasonable Ethereum contract development should happen. You construct the contract, either in some high level language or in bytecode. Then you prove, using some reasonable formalism (TLA+, Isabelle, paper, symbolic execution, or whatever), that the contract does what it should do. Then people who want to trust the contract look at this proof.
This is not at all hindered by the EVM being quasi Turing complete, because at no point do you have the question "How can I mechanically verify halting of an arbitrary program?"