Основатель Ethereum Виталик Бутерин заявил о скорой имплементации в блокчейне шардинга. Это предполагает хардфорк, изменение алгоритма консенсуса и серьёзные перемены для майнеров. Cryptonomist разобрался, в чём состоит суть шардинга и что он даст блокчейну.
Почему Ethereum необходимо масштабирование
После краудсейла проекта Status сеть Ethereum фактически «легла». Проблемы возникали и после запуска Cryptokitties — игры на блокчейне Ethereum, которая получила вирусную популярность.
Стало понятно, что с ростом востребованности блокчейна, запуска многочисленных проектов на его базе и расширения аудитории держателей криптовалюты в целом сеть нужно масштабировать. В противном случае для проведения транзакций пользователи должны будут платить слишком большой объем газа, время проведения транзакций вырастет.
В итоге блокчейн Ethereum столкнётся с теми же проблемами, что и блокчейн биткоина. Курс криптовалюты снизится, держатели Ethereum будут искать более перспективные монеты для инвестирования.
Тривиальные подходы
В целом для масштабирования блокчейна есть два тривиальных пути:
-
Отказ от масштабирования отдельных блокчейнов и внедрение предположения о том, что пользователи будут работать со множеством разных «альткоинов». Это значительно увеличивает пропускную способность, но за счет снижения безопасности.
-
Другой подход — просто увеличить ограничение размера блока. Это может сработать, поскольку размеры блоков можно ограничить искусственно в соответствие с политикой разработчиков, а не из реальных технических соображений. Но если зайти слишком далеко, то ноды, которые работают на слабом оборудовании, станут нестабильны. Сеть начнет полагаться исключительно на очень небольшое количество суперкомпьютеров. Результат — резкий рост риска централизации.
-
Третий подход — это совместный майнинг. В данном случае используется много цепей, но все они имеют одну и ту же мощность добычи (или долю владения). Сейчас, к примеру, криптовалюта Namecoin использует такой подход. Если все майнеры будут участвовать в добыче криптовалюты, это теоретически может увеличить пропускную способность сети без ущерба для безопасности. Однако технология увеличивает вычислительную нагрузку и нагрузку на каждую ферму, и поэтому на самом деле такое решение является просто скрытой формой увеличения размера блока.
Шардинг в общем случае
Шардинг — это приём в разработке программного обеспечения, который позволяет распределять данные между различными серверами или другими узлами (шардами). Данные разносятся между шардами на основе ключа шардинга.
Сущности, связанные одинаковым значением ключа, группируются в наборы данных. Каждый такой набор хранится в пределах одного физического шарда, что ускоряет и облегчает обработку данных.
Как шардинг решит проблему Ethereum
Сейчас в блокчейне Ethereum каждая полная нода хранит все состояния (балансы счетов, код контракта, хранилища
Шардинг в блокчейне Ethereum предполагает отказ от полных нод, которые сейчас хранят информацию о полном состоянии сети.
Шардинг — альтернатива тривиальным подходам. После имплементации шардинга каждая нода будет сохранять некоторое подмножество описанной выше информации. Кроме того, она будет подтверждать только те транзакции, которые касаются данного подмножества.
Разработчики заявили:
Мы хотим иметь возможность обрабатывать более 10 000 транзакций в секунду, не заставляя каждый узел быть суперкомпьютером или хранить терабайт данных состояния, и для этого требуется комплексное решение, в котором рабочие нагрузки хранилища состояний, обработки транзакций и даже загрузка транзакций и повторное информирование распространяются по узлам.
При шардинге состояние и история разбиваются на разделы, которые назывют «осколками» (шардами). Шардинговая схема Ethereum, к примеру, может поместить все адреса, которые начинаются с 0×00, в один шард, те, что начинаются с 0×01 — в другой
Пример реализации — блокчейн с несколькими активами, где есть k шардов. Каждый шард хранит балансы и обрабатывает транзакции, связанные с одним конкретным активом. В более продвинутых системах также используется некоторая форма взаимодействия между шардами, когда транзакции на одном шарде могут инициировать события на других шардах.
Для простоты шардинговая конструкция отслеживает только капли данных. Она не пытается обработать функцию перехода состояния. Основная цепочка блоков, обрабатываемая всеми участниками, по-прежнему существует, но роль этой главной цепи ограничена хранением заголовков сортировки для всех шардов.
Кроме того, разработчики Ethereum планируют провести шардинг серверного файла. Код изменений уже выложен на GitHub.
Типы узлов
Разработчики предполагают создать несколько уровней узлов, которые могут существовать в такой системе:
-
Суперполный узел — полностью загружает каждое сопоставление
-
для каждого шарда, а также основную цепочку, полностью проверяя все.
-
Узел верхнего уровня — обрабатывает все основные блоки цепочки, предоставляя им «легкий клиент» для доступа ко всем шардам.
-
Единый шардинговый узел — выступает в качестве узла верхнего уровня, но также полностью загружает и проверяет каждое сопоставление на каком-то определенном шарде, за который он отвечает.
-
Облегченный узел — загружает и проверяет только заголовки основных блоков, не обрабатывает заголовки или транзакции, если ему не нужно прочитать какую-либо конкретную запись в состоянии какого-либо определенного шарда. Иначе он загружает ветвь Меркле в самый последний заголовок сортировки для этого шарда и оттуда получает подтверждение Меркле для нужного значения в состоянии.
Смена алгоритма консенсуса
В блокчейне Ethereum используется алгоритм консенсуса Proof-of-Work. После имплементации шардинга система частично перейдёт на Proof-of-Stake. Алгоритм доказательства владения считается перспективнее алгоритма доказательства выполнения работы.
Дело в том, что Proof-of-Work предполагает закупку солидных майнинговых мощностей и высокое потребление энергии. А для реализации Proof-of-Stake достаточно обычного компьютера, смартфона или физического кошелька, который обеспечивает хранение криптовалюты.
Разработчики верят, что в будущем Ethereum вовсе откажется от алгоритма Proof-of-Work и от этого станет только сильнее. Прежде всего, Proof-of-Stake обеспечит окончательность транзакций. Кроме того, он даст возможность призвать к ответу картели. Немаловажно, что Proof-of-Stake предлагает более предсказуемое время создания блока, а также сниженную стоимость консенсуса.
Что в итоге
Блокчейн Ethereum растёт и развивается. Возможно, шардинг и смена алгоритма консенсуса не придутся по вкусу майнерам. Однако разработчики сконцентрированы на повышении безопасности и удобства использования системы. Масштабирование необходимо, и шардинг — оптимальный вариант его реализации.