Вы здесь

Что такое шардинг? Руководство по масштабированию Ethereum

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

Что такое шардинг? Руководство по масштабированию Ethereum

Шардинг - это решение, которое применимо к децентрализованной одноранговой сети, такой как Ethereum, в которой постоянно обновляется глобальное состояние сети. Так что же такое шардинг и как это может помочь масштабировать сеть?

Шардинг и распределенные вычисления

Sharding на самом деле намного старше технологии блокчейн и был реализован в различных системах от оптимизации баз данных для бизнеса до глобальной базы данных Google Spanner. Шардинг - такой метод горизонтального разбиения данных в базе данных. По сути, база данных разбивается на маленькие фрагменты, называемые «шарды», которые при объединении образуют исходную базу данных.

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

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

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

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

Шардинг

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

Как шардинг работает в блокчейне?

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

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

Как шардинг работает в блокчейне

Предполагается, что в сети Ethereum шардинг будет реализован в два этапа, что более чем вероятно после внедрения Proof of Stake. Первый этап - это уровень данных, состоящий из консенсуса о том, какие данные находятся в шардах. Второй этап - это уровень состояния.

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

Заголовок:

  • Идентификатор шарда для группы транзакций.
  • Назначение валидаторов с помощью случайной выборки (проверка транзакций в шарде).
  • State Root (состояние корня Меркла до и после добавления транзакций).

Тело:

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

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

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

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

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

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

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

Внедрение шардинга

Ожидается, что в Ethereum-сети шардинг будет реализован после обновления Casper, алгоритма консенсуса с доказательством доли PoS. В последнее время произошли некоторые изменения в отношении Ethereum 2.0, в которых задействованы как Casper, так и Sharding. Переход на Casper ожидается в 2019 году, в то время как шардинг будет имплементирован позже. Шардинг также реализован на нескольких других платформах, в первую очередь в Zilliqa.

Категория: 
Биткоин для "чайников"
Монета: 
4
Ваша оценка: Нет Средняя: 4 (3 оценок)
1360 / 1
Аватар пользователя asessor
Публикацию добавил: asessor
Дата публикации: вт, 11/06/2018 - 16:36

Что еще почитать:

Комментарии:

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

вт, 11/06/2018 - 21:02

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

ср, 11/07/2018 - 11:07

Джером

Что-то очень много решений разрабатывается для ethereum, но пока ни шардинг, ни каспер, ни Константинополь не были имплементированы в сеть эфира.

пн, 11/12/2018 - 10:14

Добавить комментарий