Крипто Марк Дмитриев
444

Как будет работать Sharding в блокчейне Ethereum?

Что такое шардинг и зачем он нужен.

В закладки

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

Существует два вида шардинга:

  • Вертикальный;
  • Горизонтальный.

Вертикальный шардинг - это перенос таблицы или группы таблиц на отдельный сервер. Например:

  • users - данные пользователей;
  • photos - фотографии пользователей;
  • albums - альбомы пользователей.

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

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

Есть два пути к распределению баз данных: репликация и сегментирование.

Горизонтальный шардинг – это разделение одной таблицы на разные сервера. Работает по следующему принципу:

  • На нескольких серверах создается одна и та же таблица (только структура, без данных);

  • В приложении выбирается условие, по которому будет определяться нужное соединение (например, четные на один сервер, а нечетные - на другой);

  • Перед каждым обращением к таблице происходит выбор нужного соединения.

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

При использовании шардинга сеть будет масштабироваться линейно при добавлении новых узлов;

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

Как будет работать шардинг в сети Ethereum?

  1. Сначала пользователь сжигает 32 ETH через смарт-контракт в Beacon Chain, чтобы стать валидатором в дочерней сети;
  2. Периодически система будет проверять зарегистрированных валидаторов и ставить в очередь тех, кто сжег ETH в контракте;

  3. Проверка требуется для смешивания всех валидаторов, чтобы обеспечить псевдослучайную случайность;

  4. На каждом осколке будут узлы, которые смогут создавать новый / следующий шард;

  5. Новый шард должен соответствовать определенным параметрам: 1. Предыдущий шард был номер 9, значит этот шард будет номер 10;

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

    4. Подписи (2/3) все валидаторов должны подтвердить транзакцию; (Число подписывающих валидаторов – 111);

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

Пример отправки 10 ETH с одного шарда (5) на другой (10).

  1. В шард (5) отправляется транзакция, которая уменьшает баланс на 10 ETH и система ожидает завершения транзакции;
  2. Создается расписка / квитанция для транзакции, которая не записывается в сеть, а сохраняется в хеш-дереве Меркла, которую можно легко проверить;
  3. Транзакция отправляется в шард (10) и отправляет данные о нахождении этого действия в дереве Меркл. Шард (10) проверяет, не истек ли срок действия этой расписки;
  4. Шард (10) обрабатывает транзакцию и увеличивает баланс на 10 ETH;
  5. Шард (10) публикует информацию о поступлении средств в сеть и теперь можно тратить эти средства с шарда (10);

Куда можно масштабироваться дальше?

Далее идет сверхквадратичная схема шардов (шард, который находится в другом шарде).

Casper + Sharding

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

Каждый шард (например, всего может быть 1024 шарда) сам по себе является сетью PoS, а сеть шардов – то место, где будут храниться транзакции и балансы. Crosslinks (связь между шардами) служат для «подтверждения» сегментов, а также являются способом, с помощью которого разные шарды могут общаться друг с другом.

Проблемы / Незакрытые вопросы Шардинга

  • Захват одного шарда - атакующий захватывает большинство валидаторов на одном шарде, либо препятствует получению достаточного количества подписей, либо, отправляет недействительные подписи;
  • State transition execution - атака на один шард, обычно предовтращается с помощью случайной выборки, но такие схемы усложняют получение данных о состоянии шарда, так как они не могут иметь обновленную информацию каждого шарда, которому могут быть назначены. Как мы можем гарантировать то, что "легкие узлы", все еще могут получить точную информацию о состоянии шарда?
  • Fraud detection - как можно надежно сообщить узлам, что шард был подтвержден атаке, чтобы они могли обнаружить мошенничество и отклонить валидацию?
  • Cross-shard communication - как безопасно отправить данные с одного шарда на другой?
  • Superquadratic sharding – с ростом количества шардов до очень большого количества, надо будет формировать сеть по принципу «шард в шарде», следовательно как это можно будет осуществить дальше?

Вывод

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

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Марк Дмитриев", "author_type": "self", "tags": [], "comments": 10, "likes": 6, "favorites": 14, "is_advertisement": false, "subsite_label": "crypto", "id": 46336, "is_wide": false, "is_ugc": true, "date": "Mon, 24 Sep 2018 12:51:14 +0300" }
{ "id": 46336, "author_id": 205350, "diff_limit": 1000, "urls": {"diff":"\/comments\/46336\/get","add":"\/comments\/46336\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/46336"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199126, "possessions": [] }

10 комментариев 10 комм.

Популярные

По порядку

Написать комментарий...
3

Вы конечно извините, но очень уж режет глаза на картинке ваша "Безопастность" Пишется без т. Лучше пишите на англ, не ошибетесь.

Ответить
1

Опастносте!

Ответить
1

Благодарю за замечание, перезалил картинку.

Ответить
0

Скажите а в какой субд вы используйте шардинг? Какую бы посоветовали? Может сравнивали что-то? Я думаю попробовать шардинг на Mysql или Postgres

Ответить
0

Я не использую СУБД и не работаю с ними. Я технический аналитик в инвестиционном фонде: gt-investments.io

Ответить
0

На этом можно заработать?

Ответить
0

Не могу Вам ответить, потому что я разбираю работу технологии шардинга, а не как на этом можно заработать.

Ответить
0

Ну а смысл шард создавать и держать? И палить тысячи долларов эфира на создание?

Ответить
1

Скорее всего это для создания сайдчейнов проектами, то есть сама суть шардинга в увеличении пропускной способности сети, а не в заработке, как в случае с мастернодами

Ответить
0

Повторюсь, в рамках данной статьи я рассматриваю пошаговую работу системы, а как на этом заработать, какие экономические стимулы будут присутствовать в системе - отдельная тема, выходящая за рамки этого материала.
В Google.com или Yandex.ru - при должном умении, верю, Вы найдете ответ на свой вопрос.

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Голосовой помощник выкупил
компанию-создателя
Подписаться на push-уведомления
{ "page_type": "default" }