April 12, 2022

Концепции развития умных контрактов: биткоин vs Ethereum

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

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

Скриптовый язык биткоина позволяет программировать условные транзакции (простейшие алгоритмы “if-then-else”), но не обладает полнотой по Тьюрингу. А сам блокчейн биткоина не содержит маркеры состояний. Поэтому консервативный биткоин не смог дать программистам желаемой свободы действий, и дальнейшая разработка пошла по двум большим направлениям — эксперименты с сайдчейнами (ответвлениями основного блокчейна биткоина) и создание новых блокчейнов с нуля.

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

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

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

Полнота по Тьюрингу

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

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

Более того, с жесткой критикой тьюринг-полных блокчейнов выступают так называемые “биткоин-максималисты”. По их мнению, включение излишних вычислений в блокчейн грозит существенными нагрузками на сеть. В результате это может привести к замедлению работы блокчейна, а, учитывая небольшой размер блока биткоина и десятиминутный промежуток между блоками, тьюринг-полные смарт-контракты являются неподъемными для биткоина. Но даже на более гибких и быстрых платформах вычисления, производимые на блокчейне, — довольно дорогое удовольствие.

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

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

По мнению Максвелла, для системы важна лишь верификация подлинности входящей информации, а не сами вычисления.

Основатель Ethereum Виталик Бутерин отвергает подобную критику с некоторыми оговорками. Он утверждает, что нужно разделять простые и сложные вычисления. Первые используются в элементарных умных контрактах и не требуют значительной мощности. Однако он соглашается, что совершать сложные вычисления в блокчейне глупо и бессмысленно. Именно поэтому существуют сервисы, подобные Ethereum Computation Market, которые производят необходимые расчеты офчейн.

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

«Здесь я провожу аналогию с группами крови. Если вы донор, вы хотите, чтобы у вас была первая группа крови, тогда кто угодно может использовать вашу кровь. Если же вы получаете кровь, вы предпочтете, чтоб у вас была четвертая группа, чтобы вам можно было переливать кровь от кого угодно. Подобным образом обстоит с языками программирования. Полнота по Тьюрингу — это четвертая группа крови: не важно, какой другой парадигмой вы пользуетесь, вы можете скомпилировать ее в тьюринг-полную», — объяснил Бутерин.

Масштабируемость и состояние

Вместе с тем Бутерин отметил, что видение Ethereum опирается не столько на тьюринг-полноту, сколько на хранение состояния в блокчейне (statefulness). Главное отличие модели Ethereum от биткоина он видит именно в этом, а тьюринг-полнота является всего-лишь следствием.

Простыми словами, разницу между двумя основными подходами можно объяснить так: смарт-контракты Ethereum способны хранить состояние в блокчейне (stateful), т.е. воспринимать каждую транзакцию как часть большой картины. Биткоин же использует контракты без хранения состояния (stateless), т.е. его блокчейн обрабатывает каждую транзакцию как абсолютно независимое событие.

С одной стороны, хранение информации о состоянии в блокчейне открывает перед программистами дополнительные возможности. По мнению Бутерина, парадигма Ethereum дает максимальную свободу разработчикам и позволяет им использовать любые вообразимые варианты функционала. Именно такой подход сделал возможным создание первых ДАО (децентрализованных автономных организаций).

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

Продолжение дискурса

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

О вторых мы поговорим в следующей статье. Среди первых можно выделить проекты-сайдчейны, пытающиеся объединить гибкость смарт-контрактов с надежностью первого блокчейна. Эталонный пример такого гибридного подхода — Counterparty. У этой платформы нет собственного блокчейна, свою информацию она внедряет в транзакции биткоина. Обычные ноды эту информацию игнорируют, а ноды Counterparty распознают ее и обрабатывают. Для создания смарт-контрактов платформа поддерживает язык Solidity — тот же, что использует и Ethereum.

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

«Мы предполагаем, что Rootstock будет намного безопасней других платформ благодаря стоящим за ним мощностям хэширования биткоина».Габриэль Курман, основатель RSK

Но привязка к блокчейну биткоина в то же время является и серьезным недостатком Rootstock, который, скорее всего, не позволит платформе стать “убийцей Ethereum”. Корень проблемы лежит в том, как происходит общение между Rootstock и основным блокчейном биткоина.

Транзакции проходят в обе стороны по определенным правилам — для перевода биткоинов в блокчейн Rootstock нужная сумма биткоинов отправителя блокируется в блокчейне биткоина, а получателю выдается эквивалент в токенах RSK в сети Rootstock. Так же происходит и обратный процесс. Но поскольку биткоин не использует “оракулы” и не может достоверно знать, что происходит в других блокчейнах (была ли заблокирована нужная сумма в RSK?), для осуществления переводов необходим гарант, третье лицо (в данном случае — RSK Federation), которое будет удостоверять соблюдение правил перевода активов между блокчейнами и получать за это вознаграждение с каждой такой транзакции. Учитывая, что устранение необходимости в сторонних гарантах — основная цель блокчейн-технологии, такой подход можно назвать шагом назад для индустрии.

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