Технология шардинга базы данных в сети блокчейн

Технология Шардинга (Sharding Technology) - Подробное описание
BitPapa - Надежный P2P Обменник криптовалют

Шардинг (Sharding) — это стратегия масштабируемости базы данных и приложений. В переводе на русский язык, слово sharding означает — сегментирование. В криптовалютном мире, её называют «технологией осколков».

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

Технология шардинга — основные характеристики

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

Концепция шардинга применялась в управлении традиционными централизованными базами данных с конца 1990-х годов. Термин «шард» (фрагмент) получил распространение благодаря одной из первых многопользовательских ролевых онлайн-игр, Ultima Online, в которой разработчики распределили игроков по различным серверам (разным «мирам» в игре), чтобы справиться с трафиком.

Шардинг данных разделяют на вертикальный и горизонтальный. Это связано с тем, что база данных изначально представляла собой таблицу. Если разделять таблицу на вертикальные столбцы (заголовок и все данные под ним), то это вертикальный шардинг. Если разделять таблицу по строкам (заголовки всех столбцов и части таблицы под ней), то это горизонтальный шардинг. В любом случае потом части таблицы (то есть базы данных) отправляются на разные сервера.

Sharding вертикальный и горизонтальный

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

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

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

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

Применение шардинга на примере Ethereum

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

Ethereum Sharding

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

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

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

Sharding technology

Пример того, как это работает:

Например, схема шардинга в рамках Ethereum может предусматривать размещение всех адресов, начиная с 0x00 в один осколок, а адресов, начинающиеся с 0x01, в другой и т. д. В простейшей форме каждый «осколок» будет иметь собственную историю транзакций, а эффект транзакций в определенном осколке X будет ограничен состоянием осколка X.

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

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

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

Сложности в реализации и недостатки шардинга

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

Attack 1%

Однако, есть и другие недостатки:

  1. Не существует механизма, отслеживающего какая именно нода обрабатывает какую транзакцию. Нужен безопасный и эффективный механизм, который будет безопасно и быстро работать в блокчейне.
  2. Не разработан алгоритм доверия между нодами, чтобы они могли доверять друг другу. В криптовалютном блокчейне ноды не имеют права просто доверять друг другу — они должны приходить к независимому консенсусу. Также нужно подтверждение того, что обе ноды закончили процесс обработки.
  3. Эффективно применять шардинг можно в блокчейнах с алгоритмом Proof-of-Stake (полным или частичным), а сейчас с проблемой масштабирования сталкиваются в основном криптовалюты с алгоритмом Proof-of-Work.

В сегментированном блокчейне также возникает проблема безопасности, поскольку хакерам легче захватить один шард — по причине меньшего хешрейта, требуемого для контроля индивидуальных сегментов (так называемая атака 1%).

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

Будущее шардинг технологии

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

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

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

Наиболее известными проектами, использующими технологию шардинга являются HarmonyZilliqa и IOST.