Блокчейн, бесспорно, является революционной технологией в мире криптографии и цифровых валют, представляя собой децентрализованную, безопасную и масштабируемую систему. Однако, он не является идеальным. Как гласит трилемма блокчейна, на существующем уровне развития он может сочетать в себе только 2 из 3 вышеописанных свойств.
Миллионы разработчиков создают различные технологии и подходы, призванные решить эту трилемму. Сегодня мы поговорим про один из способов решения проблемы масштабирования — шардинг.
Что такое шардинг?
Проблема масштабируемости блокчейна заключается в том, что по мере роста количества пользователей блокчейна увеличилось и количество транзакций. Большая часть блокчейнов была не готова к таким объемам транзакций, что привело к низким показателям TPS (Transactions-per-second) при высокой загруженности. Блокчейны BTC и ETH, например, столкнулись с этой проблемой, что стало причиной для снижения скорости обработки транзакций из-за высокой нагрузки на сеть, а также увеличило комиссии за переводы.
Именно в невозможности блокчейна в силу технических ограничений увеличить этот показатель, чтобы добиться оптимальной скорости обработки переводов, и заключается проблема масштабируемости.
Существует два основных подхода к обработке данных для решения этой проблемы. Первый подход — последовательная обработка данных. Она вынуждает каждую ноду обрабатывать и хранить полную информацию о всех транзакциях в сети. Тогда как второй метод, параллельная обработка данных, дает возможность подтверждать несколько операций единовременно.
Концепция шардинга заключается в делении единой базы данных на более мелкие составляющие — шарды. Благодаря шардам возможно распределить вычислительную и накопительную нагрузку, позволяя узлам хранить информацию только о своей доле транзакций, а не о всех существующих в блокчейне.
Таким образом, каждый шард обрабатывает транзакции и данные независимо от других нод. Это напрямую повышает эффективность и масштабируемость сети, а также оптимизирует требования к хранению данных для каждого узла.
Как работает шардинг?
Для понимания принципа работы шардинга, вспомним, как функционируют блокчейн-сети.
Основа любого блокчейна — ноды, хранящие в себе всю историю транзакций в сети. При обработке транзакций и записи их в новые блоки, каждая нода должна согласовать состояние сети со всеми узлами, чтобы гарантировать безопасность и отсутствие попыток подделки информации.
Необходимость обработки и подтверждения данных каждой нодой замедляет процесс записи и обработки переводов, что снижает масштабируемость всей системы. Шардинг же призван разделить сеть на множество подсетей, позволяя обрабатывать транзакции параллельно, если какая-то часть не попала в блок.
В базах данных существует два ключевых подхода к масштабированию — горизонтальное и вертикальное разделение.
Вертикальное разделение подразумевает сегментирование данных на столбцы, содержащие определенную информацию. Обычно такой подход используется, когда необходимость в использовании одного из столбцов выше, чем у другого.
Горизонтальное разделение, в свою очередь, делит данные на строки. Каждая из строк уникальна и содержит в себе определенный набор данных, что позволяет не нарушать общую целостность. Шардинг является методом реализации горизонтального разделения.
Среди преимуществ горизонтального разделения выделяют:
- Масштабируемость. Каждый шард работает автономно и одновременно, что значительно увеличивает количество обрабатываемых транзакций и, соответственно, скорость работы всей сети.
- Децентрализация. Благодаря внедрению шардинга в блокчейн уменьшается и объем обрабатываемой информации одной нодой, что снижает нагрузку и позволяет большему количеству нод функционировать.
- Целостность данных. Каждый шард содержит полные данные о делегированной ему части транзакций и передает их нодам в неизменном виде.
Типы шардинга
Шардинг можно разделить на три типа: сетевой, транзакционный и шардинг состояния. Основной принцип работы шардинга можно описать фразой «Разделяй и властвуй» — каждый шард берет на себя часть работы по обработке транзакций, повышая производительность сети. Рассмотрим каждый из типов шардинга подробнее:
- Сетевой шардинг. Является основой для других механизмов шардинга. Суть работы заключается в повышении безопасности узлов. Предотвращение атак со стороны недобросовестных узлов происходит путем выбора случайных узлов для каждой шарды и создания независимого согласия внутри самой шарды.
- Шардинг транзакций. В отличие от сетевого шардинга, этот тип распределяет транзакции по разным независимым шардам для последующей обработки.
- Стейт шардинг. Данный тип шардинга нацелен на решение проблемы хранения данных. Каждый шард отвечает только за свое внутреннее состояние, а не за состояние всей сети. В связи с этим возникает ряд проблем, связанных с безопасностью и эффективностью транзакций.
Преимущества
Технология шардинга помогает решить множество существующих в блокчейне проблем. Рассмотрим, какими преимуществами она обладает.
- Повышение скорости транзакций. Каждый шард работает автономно и позволяет обрабатывать транзакции не последовательно, а параллельно, что увеличивает скорость их обработки.
- Оптимизация хранения и обработки данных. Шарды хранят и обрабатывают только часть данных, в отличие от классических нод, обязанных хранить информацию о всех транзакциях в сети. Это позволяет сократить расходуемые ресурсы, необходимые для работы ноды.
- Повышение эффективности сети. Все шарды работают одновременно и автономно, что позволяет сильно увеличить пропускную способность сети и ее эффективность.
Недостатки
Несмотря на все преимущества, шарды не являются идеальным решением проблемы масштабирования. Среди недостатков выделяют:
- Атаки на шард и безопасность сети. Шарды требуют меньших вычислительных мощностей, из-за чего повышается риск захвата одной из них при помощи атаки 51%. Также, для корректного функционирования шардов необходим надежный протокол распределения нагрузки, чтобы избежать нестабильности сети.
- Транзакции между шардами. Если шардам не удастся отслеживать точное состояние друг друга во время проведения транзакции, это может привести к двойному расходованию средств.
- Доступ к данным. Если одна из нод не сможет выполнять свою работу, это приведет к сбоям в работе блокчейна и недоступности определенной части информации.
Читайте в нашем блоге: