Шардинг

Материал из BitcoinWiki
Это утверждённая версия страницы. Она же — наиболее свежая версия.
Перейти к: навигация, поиск
Шардинг эфириум sharding

Шардинг – это одна из стратегий масштабирования каких-либо приложений. Шардинг стал одной из топовых тем для обсуждения в сообществе Ethereum. Потому что его считают одним из ключевых вариантов решения проблемы масштабируемости этого блокчейна. Термин sharding пришел к нам из английского языка и не имеет перевода. Что это за технология и как ее вндрять на блокчейне?

Что такое Шардинг (Sharding)?[править]

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

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

Зачем применять шардинг?[править]

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

Технология шардинга и ее применение[править]

Ethereum шардинг – Эфириум и проблема масштабируемости

Выше мы описали как технология применяется для шардинга базы данных. Технически она выглядит достаточно просто, но на практике применять ее нужно очень внимательно и аккуратно. Потому что когда база данных разбита на части и один запрос должен получить данные с разных шард (серверов), то важно чтобы разделенные данные корректно «собрались» обратно.

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

Сложности реализации блокчейн-шардинга (sharding)[править]

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

Шардинг как средство спасения эфириума[править]

С учетом перечисленных выше сложностей, за шардинг никто не берется. Никто, кроме Ethereum. Это единственный достаточно крупный блокчейн, который даже при переходе на Proof-of-stake будет заинтересован в реализации этой технологии.

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

Презентовал шардинг лично сооснователь Ethereum Виталик Бутерин. Это произошло на тайбэйской конференции BeyondBlock в конце ноября 2017 года. Тогда же была презентована дорожная карта проекта, который по словам разработчиков, должен был вывести Ethereum на уровень платежной системы Visa. Уже через два месяца разработчики отчитались, что первая часть дорожной карты шардинга в блокчейне «эфира» реализована. И в начале мая этого года Виталик Бутерин сообщил, что скоро в сети Ethereum можно будет внедрять шардинг. Правда, для этого придется провести сетевой хардфорк.

Как именно будет внедрен шардинг – пока точно не сообщается. Возможно, проблема доверия между нодами будет решена с помощью внедрения системы материальной стимуляции – когда ноды будут получать вознаграждение за достоверную информацию и будут штрафоваться в случае нарушений. Мы писали выше, что внедрение этой технологии требует алгоритма консенсуса Proof-of-Stake (PoS). И если сейчас сеть «эфира» работает на Proof-of-work (PoW), то скоро она перейдет на протокол Casper, что означает использование гибридного протокола PoW/ PoS. А это приближает внедрение шардинга. 10 мая была выложен первая версия программного обеспечения Casper FFG 0.1.0, которая доступна для тестирования. Пока точной информации о внедрении протокола в Ethereum нет.

См. также на BitcoinWiki[править]

Источники[править]

https://ruhighload.com/Шардинг+и+репликация
http://chainmedia.ru/articles/ethereum-sharding/
https://probtc.info/materialy/35198/
https://decenter.org/blockchain/408-sharding-ethereum-rus
https://forklog.com/buterin-tehnologicheskij-sharding-pozvolit-ethereum-dostich-masshtabov-visa/
https://forklog.com/opublikovana-pervaya-versiya-koda-obnovleniya-casper-dlya-ethereum/