Парачейны Polkadot: подробный обзор

Фото - Парачейны Polkadot: подробный обзор
Парачейн — это структура данных для конкретного приложения. Она глобально согласована и взаимодействует с валидаторами релейной сети Polkadot (relay chain), отвечающей за координацию работы системы в целом. Почти всегда парачейн принимает форму блокчейна, но это не обязательное условие.
Парачейны могут создать собственный токен и запустить свою экономику. Они не нуждаются в таких схемах, как PoS, но Polkadot дает им полную свободу действий в реализации идей, будь то стейкинг или комиссии за транзакции в собственном токене. Релейная сеть будет обеспечивать выполнение всех транзакций независимо от правил парачейна.

Парачейны могут взаимодействовать между собой. Для этого используется Cross-Consensus Message Format (XCM, формат кросс-консенсусных сообщений) — стандарт, который определяет, как должны передаваться сообщения. С помощью него разработчики определяют данные и источники, которые их сети будут получать и отправлять. Коммуникация с помощью XCM осуществляется не только между сетями, но и между смарт-контрактами и мостами. Ключевым элементом XCM являются коллаторы.

Кто такие коллаторы?

Обслуживанием парачейнов занимаются сетевые администраторы — коллаторы (collators). Они очень похожи на валидаторов любого другого блокчейна, например, Ethereum, но за гарантии безопасности отвечает Polkadot. Как участники сети (блокчейн-узел, нода) они поддерживают полную ноду парачейна, сохраняют всю нужную информацию о нем, собирают транзакции пользователей парачейна, объединяя их в кандидатов блока и создают доказательство перехода состояния (state transition proofs Proof-of-Validity, PoV). За мотивацию и поощрение коллаторов отвечает парачейн.

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

Как работает парачейн протокол?

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

Сам протокол состоит из трёх этапов, включающих два раздела: конвейер включения (inclusion pipeline) и процесс утверждения (approval process). Ниже изображено перемещение блока (белый квадрат) по всем этапам справа налево.

Конвейер включения

Конвейер включения — это путь параблока от его создания до включения в релейную сеть, по ходу которого он получает разные статусы. 

Ключевые моменты в этом разделе (процесс на картинке идет справа налево):

1. Валидаторы назначаются всем парачейнам с помощью процедуры «назначение валидатора» (validator assignment).

2. Коллатор создает кандидата в блок парачейна вместе с PoV.

3. Коллатор отправляет кандидата и PoV назначенным валидаторам. Кандидат получает статус «откомандирован» (seconded).

4. Валидаторы участвуют в подсистеме «поддержка кандидатов» (candidate backing). Кандидаты, набравшие достаточное количество утверждений о достоверности, становятся подкрепленными (backable). Их подкрепление — это набор подписанных утверждений.

5. Автор блока релейной сети выбирается с помощью BABE (Blind Assignment for Blockchain Extension), механизма производства блоков. Автор может отметить по 1 подкрепленному блоку для каждого парачейна, чтобы включить его в блок релейной сети. После этого кандидат считается поддержанным (backed).

6. Кандидат получает статус «ожидает доступности» (pending availability), но еще не считается частью парачейна.

7. В следующих блоках релейной сети валидаторы участвуют в подсистеме «распределения доступности» (availability distribution), чтобы обеспечить доступность кандидата.

8. На этом этапе машина состояний релейной сети получает достаточное количество информации, чтобы считать PoV блока доступным. Далее блок меняет статус на «включен» (included) и считается частью парачейна, переходя в разряд полных блоков (параблоков).

В некоторых случаях кандидат может быть не включен в парачейн:

1. Коллатор не может передать блок ни одному назначенному валидатору.

2. Кандидат не поддержан валидаторами в подсистеме «поддержка кандидатов».

3. Автор блока релейной сети не выбрал кандидата.

4. PoV кандидата недоступен в течение тайм-аута и он отбрасывается из релейной сети.

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

Процесс утверждения

Несмотря на то, что блок уже считается частью парачейна, он имеет статус «ожидает утверждения» (pending approval). Polkadot предполагает, что треть валидаторов могут быть нечестными и ошибочно поддержать кандидата, даже при случайном отборе. Процесс утверждения решает эту проблему, позволяя выявить неправомерное поведение постфактум.

Процесс утверждения можно разделить на следующие этапы:

1. Параблоки ожидают утверждения в течение  временного окна.

2. За это время вторичные валидаторы самостоятельно вызываются для проведения повторной проверки каждого параблока.

3.Вторичные валидаторы получают параблок с PoV и снова запускают функцию проверки.

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

5. Параблок утверждается либо отклоняется.

Визуальное представление процесса утверждения (справа налево):

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

Слоты для парачейнов

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

1. Системные парачейны содержат основные функции протокола Polkadot, но в парачейнах, а не в релейной сети.

2. Аукционы парачейнов — это аукционы, где пользователи голосуют за проект собственными токенами DOT. Победитель арендует слот. В случае, когда проект не в состоянии продлить аренду, он становится паратредом.

3. Паратреды (Parathreads) — это идея для парачейнов в виде временного доступа к Polkadot без необходимости аренды слота, который делится между конкурирующими сетями. Некоторые из них не имеют возможности арендовать слот. Они считают это нецелесообразным, ведь у них идет плата за каждый выполненный блок.

Зачем использовать парачейны?

Парачейны масштабируют систему Polkadot за счет параллельной обработки транзакций, при этом сохраняя общую безопасность сети. 

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

Важно отметить и потенциал парачейнов. Например:

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

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

3. Создание сетей, где реализованы смарт-контракты.

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