Заявка на услуги DST
Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.
Что такое шардинг и зачем он нужен.
Шардинг (иногда шардирование) — это техника масштабирования при работе с данными. Суть его в разделении (партиционирование) базы данных на отдельные части так, чтобы каждую из них можно было вынести на отдельный сервер.
Существует два вида шардинга:
Вертикальный;
Горизонтальный.
Вертикальный шардинг - это перенос таблицы или группы таблиц на отдельный сервер. Например:
users - данные пользователей;
photos - фотографии пользователей;
albums - альбомы пользователей.
Таблицу users Вы оставляете на одном сервере, а таблицы photos и albums переносите на другой. В таком случае в приложении Вам необходимо будет использовать соответствующее соединение для работы с каждой таблицей.
В отличие от репликации, мы используем разные соединения для любых операций, но с определенными таблицами.
Есть два пути к распределению баз данных: репликация и сегментирование.
Горизонтальный шардинг – это разделение одной таблицы на разные сервера. Работает по следующему принципу:
На нескольких серверах создается одна и та же таблица (только структура, без данных);
В приложении выбирается условие, по которому будет определяться нужное соединение (например, четные на один сервер, а нечетные - на другой);
Перед каждым обращением к таблице происходит выбор нужного соединения.
Допустим, наше приложение работает с огромной таблицей, которая хранит фотографии пользователей. Мы подготовили два сервера (обычно они называются шардами) для этой таблицы. Для нечетных пользователей мы будем работать с первым сервером, а для четных — со вторым. Таким образом, на каждом из серверов будет только часть всех данных о фотографиях пользователей.
При использовании шардинга сеть будет масштабироваться линейно при добавлении новых узлов;
Преимущество шардинга в уменьшении количества строк в каждой таблице (это уменьшает размер индекса. Тем самым повышает производительность поиска). Если сегмент данных разделен (Американские клиенты и Европейские), тогда можно легко и автоматически определить соответствующее членство в сегменте и запросить только нужный сегмент данных.
Как будет работать шардинг в сети Ethereum?
Сначала пользователь сжигает 32 ETH через смарт-контракт в Beacon Chain, чтобы стать валидатором в дочерней сети;
Периодически система будет проверять зарегистрированных валидаторов и ставить в очередь тех, кто сжег ETH в контракте;
Проверка требуется для смешивания всех валидаторов, чтобы обеспечить псевдослучайную случайность;
На каждом осколке будут узлы, которые смогут создавать новый / следующий шард;
Новый шард должен соответствовать определенным параметрам: 1. Предыдущий шард был номер 9, значит этот шард будет номер 10;
2. Получить информацию о текущем состоянии шарда перед получением новых транзакций;3. Информация о том, каким будет состояние шарда после получения всех транзакций;
4. Подписи (2/3) все валидаторов должны подтвердить транзакцию; (Число подписывающих валидаторов – 111);
Например, схема сегментирования на Ethereum может поместить все адреса, начинающиеся с 0x00 в один шард, все адреса, начинающиеся с 0x01 в другой шард, и т.д. В простейшей форме сегментирования каждый сегмент также имеет свою собственную историю транзакций.
Пример отправки 10 ETH с одного шарда (5) на другой (10).
В шард (5) отправляется транзакция, которая уменьшает баланс на 10 ETH и система ожидает завершения транзакции;
Создается расписка / квитанция для транзакции, которая не записывается в сеть, а сохраняется в хеш-дереве Меркла, которую можно легко проверить;
Транзакция отправляется в шард (10) и отправляет данные о нахождении этого действия в дереве Меркл. Шард (10) проверяет, не истек ли срок действия этой расписки;
Шард (10) обрабатывает транзакцию и увеличивает баланс на 10 ETH;
Шард (10) публикует информацию о поступлении средств в сеть и теперь можно тратить эти средства с шарда (10);
Куда можно масштабироваться дальше?
Далее идет сверхквадратичная схема шардов (шард, который находится в другом шарде).
Casper + Sharding
В протоколе будет работать главная сеть PoS, которая хранит и управляет текущим набором активных валидаторов PoS. Чтобы стать валидатором, требуется отправить транзакцию по сети PoW размером в 32 ETH. После этого действия, сразу после того, как в сети PoS запишется блок, вы станете в очередь на возможность стать активным валидатором, пока вы сами не перестанете быть валидатором, либо пока вас не удалят из сети за нарушение правил.
Каждый шард (например, всего может быть 1024 шарда) сам по себе является сетью PoS, а сеть шардов – то место, где будут храниться транзакции и балансы. Crosslinks (связь между шардами) служат для «подтверждения» сегментов, а также являются способом, с помощью которого разные шарды могут общаться друг с другом.
Проблемы / Незакрытые вопросы Шардинга
Захват одного шарда - атакующий захватывает большинство валидаторов на одном шарде, либо препятствует получению достаточного количества подписей, либо, отправляет недействительные подписи;
State transition execution - атака на один шард, обычно предовтращается с помощью случайной выборки, но такие схемы усложняют получение данных о состоянии шарда, так как они не могут иметь обновленную информацию каждого шарда, которому могут быть назначены. Как мы можем гарантировать то, что "легкие узлы", все еще могут получить точную информацию о состоянии шарда?
Fraud detection - как можно надежно сообщить узлам, что шард был подтвержден атаке, чтобы они могли обнаружить мошенничество и отклонить валидацию?
Cross-shard communication - как безопасно отправить данные с одного шарда на другой?
Superquadratic sharding – с ростом количества шардов до очень большого количества, надо будет формировать сеть по принципу «шард в шарде», следовательно как это можно будет осуществить дальше?
Вывод
Шардинг - это работающая технология масштабирования обычной базы данных, но с тем условием, что все действия происходят от централизованного органа, а в нашем случае, мы должны получить децентрализованную сеть. При выполнении всех условий, изложенных выше, сеть Ethereum действительно выйдет на новый уровень в скорости обработки транзакций и масштабирования, но пока мы можем лишь наблюдать со стороны и строить гипотезы, как это будет работать в реальных условиях.
Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.
Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117
Задать вопрос по почте