Programming languages that can execute arbitrarily complex programs are known as Turing-complete. Most modern programming languages are Turing-complete, including Python, JavaScript, and Go. Solidity, the programming language that all Ethereum smart contracts are written in, is Turing-complete and enables arbitrarily complex smart contracts. Bitcoin’s scripting language is not Turing-complete, limiting the possibility of protocol-layer smart contracts. This term is named after computer scientist Alan Turing, who formalized the concepts of algorithm and computation with the Turing machine, considered the first general-purpose computer.