Turing Complete

Intermediate
Updated Sep 22, 2026

What Is Turing Complete?

Turing complete describes a machine or language that, given enough time, memory, and the right instructions, can solve any computational problem, no matter how complex.

The term is normally used to describe modern programming languages, since most of them are Turing complete, including C++, Python, and JavaScript. If a system cannot do this, it is said to be Turing incomplete.

What Is a Turing Machine?

The idea comes from Alan Turing, who imagined a theoretical machine that could solve any problem with a computable solution, long before modern computers existed. He pictured it as a long tape holding information in symbols (such as binary code, 1s and 0s), with a read and write head that moves along the tape one square at a time. Following a simple set of instructions, the machine reads each square, takes an action, and writes new symbols, gradually working toward an answer.

Turing argued that such a machine could solve any computational problem that can be expressed in code and has a calculable answer. A system is Turing complete when it can imitate this machine by running any program the Turing machine could run. A basic calculator is Turing incomplete because it only performs a few fixed operations, while a fully programmable computer is Turing complete.

Turing also proved that there is no general way to decide in advance whether an arbitrary program will eventually stop or run forever. This is known as the halting problem. This matters for blockchains because no algorithm can reliably predict whether a submitted program halts, and a network cannot simply reject non-stopping programs.
You can find Turing completeness in everyday software: Excel spreadsheets, Internet browsers (via their JavaScript engines), and even games like Minecraft have been found to be Turing complete. However, this trait is largely invisible. Turing completeness becomes visible mainly when a system deliberately gives it up, as Bitcoin scripting does, in exchange for stronger guarantees about what the code can and cannot do.

Turing Completeness in Blockchain

Blockchains differ in how expressive their code is. Bitcoin uses a scripting language that is intentionally Turing incomplete. This makes its behavior easier to predict, reduces the risk of errors, and helps it avoid the halting problem altogether. Ethereum, on the other hand, was built to be more flexible to support smart contracts, which are programs that run exactly as written.
In practice, the Ethereum Virtual Machine (EVM) is usually described as quasi-Turing complete rather than fully Turing complete. Every execution is bounded by gas, a fee paid for computation, so a contract cannot run forever. If it uses too much, it simply stops with an out-of-gas error. This gas limit gives the EVM the power to run almost any program while protecting the network from infinite loops that could stall it.