1

Unlike something like JVM or CIL, EVM is said to be deterministic and understandably so when multiple nodes in a decentralized network have to simultaneously work together. But, EVM is also said to be unpredictable in the sense that we don't know what result it will produce before actually running it, as state here:

But as Turing proved, Ethereum can’t predict if a smart contract will terminate, or how long it will run, without actually running it (possibly running forever). Whether by accident or on purpose, a smart contract can be created such that it runs forever when a node attempts to validate it.

Are these two different concepts?

2 Answers 2

1

Are these two different concepts?

Even though we can't predict the result beforehand, being deterministic means that for the same starting conditions, and given the same inputs, the same result will occur, even if that result is a smart contract running forever.

It will run forever in the same way - following the same execution path - on each node in the network, or each time the same experiment is run from the same initial conditions.

Thought experiment only. Can't actually happen given gas constraints.

2
  • That makes sense, but what does it mean that Ethereum can't "predict" how a smart contract will execute? Is it that EVM doesn't go over all the opcodes prior to actually executing them or is something randomized?
    – Kevvv
    Jan 11 at 21:13
  • Going over the opcodes and checking their result takes the same amount of effort as executing them. Executing them is, in effect, "going over them" :-) Jan 11 at 22:11
0

EVM is deterministic. To exclude "eternal" calculations, a gas mechanism is used - a gas limit per transaction is set in the network. If it is exceeded, the transaction is rejected.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.