Продолжающийся краудсейл проекта Tezos, имеет все шансы привлечь рекордную, даже по нынешним временам, сумму – за два дня до окончания кампании (блок Эфириума №475622) уже собрано 323 500 ETH и 58 000 BTC. Во многом это обусловлено отсутствием верхней границы ICO. Однако, даже если абстрагироваться от этих внушительных сумм, платформа Tezos представляет собой интересный и достаточно глубоко проработанный проект: разработчики собираются применить в ней ряд уникальных (и спорных) решений. Популярный обзор основных особенностей Tezos представляют в своем блоге интерны ConsenSys, Санни Агарвал (Sunny Aggarwal) и Нэт Раш (Nate Rush).

Несмотря на обоснованный скепсис, который вызывает у многих используемый в Tezos вариант консенсуса PoS, основная предлагаемая ценность Tezos сосредоточена в несколько других областях:

  1. Безопасность системы, начиная с самых низших уровней

  2. Автоматизированная процедура модификации базового протокола

  3. Автоматизированная система управления протоколом

В данной статье проблемы алгоритма PoS будут описаны довольно кратко, а основное внимание будет уделено вышеперечисленным пунктам.

Безопасность системы

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

Для блокчейн-платформы, которой придется когда-нибудь (если все получится) управлять триллионами долларов, это звучит привлекательно. Tezos написан на Ocaml, популярном языке функционального программирования, позволяющем формально верифицировать отдельные части протокола. Это важно, особенно в контексте ПО с открытым исходным кодом, существенно упрощая задачу поиска уязвимостей, которые могут быть добавлены участниками сообщества, как случайно, так и намеренно. Стоит, однако, отметить, что формальная верификация – на панацея; она просто подтверждает соответствие кода спецификации, которая, в свою очередь, может содержать ошибки.

Здесь уместно провести сравнение с Эфириумом. Платформа Эфириума отличается от Tezos (и Биткойна) тем, что она не определяется через референсный клиент; вместо того протокол лишь формально определен в Желтой Книге, оставляя конкретную реализацию разработчикам клиентов. Недостатки существуют у обоих подходов. С одной стороны, формально определенный протокол дает возможность реализации множественных клиентов (Geth, Parity), а это усиливает эластичность системы к ошибкам в одном из клиентов. К тому же, никто не мешает написать еще один клиент Эфириума на Ocaml. С другой стороны, это может стать причиной нарушения консенсуса между клиентами в некоторых случаях.

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

Еще один фактор: OСaml относительно сложен для освоения по сравнению с Rust или Go, языками двух основных клиентов Эфириума. В некоторой степени это является фактором централизации – меньше программистов, способных внести вклад. Другими словами, читателю предстоит решить для себя, стоит ли применение эзотерического языка, который мало кто знает, возможных преимуществ в безопасности системы.

Кроме клиента, написанного на функциональном языке, Tezos создал совершенно новую Виртуальную Машину (VM), работающую на Michelson – стековом функциональном языке. Это идет вразрез с общепринятой практикой, в которой новые блокчейновые проекты просто встраивают хорошо отработанную EVM – Виртуальную Машину Эфириума. Сторонники VM утверждают, что функциональный язык позволяет на ранней стадии локализовать уязвимости, подобные той, которая вызвала взлом TheDAO (повторный вход). Даже сейчас сообщество Эфириума вынуждено проводить хакатоны на написание вредоносных смарт-контрактов, в которых обнаруживаются «скрытые уязвимости», т. е., при отсутствии формальных ошибок результат выполнения контракта не соответствует задуманному.

Трудности освоения новой VM разработчиками дают еще один повод для критики. Конечно, эти трудности можно решить созданием интуитивно понятных языков высокого уровня (подобных Solidity в EVM), однако это потребует серьезных усилий со стороны Tezos. Создание Solidity и ассоциированного с ним пакета инструментов для разработчиков Truffle заняло не один год. Конечно, можно возразить, что у EVM множество последователей. На это создатели Tezos отвечают, что сообщество EVM все-таки невелико, ведь отрасль находится в начальной стадии, так что объявлять сейчас о своем доминировании, это все равно, как если бы Netscape объявил о своей победе в начале браузерных войн. Независимо от заслуг EVM, Michelson, или любой другой потенциальной VM (например, WebAssembly) нельзя, чтобы размер его сообщества влиял на выбор. При строительстве инфраструктуры будущего нужно выбирать лучшую модель.

Нужно также отметить, что Michelson не единственная верифицируемая VM. Можно упомянуть еще Rholang, который разрабатывает Грег Мередит (Greg Meredith) в своем проекте Rchain.

Автоматизированная процедура модификации протокола

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

  1. Сетевой слой

  2. Слой консенсуса

  3. Слой транзакций

