Это вольный и краткий перевод статьи: https://blog.zilliqa.com/https-blog-zilliqa-com-the-zilliqa-design-story-piece-by-piece-part1-d9cb32ea1e65

Как и было сказано во вводной статьеZilliqa — это новая блокчейн платформа, которая способна обрабатывать тысячи транзакций в секунду. Таким образом, у Zilliqa есть потенциал для соперничества с традиционными платежными системами (такими как Visa и MasterCard). Более того, скорость обработки транзакций растет примерно пропорционально росту сети.

Эта статья посвящена концепции шардинга, которая применяется в Zilliqa для обеспечения масштабируемости. Шардинг в Zilliqa применяется в разных аспектах работы системы: шардинг сети, шардинг при обработке транзакций и шардинг распределенных вычислений.

Что же такое шардинг?

Итак, шардинг — это механизм, который позволяет разделить сеть Zilliqa на небольшие группы, которые носят название шард. Представьте, что сеть состоит из 1000 нод. Тогда можно разделить сеть, скажем, на 10 шардов по 100 нод в каждом.

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

Сама идея шардинга не нова и используется в базах данных для повышения производительности. А вот идея применения шардинга в блокчейне появилась сравнительно недавно, в 2015 году, в соавторстве с командой Zilliqa.

И это все? Звучит просто!

Сама идея проста, но вот ее реализация на практике довольно затруднительна. Ниже приведены основные проблемы, которые необходимо решить для применения механизма шардинга:

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

2. Создание шардов. Необходимо разработать механизм разделения нод на шарды, а также определить, кто именно будет решать, в какой шард попадет конкретная нода. Этим не может заниматься команда Zilliqa, потому что команда гипотетически может скомпрометировать безопасность в Zilliqa, поместив «нечестные» ноды в один шард.

3. Размер шарда. Можно ли создать крошечные шарды размером, скажем, в 10 нод? Конечно же нет, ведь чем меньше размер шарда, тем проще будет мошенникам взять его под контроль. Более того, эти же шарды используются для обработки транзакций, поэтому небольшое количество нод на шард абсолютно неприменимо в данном случае.

Как Zilliqa борется с этими проблемами?

1. Контроль за атаками Сивиллы. Существует несколько способов, чтобы предотвратить атаки Сивиллы или сделать их экономически невыгодными. Например, ноды могут внести депозит в денежном эквиваленте или в токенах в качестве залога. Или можно попросить их произвести вычисления, как в механизме PoW. Zilliqa тоже использует PoW — каждая новая нода должна произвести ряд вычислений перед тем как начать работу в сети. Ранее добавленные ноды проверяют результат вычислений и выдают авторизацию. Таким образом, PoW служит своеобразным входным билетом в сеть.

2. Автоматизированное создание шардов. Использование протокола PoW позволяет автоматически создавать шарды. Zilliqa выбирает особую группу нод. Выбор производится на основании PoW. Через определенный интервал времени, один из членов данной группы заменяется новым членом (используется принцип «первым пришел — первым ушел»). Таким образом сохраняется постоянное число участников в группе. Новым участником становится нода, которая быстрее всех произвела вычисления. Данная группа и инициирует процесс шардинга. Затем все ноды выполняют новые вычисления согласно механике PoW, и на основании этих расчётов каждая нода определяется в некий шард.

3. Выбор верного размера шарда. Данная задача является критичной для поддержания безопасности системы. Предположим, что в сети находится 1000 нод, из которых ¾ (750) являются честными, а оставшиеся 250 нод — мошеннические. Теперь давайте создадим шарды различного размера и вычислим вероятность того, что хотя бы треть нод в одном шарде мошеннические. Как видно из рисунка, вероятность этого высока при размере шарда в 100 нод. Так как для консенсуса необходимо наличие подавляющего большинства «честных» нод, то размер шарда должен быть увеличен. При размере от 600 нод, вероятность снижается до одной миллионной. Именно поэтому в Zilliqa было решено установить минимальный размер шарда в 600 нод.

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

Наконец, шардинг позволяет производить вычисления и эффективно использовать смарт-контракты. Например, одни шарды могут выполнять функции map, другие — reduce, производя распределенные вычисления.

Заключение

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

Резюме

Zilliqa — новая блокчейн платформа, которая может обрабатывать тысячи транзакций в секунду, таким образом, потенциально приближаясь к Visa и MasterCard.

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

Основные проблемы шардинга следующие: защита от атак Сивиллы, процесс создания шардов и определение размера шарда. Zilliqa борется с этими проблемами путем применения PoW для авторизации нод, автоматического создания шардов специально отобранной группой нод, установлением минимального размера шарда в 600 нод.