Шардинг как тип распределения данных позволяет добиться гибкости информационной системы и активно используется в криптовалютах для повышения их масштабируемости.
У массового внедрения технологии блокчейн есть одно важное препятствие – проблемы масштабируемости. Их суть заключается в том, что экосистема не может обрабатывать большое количество транзакций и тратит на это слишком много времени.
Существующие блокчейн-решения демонстрируют неутешительные показатели. Всего 5 транзакций в секунду у Bitcoin, около 12 транзакций в секунду у Ethereum – такая производительность никак не может конкурировать с централизованными решениями, такими Visa (в области платёжных систем) или AWS (в области платёжных вычислений). Например, с ростом популярности CryptoKitties в 2017 году вся сеть Ethereum была особенно заметно замедлена из-за нескольких тысяч пользователей этого приложения для коллекционирования. Это, безусловно, беспокоит компании, которые используют или хотели бы использовать Ethereum для предоставления своих услуг.
В настоящее время все компьютеры, на которых запущены сети Bitcoin и Ethereum, работают с одним и тем же публичным реестром. Другими словами, каждый узел должен обрабатывать каждую транзакцию. Добавление большего количества компьютеров в сеть только повышает безопасность, но не эффективность. Это проявление трилеммы блокчейна, которую мы подробно рассматривали в одной из статей блога.
Это представляет серьезную проблему: если запуск узлов станет слишком дорогим, сеть будет более подвержена централизации. В то же время требование обработки каждой транзакции сделает её немасштабируемым. Шардинг является потенциальным решением этой же проблемы.
Шардинг пытается разделить блокчейн на несколько частей, чтобы узлам не пришлось отвечать за обработку каждой транзакции, передаваемой по сети. Внутри шарда (фрагмента) случайным образом выбираются ноды, которые принимают участие в голосовании и достижении консенсуса. Затем эти голоса проверяются валидаторами основной сети и объединяются посредством так называемого контракта на управление шардингом. Эти блоки осколков связаны друг с другом так же, как блоки блокчейна.
Многие частные системы уже используют шардинг в качестве решения для своего бизнеса, например, для горизонтального распределения нагрузки на базу данных или поисковую систему. Однако, следует сказать, что его реализация в общедоступной цепочке блоков все еще остается нерешенной проблемой, поскольку природа децентрализации и прозрачности, присутствующая в такой системе, также затрудняет обеспечение безопасности. Нет сомнений в том, что в случае успеха шардинг значительно снизит транзакционные издержки и позволит разработчикам создавать более сложные и полезные dApps.