Сравнивая с другими модульными платформами, видно, что Tendermint содержит сетевой слой и слой консенсуса, оставляя слой транзакций на усмотрение создателя блокчейна. Tezos продолжает развивать эту идею, сделав независимым еще и слой консенсуса: сетевой слой получает подтверждение в виде хэша файла OСaml, который содержит весь остальной протокол, так что каждый узел может его формально верифицировать, и указать с помощью функции apply на новый файл протокола (это и есть причина, по которой необходим единый референсный клиент).

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

Однако, по крайней мере сейчас, команда Tezos предпочитает вести проект в направлении создания единого публичного блокчейна с функцией автоматического «самообновления». Предполагается возможность обновления протокола посредством он-чейн механизма управления (об этом в следующей главе). Отделение сетевого слоя от всего остального означает, что протокол может быть модифицирован без необходимости хардфорка, чреватого расколом системы. Здесь могут быть две точки зрения: (1) это хорошо; и (2) это плохо. Именно так и разделились мнения авторов обзора, так что решать придется читателям. Ниже приводятся аргументы «за» и «против»:

Модульность в сочетании с функцией автоматического апдейта и управления – это хорошо:

  1. Большинство хардфорков не вызывают разногласий – это простые реорганизации, исправление ошибок, улучшение алгоритмов; в этом случае нет нужды ввязываться в сложные процессы координации, следить за тем, чтобы все своевременно обновили код, не допустив ошибок, и оперативно реагировать на любые проблемы, возникающие из-за несовместимости между старой и новой версией протокола. Даже некоторые софтфорки способны вызвать проблемы без высокой степени координации. (вот почему SegWit требовал 95% одобрения). Именно эти проблемы и пытается решить Tezos.

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

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

А вот противоположный аргумент: модульность в сочетании с функцией автоматического апдейта и управления – это плохо:

  1. Доброкачественные хардфорки предполагают осознанное участие и необратимы. Форки, удовлетворяющие этому определению, не являются принудительными и позволяют пользователям следовать той цепи форка, в которую они верят. Если Tezos любым способом форсирует обновления, значит, его форк является принудительным.

  2. Если ни одно из этих условий не выполняется, то весь предлагаемый механизм управления есть немногим более чем любопытный способ голосования пользователей о предпочтительной цепи, мало чем отличающийся от известной системы Carbonvote в системе Эфириума.

Автоматизированная система управления протоколом

Если обновление проводится изнутри протокола, то кто решает, когда и как его проводить? Здесь в действие вступает разработанный Tezos слой управления. (В 2014 году он был инновационным. Сейчас похожие идеи воплощает проект Dfinity). Согласно документации Tezos, решение о замене старого протокола новым решает процесс голосования. Предполагается, что процесс запускается голосованием владельцев монет.

Как и в предыдущем случае, есть две точки зрения на этот механизм.

Против предлагаемой системы:

Опасность несовпадения интересов. Цитируя разработчика Эфириума Влада Замфира (Vlad Zamfir), протокол «сделает китов королями системы», а это станет проблемой, если интересы владельцев крупных капиталов разойдутся с интересами пользователей протокола. Крайне маловероятно, что обладающие властью проголосуют за уменьшение собственного влияния, выплат или других преференций, даже если за это проголосуют пользователи. Противопоставление владельцев крупных капиталов сообществу – опасное решение.

За предлагаемую систему:

Аргумент о «несовпадении интересов» несостоятелен, так как все пользователи являются владельцами монет, которые заинтересованы в успехе системы. 

Управление голосованием владельцев монет более децентрализованное и демократичное, чем управление посредством Фонда. Однако стоит отметить, что на первом этапе развития сети централизованное управление может быть полезным. Вот почему Фонд Tezos в течение первого года (и только первого) будет иметь право вето.

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

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

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

Proof of Stake

Самая слабая часть системы в ее нынешнем виде. Алгоритм PoS, предлагаемый Tezos, был достаточно продвинутым в 2014 году, но с тех пор прошло много времени. Seed определяется каждые 2048 блоков, после чего используется для выборки приоритета валидаторов на создание следующего блока. Первый валидатор в выборке может отправить блок через минуту после предыдущего блока. Если первый не появится, следующий сможет опубликовать блок через 2 минуты и так далее. После 16 неудачных попыток блок сможет предложить любой желающий. Затем, набор «подписывающих» узлов фиксирует (commit) первый блок, который он видит и подписывает его, создавая некоторую степень финализации.

Определение сида через 2048 блоков (полтора дня) делает валидаторов уязвимыми к DoS атакам. Несмотря на то, что в протоколе предпринимаются меры по недопущению создания картелей, они выглядят явно недостаточными для 2017 года.

В целом, алгоритм PoS выглядит совершенно устаревшим и является самым слабым звеном проекта. Он не конкурент таким BFT PoS механизмам, как Casper или Tendermint. С большой вероятностью он будет использоваться только на первом этапе развертывания системы. Учитывая модульную структуру, можно предположить, что используя механизмы, рассмотренные выше, Tezos просто выберет для консенсуса Tendermint, Casper или их модификации.

Заключение

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