Система сценариев Биткойн намеренно не является полной по Тьюрингу — почему?

Может ли кто-нибудь объяснить мне, почему система сценариев Биткойн намеренно не является полной по Тьюрингу? Усложнить разработку вредоносных программ (наверное)? Или потому, что было сложно сделать его полным по Тьюрингу?

Биткойн использует систему сценариев для транзакций. Подобно Forth, Script прост, основан на стеке и обрабатывается слева направо. Он намеренно не является полным по Тьюрингу и не содержит циклов.

Получено с: https://en.bitcoin.it/wiki/Script .

Ответы (3)

Как уже говорили другие, нет реальной необходимости в том, чтобы сценарии Биткойн были более сложными, чем они есть, поскольку их сложности более чем достаточно для предполагаемых приложений; но главная причина в том, что отсутствие некоторых функций (например, циклов) в языке делает его полностью детерминированным: вы можете точно знать, когда и как данная программа завершится; у вас не может быть бесконечных циклов, если у вас нет циклов в первую очередь, поэтому вам не нужно беспокоиться о том, что программы застревают и блокируют/сбой интерпретатора, который их запускает (в данном случае, основной Биткойн программного обеспечения).

Отсутствие необходимости иметь дело с проблемой остановок , безусловно, является плюсом для крошечного встроенного специализированного языка, такого как тот, который используется для скриптов Биткойн.

Легче измерять и ограничивать, если он не завершен по Тьюрингу, помня, что каждый узел в сети должен выполнять каждый скрипт для обеспечения достоверности, и мы хотим, чтобы он был легким. Не то чтобы это было чем-то более сложным, никто не использует то, что у нас есть, чтобы делать что-то интересное. Большинство кодов операций полностью отключены, и запросов на их повторное включение не поступало.

Сценарий используется так мало, что я вручную проверял каждый отдельный экземпляр нестандартной транзакции, чтобы увидеть, что они делают. Кроме соревнований по хеш-коллизиям и множества сломанных выходов p2pool, никто на сегодняшний день не сделал ничего даже близко интересного.

Другими словами, это не сложно, потому что в этом нет необходимости.

Помимо того, что сказал goatse, и как комментирует ваш пост, неполный по Тьюрингу означает отсутствие циклов, которые могут представлять проблему с искаженными (преднамеренно или нет) сценариями.