Источник: Coin Post
В этой статье расскажем о важности различий между лёгкими клиентами и полноценными узлами. Задаётесь вопросом, что это значит? Не беспокойтесь – скоро вы во всём разберётесь.
Продолжение. По ссылкам можно прочитать первую и вторую части статьи.
Эфириум с Proof-of-stake
Всё вышесказанное относится к Эфириуму как с Proof-of-work, так и с Proof-of-stake.
Разработчики Эфириума планируют запустить Proof-of-stake (далее PoS) одновременно с шардингом, поэтому не думаю, что мы когда-либо увидим реализацию Эфириума исключительно с PoS.
Я включил этот раздел в статью лишь для того, чтобы проследить этапы централизации перед тем, как перейти к шардингу.
Помимо всех проблем, перечисленных в предыдущем разделе, для PoS характерны следующие недостатки:
1. Отсутствие майнинга означает отсутствие внешних издержек.
Валидаторам, владеющим долей, нужно лишь внести депозит и обеспечить работу сервера.
Получая прибыль безо всяких усилий, они смогут обновлять оборудование в соответствии с растущими требованиями к узлам, оставляя позади всех остальных;
2. депозит владельца доли составляет 32 ETH (около 13 100 $ по текущему курсу).
Помимо того, что число валидаторов неуклонно снижается, для тех, кто может позволить себе заплатить 16 000 $, требования по скорости обработки данных – не проблема.
Это значит, что поток данных будет расти ещё быстрее.
Схема подобной сети похожа на схему, представленную ранее, но здесь я выделил узлы, владеющие долей, чтобы нагляднее показать, как изменяется соотношение между числом всех подтверждающих узлов и числом валидаторов, владеющих долей.
Напомню: по словам Виталика, ситуация никак не меняется, и ранее я объяснил, почему это утверждение технически некорректно. Так или иначе, PoS ускоряет процесс централизации:
Можно предположить, что при пиковом значении курса для запуска такого узла понадобится 45 000 $.
Совместное финансирование узла через пул ничего не меняет, ведь узлом управляет пул, а не его участники.
К счастью, PoS вводится вместе с шардингом, поэтому мы можем переходить к следующему разделу.
Эфириум с Proof-of-stake и шардингом
Как заявлено уже в заголовке этой статьи, шардинг приводит к сокращению сети, при этом создавая иллюзию того, что способствует её расширению.
Наверняка вы уже поняли, что дело в количестве подтверждающих узлов, но нужно иметь в виду и некоторые особенности.
Ответственность по подтверждению блоков распределяется между множеством групп с собственными шардами (фрагментами сети).
Считается, что это снизит нагрузку на каждый отдельный подтверждающий узел, благодаря чему их число возрастёт.
Однако таким образом разработчики не решают проблему, а лишь выигрывают время.
Более того, некоторым придётся пойти на огромные по их меркам издержки, чтобы остаться в числе подтверждающих узлов, так как для этого необходимо владеть долей:
«Да. 32 ETH – это минимальный размер доли, предусмотренный в предложении о шардинге».
«На начальном этапе не рекомендуется становиться валидатором, если вы не очень хорошо разбираетесь в технологиях. Ожидается, что для самостоятельного валидатора доля составит более 1000 ETH, и не каждый готов рисковать такой серьёзной суммой.
Гораздо легче присоединиться к стейкинг-пулу. Подробности можете узнать здесь: …»
«Мне вполне хватит средств – я здесь с самого краудсейла. Я пытаюсь найти информацию о том, как безопасно настроить свой и чужие узлы, находящиеся в моём управлении».
«1000 – это абсурд!»
«Скорее всего, минимальная сумма эфира будет зависеть от стоимости работы смарт-контракта по протоколу Casper за 1 год (в единицах газа). Если годовая прибыль от эфира, которым вы владеете, ниже этого уровня, то вы не сможете позволить себе участвовать в стейкинге. Не думаю, что для безубыточности потребуется 1000 ETH или более».
1. Полным узлам в Биткойне никогда не придётся обрабатывать 1 Гб данных каждые 3 секунды, так как мы не собираемся увеличивать размер блока.
2. В Биткойне будет не 10 полных узлов, а миллионы – опять же потому, что размер блока не увеличится.
3. Очевидно, наши представления о масштабировании сети расходятся: разработчики Эфириума готовы пожертвовать числом полных узлов ради пропускной способности базового слоя.
Поскольку я уже достаточно полно аргументировал необходимость полных узлов, наши теоретические расхождения не столь важны, и теперь я подробнее рассмотрю позицию разработчиков Эфириума.
Опишу её своими словами:
1. они стремятся увеличить пропускную способность базового слоя сети;
2. они понимают, что это приведёт к снижению числа узлов, что бы они ни делали;
3. их решение – разделение зон ответственности, которое «сдержит» сокращение сети;
4. по их мнению, оставшихся узлов будет достаточно, чтобы обеспечить безопасность лёгких клиентов;
5. в защиту этого мнения они проводят параллель между Эфириумом с меньшим числом узлов и гипотетическим Биткойном с 10 полными узлами, основываясь на ошибочной идее об исключительной важности майнеров;
6. в качестве решения они предлагают шардинг, который называют расширением сети, и ради него они готовы пожертвовать «некоторыми» узлами, но утверждают, что в будущем число узлов вырастет и окажется больше, чем в их условной модели Биткойна.
Думаю, самая важная часть данной статьи – это раздел о том, как устроена сеть полных узлов Биткойна, почему ей свойственно естественное стремление к децентрализации и чем она отличается от пресловутых «решений проблемы масштабирования».
Давайте сравним такую архитектуру с шардингом. Это будет довольно интересно, ведь даже Виталик так и не объяснил, как именно будет выглядеть топология сети.
Постараюсь это сделать, несмотря на то, что шардинг полностью пренебрегает идеей равенства и одинаковой функциональности узлов.
Поиск конкретных точек централизации в такой сети будет весьма занимательной задачей.
Для начала, вот как выглядит типичная статья о шардинге:
Первый слой – шардинг
Как объяснил Виталик, шардинг – это решение проблемы масштабируемости первого слоя, призванное усовершенствовать существующий блокчейн и значительно улучшить его работу.
На данный момент каждому узлу в Эфириуме приходится обрабатывать каждую транзакцию, которая пересылается через него.
Такая частота подтверждений обеспечивает высокий уровень безопасности, однако подразумевает, что блокчейн в целом не может работать быстрее, чем каждый отдельный узел, вне зависимости от суммарной мощности узлов.
В свою очередь, шардинг предполагает разделение сети на небольшие сегменты, называемые шардами, в каждом из которых хранится отдельная история транзакций.
Каждый узел в такой сети обрабатывает транзакции только из определённого шарда, что повышает общую пропускную способность сети, поскольку каждому отдельному узлу не приходится выполнять абсолютно всю работу.
Это всего лишь статья с новостного портала о блокчейне, и не удивительно, что в ней так много модных слов и так мало технической информации.
Я обращаю на неё внимание потому, что она кишит словами и терминами, над которыми неинформированные участники криптокомьюнити, похоже, не задумываются.
У «масштабируемости» до сих пор нет конкретного определения; не совсем ясно, что подразумевается под «обработкой транзакций»; ни одно из упоминаний слова «узел» не относится к лёгким узлам.
В каждом случае часто встречающиеся выражения вроде «каждый узел» или «каждый отдельный узел» можно заменить на «узел за 16 000 $, который владеет долей».
Где бы вы ни встретились с обсуждением шардинга, на первый взгляд может показаться, что его суть в снижении нагрузки на узлы.
Однако для владельцев узлов, которые могут позволить себе депозит в 16 000 $, нагрузка не имеет такого решающего значения.
Их узлы и так способны обрабатывать блоки гораздо большего размера. Дата-центрам не нужны шарды, и никто не будет запускать действительно важный узел на ноутбуке.
Подобная система допускает множество разных типов узлов, и пока неясно, какие из них на самом деле появятся в ней с запуском нового протокола.
Я начну с объяснения базовой структуры системы, а затем опишу основные типы узлов, с тем чтобы выделить наиболее значимые из них.
Идея шардинга заключается в том, чтобы взять один блокчейн, разделить его на части, называемые коллациями (от англ. collation – упорядоченная сборка), связать их проволокой и надеяться на лучшее.
Разобраться в устройстве отдельной коллации поможет следующая схема:
Ладно, шутки в сторону. Вот неплохая схема, на оформление которой я потратил непомерно много времени:
Давайте разберёмся, что на ней изображено:
1. Коллации (фиолетовые квадраты) — блоки в рамках того или иного шарда. Коллации образуют цепочки так же, как блоки в блокчейнах.
2. Узлы-исполнители (синие круги) — узлы, подтверждающие данные транзакций в каждой коллации. Они производят вычисления контрактов и распределяют узлы-коллаторы по определённым шардам.
3. Узлы-коллаторы (красные круги) — узлы, которые собирают данные для своих шардов, создают коллации (аналогичные блокам) и передают их исполнителям для выведения вычислений.
4. Лёгкие узлы (розовые круги) — узлы большинства участников сети. Они не делают никакой полезной работы, а лишь наблюдают за состоянием блокчейна.
Эти узлы могут проверять данные, но поскольку они не передают транзакции или блоки в сеть, у них нет никакой возможности остановить распространение недействительных блоков.
В этом состоит фундаментальная разница между узлами в Биткойне и в остальных блокчейнах. Каждый узел в Биткойне выполняет одни и те же функции, и между ними нет никаких различий.
В рамках каждого шарда важную роль играют только исполнители и коллаторы. Для запуска как узла-исполнителя, так и узла-коллатора потребуется 32 ETH.
У держателя каждого лёгкого узла есть возможность при желании выбрать шард по своему усмотрению, и синхронизировать данные из него, а также заголовки блоков из главного блокчейна.
Скорее всего, в выборе шарда не будет необходимости, за исключением тех случаев, когда работа приложения или сервиса зависит от подтверждения шарда, в котором находится его контракт.
Выше изображено несколько цепочек коллаций, а также группы исполнителей и коллаторов (с депозитом в 32 ETH), обрабатывающих эти цепочки.
Зелёным обозначен главный блокчейн, а розовым — лёгкие узлы, которые выбрали определённый шард для «подтверждения» данных в нём.
Следует отметить несколько моментов:
1. Нельзя стать исполнителем или коллатором, не имея 32 ETH.
2. Лёгкие узлы не передают блоки в сеть. Они не участвуют в формировании консенсуса.
При получении некорректных данных, владельцу такого узла не остаётся ничего, кроме как кричать об этом во всё горло.
(Сеть подтверждающих узлов сильна как раз тем, что узлы могут останавливать распространение недействительных транзакций и блоков. Когда узлы изначально не способны передавать транзакции и блоки в сеть, они не могут остановить их распространение).
3. Данные о транзакциях не хранятся в главном блокчейне. В нём записываются только заголовки из цепочек коллаций.
И это далеко не все особенности такой сети. Все лёгкие узлы, синхронизирующие только заголовки из главного блокчейна, можно объединить в группу, представленную ниже в виде большого прямоугольника.
Они не выполняют полезную работу, но их большинство.
Чаще всего, такими узлами владеют те, кто не располагает суммой в 32 ETH.
StopAndDecrypt: «Мне кажется, что разделять узлы на ранги так, как предлагается делать при шардинге, – это одна из худших идей для блокчейн-сети. Узлы более низких категорий не играют практически никакой роли в децентрализации сети».
Vitalik Buterin: «В протоколе не говорится ни о каких рангах. Как я повторял уже много раз, сеть вполне может выжить без полных узлов, подтверждающих все данные.
Её безопасность никак не зависит от полных узлов. Они просто предлагают дополнительные возможности по сбору данных, в которых могут быть заинтересованы такие организации, как Etherscan или Internet Archive. С точки зрения протокола, без таких узлов вполне можно было бы обойтись.
В таком случае сеть состояла бы из шардинговых узлов, каждый из которых требовал бы гораздо меньших ресурсов, чем узлы в сети Эфириум в её текущем виде. Всё потому, что каждый шардинговый узел обрабатывал бы информацию в объёме O(sqrt(n))».
StopAndDecrypt: «Получается, вы разделили задачи по полному подтверждению данных на шарды, и за их координацию отвечает узкий круг узлов, которые обязаны владеть долей, чтобы участвовать в процессе распределения вычислений между шардами.
И без того узкий круг этих узлов со временем становится ещё уже. Это проблема, если вы не сможете доказать, что число полных узлов будет расти, не полагаясь на догадки, надежды или искусственную поддержку».
Vitalik Buterin: «Почему же их станет меньше? Если лимит газа продолжит расти, то, действительно, их число снизится, но что, если лимит газа не изменится?»
StopAndDecrypt: «Вообще никогда?»
Здесь я хотел донести следующую мысль: даже если разбить работу по полному подтверждению на части, круг узлов, которые её выполняют, останется ограниченным.
По словам Виталика, новые узлы обрабатывали бы меньше данных, чем узлы в текущей версии Эфириума, однако проблема отнюдь не в объёме данных, а в растущей сложности их обработки, которая приводит к сокращению числа узлов.
Происходит естественная централизация сети.
Более того, Виталик согласился, что число узлов со временем уменьшалось бы, если бы лимит газа продолжал расти. Но ведь ничто не сдерживает его рост.
Сейчас майнеры проявляют альтруизм, но что произойдёт, когда майнинг исчезнет? Чего можно ожидать от стейкинга и его участников, которых не будет волновать потеря чьих-то блоков?
Что заставит стейкеров сдерживать лимит газа? Не забывайте, что они могут регулировать его вручную, и зачем им поддерживать его на низком уровне, если между ними существует множество соединений и они легко справляются с обработкой всех данных?
А что произойдёт, если они направят полученную прибыль на запуск новых узлов, получая всё больше контроля над сетью?
@dr_hodes: «Лучшая стратегия для владельцев мастернод – это накапливать доли и запускать новые узлы. Кумулятивный эффект теряется, если вы распродаёте полученные вознаграждения. Это самый важный совет для всех, кто управляет мастернодами или участвует в PoS.
Красная линия – кумулятивные доходы.
Голубая линия – доходы от продажи ежедневных вознаграждений.»
@bccponzi: «Это напоминает мне зазывал из Bitconnect, копивших свои ежедневные прибыли в 1%. Накапливая «шиткоины», вы в итоге останетесь с целым мешком монет, которые ничего не стоят».
Но что происходит, если люди считают, что имеют дело не с «шиткоином»?
У большинства ничего не выйдет, но что, если кто-то из них сможет убедительно притворяться децентрализованным ровно настолько, чтобы не распугать пользователей?
Я обещал, что эта статья будет лёгкой. Похоже, я не сдержал своего обещания, но я старался сделать её как можно доступнее.
Я говорю об этом потому, что хотел бы напоследок поделиться ссылкой на FAQ о шардинге, в котором приводится длинный список признанных проблем и возможных решений.
Каждое из них привносит ещё большую сложность и порождает новые проблемы, для которых приходится искать новые решения.
Во всём этом нелегко разобраться, и я потратил слишком много времени, чтобы расшифровать сложные описания типов узлов, но, так или иначе, считаю нужным поделиться данной ссылкой.
Я сомневаюсь не в том, будет ли такая система работать, а в том, останется ли она децентрализованной.
Эфириум был далёк от совершенства ещё до появления шардинга, и думаю, что теперь абсолютно ясно, что в долгосрочной перспективе у него остаётся единственный путь развития.
Если вы ничего не имеете против централизованных валидаторов, вам вполне подойдёт и EOS.
Его разработчики предпочли не разыгрывать спектакль, а сразу же перейти к централизации. Им не нужен никакой шардинг, ведь все данные в блокчейне обрабатываются централизованно.
Компания Google могла бы обрабатывать все платежи в мире. Но мы не хотим доверять абсолютно все платежи Google, равно как и любой компании из списка Fortune 500 или Forbes 400.
Какой вывод следует из всего этого?
«Похоже, что мы в очередной раз сталкиваемся с трилеммой масштабирования. В чём она заключается и можем ли мы её преодолеть? Трилемма состоит в том, что блокчейн-системы могут одновременно обладать лишь двумя из следующих трёх свойств:
- децентрализованность (способность системы работать в ситуации, когда у каждого участника есть доступ лишь к O(c) ресурсов, что соответствует обычному ноутбуку или небольшому виртуальному выделенному серверу);
- масштабируемость (способность системы обрабатывать O(n) > O(c) транзакций);
- безопасность (устойчивость системы против атаки с участием O(n) ресурсов).
В последующих разделах данного документа мы продолжим использовать c для обозначения объёма вычислительных ресурсов (в том числе, вычислительной мощности, пропускной способности соединения и объёма дискового пространства), доступных каждому узлу, а n – для обозначения абстрактного размера экосистемы; предполагается, что транзакционная нагрузка, размер состояния и рыночная капитализация криптовалюты пропорциональны n».
Нет. Используйте второй слой.
Продолжение следует…