21 августа 2020

Шардинг в JAX.Network

Автор:
Юрий Шишацкий, CSO
Jax.Network

 

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

 

Термин «шардинг» позаимствован из теории базы данных. Буквально шардинг означает разделение большой базы данных на более мелкие части, которыми можно легко управлять и распределять между нодами. Шардинг отлично подходит для масштабирования баз данных, но блокчейн имеет свои особенности, следовательно правильно использовать его в этих системах непросто.

 

JAX.Network предлагает решение проблемы масштабирования, основанное на трех аспектах: консенсусе Proof of Work, шардинге и мерджед майнинге. Шардинг в JAX.Network  – это честное разделение состояния блокчейна на отдельные независимые составляющие. Это означает, что каждый шард имеет свои учетные записи, а транзакции и валидаторы распределяются между ними, поэтому для проверки транзакции не требуется никаких сведений об истории предыдущих транзакций в других шардах.

 

Блокчейн JAX.Network состоит из нескольких независимых цепочек, работающих параллельно. Каждый шард поддерживает свою цепочку, которая не зависит от событий в других шардах и их текущего состояния. Помимо цепочек в шардах, существует одна специальная цепочка, поддерживаемая всеми нодами, которая называется Beacon Chain (BC). JAX.Network не использует никаких схем анкерирования состояния шард в BC. 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

Блокчейн-специалисты отмечают, что шардинг не только о преимуществах. Любая схема шардинга должна решать проблемы кросс-шардовых транзакций и атак 51%, нацеленных на захват отдельных шардов. JAX.Network решает первую проблему за счет использования сверхлегкого клиента и использования протокола децентрализованного обмена монет между шардами. Атаки захвата шардов решаются с помощью схемы мерджед майнинга и особой схемы расчета вознаграждения за блок. Описание этих частей протокола JAX.Network представим в наших следующих публикациях.


Следите за обновлениями в социальных сетях:

Обсудить в Discord!