Тьюринговая полнота биткойн-скрипта

Для меня скрипты — одна из самых интересных особенностей Биткойна. Они предоставляют возможности, не имеющие эквивалента в классических валютах. Однако вики утверждает

Он намеренно не является полным по Тьюрингу и не содержит циклов.

  1. В чем причина этого решения?
  2. Есть ли предложения по полезным контрактам, которые были бы возможны только в полной реализации сценария Тьюринга?
  3. Существуют ли альтернативные криптовалюты с полными скриптами Тьюринга? Если да, то как они решают проблемы с 1?

Ответы (1)

Если бы сценарии были полными по Тьюрингу, вы могли бы создать довольно короткий сценарий, который выполнялся бы чрезвычайно долго (как Busy Beaver ) или содержал бы бесконечный цикл. Это, как правило, приводит к отказу в обслуживании для всех в сети, когда они пытаются проверить транзакцию.

И не было бы общего способа определить, будет ли сценарий зацикливаться бесконечно или в конце концов завершится: это проблема остановки .

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

Кажется, что проще избежать ситуации всем вместе.

Если бы существовало ограничение, было бы лучше иметь ограничение на количество выполняемых инструкций, а не на затрачиваемое время, чтобы обеспечить согласованность.
@RentFree: что по существу сводится к тому, что мы имеем сейчас. Если в сценарии, который вам нужен, есть цикл, который гарантированно завершится в течение определенного количества инструкций, вы можете развернуть цикл в прямолинейный сценарий с фиксированным количеством инструкций. На самом деле, в нынешнем виде количество выполняемых инструкций, количество байтов в сценарии и плата, которую вы платите, примерно пропорциональны.