Полнота по Тьюрингу – это система, которая может использоваться для любого алгоритма (независимо от его сложности) для поиска решения. В языках программирования это может быть представлено как реализация циклов и условий. Термин назван в честь выдающегося британского математика и ученого-криптографа Алана Тьюринга.
Большинство современных языков программирования полные по Тьюрингу, ведь такой подход способствует их большей функциональности и практическим преимуществам для пользователей. В разрезе блокчейнов цифровых валют полнота по Тьюрингу в основном употребляется при реализации смарт-контрактов. Однако существуют разные подходы, подчеркивающие принципиальное отличие Биткоина от альткоинов.
Полные и неполные согласно Тьюрингу платформы для работы со смарт-контрактами предлагают принципиально разные подходы к удовлетворению потребностей клиентов в таких инструментах. Хотя блокчейн Биткоина позволяет реализовывать алгоритмы типа «если… то… в противном случае…», разработчики сознательно отказались от полноты по Тьюрингу. Но почему?
Script разработан таким образом, чтобы сделать невозможным создание расчетных циклов, приводящих к использованию чрезмерных вычислительных мощностей и созданию непропорциональной нагрузки на ноды Биткоина. Если бы Script был полным по Тьюрингу, то были бы возможны Denial-of-Service (DoS) атаки на сеть Биткоина.
Биткоин-максималисты традиционно выступают против добавления полноты по Тьюрингу к алгоритмизации Биткоина, ведь такой подход создает чрезмерную нагрузку и замедляет выполнение смарт-контрактов. Главным аргументом является концентрация на обеспечении стабильной работы сети и проверке корректности и завершенности всех транзакций. Такая цель не может быть успешно реализована, если разработчики будут полагаться исключительно на Тьюринг-полные реализации.
Альткоины и различные проекты на алгоритме консенсуса Proof-of-Stake, напротив, готовы пожертвовать стабильностью и защищенностью данных пользователей для достижения большей масштабируемости и функционала. Сочетая ончейн- и офчейн-операции, они могут предложить разные варианты смарт-контрактов, но соответствующий уровень стабильности и защищенности тогда не обеспечивается. К сожалению, не все пользователи понимают эти нюансы и могут обращать внимание на вторичные факторы, пренебрегая собственной безопасностью.
Как Биткоин отвечает на тренд по расширению возможностей смарт-контрактов? Путем использования сайдчейнов. Таким образом, масштабирование сети может быть улучшено через усовершенствование функционала смарт-контрактов, но без дополнительных угроз безопасности и стабильности сети. Участники должны иметь стимулы использования полных нод для проверки транзакций и содействия стабильности всей сети.
Отказ от полноты по Тьюрингу не мешает Биткоину представлять несколько типов смарт-контрактов для пользователей. Самый популярный и один из самых простых – это P2PKH, позволяющий отправлять монеты на другой адрес. В результате только владелец частного ключа может присылать коины в будущем. Функционал мультиподписи позволяет создавать разные конфигурации и привлекать нескольких участников для подтверждения транзакций. Таким образом можно достичь баланса между всеми партнерами и предотвратить концентрацию власти у одного из них. Распространены варианты мультиподписи 2 из 3 или 3 из 5.
Также возможно использование смарт-контрактов с временной блокировкой монет. Более того, можно потребовать несколько подписей в течение определенного периода времени, а затем будет достаточно одной подписи. Таким образом, есть возможность предупредить различные форс-мажорные обстоятельства и сохранить контроль над монетами. Стандарт P2SH позволяет отправлять коины на разные типы адресов, включая и упомянутые варианты.
Обновление Taproot еще больше расширяет функционал смарт-контрактов Биткоина, поскольку позволяет отправлять коины на произвольный адрес или скрипт. Общее количество возможных скриптов составляет 2128, а использование монет возможно при активации любого из них. Пропорционально расширяется и использование Lightning-каналов, которые также являются видом смарт-контрактов на втором уровне.
В целом существующие возможности блокчейна Биткоина достаточно эффективны для удовлетворения потребностей участников сети и обеспечения ее стабильности в полностью децентрализованной форме. Lightning Network и сайдчейны способствуют еще большей конфиденциальности и функциональности для пользователей. Поэтому разработчики Биткоина наглядно демонстрируют реализацию разных типов смарт-контрактов, избегая полноты по Тьюрингу. Другими словами, альтернативные подходы, предлагаемые другими цифровыми активами, не выдерживают критики, ведь они создают угрозы для пользователей, а, следовательно, и для всей цифровой экосистемы своих блокчейнов.
Полнота по Тьюрингу – важная теоретическая концепция, позволяющая понять преимущества Биткоина над другими блокчейнами. Script намеренно ограничивает использование определенных циклов и условий для предотвращения перегрузки сети и избегания проблем для Биткоин-нод. Поэтому проекты, предпочитающие полные по Тьюрингу языки программирования, не имеют соответствующего уровня безопасности.