Образование

Что такое шардинг и как он ускоряет работу блокчейнов

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

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

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

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

Проблема масштабируемости блокчейна заключается в том, что по мере роста количества пользователей блокчейна увеличилось и количество транзакций. Большая часть блокчейнов была не готова к таким объемам транзакций, что привело к низким показателям TPS (Transactions-per-second) при высокой загруженности. Блокчейны BTC и ETH, например, столкнулись с этой проблемой, что стало причиной для снижения скорости обработки транзакций из-за высокой нагрузки на сеть, а также увеличило комиссии за переводы.

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

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

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

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

Как работает шардинг?

Для понимания принципа работы шардинга, вспомним, как функционируют блокчейн-сети. 

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

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

В базах данных существует два ключевых подхода к масштабированию — горизонтальное и вертикальное разделение. 

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

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

Среди преимуществ горизонтального разделения выделяют:

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

Типы шардинга

Шардинг можно разделить на три типа: сетевой, транзакционный и шардинг состояния. Основной принцип работы шардинга можно описать фразой «Разделяй и властвуй» — каждый шард берет на себя часть работы по обработке транзакций, повышая производительность сети. Рассмотрим каждый из типов шардинга подробнее: 

  1. Сетевой шардинг. Является основой для других механизмов шардинга. Суть работы заключается в повышении безопасности узлов. Предотвращение атак со стороны недобросовестных узлов происходит путем выбора случайных узлов для каждой шарды и создания независимого согласия внутри самой шарды. 
  2. Шардинг транзакций. В отличие от сетевого шардинга, этот тип распределяет транзакции по разным независимым шардам для последующей обработки. 
  3. Стейт шардинг. Данный тип шардинга нацелен на решение проблемы хранения данных. Каждый шард отвечает только за свое внутреннее состояние, а не за состояние всей сети. В связи с этим возникает ряд проблем, связанных с безопасностью и эффективностью транзакций. 

Преимущества

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

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

Недостатки

Несмотря на все преимущества, шарды не являются идеальным решением проблемы масштабирования. Среди недостатков выделяют: 

  • Атаки на шард и безопасность сети. Шарды требуют меньших вычислительных мощностей, из-за чего повышается риск захвата одной из них при помощи атаки 51%. Также, для корректного функционирования шардов необходим надежный протокол распределения нагрузки, чтобы избежать нестабильности сети.
  • Транзакции между шардами. Если шардам не удастся отслеживать точное состояние друг друга во время проведения транзакции, это может привести к двойному расходованию средств.
  • Доступ к данным. Если одна из нод не сможет выполнять свою работу, это приведет к сбоям в работе блокчейна и недоступности определенной части информации. 

Читайте в нашем блоге: