Turing complete semantics for smart contracts