Turing Complete đề cập đến một cỗ máy, nếu được cung cấp đủ thời gian và bộ nhớ cùng với các hướng dẫn cần thiết, có thể giải quyết mọi vấn đề tính toán, bất kể phức tạp đến đâu. Thuật ngữ này thường được sử dụng để mô tả các ngôn ngữ lập trình hiện đại vì hầu hết chúng là Turing Complete (C++, Python, JavaScript, v.v.).
Trước máy tính thời hiện đại, Alan Turing đã đưa ra giả thuyết rằng một ngày nào đó sẽ có một chiếc máy có thể giải quyết mọi vấn đề. Chiếc máy này được biết đến với cái tên Máy Turing.
Alan tưởng tượng chiếc máy của mình như một đoạn băng dài với thông tin được viết trên đó dưới dạng mã nhị phân (1 và 0). Máy cũng sẽ có một đầu đọc/ghi di chuyển dọc theo băng để đọc từng ô vuông, từng ô một. Mã sẽ hỏi máy một vấn đề tính toán và băng sẽ có độ dài phù hợp để đạt được giải pháp.
Khi đầu di chuyển dọc theo băng, máy sẽ làm theo các hướng dẫn đơn giản điều khiển cách nó phản ứng. Nó đọc băng, làm theo hướng dẫn và thực hiện một hành động nhất định để viết mã mới khi nó di chuyển. Mẫu mã mới này là câu trả lời cho vấn đề. Máy giả định của Turing có thể trả lời bất kỳ vấn đề tính toán nào có thể được biểu diễn bằng mã (và có câu trả lời có thể tính toán được).
Một thiết bị hoặc ngôn ngữ lập trình được coi là Turing Complete khi nó có thể sao chép Máy Turing bằng cách chạy bất kỳ chương trình nào hoặc giải quyết bất kỳ vấn đề nào mà Máy Turing có thể chạy hoặc giải quyết. Mặt khác, nếu một thiết bị hoặc ngôn ngữ lập trình không thể thực hiện được điều đó thì nó được gọi là Turing chưa hoàn chỉnh.
Một máy tính đơn giản là một ví dụ về một hệ thống Turing Chưa hoàn thành vì nó chỉ có thể thực hiện một số loại phép tính. Ngược lại, một máy tính khoa học có thể lập trình (có thể thực hiện mọi loại phép tính) có thể được coi là Máy Turing.
Trong khi một số ứng dụng của công nghệ chuỗi khối là Turing Complete, một số khác lại là Turing Incomplete. Điều này thay đổi tùy theo công nghệ tập lệnh được triển khai. Ví dụ: ngôn ngữ kịch bản được sử dụng trong Bitcoin được thiết kế có chủ ý là Turing Incomplete vì nó phục vụ mục đích của nó và độ phức tạp tăng lên sẽ có khả năng gây ra sự cố. Bằng cách giữ cho nó đơn giản, các nhà phát triển có thể dự đoán với độ chính xác cao về cách nó sẽ phản ứng trong số lượng hữu hạn các tình huống mà nó được sử dụng.
Mặt khác, Ethereum được xây dựng dưới dạng chuỗi khối Turing Complete. Điều này rất quan trọng vì nó cần hiểu các thỏa thuận tạo nên hợp đồng thông minh. Bằng cách trở thành Turing Complete, Ethereum có khả năng hiểu và thực hiện bất kỳ thỏa thuận nào trong tương lai, ngay cả những thỏa thuận chưa được nghĩ đến. Nói cách khác, Turing Completeness của Ethereum có nghĩa là nó có thể sử dụng cơ sở mã của mình để thực hiện hầu như mọi tác vụ, miễn là có hướng dẫn chính xác, đủ thời gian và sức mạnh xử lý.