Шардинг на простых примерах
Со временем блокчейны столкнулись с необходимостью улучшения эффективности своей работы. Ограниченная пропускная способность и высокие комиссии создавали искусственные препятствия на пути к широкому распространению криптовалют.
Ранее мы уже рассказывали о существующих решениях в материале: Что такое Layer 1 и Layer 2 решения? Сегодня подробнее и на простых примерах рассмотрим работу шардинга.
Если очень сильно упрощать, то шардинг это разделение базы данных на несколько частей. Термин произошел от английского "shard", в переводе означающего осколок. Блокчейн делят на отдельные части и закрепляют за ними определенные ноды. В такой схеме сетевым узлам проще контролировать отдельные части, чем весь блокчейн целиком.
Идея фрагментирования обработки операций стояла у истоков создания компьютеров, поэтому сама концепция не новая. До блокчейна шардинг применялся для распределения баз данных по разным серверам. Но в контексте распределения обработки транзакций для блокчейнов это довольно свежая идея.
Условно, если в какой-то сети есть 300 валидаторов, то они могут в любой момент в случайном порядке разделиться на 2 группы (два "осколка" или шарда) по 150 валидаторов и с прежним уровнем децентрализации обрабатывать транзакции параллельно друг другу в два раза быстрее.
Каждый шард в такой схеме выполняет свои транзакции и добавляет блоки в связке со своими нодами.
Применение этого инструмента есть в дорожной карте Ethereum на пути к переходу к обновленной версии экосистемы ETH 2.0, где планируется разбить сеть на 64 взаимосвязанных сегмента.
К слову, уже реализован шардин в блокчейне TON, где запраграмированно динамическое число сегментов в зависимости от нагрузки на блокчейн.
А можно попроще?
Чтобы понять принцип работы шардинга, рассмотрим эту концепцию на простом примере. В частности, описывая процесс принятия экзамена.
Допустим, у вас есть 100 преподавателей и 10 000 студентов, у которых нужно принять экзамены. И сейчас постараемся описать каждую концепцию на этом примере.
Если описывать работу обычного блокчейна с PoS-алгоритмом, то из 100 преподавателей случайным образом выберут 10 представителей, эти преподаватели вместе примут экзамен у 100 студентов и вынесут коллективное решение по каждому. Занесут результаты первой сотни студентов в ведомость, после чего начнется новая жеребьевка за следующие 10 преподавателей, которые будут принимать экзамен. И так пока все студенты не сдадут экзамен.
Когда мы говорим о шардинге, то схему можно представить следующим образом. 100 преподавателей случайным образом делятся на 10 групп по 10 человек и принимают экзамены параллельно друг другу в разных аудиториях. При этом студенты не могут выбирать аудиторию с любимыми преподавателями: то, к кому они попадут, также решается с помощью жребия.
На практике получается, что при такой же степени защиты от коррумпированности преподавателей (когда решение принимает консилиум из 10 случайных человек) мы получаем скорость принятия экзамена в 10 раз больше.
И если говорить о шардинге по модели Ethereum, то все ровно так, как в примере выше. Но когда мы рассматриваем идею динамического шардинга (как у TON), то появляются новые риски.
Так, например, если на экзамен придет не 10 000 студентов, а 1 000 000, то "ETH-преподаватели" просто будут сидеть в 100 раз дольше, а вот "TON-преподаватели" разделятся на 100 групп вместо 10, чтобы принять экзамен за то же время.
То есть, принимать экзамен будет уже не консилиум из 10 независимых человек, а каждый преподаватель единолично. Не стоит говорить какие открываются возможности для злоупотребления такой ситуацией - от предвзятости до взяточничества.
Поэтому для обеспечения корректной работы динамического шардинга вместе с увеличением количества студентов кратно им должен расширяться и штат, иначе будет снижаться независимость такого решения.
Но стоит немного усложнить пример, чтобы упомянуть еще о проблеме взаимодействия для шардов. Представьте, что экзамен это парный дипломный проект студентов, но каждый из них защищает работу отдельно, хотя оценка проекта должна быть единой для обоих студентов в паре.
И если для преподавателей "без шардинга" нет никакой проблемы заглянуть в ведомость предыдущей группы, чтобы проверить не был ли уже оценен проект ранее, то у преподавателей "с шардингом" у каждого своя ведомость и наладка процесса обмена информацией между параллельными группами это большая проблема, которую разработчики все еще пытаются решить максимально эффективно.
Кратко о преимуществах:
В заключении отметим зачем нужен шардинг, и какие возможности он открывает проектам:
- обработка транзакций распределяется по разным узлам, то есть шардам, что снижает нагрузку на каждый отдельный узел и ускоряет обработку транзакций в целом;
- благодаря более эффективной обработке транзакций затраты на них снижаются, и блокчейн становится более экономически выгодным для пользователей;
- распределенная архитектура через шардинг повышает устойчивость сети к отказам и атакам, обеспечивая более высокий уровень доступности и безопасности для пользователей.