Ончейн и офчейн вычисления, Тьюринг-полнота и доказательства с нулевым разглашением

Долгое время я скептически относился к Тьюринг-полным ончейн-вычислениям. На ранних этапах многие сторонники считали, что проблемы тут не существует, поскольку такой механизм, как лимит газа в Ethereum, ограничивает продолжительность вычислений. Они утверждали, что в итоге в какой-то момент газ закончится, и вычисления в любом случае будут остановлены. Но опасность того, что программа не остановится, не единственное, о чем стоит беспокоиться в полностью открытой и объединенной вычислительной системе. Более актуален вопрос о том, как новый смарт-контракт повлияет на общее состояние системы? С полными по Тьюрингу языками есть единственная возможность это проверить – пробовать и смотреть, что получится.

Говоря другими словами, акцент на “проблеме остановки” в самом ее прямом смысле, а именно на вопросе “Остановится ли когда-нибудь эта программа?”, слишком сужает саму проблему. Как я уже говорил в своем старом посте, посвященном проблеме остановки, из серии Tech Tuesday, любой вопрос типа “выдаст ли программа число 42?” или “выполнит ли эта программа когда-то строку 42 своего кода?», для тьюринг-полных языков ответа, как правило, не имеет. Для блокчейнов было бы логичнее сформулировать вопрос так: возможно ли, что из-за нового смарт-контракта будет неправильно выполняться какой-то существующий смарт-контракт? И лимит газа не поможет нам ответить на этот вопрос. В системе, где любой контракт может иметь отношение к любому другому контракту, такой вопрос, как правило, остается без ответа (если речь идет о произвольных контрактах, полных по Тьюрингу, не имеющих отношения к функционированию системы).

Некоторые в качестве ответа на вопрос предлагали формальную верификацию. Я твердо убежден в том, что система смарт-контрактов должна разрабатываться таким образом, чтобы обеспечить возможность формальной верификации. Это поможет в решении некоторых проблем, например, в обнаружении и недопущении определенных багов, которые делают возможными атаки, подобные той, в результате которой была украдена треть средств The DAO. Но все же формальная верификация не решает проблему, с учётом того, что ответа на такой тривиальный вопрос, как “как система будет вести себя при добавлении нового смарт-контракта”, как правило, не существует.

Что же можно сделать в этой ситуации? Я неравнодушен к идее неполных по Тьюрингу ончейн вычислений: при правильной их реализации не возникнет серьезных ограничений для достаточно простых, но при этом крайне полезных вычислений, которые будут выполняться в рамках смарт-контрактов (например, выполнение условного действия). Такой подход способен не только значительно упростить формальную верификацию, но и сделать ее настолько эффективной, что ответ на вопрос о влиянии новых смарт-контрактов на систему в целом в итоге будет получен.

Означает ли это, что мы должны полностью отказаться от Тьюринг-полных вычислений в блокчейнах? Нет. Я считаю, что место полных по Тьюрингу вычислений – офчейн. Но при этом блокчейн должен по умолчанию поддерживать проверку сертификатов доказательства с нулевым разглашением для полных по Тьюрингу офчейн-вычислений. При таком сценарии и при условии, что одна офчейн-нода должным образом выполняет вычисления и передает сертификат, последующая успешная ончейн-валидация результатов вычислений может использоваться как входные данные для смарт-контрактов.

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

 

Источник



Рубрики:DApps, Анализ, Мнение, смарт-контракты

Метки:

1 reply

Trackbacks

  1. Четыре всадника централизации — EthereumClassic - Stuff Aggregator

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s